AgentStack MCP: one deterministic reasoning stack for AI agents (simulate + decide + compute)
_The fourth in a suite of deterministic MCP servers for AI agents — and the one that ties the first three together._
Over the last stretch I shipped three focused, deterministic MCP servers:
* ScenarioSim — what-if / scenario simulation
* DecisionMatrix — multi-criteria decision analysis
* PrecisionCalc — exact finance / business math
They're great on their own, but agents kept needing all three in the same task — and installing three servers, juggling three keys, and hand-gluing their outputs is friction. So here's **AgentStack MCP** : one endpoint, one key, all three — plus composite tools that chain them.
## simulate → decide → compute
{ "mcpServers": { "agentstack": {
"type": "http", "url": "https://agentstack-mcp.pages.dev/mcp" } } }
Free tier: no key, 20 calls/day. The tools are namespaced so an agent always knows which engine it's calling:
* `sim_*` — ScenarioSim (run, sensitivity, break-even, compare, templates)
* `decide_*` — DecisionMatrix (decide, score, sensitivity, compare_two, methods)
* `calc_*` — PrecisionCalc (metrics, currency, NPV, IRR, loan, depreciation, …)
## The part that's actually new: composite tools
These chain the engines to do reasoning **no single server can** , deterministically end-to-end:
**`evaluate_options_with_scenarios`** (simulate → decide) — project each option as its own scenario, then rank the _outcomes_ against weighted criteria:
{ "name": "evaluate_options_with_scenarios", "arguments": {
"template": "saas_growth", "horizon": 12,
"options": [
{ "name": "Aggressive", "inputs": { "new_customers_per_period": 60, "churn_rate": 0.05 } },
{ "name": "Lean", "inputs": { "new_customers_per_period": 20, "churn_rate": 0.02 } }
],
"criteria": [
{ "metric": "ending_mrr", "weight": 3, "direction": "benefit" },
{ "metric": "total_churned_customers", "weight": 1, "direction": "cost" }
]
} }
**`plan_to_valuation`** (simulate → compute) — project a plan, then value its cash-flow line: NPV, IRR, undiscounted total.
**`stress_test_decision`** (simulate × decide) — stress one scenario assumption across every option and report how often the chosen option survives (robustness) and where it flips.
## Fighting tool bloat with profiles
Bundling 24 tools risks drowning an agent's tool-selection. So the endpoint takes a `?profile=` filter:
https://agentstack-mcp.pages.dev/mcp?profile=finance
* `finance` → `calc_*` + `plan_to_valuation`
* `decision` → `decide_*` + the two decision composites
* `simulation` → `sim_*` + all composites
* `all` (default) → everything
## Why it's built this way
* **Deterministic** : everything runs through decimal.js at 40-digit precision. Same inputs → byte-identical output, across all three engines and the composites.
* **No proxying** : AgentStack imports the _same_ engines directly, so there's zero added latency and no cascading failure — not three network hops behind one URL.
* **Additive, not a replacement** : the three standalone servers keep running for single-domain use.
* **One key, one quota** : ~half the price of subscribing to the three separately.
* **Stateless + MIT** : self-host on Cloudflare Pages, Node, Deno, or Bun.
## Links
* **Live endpoint:** https://agentstack-mcp.pages.dev/mcp
* **Site + docs:** https://agentstack-mcp.pages.dev
* **GitHub (MIT):** https://github.com/inity13/agentstack-mcp
* **MCP Registry:** `io.github.inity13/agentstack-mcp`
If your agents plan, choose, and do the numbers, give them one calculator that does all three — and never drifts. Feedback welcome.