Deterministic reasoning stack for AI agents: simulate, decide & compute, plus cross-domain tools.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| region | string | |
| end_date | string | |
| operation* | string | |
| start_date* | string | |
| custom_holidays | array |
{
"type": "object",
"required": [
"operation",
"start_date"
],
"properties": {
"days": {
"type": "integer"
},
"region": {
"type": "string"
},
"end_date": {
"type": "string"
},
"operation": {
"type": "string"
},
"start_date": {
"type": "string"
},
"custom_holidays": {
"type": "array",
"items": {
"type": "string"
}
}
}
}COMPUTE. Compound-interest/growth math. operation: future_value | present_value | cagr. rate is annual decimal; compounding: daily|weekly|monthly|quarterly|semiannually|annually|continuous.
| Argument | Type | Description |
|---|---|---|
| rate | number | |
| years | number | |
| currency | string | |
| end_value | number | |
| operation* | string | |
| begin_value | number | |
| compounding | string | |
| future_value | number | |
| present_value | number |
{
"type": "object",
"required": [
"operation"
],
"properties": {
"rate": {
"type": "number"
},
"years": {
"type": "number"
},
"currency": {
"type": "string"
},
"end_value": {
"type": "number"
},
"operation": {
"type": "string"
},
"begin_value": {
"type": "number"
},
"compounding": {
"type": "string"
},
"future_value": {
"type": "number"
},
"present_value": {
"type": "number"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| date | string | |
| live | boolean | |
| amount* | number | |
| to_currency* | string | |
| from_currency* | string |
{
"type": "object",
"required": [
"amount",
"from_currency",
"to_currency"
],
"properties": {
"date": {
"type": "string"
},
"live": {
"type": "boolean"
},
"amount": {
"type": "number"
},
"to_currency": {
"type": "string"
},
"from_currency": {
"type": "string"
}
}
}COMPUTE. Asset depreciation schedule. method: straight_line | declining_balance | sum_of_years_digits.
| Argument | Type | Description |
|---|---|---|
| cost* | number | |
| method* | string | |
| currency | string | |
| salvage_value* | number | |
| useful_life_years* | integer |
{
"type": "object",
"required": [
"method",
"cost",
"salvage_value",
"useful_life_years"
],
"properties": {
"cost": {
"type": "number"
},
"method": {
"type": "string"
},
"currency": {
"type": "string"
},
"salvage_value": {
"type": "number"
},
"useful_life_years": {
"type": "integer"
}
}
}COMPUTE. Internal Rate of Return: per-period rate where NPV=0 (Newton + bisection). Requires a sign change in cashflows.
| Argument | Type | Description |
|---|---|---|
| guess | number | |
| cashflows* | array |
{
"type": "object",
"required": [
"cashflows"
],
"properties": {
"guess": {
"type": "number"
},
"cashflows": {
"type": "array",
"items": {
"type": "number"
}
}
}
}COMPUTE. List every supported metric with descriptions and required/optional params. No parameters.
No arguments.
{
"type": "object",
"properties": {}
}COMPUTE. Level-payment loan: monthly payment, total interest, payoff, and (optional) full schedule.
| Argument | Type | Description |
|---|---|---|
| currency | string | |
| principal* | number | |
| annual_rate* | number | |
| term_months* | integer | |
| extra_payment | number | |
| include_schedule | boolean |
{
"type": "object",
"required": [
"principal",
"annual_rate",
"term_months"
],
"properties": {
"currency": {
"type": "string"
},
"principal": {
"type": "number"
},
"annual_rate": {
"type": "number"
},
"term_months": {
"type": "integer"
},
"extra_payment": {
"type": "number"
},
"include_schedule": {
"type": "boolean"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| metric* | string | |
| params* | object | |
| currency | string |
{
"type": "object",
"required": [
"metric",
"params"
],
"properties": {
"metric": {
"type": "string"
},
"params": {
"type": "object"
},
"currency": {
"type": "string"
}
}
}COMPUTE. Net Present Value (discounted cash flow). NPV = sum(CF_t/(1+rate)^t); cashflows[0] is period 0 (usually the negative outlay).
| Argument | Type | Description |
|---|---|---|
| rate* | number | |
| currency | string | |
| cashflows* | array |
{
"type": "object",
"required": [
"rate",
"cashflows"
],
"properties": {
"rate": {
"type": "number"
},
"currency": {
"type": "string"
},
"cashflows": {
"type": "array",
"items": {
"type": "number"
}
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| method | string | |
| scores* | object | |
| options* | array | |
| criteria* | array |
{
"type": "object",
"required": [
"options",
"criteria",
"scores"
],
"properties": {
"method": {
"type": "string"
},
"scores": {
"type": "object"
},
"options": {
"type": "array"
},
"criteria": {
"type": "array"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| method | string | |
| scores* | object | |
| options | array | |
| criteria* | array | |
| option_a | string | |
| option_b | string |
{
"type": "object",
"required": [
"criteria",
"scores"
],
"properties": {
"method": {
"type": "string"
},
"scores": {
"type": "object"
},
"options": {
"type": "array"
},
"criteria": {
"type": "array"
},
"option_a": {
"type": "string"
},
"option_b": {
"type": "string"
}
}
}DECIDE. List the scoring methods (weighted_sum, weighted_product, topsis) with normalization details and when to use each. No parameters.
No arguments.
{
"type": "object",
"properties": {}
}DECIDE. Return the full normalized scored matrix (per-option, per-criterion) + ranking when scores are supplied separately, without the winner narrative.
| Argument | Type | Description |
|---|---|---|
| method | string | |
| scores* | object | |
| options* | array | |
| criteria* | array |
{
"type": "object",
"required": [
"options",
"criteria",
"scores"
],
"properties": {
"method": {
"type": "string"
},
"scores": {
"type": "object"
},
"options": {
"type": "array"
},
"criteria": {
"type": "array"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| steps | integer | |
| method | string | |
| scores* | object | |
| options* | array | |
| criteria* | array | |
| variation | number |
{
"type": "object",
"required": [
"options",
"criteria",
"scores"
],
"properties": {
"steps": {
"type": "integer"
},
"method": {
"type": "string"
},
"scores": {
"type": "object"
},
"options": {
"type": "array"
},
"criteria": {
"type": "array"
},
"variation": {
"type": "number"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| inputs | object | |
| method | string | |
| horizon | integer | |
| options* | array | |
| criteria* | array | |
| template | string | |
| period_label | string |
{
"type": "object",
"required": [
"options",
"criteria"
],
"properties": {
"inputs": {
"type": "object"
},
"method": {
"type": "string"
},
"horizon": {
"type": "integer"
},
"options": {
"type": "array",
"items": {
"type": "object"
}
},
"criteria": {
"type": "array",
"items": {
"type": "object"
}
},
"template": {
"type": "string"
},
"period_label": {
"type": "string"
}
}
}Aggregated health/status for the whole stack (all three engines + composites). No parameters.
No arguments.
{
"type": "object",
"properties": {}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| rate* | number | |
| inputs | object | |
| horizon | integer | |
| metrics | array | |
| currency | string | |
| template* | string | |
| period_label | string | |
| cashflow_metric* | string | |
| initial_investment | number |
{
"type": "object",
"required": [
"template",
"cashflow_metric",
"rate"
],
"properties": {
"rate": {
"type": "number"
},
"inputs": {
"type": "object"
},
"horizon": {
"type": "integer"
},
"metrics": {
"type": "array",
"items": {
"type": "object"
}
},
"currency": {
"type": "string"
},
"template": {
"type": "string"
},
"period_label": {
"type": "string"
},
"cashflow_metric": {
"type": "string"
},
"initial_investment": {
"type": "number"
}
}
}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'.
| Argument | Type | Description |
|---|---|---|
| bounds | array | |
| inputs | object | |
| horizon | integer | |
| template* | string | |
| solve_for* | string | |
| period_label | string | |
| target_value* | number | |
| target_metric | string |
{
"type": "object",
"required": [
"template",
"solve_for",
"target_value"
],
"properties": {
"bounds": {
"type": "array",
"items": {
"type": "number"
}
},
"inputs": {
"type": "object"
},
"horizon": {
"type": "integer"
},
"template": {
"type": "string"
},
"solve_for": {
"type": "string"
},
"period_label": {
"type": "string"
},
"target_value": {
"type": "number"
},
"target_metric": {
"type": "string"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| goal | string | |
| horizon | integer | |
| scenarios* | array | |
| compare_metric | string | |
| include_projections | boolean |
{
"type": "object",
"required": [
"scenarios"
],
"properties": {
"goal": {
"type": "string"
},
"horizon": {
"type": "integer"
},
"scenarios": {
"type": "array",
"items": {
"type": "object"
}
},
"compare_metric": {
"type": "string"
},
"include_projections": {
"type": "boolean"
}
}
}SIMULATE. List every scenario template (inputs, defaults, outputs) plus the custom-model format and period labels. No parameters.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| inputs | object | |
| horizon | integer | |
| metrics | array | |
| template | string | |
| period_label | string |
{
"type": "object",
"properties": {
"inputs": {
"type": "object"
},
"horizon": {
"type": "integer"
},
"metrics": {
"type": "array",
"items": {
"type": "object"
}
},
"template": {
"type": "string"
},
"period_label": {
"type": "string"
}
}
}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').
| Argument | Type | Description |
|---|---|---|
| max | number | |
| min | number | |
| steps | integer | |
| inputs | object | |
| values | array | |
| horizon | integer | |
| template* | string | |
| variable | string | |
| variables | array | |
| variation | number | |
| period_label | string | |
| target_metric |
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}.
| Argument | Type | Description |
|---|---|---|
| inputs | object | |
| method | string | |
| stress* | object | |
| horizon | integer | |
| options* | array | |
| criteria* | array | |
| template | string | |
| period_label | string |
{
"type": "object",
"required": [
"options",
"criteria",
"stress"
],
"properties": {
"inputs": {
"type": "object"
},
"method": {
"type": "string"
},
"stress": {
"type": "object"
},
"horizon": {
"type": "integer"
},
"options": {
"type": "array",
"items": {
"type": "object"
}
},
"criteria": {
"type": "array",
"items": {
"type": "object"
}
},
"template": {
"type": "string"
},
"period_label": {
"type": "string"
}
}
}| string |
{
"type": "object",
"required": [
"template"
],
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
},
"steps": {
"type": "integer"
},
"inputs": {
"type": "object"
},
"values": {
"type": "array",
"items": {
"type": "number"
}
},
"horizon": {
"type": "integer"
},
"template": {
"type": "string"
},
"variable": {
"type": "string"
},
"variables": {
"type": "array",
"items": {
"type": "object"
}
},
"variation": {
"type": "number"
},
"period_label": {
"type": "string"
},
"target_metric": {
"type": "string"
}
}
}