Agentstack Mcp

io.github.inity13由 GitHub 账号 inity13 发布v1.0.1更新于 Oct 27, 2026

Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.

已验证Streamable HTTP可网页运行效率与工作流金融数据与分析

概览

AI 生成的概览

确定性的推理工具集,让助手运行假设情景模拟、按加权标准给选项排序,并精确计算财务与业务指标。

可以做什么
  • 基于模板或自定义模型运行情景模拟,并做敏感性、盈亏平衡与并排比较分析
  • 按加权标准对命名选项排序,输出评分矩阵、两两对比与权重稳健性检验
  • 精确计算业务与财务数学:SaaS 指标、货币换算、工作日、复利增长、净现值、内部收益率、贷款摊还与折旧
  • 串联三个领域:为预测现金流估值、按模拟结果排序选项、对决策做压力测试
  • 查询能力、模板、指标与评分方法清单,并检查服务健康状态
适用场景
适合需要可复现、可审计数字而非粗略估算的场景:增长与定价的假设推演、多标准方案选择、SaaS 或财务指标计算,以及方案估值与压力测试。
运行要求
可使用托管端点(无需安装),或用 Node.js 通过 npx 在本地以 stdio 运行 npm 包。托管免费层无需密钥,但每个 IP 每天限 20 次调用;付费方案会发放 API 密钥,通过 X-API-Key 请求头发送。本地 stdio 服务可用 AGENTSTACK_PROFILE 环境变量限定工具子集。
安装前请注意
托管免费层按 IP 限流,更高用量需订阅付费方案(Starter 或 Pro)并使用 X-API-Key。情景输入与决策数据会发送到托管服务;若这些数据需留在本机,请使用本地 stdio 服务。工具均为只读计算,不会修改外部数据。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Agentstack Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.inity13%2Fagentstack-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "agentstack": {
      "type": "http",
      "url": "https://agentstack-mcp.pages.dev/mcp"
    }
  }
}

README

AgentStack MCP

One deterministic reasoning stack for AI agents — behind a single Model Context Protocol (MCP) endpoint and one API key:

simulate (ScenarioSim) → decide (DecisionMatrix) → compute (PrecisionCalc)

plus cross-domain composite tools that chain the three. Every number runs through decimal.js at 40-digit precision (never floats), so identical inputs always produce byte-identical output. The server is stateless — no database, no sessions.

AgentStack bundles three standalone MCP servers so an agent installs one server, uses one key, and can run reasoning that spans all three domains. It imports the same engines directly (no HTTP proxying) — zero added latency, no cascading failure.

🌐 Live hosted server (free, no install)

https://agentstack-mcp.pages.dev/mcp
json
{ "mcpServers": { "agentstack": {    "type": "http", "url": "https://agentstack-mcp.pages.dev/mcp" } } }

Free tier: no key, 20 calls/day per IP. Paid plans (Starter $19/mo · 8,000/day, Pro $59/mo · 80,000/day) return an API key sent as X-API-Key. One key covers all three products and the composites — about half the cost of subscribing to them separately. Landing page: https://agentstack-mcp.pages.dev.


The three namespaces (24 tools)

namespaceenginetools
sim_*ScenarioSim — what-if / scenario simulationsim_run, sim_sensitivity, sim_break_even, sim_compare, sim_list_templates
decide_*DecisionMatrix — multi-criteria decision analysisdecide, decide_score, decide_sensitivity, decide_compare_two, decide_list_methods
calc_*PrecisionCalc — exact finance/business mathcalc_metric, calc_list_metrics, calc_currency_convert, calc_business_days, calc_compound_growth, calc_npv, calc_irr, calc_loan_amortization, calc_depreciation
meta—list_capabilities, health_check

Note on two deliberately-namespaced collisions: sim_sensitivity varies scenario inputs; decide_sensitivity varies criteria weights. They are different operations — the prefix disambiguates them for the agent.

Composite tools — the reason to use the stack

Deterministic end-to-end; each chains engines that no single server bundles:

ToolPipelineWhat it does
plan_to_valuationsimulate → computeProject a scenario, take a per-period cash-flow line (cashflow_metric), and value it: NPV at a discount rate, IRR, undiscounted total. initial_investment becomes the period-0 outflow (needed for IRR).
evaluate_options_with_scenariossimulate → decideProject each option as its own scenario, then rank the options against weighted criteria drawn from the scenario outcomes (key_results).
stress_test_decisionsimulate × decideStress one scenario assumption across every option and report how often the baseline winner survives (robustness) and where it flips.

Composite responses report the pipeline they ran and carry each stage's structured output, so an agent can drill into any step.

Profiles — fight tool-selection noise

Append ?profile= to the endpoint to load only a subset:

profiletools
all (default)every tool (24)
financecalc_* + plan_to_valuation + meta
decisiondecide_* + evaluate_options_with_scenarios + stress_test_decision + meta
simulationsim_* + all composites + meta
json
{ "mcpServers": { "agentstack": {    "url": "https://agentstack-mcp.pages.dev/mcp?profile=finance" } } }

Response envelope

Namespaced tools return the exact envelope of their underlying product. Composite tools add composite, pipeline, per-stage blocks, methodology, notes, and a plain-language explanation. Errors are always structured data:

json
{ "status": "error", "error": { "type": "unknown_metric", "message": "...", "hint": "..." } }

Example — plan_to_valuation (trimmed):

json
{  "status": "success",  "composite": "plan_to_valuation",  "pipeline": ["scenariosim.run_scenario", "precisioncalc.net_present_value", "precisioncalc.internal_rate_of_return"],  "scenario": { "template": "saas_growth", "horizon": 12, "key_results": { "ending_mrr": 26982.1 } },  "cashflow_metric": "mrr",  "cashflows": [-150000, 14040, 15600, "..."],  "valuation": { "discount_rate": 0.01, "npv": 11157.386023, "irr": 0.02504, "value_creating": true },  "explanation": "Projecting 'saas_growth' over 12 month(s) and valuing the 'mrr' stream at 1%/period gives an NPV of ..."}

Project structure

agentstack-mcp/├── worker-src/│   ├── index.mjs           # Cloudflare Pages Function: MCP transport, namespacing, profiles, billing│   ├── composites.mjs      # the 3 cross-domain tools (simulate -> decide -> compute)│   ├── billing.mjs         # Stripe + KV: one key / one quota for the whole stack│   └── engines/            # vendored, unmodified product engines (100% deterministic)│       ├── scenariosim.mjs│       ├── decisionmatrix.mjs│       └── precisioncalc.mjs├── server.mjs              # local stdio MCP server (same engines + composites; AGENTSTACK_PROFILE env)├── site/                   # landing page + mcp.json + llms.txt + _worker.js (built)├── tests/composites.test.mjs├── examples/agent_example.mjs├── scripts/sync-engines.sh # re-vendor engines from the sibling repos├── package.json · wrangler.toml · server.json · smithery.yaml · Dockerfile · LICENSE└── README.md

Why vendor the engines? So this repo is self-contained and reproducible. The engines are the same deterministic modules that power the three standalone servers; npm run sync-engines re-copies them from the sibling repos when an upstream change lands.


Run it locally

bash
git clone <your-fork> agentstack-mcp && cd agentstack-mcpnpm installnpm test                      # composite-logic tests (no network)npm run dev                   # -> http://127.0.0.1:8788/mcpnode examples/agent_example.mjs            # hosted demonode examples/agent_example.mjs http://127.0.0.1:8788node server.mjs               # dependency-light stdio server (AGENTSTACK_PROFILE=finance to subset)

Quick manual call:

bash
curl -s http://127.0.0.1:8788/mcp \  -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_capabilities","arguments":{}}}'

Install via npm (stdio, no hosting)

Run the server locally over stdio with a single command — nothing to deploy:

bash
npx -y agentstack-mcp

Claude Desktop / any stdio MCP client (claude_desktop_config.json):

json
{ "mcpServers": { "agentstack": { "command": "npx", "args": ["-y", "agentstack-mcp"] } } }

This is the same deterministic engine as the hosted server, running on your machine.

Client configuration

Cursor — ~/.cursor/mcp.json

json
{ "mcpServers": { "agentstack": { "url": "https://agentstack-mcp.pages.dev/mcp" } } }

Claude Desktop — claude_desktop_config.json (via mcp-remote)

json
{ "mcpServers": { "agentstack": { "command": "npx", "args": ["-y", "mcp-remote", "https://agentstack-mcp.pages.dev/mcp"] } } }

VS Code — .vscode/mcp.json

json
{ "servers": { "agentstack": { "type": "http", "url": "https://agentstack-mcp.pages.dev/mcp" } } }

Windsurf — ~/.codeium/windsurf/mcp_config.json

json
{ "mcpServers": { "agentstack": { "serverUrl": "https://agentstack-mcp.pages.dev/mcp" } } }

Add "headers": { "X-API-Key": "ssak_live_..." } once you have a key.


Example composite payloads

Rank growth strategies on their projected outcomes:

json
{ "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" }  ]} }

Value a plan's MRR stream:

json
{ "name": "plan_to_valuation", "arguments": {  "template": "saas_growth", "horizon": 12,  "inputs": { "new_customers_per_period": 60, "churn_rate": 0.05, "arpu": 60 },  "cashflow_metric": "mrr", "rate": 0.01, "initial_investment": 150000} }

Stress-test the decision:

json
{ "name": "stress_test_decision", "arguments": {  "template": "saas_growth", "horizon": 12,  "options": [ { "name": "Aggressive", "inputs": { "churn_rate": 0.05 } },               { "name": "Lean", "inputs": { "churn_rate": 0.02 } } ],  "criteria": [ { "metric": "ending_mrr", "weight": 3 } ],  "stress": { "variable": "churn_rate", "variation": 0.5, "steps": 5 }} }

Deploy on Cloudflare Pages

bash
npm installnpx wrangler loginnpm run deploy      # esbuild -> site/_worker.js, then wrangler pages deploy

Runs fully free / private with no bindings or secrets (fails open on the free tier). For billing: bind a KV namespace AGENTSTACK_KV, set PRICE_STARTER / PRICE_PRO in [vars], and add Stripe secrets:

bash
wrangler pages secret put STRIPE_SECRET_KEY    --project-name agentstack-mcpwrangler pages secret put STRIPE_WEBHOOK_SECRET --project-name agentstack-mcp

Routes: /mcp (Streamable HTTP), /checkout, /success, /portal, /webhook, /metrics.

Auth & rate limiting

Enforced in worker-src/billing.mjs: identify() reads X-API-Key / Authorization: Bearer and falls back to per-IP free tier; consumeQuota() is a KV daily counter (the single gating point). One key / one quota spans the whole stack. Marked NOTE (auth) / NOTE (rate limiting) seams show where to swap in JWT/mTLS or a token-bucket. None of it touches the deterministic math.

Relationship to the standalone servers

AgentStack is additive, not a replacement. The three products keep running on their own for single-domain use:

License

MIT — see LICENSE.

来源:README.md,提交 7f659dd

工具

24

list_capabilities

Discovery: 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.

无需输入参数。

health_check

Aggregated health/status for the whole stack (all three engines + composites). No parameters.

无需输入参数。

sim_run

SIMULATE. 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.

输入参数inputshorizonmetricstemplateperiod_label

sim_sensitivity

SIMULATE. 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').

输入参数maxminstepsinputsvalueshorizontemplate必填variablevariablesvariationperiod_labeltarget_metric

sim_break_even

SIMULATE. Solve for the scenario input value required to make an output metric hit a target value (deterministic bisection). Requires 'template', 'solve_for', 'target_value'.

输入参数boundsinputshorizontemplate必填solve_for必填period_labeltarget_value必填target_metric

sim_compare

SIMULATE. 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.

输入参数goalhorizonscenarios必填compare_metricinclude_projections

sim_list_templates

SIMULATE. List every scenario template (inputs, defaults, outputs) plus the custom-model format and period labels. No parameters.

无需输入参数。

decide

DECIDE. 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.

输入参数methodscores必填options必填criteria必填

decide_score

DECIDE. Return the full normalized scored matrix (per-option, per-criterion) + ranking when scores are supplied separately, without the winner narrative.

输入参数methodscores必填options必填criteria必填

decide_sensitivity

DECIDE. 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.

输入参数stepsmethodscores必填options必填criteria必填variation

decide_compare_two

DECIDE. 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.

输入参数methodscores必填optionscriteria必填option_aoption_b

decide_list_methods

DECIDE. List the scoring methods (weighted_sum, weighted_product, topsis) with normalization details and when to use each. No parameters.

无需输入参数。

calc_metric

COMPUTE. 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.

输入参数metric必填params必填currency

calc_list_metrics

COMPUTE. List every supported metric with descriptions and required/optional params. No parameters.

无需输入参数。

calc_currency_convert

COMPUTE. 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.

输入参数dateliveamount必填to_currency必填from_currency必填

calc_business_days

COMPUTE. 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.

输入参数daysregionend_dateoperation必填start_date必填custom_holidays

calc_compound_growth

COMPUTE. Compound-interest/growth math. operation: future_value | present_value | cagr. rate is annual decimal; compounding: daily|weekly|monthly|quarterly|semiannually|annually|continuous.

输入参数rateyearscurrencyend_valueoperation必填begin_valuecompoundingfuture_valuepresent_value

calc_npv

COMPUTE. Net Present Value (discounted cash flow). NPV = sum(CF_t/(1+rate)^t); cashflows[0] is period 0 (usually the negative outlay).

输入参数rate必填currencycashflows必填

calc_irr

COMPUTE. Internal Rate of Return: per-period rate where NPV=0 (Newton + bisection). Requires a sign change in cashflows.

输入参数guesscashflows必填

calc_loan_amortization

COMPUTE. Level-payment loan: monthly payment, total interest, payoff, and (optional) full schedule.

输入参数currencyprincipal必填annual_rate必填term_months必填extra_paymentinclude_schedule

calc_depreciation

COMPUTE. Asset depreciation schedule. method: straight_line | declining_balance | sum_of_years_digits.

输入参数cost必填method必填currencysalvage_value必填useful_life_years必填

plan_to_valuation

COMPOSITE (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.

输入参数rate必填inputshorizonmetricscurrencytemplate必填period_labelcashflow_metric必填initial_investment

evaluate_options_with_scenarios

COMPOSITE (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.

输入参数inputsmethodhorizonoptions必填criteria必填templateperiod_label

stress_test_decision

COMPOSITE (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}.

输入参数inputsmethodstress必填horizonoptions必填criteria必填templateperiod_label

版本历史

1
  1. v1.0.1最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分