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