compoundsim
Server Details
Compound interest and Monte Carlo simulators for investing, retirement and past asset returns.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: historical return lookup, deterministic fixed-rate growth, single-portfolio Monte Carlo, multi-portfolio comparison, and withdrawal simulation. The closest overlap is between compare_portfolios and simulate_portfolio, but the description explicitly frames comparison as a multi-portfolio wrapper, making the boundary clear.
All tool names use consistent snake_case verb_noun phrasing: compare_portfolios, get_asset_returns, simulate_fixed_rate, simulate_portfolio, and simulate_withdrawal. The simulate_* family is especially predictable and readable.
Five tools is well-scoped for a compound-investment simulation server. Each tool covers a distinct workflow—returns, deterministic growth, Monte Carlo, comparison, and withdrawals—without redundant surface area.
The server covers the core lifecycle: historical asset returns, forward simulation, portfolio comparison, and retirement withdrawal analysis. A minor gap is the absence of a tool to list or discover available simulated assets and their exact identifiers, which would help agents construct valid simulation calls.
Available Tools
5 toolscompare_portfoliosCompare portfolios side by sideARead-onlyIdempotentInspect
Runs the same monthly-investing plan through 2 to 4 portfolios (the same simulation as simulate_portfolio) and returns each one's final outcome range, deepest fall, past return and volatility, and url, for questions like 'S&P 500 or all-country stocks?'.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | Years of investing. | |
| history | No | The span of past monthly returns the model is fitted to: the last 5, 10 or 20 years, or all the data. An asset with less data than the span asked for uses all of its own. | all |
| initial | No | Starting sum invested at once. | |
| monthly | Yes | Amount invested at the end of every month. | |
| currency | No | Currency of every amount, in and out. In a currency other than USD the paths carry its exchange-rate swings against the dollar (trend removed). Defaults to the language's currency. | |
| language | No | Language of the page the returned url opens; match the user's language. | en |
| history_to | No | Last calendar year of a custom span. | |
| portfolios | Yes | The portfolios to compare. | |
| history_from | No | First calendar year of a custom span (with history_to); replaces history. | |
| inflation_percent | No | Annual inflation. When given, every amount out is in today's money at this rate; omitted, amounts are nominal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, closed-world), so the description's job is to add what they can't: it discloses that results come from the same simulation engine as simulate_portfolio and enumerates the returned fields, which matters because there is no output schema. It doesn't mention cost, latency, or how ties/degenerate portfolios are handled, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, verb-first, with the engine equivalence and the returned fields packed into a single readable clause. No sentence restates the title or the schema, and the example question is placed last where it clarifies rather than delays.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter comparative simulation with no output schema, the description supplies the missing return-shape information and the simulation semantics, which is the main gap that structured fields leave. Currency and inflation effects are deferred entirely to schema descriptions, which is acceptable given 100% coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters including asset tickers, presets, and the history/inflation knobs; baseline is 3. The description adds only the 2–4 portfolio bound (already in minItems/maxItems) and that monthly investing is applied uniformly across candidates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Runs the same monthly-investing plan through 2 to 4 portfolios') and enumerates the outputs (final outcome range, deepest fall, past return, volatility, url). It explicitly anchors itself to a sibling ('the same simulation as simulate_portfolio'), so an agent can place it among the simulate_* family without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete triggering scenario ('S&P 500 or all-country stocks?') and states the cardinality constraint (2 to 4 portfolios), which implicitly routes single-portfolio questions to simulate_portfolio. It never explicitly says when NOT to use it or names the single-portfolio alternative as the fallback, so the routing is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_returnsPast annualised returns of assetsBRead-onlyIdempotentInspect
Annualised past returns of the assets compoundsim simulates, over the last 5, 10 or 20 years, all the data, or a calendar span: total return with dividends reinvested, price return, the dividends' share, volatility, and the return after US inflation (in USD) or the exchange rate's share of the return (in another currency).
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | Assets to include; all of them when omitted. | |
| period | No | The span measured: the last 5, 10 or 20 years, or all the data. An asset with less data than the span asked for uses all of its own. | 10 |
| currency | No | Currency of every amount, in and out. In a currency other than USD the paths carry its exchange-rate swings against the dollar (trend removed). Defaults to the language's currency. | |
| language | No | Language of the page the returned url opens; match the user's language. | en |
| period_to | No | Last calendar year of a custom span. | |
| period_from | No | First calendar year of a custom span (with period_to); replaces period. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuine context by naming the computed metrics and the dividend-reinvestment convention, but omits what the response looks like and how non-USD currency figures are derived in practice, stopping short of rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single ~55-word run-on sentence that bundles purpose, periods, metrics and currency semantics together, with compressed fragments like 'compoundsim simulates' and 'the dividends' share'. The size is reasonable and the subject is front-loaded, but the lack of sentence breaks hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the metrics returned, and all six parameters are documented in the schema. What is missing is any note on the response structure or units beyond the currency remark, so it is strong but not fully self-contained for a data-returning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns more: it explains that '5, 10 or 20 years, all the data, or a calendar span' map to period and the period_from/period_to pair, and it clarifies the currency semantics (USD inflation adjustment versus exchange-rate share in another currency) beyond what the enums convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a specific resource and computation ('annualised past returns of the assets') and enumerates the metrics returned (total return, price return, dividend share, volatility, inflation-adjusted return), which clearly separates it from the simulate_* siblings that project forward. The phrasing 'the assets compoundsim simulates' is awkward and slightly circular, but the purpose is still unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this instead of compare_portfolios or simulate_portfolio, and no prerequisites or exclusions. Use is only implied by the word 'past', leaving the agent to infer that this is the historical-lookup tool rather than a forward simulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_fixed_rateCompound interest at a fixed rateARead-onlyIdempotentInspect
Deterministic compound growth of monthly contributions (plus an optional starting sum) at a fixed annual return. Returns contributions, gains and total by year, and a compoundsim.app url. Use simulate_portfolio for the range of outcomes of real assets.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | Years of investing. | |
| initial | No | Starting sum invested at once. | |
| monthly | Yes | Amount invested at the end of every month. | |
| currency | No | Currency of every amount, in and out. In a currency other than USD the paths carry its exchange-rate swings against the dollar (trend removed). Defaults to the language's currency. | |
| language | No | Language of the page the returned url opens; match the user's language. | en |
| annual_return_pct | No | Effective annual return (CAGR), applied as the equivalent monthly rate. | |
| inflation_percent | No | Annual inflation. When given, every amount out is in today's money at this rate; omitted, amounts are nominal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered; the description adds the important trait that the simulation is deterministic rather than stochastic. It also previews the shape of the output (contributions, gains, total by year, plus a compoundsim.app URL), which the absence of an output schema makes valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, with zero waste; the core operation is front-loaded and the disambiguation follows immediately. Nothing in it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter read-only calculator with full schema coverage and no output schema, the description supplies both the output shape and the deterministic-versus-stochastic distinction an agent needs. Only minor gaps remain, such as how inflation-adjusted outputs are presented while the schema already covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter, including the currency and language enums and the inflation semantics, is already documented in the schema. The description only echoes 'monthly contributions (plus an optional starting sum)' and does not add syntax or interaction details beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('deteministic compound growth of monthly contributions... at a fixed annual return') and names the sibling it is not. The contrast with simulate_portfolio is stated in the description itself, so the agent can separate the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to simulate_portfolio 'for the range of outcomes of real assets,' which is the key alternative behaviour an agent would confuse this with. It gives a clear positive use context (fixed-rate, deterministic projections) but no explicit when-not or prerequisite notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_portfolioSimulate monthly investing in a portfolioARead-onlyIdempotentInspect
Monte Carlo simulation of investing monthly (plus an optional starting sum) in one asset or a mix rebalanced monthly. Returns the range of outcomes by year (10th to 90th percentile), the deepest fall along the way, the mix's own past return and volatility, and a compoundsim.app url that shows the same scenario.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | Years of investing. | |
| history | No | The span of past monthly returns the model is fitted to: the last 5, 10 or 20 years, or all the data. An asset with less data than the span asked for uses all of its own. | all |
| initial | No | Starting sum invested at once. | |
| monthly | Yes | Amount invested at the end of every month. | |
| currency | No | Currency of every amount, in and out. In a currency other than USD the paths carry its exchange-rate swings against the dollar (trend removed). Defaults to the language's currency. | |
| language | No | Language of the page the returned url opens; match the user's language. | en |
| portfolio | Yes | A preset name or weights in percent by asset (any total; they are scaled to 100). Assets: sp500 = S&P 500, ndx100 = Nasdaq 100, sox = SOX (Semiconductors), schd = US dividend stocks (SCHD), acwi = MSCI ACWI, efa = Developed ex-US stocks, eem = Emerging market stocks, vnq = US REITs, gld = Gold, shy = US 1–3 year Treasuries, agg = US aggregate bonds, tlt = US long-term Treasuries, btc = Bitcoin. Presets: sixtyForty = sp500 60% + agg 40%; allCountry = acwi 100%; allWeather = sp500 30% + tlt 40% + shy 15% + gld 15%. | |
| history_to | No | Last calendar year of a custom span. | |
| history_from | No | First calendar year of a custom span (with history_to); replaces history. | |
| inflation_percent | No | Annual inflation. When given, every amount out is in today's money at this rate; omitted, amounts are nominal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description does add useful output-behavior context (percentile band by year, deepest drawdown, the mix's historical return/volatility, and a compoundsim.app link reproducing the scenario), but says nothing about cost, expected runtime, or whether the simulation is stochastic/non-deterministic between calls — a notable omission for a Monte Carlo tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the method and scenario, then the return payload, then the link. It is long but every clause carries information; only the URL clause is arguably optional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of describing returns (percentiles by year, max drawdown, historical stats, shareable URL), which is exactly what an agent needs to report results. It omits assumptions that matter for interpretation, such as how non-USD currency paths are modeled, though the schema covers that in the currency field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter carries a detailed description (asset ticker meanings, preset compositions, history spans, inflation semantics), so the schema does the heavy lifting. The prose only echoes the optional starting sum and the asset-vs-mix choice, adding no syntax or constraint detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and method (Monte Carlo simulation) applied to a specific resource (monthly investing in one asset or a monthly-rebalanced mix), including the optional lump sum. It does not explicitly name or distinguish itself from siblings like compare_portfolios or simulate_withdrawal, but the monthly-accumulation framing is distinctive enough to separate it from a fixed-rate or withdrawal simulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the scenario (accumulating via monthly contributions, with or without a starting sum) but gives no explicit when-to-use / when-not-to-use guidance and never names an alternative. An agent must infer that compare_portfolios is the choice for comparing multiple mixes rather than simulating one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_withdrawalSimulate spending down a portfolio in retirementARead-onlyIdempotentInspect
Monte Carlo simulation of withdrawing a yearly percentage of a starting balance, raised with inflation every month, from a portfolio (the 4% rule and its variants). Returns the share of paths that still had money at the end, when the others ran out, the remaining balance range in today's money, the success rate at withdrawal rates from 2% to 8%, and a compoundsim.app url.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | Years the money has to last. | |
| balance | Yes | Starting balance. | |
| history | No | The span of past monthly returns the model is fitted to: the last 5, 10 or 20 years, or all the data. An asset with less data than the span asked for uses all of its own. | all |
| currency | No | Currency of every amount, in and out. In a currency other than USD the paths carry its exchange-rate swings against the dollar (trend removed). Defaults to the language's currency. | |
| language | No | Language of the page the returned url opens; match the user's language. | en |
| portfolio | Yes | A preset name or weights in percent by asset (any total; they are scaled to 100). Assets: sp500 = S&P 500, ndx100 = Nasdaq 100, sox = SOX (Semiconductors), schd = US dividend stocks (SCHD), acwi = MSCI ACWI, efa = Developed ex-US stocks, eem = Emerging market stocks, vnq = US REITs, gld = Gold, shy = US 1–3 year Treasuries, agg = US aggregate bonds, tlt = US long-term Treasuries, btc = Bitcoin. Presets: sixtyForty = sp500 60% + agg 40%; allCountry = acwi 100%; allWeather = sp500 30% + tlt 40% + shy 15% + gld 15%. | |
| history_to | No | Last calendar year of a custom span. | |
| history_from | No | First calendar year of a custom span (with history_to); replaces history. | |
| inflation_percent | No | Annual inflation the withdrawals rise with; balances are in today's money. | |
| withdrawal_rate_pct | No | First year's withdrawal as a percentage of the starting balance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, closed-world), and the description goes further by enumerating exactly what comes back — success share, exhaustion timing, balance range in today's money, a 2%-8% rate sweep — which is real added context. It stops short of noting simulation cost/runtime or how many paths are run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first clause and the return listing follows in one sentence with no filler. The output enumeration is long but each item is a distinct return value an agent would want.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters and no output schema, the description carries the burden of describing returns and does so thoroughly, so an agent knows what to expect. Remaining gaps — simulation size, runtime, determinism beyond idempotentHint — are minor for a read-only calculation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented. The description adds only framing, that the withdrawal rises with inflation monthly and results are in today's money, which sharpens withdrawal_rate_pct and inflation_percent but does not explain the history window or portfolio presets beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (Monte Carlo simulation of withdrawing a yearly percentage from a portfolio) plus the method and the 4% rule framing, which clearly separates it from a growth-only or fixed-rate simulation. It never names the sibling tools, so the differentiation is inferable rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The retirement drawdown scenario is implied by the title and by the 'yearly percentage of a starting balance, raised with inflation' mechanic, so an agent can infer when to pick this over simulate_fixed_rate. But there is no explicit when-to-use statement, no exclusions, and no mention of the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
compare_portfolios - First observed
get_asset_returns - First observed
simulate_fixed_rate - First observed
simulate_portfolio - First observed
simulate_withdrawal
Related MCP Connectors
Monte Carlo tools: three-point cost estimation and an educational retirement drawdown simulator.
Run hypothetical retirement simulations and compare outcomes using your assumptions.
Retirement Monte Carlo, tax-aware withdrawals, 2026 tax calculators, RMD, IRMAA, every-state tax.
Backtest S&P 500 stocks and ETFs on real prices, plus loan, savings, FIRE and retirement tools.
Related MCP Servers
FlicenseNot gradedqualityDmaintenanceTax-aware retirement planning for Canada and the US. CPP/OAS and Social Security timing, RRSP/TFSA/401k/IRA projections, Monte Carlo simulation, withdrawal order optimization, and historical backtesting against 150 years of market data.2-- FlicenseNot gradedqualityDmaintenanceEnables institutional-grade Monte Carlo risk analysis for portfolios, startups, real estate, and betting strategies using fat-tail distributions and proprietary algorithms. Provides comprehensive risk metrics including CVaR, VaR, ruin probability, and survival probability across multiple asset classes.1-
- AlicenseNot gradedqualityBmaintenanceEnables users to run stochastic cash runway simulations, estimate ruin probability and low-percentile wealth, and compute safe discretionary spending caps and emergency liquidity buffers.7MIT
- AlicenseNot gradedqualityBmaintenancePublic, no-login MCP server exposing SmartMoney77's financial calculators: compound interest, FIRE number, credit-card payoff, emergency fund, inflation, fees and the cost of waiting. Also computes historical "what if I had invested" returns from real yearly price data, and builds deep links and share packs for calculators in 6 localized editions.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.