Skip to main content
Glama

QuantCalc Retirement Engine

Server Details

Retirement Monte Carlo with a tax-aware withdrawal-order and Roth-conversion recommendation.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
quantcalc-app/quantcalc-mcp-plugin
GitHub Stars
0
Server Listing
app.quantcalc/retirement-engine

TDQS

A4.3/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct role: running projections, running tax-aware projections, comparing assumption sets, listing sources, and explaining methodology. The two projection tools are explicitly differentiated by whether income tax is modeled, avoiding misselection.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (compare_, explain_, list_, run_). The compound names remain predictable and readable.

Tool Count5/5

Five tools is well-scoped for a retirement calculation engine. Each tool earns its place, covering analysis, explanation, reference, and two projection variants without redundancy.

Completeness4/5

The surface covers core retirement projection workflows, tax-aware modeling, assumption comparison, source listing, and methodology explanation. Minor gaps exist, such as no explicit input/default schema or state-rule lookup tool, but they are unlikely to block agent use.

Available Tools

5 tools
compare_return_assumptionsCompare published return assumptionsA
Read-only
Inspect

Runs the same plan against several published capital market assumption sets and returns the success rate and median outcome under each, showing how far the answer moves with the return forecast used.

ParametersJSON Schema
NameRequiredDescriptionDefault
pensionNoYearly pension income. Default 0.
sourcesNoSource ids to compare. Defaults to all.
allocationsNoPercentages summing to 100: [US stocks, international stocks, bonds, real estate, cash]. Default [60,10,25,5,0].
current_ageYesCurrent age of the primary person.
ss_start_ageNoAge Social Security starts. Default 67.
inflation_rateNoAnnual inflation as a percent, e.g. 2.5. Default 2.5.
retirement_ageNoAge work income stops. Defaults to current age.
returns_sourceNoWhich published return set to use (see list_return_assumption_sources). Default jpmorgan.
annual_spendingYesPlanned yearly spending in today's dollars, before income tax (this tool runs the standard engine, which does not model tax).
current_savingsYesTotal invested portfolio today, in dollars.
life_expectancyNoAge the plan must last until. Default 92.
social_securityNoYearly Social Security in today's dollars. Default 0 — and 0 is reported as an explicit assumption, not hidden.
pension_start_ageNoAge the pension starts. Default 65.
monthly_contributionNoMonthly savings until retirement. Default 0.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds meaningful context by specifying that it compares multiple published assumption sets and returns success rate and median outcome as sensitivity metrics, which is beyond what annotations provide. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-structured sentence states the core behavior, the output metrics, and the purpose (sensitivity analysis). Every clause earns its place and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with no output schema, the description supplies essential output expectations (success rate and median outcome under each set) while the schema covers all parameter semantics. The open-world/read-only annotations and the sibling list_return_assumption_sources provide enough surrounding context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 all 14 parameters and their defaults. The main description adds no parameter-level detail beyond the schema. The presence of both a singular 'returns_source' and a plural 'sources' array could be mildly confusing, but the schema descriptions clarify each.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it 'runs the same plan against several published capital market assumption sets' and returns success rate and median outcome under each. This clearly distinguishes it from the sibling run_retirement_projection (single plan, single forecast) and list_return_assumption_sources (listing sources).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case—comparing how different return forecasts affect a retirement plan—and the wording makes it distinct from a single projection. However, it does not explicitly state when to use this tool versus run_retirement_projection, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_methodologyWhat the engine models, and what it does notA
Read-only
Inspect

Returns what the QuantCalc engine models and what it deliberately leaves out, including the tax provisions that are out of scope, and links to the published methodology.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description is not required to restate safety. It adds value by disclosing the tool returns both included and excluded items, specifically tax provisions, and provides links. This goes beyond the annotations and gives clear behavioral context about the output content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that packs essential information: what is returned, what is excluded, and that links are provided. There is no filler, and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter informational tool with no output schema, the description fully covers what the agent needs to know to call it correctly: the nature of the returned information and the presence of links. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty with 100% coverage. Per the baseline for no parameters, a score of 4 is appropriate; the description does not need to explain parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a summary of what the QuantCalc engine models and excludes, including tax provisions out of scope, and links to methodology. This is a specific verb ('Returns') and resource (engine scope), and it differentiates from sibling tools that focus on assumptions, sources, or projections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used to understand modeling scope, but it does not explicitly state when to use it versus alternatives, nor does it provide any exclusion criteria. An agent can infer the purpose, but there is no direct guidance on selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_return_assumption_sourcesList available return assumption setsA
Read-only
Inspect

Returns the published capital market assumption sets the engine carries and which components each publisher provides (returns, volatilities, correlations).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and scope. The description adds specific behavioral context by specifying what the return includes (which components each publisher provides), going slightly beyond the annotations. It does not contradict annotations and provides useful detail about the operation's output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the main action ('Returns the published capital market assumption sets') and then adds the key detail about components. Every word contributes to clarity, with no wasted phrasing or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only listing tool with annotations covering safety and open-world behavior, the description provides all necessary context. It tells the agent what the tool returns and what information is included, which is sufficient for correct invocation. No output schema exists, so the description adequately explains the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema trivially covers 100% of parameters. Per rubric, a baseline of 4 is given for 0 parameters. The description does not need to add parameter meaning since there are none, and it correctly focuses on the output semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Returns') and a specific resource ('the published capital market assumption sets the engine carries'), and adds detail about the returned components (returns, volatilities, correlations). This distinguishes it from siblings like compare_return_assumptions (which compares) and run_retirement_projection (which runs projections).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use the tool: to retrieve the list of available assumption sets and their components. However, it does not explicitly mention alternatives or exclusions relative to sibling tools. The purpose is obvious enough that an agent can infer when to call it, but there is no explicit 'use this when' or 'not for comparing' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_retirement_projectionRun a retirement projectionA
Read-only
Inspect

Runs a Monte Carlo retirement projection on the QuantCalc engine and returns the success rate, the ending-portfolio distribution, and the assumptions that produced them. The result states the return model that ran, the number of paths, and the income assumptions it used, including when there are none. Income tax is not modelled by this tool; run_tax_aware_projection models it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pensionNoYearly pension income. Default 0.
allocationsNoPercentages summing to 100: [US stocks, international stocks, bonds, real estate, cash]. Default [60,10,25,5,0].
current_ageYesCurrent age of the primary person.
ss_start_ageNoAge Social Security starts. Default 67.
inflation_rateNoAnnual inflation as a percent, e.g. 2.5. Default 2.5.
retirement_ageNoAge work income stops. Defaults to current age.
returns_sourceNoWhich published return set to use (see list_return_assumption_sources). Default jpmorgan.
annual_spendingYesPlanned yearly spending in today's dollars, before income tax (this tool runs the standard engine, which does not model tax).
current_savingsYesTotal invested portfolio today, in dollars.
life_expectancyNoAge the plan must last until. Default 92.
social_securityNoYearly Social Security in today's dollars. Default 0 — and 0 is reported as an explicit assumption, not hidden.
pension_start_ageNoAge the pension starts. Default 65.
monthly_contributionNoMonthly savings until retirement. Default 0.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so no contradiction. The description adds meaningful behavioral context beyond annotations: it reveals that the result includes the return model, number of paths, and income assumptions, and explicitly states that a zero Social Security value is reported as an explicit assumption rather than hidden. This gives the agent insight into the tool's output behavior without relying on an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The first sentence states the core function, the second lists outputs, the third gives the tax caveat and alternative. All information is front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 13 parameters but no output schema, the description is remarkably complete: it states what the tool returns (success rate, distribution, assumptions, return model, path count, income assumptions) and highlights the tax limitation. It also references list_return_assumption_sources for the returns_source parameter, guiding the agent to the appropriate sibling. The annotations cover read-only and open-world behavior, leaving no critical gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented individually. The description adds contextual value by clarifying that tax is not modelled, which affects how annual_spending and other parameters should be interpreted, and by noting that income assumptions are always reported (even when zero). However, much of this is already present in the schema descriptions (e.g., 'before income tax'), so the marginal value is modest, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair ('Runs a Monte Carlo retirement projection on the QuantCalc engine') and lists concrete outputs (success rate, ending-portfolio distribution, assumptions). It explicitly differentiates itself from the tax-aware sibling by stating it does not model income tax, so an agent can tell it apart from run_tax_aware_projection without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context: it runs the standard engine and explicitly states when not to use it ('Income tax is not modelled by this tool') and names the alternative (run_tax_aware_projection). It does not mention other siblings like compare_return_assumptions or explain_methodology, but these are obviously different in purpose, so the guidance is adequate without being exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_tax_aware_projectionTax-aware projection with the recommended withdrawal orderA
Read-only
Inspect

Runs the retirement projection with the household's accounts split by tax type and returns the withdrawal order and Roth-conversion programme the engine selected, its present-value advantage and range against drawing traditional first, and the after-tax success rate. Federal and state income tax (50 states and DC), Social Security taxability, required minimum distributions, Medicare IRMAA surcharges and the early-withdrawal penalty are paid from the portfolio year by year; spending is what the household keeps after tax. The result states every assumption it used, including the defaults for inputs that were not given, and what the engine does not model.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoTwo-letter state of residence (or DC) for state income tax with that state's retirement-income rules. When absent the result states that no state tax was modelled.
pensionNoYearly pension income. Default 0.
annual_qcdNoYearly qualified charitable distribution from the traditional account, in today's dollars, counted against required minimum distributions. Default 0.
birth_yearNoYear of birth, optional. Must match current_age: 2026 minus current_age, or 2025 minus current_age when this year's birthday is still to come (then every tax rule uses the age reached in each calendar year). Sets the RMD start age (73 if born 1951-1959, 75 if born 1960 or later). Default: 2026 minus current_age, stated in the result.
spouse_ageNoSpouse's current age, for married filing jointly: sets the second aged deduction and Medicare surcharge. Default: the same as current_age, stated in the result.
allocationsNoPercentages summing to 100: [US stocks, international stocks, bonds, real estate, cash]. Default [60,10,25,5,0].
birth_monthNoMonth of birth, 1-12, optional. Times the half-year rules: the early-withdrawal penalty ends at 59 and a half, charitable distributions start at 70 and a half, Medicare starts in the birthday month. Default: not given, stated in the result.
current_ageYesCurrent age of the primary person.
roth_balanceYesRoth IRA and Roth 401(k) balance today, in dollars. 0 if none.
ss_start_ageNoAge Social Security starts. Default 67.
filing_statusYesFederal filing status: single, married filing jointly (mfj), married filing separately (mfs) or head of household (hoh).
inflation_rateNoAnnual inflation as a percent, e.g. 2.5. Default 2.5.
retirement_ageNoAge work income stops. Defaults to current age.
returns_sourceNoWhich published return set to use (see list_return_assumption_sources). Default jpmorgan.
annual_spendingYesPlanned yearly spending in today's dollars, after tax: what the household keeps. The engine withdraws enough each year to fund this plus that year's federal, state, Medicare-surcharge and penalty tax.
life_expectancyNoAge the plan must last until. Default 92.
roth_conversionNoThe household's own Roth-conversion plan: a fixed amount per year between two ages. When given, the engine applies it on every path and searches withdrawal orders around it instead of searching its own conversion programmes.
social_securityNoYearly Social Security in today's dollars. Default 0 — and 0 is reported as an explicit assumption, not hidden.
taxable_balanceYesTaxable brokerage and savings today, in dollars. 0 if none. The three balances together are the portfolio.
cost_basis_ratioNoPercentage of the taxable account that is cost basis, 0-100. Default 40, and the result says so when it is assumed.
pension_start_ageNoAge the pension starts. Default 65.
medicare_start_ageNoAge Medicare (and its IRMAA income surcharges) begins. Default 65. The year it begins is charged only for the months from the birthday month.
tax_exempt_interestNoYearly municipal-bond interest, which counts toward Social Security taxability and IRMAA income but is not itself taxed. Default 0.
traditional_balanceYesPre-tax retirement accounts today (traditional IRA, 401(k), 403(b)), in dollars. 0 if none.
monthly_contributionNoMonthly savings until retirement. Default 0.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint; the description goes well beyond them by spelling out which taxes are paid from the portfolio year by year, that spending is after-tax, that every assumption and default is surfaced in the result, and that the engine states what it does not model. This is unusually rich disclosure of modelling behaviour and limits and is fully consistent with readOnlyHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and then the returns, with no filler or restatement of the title. The tax-mechanics sentence is dense but every clause carries information (which taxes, paid from portfolio, spending definition).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 25-parameter simulation with no output schema, the description covers the inputs' conceptual model (three balances = portfolio, after-tax spending), the return payload, and the guarantee that defaults and unmodelled items are reported. Combined with 100% schema coverage, an agent has what it needs to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 25 parameters is already documented in the schema, including defaults, units and enum values. The description adds essentially no parameter-level detail beyond the state (50 states + DC) and returns_source pointer, which is the correct baseline when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (runs the retirement projection) and enumerates the outputs concretely: withdrawal order, Roth-conversion programme, present-value advantage and range, after-tax success rate. The 'tax-aware' framing implicitly separates it from run_retirement_projection, but the sibling is never named, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when it applies (household with accounts split by tax type, wants a tax-aware answer) and it routes the agent to list_return_assumption_sources for returns_source. It never says when to prefer run_retirement_projection or compare_return_assumptions instead, so the selection guidance is only implied.

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.

  1. 1 tool update
    • Changedrun_tax_aware_projection3 fields changed
      • addedInput schema / properties / birth_month
        Added value: +{
        +  "description": "Month of birth, 1-12, optional. Times the half-year rules: the early-withdrawal penalty ends at 59 and a half, charitable distributions start at 70 and a half, Medicare starts in the birthday month. Default: not given, stated in the result.",
        +  "type": "integer"
        +}
      • addedInput schema / properties / birth_year
        Added value: +{
        +  "description": "Year of birth, optional. Must match current_age: 2026 minus current_age, or 2025 minus current_age when this year's birthday is still to come (then every tax rule uses the age reached in each calendar year). Sets the RMD start age (73 if born 1951-1959, 75 if born 1960 or later). Default: 2026 minus current_age, stated in the result.",
        +  "type": "integer"
        +}
      • changedInput schema / properties / medicare_start_age / description
        Previous value: -"Age Medicare (and its IRMAA income surcharges) begins. Default 65."New value: +"Age Medicare (and its IRMAA income surcharges) begins. Default 65. The year it begins is charged only for the months from the birthday month."
  2. 1 tool update
    • Addedrun_tax_aware_projection
  3. 1 tool update
    • Removedrun_tax_aware_projection
  4. 1 tool update
    • Addedrun_tax_aware_projection
  5. 2 tool updates
    • Changedcompare_return_assumptions1 field changed
      • changedInput schema / properties / annual_spending / description
        Previous value: -"Planned yearly spending in today's dollars."New value: +"Planned yearly spending in today's dollars, before income tax (this tool runs the standard engine, which does not model tax)."
    • Changedrun_retirement_projection1 field changed
      • changedInput schema / properties / annual_spending / description
        Previous value: -"Planned yearly spending in today's dollars."New value: +"Planned yearly spending in today's dollars, before income tax (this tool runs the standard engine, which does not model tax)."
  6. 4 tool updates
    • First observedcompare_return_assumptions
    • First observedexplain_methodology
    • First observedlist_return_assumption_sources
    • First observedrun_retirement_projection

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Tax-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
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides retirement planning computations for AI agents, including Monte Carlo simulations, tax burden modeling across all US states, Social Security claiming optimization, and cost-of-living comparisons.
    7 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.