io.github.inity13/agentstack-mcp
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
| Author | io.github.inity13 |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 122 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"agentstack-mcp": {
"url": "https://agentstack-mcp.pages.dev/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (24)
list_capabilitiesDiscovery: the three namespaces (sim_*, decide_*, calc_*), the cross-domain composite tools, the available ?profile= filters, and links to the standalone servers. Call this first to see everything AgentStack exposes. No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
health_checkAggregated health/status for the whole stack (all three engines + composites). No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sim_runSIMULATE. Deterministic what-if projection from a template (saas_growth, pricing_change, churn_impact, cost_reduction, hiring_plan, cash_runway, unit_economics, marketing_funnel, compound_growth) or a free-form 'metrics' model. Returns per-period projections, key_results, assumptions_used, methodology, and an explanation.
Parameters:
inputs— objecthorizon— integermetrics— arraytemplate— stringperiod_label— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sim_sensitivitySIMULATE. Vary one or more scenario inputs and show the impact on a target output metric (one-at-a-time), with elasticity + most-influential ranking. Requires 'template' and 'variable' (or 'variables').
Parameters:
template(required) — stringmax— numbermin— numbersteps— integerinputs— objectvalues— arrayhorizon— integervariable— stringvariables— arrayvariation— numberperiod_label— stringtarget_metric— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sim_break_evenSIMULATE. Solve for the scenario input value required to make an output metric hit a target value (deterministic bisection). Requires 'template', 'solve_for', 'target_value'.
Parameters:
template(required) — stringsolve_for(required) — stringtarget_value(required) — numberbounds— arrayinputs— objecthorizon— integerperiod_label— stringtarget_metric— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sim_compareSIMULATE. Run 2-3 scenarios and compare their key_results side by side with deltas vs the first (baseline). Optional 'compare_metric' + 'goal' (max|min) picks a winner.
Parameters:
scenarios(required) — arraygoal— stringhorizon— integercompare_metric— stringinclude_projections— boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sim_list_templatesSIMULATE. List every scenario template (inputs, defaults, outputs) plus the custom-model format and period labels. No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
decideDECIDE. Rank named options against weighted criteria and return the winner, full ranking, per-criterion breakdowns, methodology, weights, and an explanation. Provide options, criteria [{name, weight, direction}], and a scores matrix. method: weighted_sum (default) | weighted_product | topsis.
Parameters:
options(required) — arraycriteria(required) — arrayscores(required) — objectmethod— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
decide_scoreDECIDE. Return the full normalized scored matrix (per-option, per-criterion) + ranking when scores are supplied separately, without the winner narrative.
Parameters:
options(required) — arraycriteria(required) — arrayscores(required) — objectmethod— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
decide_sensitivityDECIDE. Test how robust the decision winner is to changes in CRITERIA WEIGHTS (distinct from sim_sensitivity, which varies scenario inputs). Sweeps each weight +/-variation and reports a robustness score + flip points.
Parameters:
options(required) — arraycriteria(required) — arrayscores(required) — objectsteps— integermethod— stringvariation— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
decide_compare_twoDECIDE. Head-to-head comparison of exactly two options with per-criterion win counts and margin. Pass option_a/option_b (or a 2-element options array), criteria, and scores.
Parameters:
criteria(required) — arrayscores(required) — objectmethod— stringoptions— arrayoption_a— stringoption_b— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
decide_list_methodsDECIDE. List the scoring methods (weighted_sum, weighted_product, topsis) with normalization details and when to use each. No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_metricCOMPUTE. Exact business/SaaS/finance metric: ltv, cac, ltv_cac_ratio, payback_period_months, contribution_margin, gross_margin, churn_rate, mrr_growth_rate, arr, break_even_units, nrr, grr, rule_of_40, magic_number. Rates/margins are decimals (0.05=5%). Call calc_list_metrics for schemas.
Parameters:
metric(required) — stringparams(required) — objectcurrency— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_list_metricsCOMPUTE. List every supported metric with descriptions and required/optional params. No parameters.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_currency_convertCOMPUTE. Convert between major currencies (USD, EUR, GBP, JPY, CAD, AUD, CHF, CNY, INR) with Decimal precision. Static offline table by default; live/historical ECB rates via date/live=true.
Parameters:
amount(required) — numberfrom_currency(required) — stringto_currency(required) — stringdate— stringlive— boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_business_daysCOMPUTE. Business-day arithmetic honoring weekends + regional holidays. operation: add_business_days | count_business_days | next_business_day | previous_business_day. region: US | UK | EU | NONE.
Parameters:
operation(required) — stringstart_date(required) — stringdays— integerregion— stringend_date— stringcustom_holidays— array
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_compound_growthCOMPUTE. Compound-interest/growth math. operation: future_value | present_value | cagr. rate is annual decimal; compounding: daily|weekly|monthly|quarterly|semiannually|annually|continuous.
Parameters:
operation(required) — stringrate— numberyears— numbercurrency— stringend_value— numberbegin_value— numbercompounding— stringfuture_value— numberpresent_value— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_npvCOMPUTE. Net Present Value (discounted cash flow). NPV = sum(CF_t/(1+rate)^t); cashflows[0] is period 0 (usually the negative outlay).
Parameters:
rate(required) — numbercashflows(required) — arraycurrency— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_irrCOMPUTE. Internal Rate of Return: per-period rate where NPV=0 (Newton + bisection). Requires a sign change in cashflows.
Parameters:
cashflows(required) — arrayguess— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_loan_amortizationCOMPUTE. Level-payment loan: monthly payment, total interest, payoff, and (optional) full schedule.
Parameters:
principal(required) — numberannual_rate(required) — numberterm_months(required) — integercurrency— stringextra_payment— numberinclude_schedule— boolean
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
calc_depreciationCOMPUTE. Asset depreciation schedule. method: straight_line | declining_balance | sum_of_years_digits.
Parameters:
method(required) — stringcost(required) — numbersalvage_value(required) — numberuseful_life_years(required) — integercurrency— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
plan_to_valuationCOMPOSITE (simulate -> compute). Project a scenario, take a per-period cash-flow line from its projections ('cashflow_metric', e.g. 'mrr' or 'net_burn'), and value it exactly: NPV at a discount 'rate', IRR, and undiscounted total. Optional 'initial_investment' becomes the period-0 outflow (needed for IRR). Combines ScenarioSim + PrecisionCalc.
Parameters:
template(required) — stringcashflow_metric(required) — stringrate(required) — numberinputs— objecthorizon— integermetrics— arraycurrency— stringperiod_label— stringinitial_investment— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
evaluate_options_with_scenariosCOMPOSITE (simulate -> decide). Project each option as its own scenario, then rank the options against weighted criteria drawn from the scenario OUTCOMES. Provide a base 'template', an 'options' array ([{name, inputs}]), and 'criteria' ([{metric, weight, direction}]) where each metric is a scenario key_result. Combines ScenarioSim + DecisionMatrix.
Parameters:
options(required) — arraycriteria(required) — arrayinputs— objectmethod— stringhorizon— integertemplate— stringperiod_label— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
stress_test_decisionCOMPOSITE (simulate x decide). Take an options-vs-scenarios decision and stress ONE scenario assumption across a range applied to every option; report how often the baseline winner survives (robustness) and where it flips. Same args as evaluate_options_with_scenarios plus 'stress': {variable, variation, steps}.
Parameters:
options(required) — arraycriteria(required) — arraystress(required) — objectinputs— objectmethod— stringhorizon— integertemplate— stringperiod_label— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.