{"id":222635,"recorded_at":"2026-10-26T15:22:55.502082Z","observed_at":"2026-10-26T15:22:55.502031Z","subject_kind":"endpoint","subject":"7b11eff6-0bea-4db1-befd-4b80f2367f55","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":24,"tools":[{"description":"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.","inputSchema":{"properties":{"custom_holidays":{"items":{"type":"string"},"type":"array"},"days":{"type":"integer"},"end_date":{"type":"string"},"operation":{"type":"string"},"region":{"type":"string"},"start_date":{"type":"string"}},"required":["operation","start_date"],"type":"object"},"name":"calc_business_days"},{"description":"COMPUTE. Compound-interest/growth math. operation: future_value | present_value | cagr. rate is annual decimal; compounding: daily|weekly|monthly|quarterly|semiannually|annually|continuous.","inputSchema":{"properties":{"begin_value":{"type":"number"},"compounding":{"type":"string"},"currency":{"type":"string"},"end_value":{"type":"number"},"future_value":{"type":"number"},"operation":{"type":"string"},"present_value":{"type":"number"},"rate":{"type":"number"},"years":{"type":"number"}},"required":["operation"],"type":"object"},"name":"calc_compound_growth"},{"description":"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.","inputSchema":{"properties":{"amount":{"type":"number"},"date":{"type":"string"},"from_currency":{"type":"string"},"live":{"type":"boolean"},"to_currency":{"type":"string"}},"required":["amount","from_currency","to_currency"],"type":"object"},"name":"calc_currency_convert"},{"description":"COMPUTE. Asset depreciation schedule. method: straight_line | declining_balance | sum_of_years_digits.","inputSchema":{"properties":{"cost":{"type":"number"},"currency":{"type":"string"},"method":{"type":"string"},"salvage_value":{"type":"number"},"useful_life_years":{"type":"integer"}},"required":["method","cost","salvage_value","useful_life_years"],"type":"object"},"name":"calc_depreciation"},{"description":"COMPUTE. Internal Rate of Return: per-period rate where NPV=0 (Newton + bisection). Requires a sign change in cashflows.","inputSchema":{"properties":{"cashflows":{"items":{"type":"number"},"type":"array"},"guess":{"type":"number"}},"required":["cashflows"],"type":"object"},"name":"calc_irr"},{"description":"COMPUTE. List every supported metric with descriptions and required/optional params. No parameters.","inputSchema":{"properties":{},"type":"object"},"name":"calc_list_metrics"},{"description":"COMPUTE. Level-payment loan: monthly payment, total interest, payoff, and (optional) full schedule.","inputSchema":{"properties":{"annual_rate":{"type":"number"},"currency":{"type":"string"},"extra_payment":{"type":"number"},"include_schedule":{"type":"boolean"},"principal":{"type":"number"},"term_months":{"type":"integer"}},"required":["principal","annual_rate","term_months"],"type":"object"},"name":"calc_loan_amortization"},{"description":"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.","inputSchema":{"properties":{"currency":{"type":"string"},"metric":{"type":"string"},"params":{"type":"object"}},"required":["metric","params"],"type":"object"},"name":"calc_metric"},{"description":"COMPUTE. Net Present Value (discounted cash flow). NPV = sum(CF_t/(1+rate)^t); cashflows[0] is period 0 (usually the negative outlay).","inputSchema":{"properties":{"cashflows":{"items":{"type":"number"},"type":"array"},"currency":{"type":"string"},"rate":{"type":"number"}},"required":["rate","cashflows"],"type":"object"},"name":"calc_npv"},{"description":"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.","inputSchema":{"properties":{"criteria":{"type":"array"},"method":{"type":"string"},"options":{"type":"array"},"scores":{"type":"object"}},"required":["options","criteria","scores"],"type":"object"},"name":"decide"},{"description":"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.","inputSchema":{"properties":{"criteria":{"type":"array"},"method":{"type":"string"},"option_a":{"type":"string"},"option_b":{"type":"string"},"options":{"type":"array"},"scores":{"type":"object"}},"required":["criteria","scores"],"type":"object"},"name":"decide_compare_two"},{"description":"DECIDE. List the scoring methods (weighted_sum, weighted_product, topsis) with normalization details and when to use each. No parameters.","inputSchema":{"properties":{},"type":"object"},"name":"decide_list_methods"},{"description":"DECIDE. Return the full normalized scored matrix (per-option, per-criterion) + ranking when scores are supplied separately, without the winner narrative.","inputSchema":{"properties":{"criteria":{"type":"array"},"method":{"type":"string"},"options":{"type":"array"},"scores":{"type":"object"}},"required":["options","criteria","scores"],"type":"object"},"name":"decide_score"},{"description":"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.","inputSchema":{"properties":{"criteria":{"type":"array"},"method":{"type":"string"},"options":{"type":"array"},"scores":{"type":"object"},"steps":{"type":"integer"},"variation":{"type":"number"}},"required":["options","criteria","scores"],"type":"object"},"name":"decide_sensitivity"},{"description":"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.","inputSchema":{"properties":{"criteria":{"items":{"type":"object"},"type":"array"},"horizon":{"type":"integer"},"inputs":{"type":"object"},"method":{"type":"string"},"options":{"items":{"type":"object"},"type":"array"},"period_label":{"type":"string"},"template":{"type":"string"}},"required":["options","criteria"],"type":"object"},"name":"evaluate_options_with_scenarios"},{"description":"Aggregated health/status for the whole stack (all three engines + composites). No parameters.","inputSchema":{"properties":{},"type":"object"},"name":"health_check"},{"description":"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.","inputSchema":{"properties":{},"type":"object"},"name":"list_capabilities"},{"description":"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.","inputSchema":{"properties":{"cashflow_metric":{"type":"string"},"currency":{"type":"string"},"horizon":{"type":"integer"},"initial_investment":{"type":"number"},"inputs":{"type":"object"},"metrics":{"items":{"type":"object"},"type":"array"},"period_label":{"type":"string"},"rate":{"type":"number"},"template":{"type":"string"}},"required":["template","cashflow_metric","rate"],"type":"object"},"name":"plan_to_valuation"},{"description":"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'.","inputSchema":{"properties":{"bounds":{"items":{"type":"number"},"type":"array"},"horizon":{"type":"integer"},"inputs":{"type":"object"},"period_label":{"type":"string"},"solve_for":{"type":"string"},"target_metric":{"type":"string"},"target_value":{"type":"number"},"template":{"type":"string"}},"required":["template","solve_for","target_value"],"type":"object"},"name":"sim_break_even"},{"description":"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.","inputSchema":{"properties":{"compare_metric":{"type":"string"},"goal":{"type":"string"},"horizon":{"type":"integer"},"include_projections":{"type":"boolean"},"scenarios":{"items":{"type":"object"},"type":"array"}},"required":["scenarios"],"type":"object"},"name":"sim_compare"},{"description":"SIMULATE. List every scenario template (inputs, defaults, outputs) plus the custom-model format and period labels. No parameters.","inputSchema":{"properties":{},"type":"object"},"name":"sim_list_templates"},{"description":"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.","inputSchema":{"properties":{"horizon":{"type":"integer"},"inputs":{"type":"object"},"metrics":{"items":{"type":"object"},"type":"array"},"period_label":{"type":"string"},"template":{"type":"string"}},"type":"object"},"name":"sim_run"},{"description":"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').","inputSchema":{"properties":{"horizon":{"type":"integer"},"inputs":{"type":"object"},"max":{"type":"number"},"min":{"type":"number"},"period_label":{"type":"string"},"steps":{"type":"integer"},"target_metric":{"type":"string"},"template":{"type":"string"},"values":{"items":{"type":"number"},"type":"array"},"variable":{"type":"string"},"variables":{"items":{"type":"object"},"type":"array"},"variation":{"type":"number"}},"required":["template"],"type":"object"},"name":"sim_sensitivity"},{"description":"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}.","inputSchema":{"properties":{"criteria":{"items":{"type":"object"},"type":"array"},"horizon":{"type":"integer"},"inputs":{"type":"object"},"method":{"type":"string"},"options":{"items":{"type":"object"},"type":"array"},"period_label":{"type":"string"},"stress":{"type":"object"},"template":{"type":"string"}},"required":["options","criteria","stress"],"type":"object"},"name":"stress_test_decision"}]},"body_sha256":"4f3a3efc56155125df866c678682622898b58b92a67acc534823c981a6fa2812","prev_id":null,"leaf":"0xd91ea07073ec3a22f6a5671205586702836066a0152dd39fea00de296d96e63c","leaf_text":"{\"body\":\"4f3a3efc56155125df866c678682622898b58b92a67acc534823c981a6fa2812\",\"id\":222635,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793028175502031,\"prev\":null,\"subject\":\"7b11eff6-0bea-4db1-befd-4b80f2367f55\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0xd91e62c4a49cddf5ba4c72363600c323ad1da16ed9f96a27c618d80cbd437643","0xdafa02c93d57e4e3b8e7c51fee39c5838723bf128b8428ff99a8f9e1e539fb84","0x7874a0105afe0a1124fa1814eb529168b04c93ada59b401a2474ee686d741b46","0x5b7a1d4b04537214df9fcee4efcca07840337c470b024ec6264faf037f0de5e9","0xdaacde948fb39ff0d32de8c3f5b50e8cbaa08dde10a34af16cd23d269c7c1e40","0x4716b34718ba2b31cfd42d6532b81564697459a754f77c8a4b101220a3b11f7b","0x579701e2ca4126aa48d272aeea8e04a04902239b5e4501d45c4fcc1de794c89c","0xfb4c736c849b279ad943c5335eb7a558c06b4e07ef2cf96c3b3cdf2281c763b1","0xdf8eaed4aa390776806b5fc505783beb683a482e830d1fe053bdb4242fbf9e37","0xbef0db8aab9733efc417d7a27c94356a006b86ef076eb4c35a8d217ef10b433b","0xd96796540b8f5b592d8f03fc775e7a26bd00af394ce468ff886a43215a522475","0x07e91966e8a0c43a0725bd3d523259064a93333c2900e6171b69ffbfd9f423f1","0xcd9e3af1fa905ec61b99ee9442716d7c7a439aecacd018ec229a24def1cabf6b","0x6b927d53caa5125cdba9255612d524976c691f8672796c3f0885ba2c5b3af1ad","0x6dc40f983a3840a0ad927a9ca17f4ff1e3b649a6c735e2a09b140db7c2caf13b","0x703f95866af09c5e5d6ead7411e9a10f964a41a2aff64d4a55ff0053c023a023","0xd0651cb9bc8155eb52b5247d506e74b8a935057dc190ba52091702ac25ed3a40","0x9a9024edb5069d88a324facb310a5ce8e495214bbaa968f077bede437390194f","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}