agentstack-mcp

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

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
69%
Naming quality
81%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'decide_score' description lacks action verbin decide_score
  • LOWTool 'evaluate_options_with_scenarios' name length outside 3-30 rangein evaluate_options_with_scenarios

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,628Tokens (tool definitions)
~640 BTypical response size
Significant attention impact (2.05% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

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

Runnable packages

npmagentstack-mcp1.0.1stdio

Remote endpoints

https://agentstack-mcp.pages.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (24)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢health_check

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

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪sim_run(template, inputs, metrics, horizon, period_label)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string"
    },
    "inputs": {
      "type": "object"
    },
    "metrics": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "horizon": {
      "type": "integer"
    },
    "period_label": {
      "type": "string"
    }
  }
}
🟢sim_sensitivity(template, inputs, target_metric, variable, variables, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string"
    },
    "inputs": {
      "type": "object"
    },
    "target_metric": {
      "type": "string"
    },
    "variable": {
      "type": "string"
    },
    "variables": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "variation": {
      "type": "number"
    },
    "steps": {
      "type": "integer"
    },
    "values": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "min": {
      "type": "number"
    },
    "max": {
      "type": "number"
    },
    "horizon": {
      "type": "integer"
    },
    "period_label": {
      "type": "string"
    }
  },
  "required": [
    "template"
  ]
}
⚪sim_break_even(template, inputs, solve_for, target_metric, target_value, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string"
    },
    "inputs": {
      "type": "object"
    },
    "solve_for": {
      "type": "string"
    },
    "target_metric": {
      "type": "string"
    },
    "target_value": {
      "type": "number"
    },
    "bounds": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "horizon": {
      "type": "integer"
    },
    "period_label": {
      "type": "string"
    }
  },
  "required": [
    "template",
    "solve_for",
    "target_value"
  ]
}
⚪sim_compare(scenarios, compare_metric, goal, horizon, include_projections)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "scenarios": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "compare_metric": {
      "type": "string"
    },
    "goal": {
      "type": "string"
    },
    "horizon": {
      "type": "integer"
    },
    "include_projections": {
      "type": "boolean"
    }
  },
  "required": [
    "scenarios"
  ]
}
🟢sim_list_templates

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

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪decide(options, criteria, scores, method)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "options": {
      "type": "array"
    },
    "criteria": {
      "type": "array"
    },
    "scores": {
      "type": "object"
    },
    "method": {
      "type": "string"
    }
  },
  "required": [
    "options",
    "criteria",
    "scores"
  ]
}
⚪decide_score(options, criteria, scores, method)

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

Input Schema

{
  "type": "object",
  "properties": {
    "options": {
      "type": "array"
    },
    "criteria": {
      "type": "array"
    },
    "scores": {
      "type": "object"
    },
    "method": {
      "type": "string"
    }
  },
  "required": [
    "options",
    "criteria",
    "scores"
  ]
}
⚪decide_sensitivity(options, criteria, scores, method, variation, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "options": {
      "type": "array"
    },
    "criteria": {
      "type": "array"
    },
    "scores": {
      "type": "object"
    },
    "method": {
      "type": "string"
    },
    "variation": {
      "type": "number"
    },
    "steps": {
      "type": "integer"
    }
  },
  "required": [
    "options",
    "criteria",
    "scores"
  ]
}
⚪decide_compare_two(option_a, option_b, options, criteria, scores, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "option_a": {
      "type": "string"
    },
    "option_b": {
      "type": "string"
    },
    "options": {
      "type": "array"
    },
    "criteria": {
      "type": "array"
    },
    "scores": {
      "type": "object"
    },
    "method": {
      "type": "string"
    }
  },
  "required": [
    "criteria",
    "scores"
  ]
}
🟢decide_list_methods

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

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢calc_metric(metric, params, currency)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "metric": {
      "type": "string"
    },
    "params": {
      "type": "object"
    },
    "currency": {
      "type": "string"
    }
  },
  "required": [
    "metric",
    "params"
  ]
}
🟢calc_list_metrics

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

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪calc_currency_convert(amount, from_currency, to_currency, date, live)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "number"
    },
    "from_currency": {
      "type": "string"
    },
    "to_currency": {
      "type": "string"
    },
    "date": {
      "type": "string"
    },
    "live": {
      "type": "boolean"
    }
  },
  "required": [
    "amount",
    "from_currency",
    "to_currency"
  ]
}
🟡calc_business_days(operation, start_date, days, end_date, region, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string"
    },
    "start_date": {
      "type": "string"
    },
    "days": {
      "type": "integer"
    },
    "end_date": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "custom_holidays": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "operation",
    "start_date"
  ]
}
⚪calc_compound_growth(operation, rate, years, present_value, future_value, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string"
    },
    "rate": {
      "type": "number"
    },
    "years": {
      "type": "number"
    },
    "present_value": {
      "type": "number"
    },
    "future_value": {
      "type": "number"
    },
    "begin_value": {
      "type": "number"
    },
    "end_value": {
      "type": "number"
    },
    "compounding": {
      "type": "string"
    },
    "currency": {
      "type": "string"
    }
  },
  "required": [
    "operation"
  ]
}
⚪calc_npv(rate, cashflows, currency)

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

Input Schema

{
  "type": "object",
  "properties": {
    "rate": {
      "type": "number"
    },
    "cashflows": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "currency": {
      "type": "string"
    }
  },
  "required": [
    "rate",
    "cashflows"
  ]
}
🟡calc_irr(cashflows, guess)

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

Input Schema

{
  "type": "object",
  "properties": {
    "cashflows": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "guess": {
      "type": "number"
    }
  },
  "required": [
    "cashflows"
  ]
}
⚪calc_loan_amortization(principal, annual_rate, term_months, extra_payment, currency, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "principal": {
      "type": "number"
    },
    "annual_rate": {
      "type": "number"
    },
    "term_months": {
      "type": "integer"
    },
    "extra_payment": {
      "type": "number"
    },
    "currency": {
      "type": "string"
    },
    "include_schedule": {
      "type": "boolean"
    }
  },
  "required": [
    "principal",
    "annual_rate",
    "term_months"
  ]
}
⚪calc_depreciation(method, cost, salvage_value, useful_life_years, currency)

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

Input Schema

{
  "type": "object",
  "properties": {
    "method": {
      "type": "string"
    },
    "cost": {
      "type": "number"
    },
    "salvage_value": {
      "type": "number"
    },
    "useful_life_years": {
      "type": "integer"
    },
    "currency": {
      "type": "string"
    }
  },
  "required": [
    "method",
    "cost",
    "salvage_value",
    "useful_life_years"
  ]
}
⚪plan_to_valuation(template, inputs, metrics, horizon, period_label, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string"
    },
    "inputs": {
      "type": "object"
    },
    "metrics": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "horizon": {
      "type": "integer"
    },
    "period_label": {
      "type": "string"
    },
    "cashflow_metric": {
      "type": "string"
    },
    "rate": {
      "type": "number"
    },
    "initial_investment": {
      "type": "number"
    },
    "currency": {
      "type": "string"
    }
  },
  "required": [
    "template",
    "cashflow_metric",
    "rate"
  ]
}
⚪evaluate_options_with_scenarios(template, inputs, horizon, period_label, method, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string"
    },
    "inputs": {
      "type": "object"
    },
    "horizon": {
      "type": "integer"
    },
    "period_label": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "criteria": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "required": [
    "options",
    "criteria"
  ]
}
⚪stress_test_decision(template, inputs, horizon, period_label, method, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "template": {
      "type": "string"
    },
    "inputs": {
      "type": "object"
    },
    "horizon": {
      "type": "integer"
    },
    "period_label": {
      "type": "string"
    },
    "method": {
      "type": "string"
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "criteria": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "stress": {
      "type": "object"
    }
  },
  "required": [
    "options",
    "criteria",
    "stress"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded24 tools
verifiedversion not recorded24 tools
verifiedversion not recorded24 tools
verifiedversion not recorded24 tools
verifiedversion not recorded24 tools
verifiedversion not recorded24 tools