Skip to main content
Glama

Foresight Planner

Server Details

Will my retirement savings last? A free anonymous check, or a full plan once you sign in.

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
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL
ChatGPT
โ€“
Claude
โ€“

TDQS

Score is being calculated.

Available Tools

3 tools
get_plan_resultGet a plan resultA
Read-only
Inspect

Gets the result of a Foresight Planner plan that run_plan started but that was still running when run_plan answered. Pass the run_id run_plan gave. Free: it uses no plan run. If the plan is still running, it says so; call it again a little later.

NameRequiredDescriptionDefault
run_idYesThe run_id run_plan gave.

Output Schema

NameRequiredDescription
summaryYes
benefitsYes
end_agesYesFixed horizon: each person's age at the end of their own horizon, by person label. Null under life expectancy.
plan_urlYesLink to the saved plan on the site, with the year-by-year detail: give it to the person.
runs_leftYes
runs_usedYes
start_ageYes
not_adviceYes
runs_limitYes
assumptionsYes
plan_to_ageYesFixed horizon, one person: their age at plan end. Null for a couple, whose partners plan to their own ages (see end_ages), and under life expectancy, where each path ends at its own sampled death.
runs_windowYesThe period runs_used and runs_limit count over: a year on the Free plan, a calendar month on Pro.
horizon_modeYes
horizon_statsYesLife expectancy: the spread of simulated lifetimes. Null on a fixed horizon.
horizon_yearsYesFixed horizon: the plan's length in years (a couple's longer horizon). Null under life expectancy; see horizon_stats.
n_simulationsYes
plan_end_yearYesFixed horizon: the calendar year the plan ends, at the end of the longest horizon. Null under life expectancy.
lifetime_taxesYesIncome tax over the whole plan: each path's total, as a mean over the paths (not a median), in today's dollars, the OAS clawback included as its own line.
taxes_modelledYes
wealth_at_agesYesFixed horizon: portfolio value at retirement, each year the first person's age is a multiple of 10, and plan end. Null under life expectancy; see wealth_at_end_of_life.
data_attributionYes
household_totalsYesTrue for a couple: benefit and pension amounts cover both partners together.
median_failure_ageYesThe first person's age in the median year money ran out; null when no path ran out.
success_probabilityYes
first_retirement_yearYes
reused_run_started_atYesSet when this answer reused an identical run of the same inputs from this assistant in the last 15 minutes: when that run started. Nothing was charged for this call, so runs_used is unchanged by it. Null for a run of its own.
wealth_at_end_of_lifeYesLife expectancy: portfolio value when each path ends (the last person's death, or a fixed-horizon partner's plan end if later). Null on a fixed horizon.
benefits_after_plan_endYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the provided readOnlyHint/destructiveHint annotations, it discloses two non-obvious behaviors: the call consumes no plan run ("Free: it uses no plan run") and it is a polling-style async retrieval that may return an in-progress status. Neither fact is derivable from structured fields, so this is genuine added context.

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?

Front-loaded with the purpose, then provenance, then cost, then polling behavior โ€” a sensible order with almost no waste. The "Free: it uses no plan run" phrasing is slightly terse but carries real information.

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 single-parameter async poller with an output schema, the description covers the essential gaps: where the run_id comes from, cost, and in-progress behavior. It stops short of stating what happens with an invalid or expired run_id, but return-value shape is covered by the output schema.

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?

With one parameter at 100% schema coverage, the schema already documents run_id and its UUID pattern. The description's "Pass the run_id run_plan gave" restates the schema's provenance note rather than adding format or error semantics, so the baseline applies.

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?

States a specific verb and resource ("Gets the result of a Foresight Planner plan") and immediately scopes it to plans that run_plan started but were still running, which cleanly separates it from run_plan. The purpose is unambiguous without opening the schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it (only for plans that were still running when run_plan answered) and how to trigger it ("Pass the run_id run_plan gave"). It also prescribes the follow-up behavior for the still-running case ("call it again a little later"), leaving no inference to the agent.

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

retirement_quick_checkRetirement Quick CheckA
Read-only
Inspect

Will my retirement savings last? Estimates the chance a portfolio lasts through retirement, given savings, yearly spending, years in retirement and the share in bonds, from simulations on global market history (with a US-only comparison). A horizon given as ages works: years = end age minus current age (retiring at 68 until 94 is 26 years). It leaves out taxes, CPP/OAS, pensions and other income. Foresight Planner's full plan at https://foresightplanner.com/ai includes them; when a question turns on them, point the person there (the result links it too).

NameRequiredDescriptionDefault
yearsYesYears the money must last (end age minus current age).
bond_percentYesPercent of the portfolio in bonds, 0-100.
annual_spendingYesYearly spending from savings, in today's dollars.
portfolio_valueYesRetirement savings in dollars.

Output Schema

NameRequiredDescription
yearsYes
summaryYes
us_onlyYes
full_planYes
not_adviceYes
assumptionsYes
diversifiedYes
result_kindYes
us_only_noteYes
full_plan_urlYes
withdrawal_rateYes
data_attributionYes
bond_percent_usedYes
withdrawal_rate_usedYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the answer is a simulated probability based on global market history, and the calculation deliberately omits taxes, government benefits and pensions, which tells the agent how far to trust the number.

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?

Purpose is front-loaded in the opening question and first clause, and the exclusions and horizon conversion follow logically. It is somewhat chatty, and the horizon arithmetic partially restates what the schema already explains, but no sentence is dead weight.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description covers scope, modeling basis, explicit omissions and a redirect, which is sufficient for a four-parameter calculator, though the relationship to the sibling planning tools is left unstated.

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 all four parameters are already documented, and the baseline is 3. The description maps the inputs in prose and supplies a worked horizon example (68 to 94 means 26 years), but the schema's own years field already says 'end age minus current age', so the added value is marginal.

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: estimates the probability a portfolio lasts through retirement from simulations on global market history, with a US-only comparison. The inputs listed (savings, spending, years, bond share) make the scope unmistakable, though it never names or contrasts itself with the sibling tools run_plan or get_plan_result.

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?

Explicit when-not guidance: it leaves out taxes, CPP/OAS, pensions and other income, and directs the person to Foresight Planner's full plan when the question turns on those. That is a clear exclusion plus an alternative, but the alternative is an external URL rather than the sibling tools, so an agent still has no stated rule for choosing this over run_plan.

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

run_planRun a retirement planAInspect

Runs a full Foresight Planner retirement plan for a person or couple living in Canada (outside Quebec) or the US, on the person's Foresight Planner account. It returns the chance the money lasts, from simulations on global market history; income tax in the first retirement year and over the whole plan (federal, provincial or state, and the OAS clawback; the whole-plan figure is each path's total, as a mean over the paths); each government benefit (CPP and OAS, or Social Security) and employer pension with its start age and yearly amount from each year a claim starts or a pension ends, as household totals for a couple; spending in the first retirement year and the cash flow that adds up to it: benefits and pensions, employment and other income, dividends and interest, and withdrawals from accounts, less tax and any amount reinvested (withdrawals alone are not the spending), with withdrawals split by account and the year's taxable income before credits; and portfolio value percentiles at key ages (at the end of life on a life-expectancy horizon), all in today's dollars. Use it when a question turns on benefit start ages, pensions, taxes or account types; to compare start ages, call it once per option. If the person hasn't said their age, province or state, savings or spending, ask; don't guess. Pass only what the person said: inputs left out take the plan's defaults, which the result lists as assumptions. Each call uses one of the account's plan runs (the same inputs again within 15 minutes are free), and the result says how many are left. A plan that takes longer than about 40 seconds returns a run_id instead: get its result with get_plan_result. The result links the saved plan on https://foresightplanner.com, where the person sees the year-by-year detail and can change any input.

NameRequiredDescriptionDefault
taxYes
person1Yes
person2No
accountsYes
essentialNofloor_ceiling and yale only: the yearly spending that never flexes, in today's dollars a YEAR, at most withdrawal_amount; the rest can be cut in bad years. Left out, it is the plan builder's default, the smaller of $35,000 and withdrawal_amount. Null is the only value for constant_dollar; under floor_ceiling or yale null makes the WHOLE spending the floor, so none of it flexes.
floor_pctNofloor_ceiling only: the largest yearly cut in real spending, as a FRACTION 0-1 (0.025 means spending can fall at most 2.5% a year below inflation).
plan_nameNoA short name for this scenario as the person would recognise it, e.g. 'CPP at 70' or 'Retire at 60'. Name each option differently when comparing.
allocationNo
ceiling_pctNofloor_ceiling only: the largest yearly raise in real spending, as a FRACTION 0-1 (0.05 means spending can rise at most 5% a year above inflation).
life_eventsNo
random_seedNoSeed for the simulated market paths. A fresh plan fixes it, so runs and comparisons use the same market paths; null draws fresh paths on each new run (the same run_plan call again within 15 minutes returns the earlier run).
block_lengthNoLength in MONTHS of each run of consecutive market history the simulation samples (120 means 10 years). Longer blocks keep more of history's long good and bad spells.
yale_smoothingNoyale only: the weight, as a FRACTION 0-1, on last year's spending grown with inflation; the rest follows the portfolio's value. 1 behaves like constant_dollar, 0 like a fixed percentage of the portfolio.
resident_countryYes
withdrawal_amountYesAnnual spending in today's dollars, after tax, from all sources (benefits, pensions, other income, investment income and withdrawals); not the portfolio withdrawal. Under floor_ceiling and yale it is the first year's spending, which then moves with the portfolio.
withdrawal_strategyNo

Output Schema

NameRequiredDescription
summaryYes
benefitsYes
end_agesYesFixed horizon: each person's age at the end of their own horizon, by person label. Null under life expectancy.
plan_urlYesLink to the saved plan on the site, with the year-by-year detail: give it to the person.
runs_leftYes
runs_usedYes
start_ageYes
not_adviceYes
runs_limitYes
assumptionsYes
plan_to_ageYesFixed horizon, one person: their age at plan end. Null for a couple, whose partners plan to their own ages (see end_ages), and under life expectancy, where each path ends at its own sampled death.
runs_windowYesThe period runs_used and runs_limit count over: a year on the Free plan, a calendar month on Pro.
horizon_modeYes
horizon_statsYesLife expectancy: the spread of simulated lifetimes. Null on a fixed horizon.
horizon_yearsYesFixed horizon: the plan's length in years (a couple's longer horizon). Null under life expectancy; see horizon_stats.
n_simulationsYes
plan_end_yearYesFixed horizon: the calendar year the plan ends, at the end of the longest horizon. Null under life expectancy.
lifetime_taxesYesIncome tax over the whole plan: each path's total, as a mean over the paths (not a median), in today's dollars, the OAS clawback included as its own line.
taxes_modelledYes
wealth_at_agesYesFixed horizon: portfolio value at retirement, each year the first person's age is a multiple of 10, and plan end. Null under life expectancy; see wealth_at_end_of_life.
data_attributionYes
household_totalsYesTrue for a couple: benefit and pension amounts cover both partners together.
median_failure_ageYesThe first person's age in the median year money ran out; null when no path ran out.
success_probabilityYes
first_retirement_yearYes
reused_run_started_atYesSet when this answer reused an identical run of the same inputs from this assistant in the last 15 minutes: when that run started. Nothing was charged for this call, so runs_used is unchanged by it. Null for a run of its own.
wealth_at_end_of_lifeYesLife expectancy: portfolio value when each path ends (the last person's death, or a fixed-horizon partner's plan end if later). Null on a fixed horizon.
benefits_after_plan_endYes

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (which only say it is not read-only, not destructive, not open-world), it discloses the credit model (one plan run per call, repeats within 15 minutes free, result reports remaining runs), the 40-second timeout handing off to get_plan_result with a run_id, and that a saved plan is created and linked. Omitted inputs defaulting to plan assumptions is also disclosed.

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

Conciseness3/5

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

Purpose and country scope are front-loaded, but the middle is one very long run-on sentence enumerating return values (taxes, benefits, spending cash flow, percentiles) that is hard to parse and partly redundant given an output schema exists. The operational guidance at the end (run_id, credits, saved plan link) is tighter and better placed.

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 16-parameter simulation tool it covers the essentials an agent needs: scope, when to ask for missing facts, default behaviour, cost per call, timeout handoff, and where results persist. Field-level parameter guidance is left to the schema, and return values are covered by the output schema, so remaining gaps are minor.

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 coverage is only 50% across 16 parameters, so the description would need to compensate, and it largely does not address individual parameters. It does add the important calling convention 'Pass only what the person said: inputs left out take the plan's defaults, which the result lists as assumptions', which tells the agent not to fabricate values, but gives no field-level meaning.

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 and resource ('Runs a full Foresight Planner retirement plan') and scopes it to a person or couple in Canada outside Quebec or the US. It is plainly distinguishable from get_plan_result (which fetches a finished run) and retirement_quick_check.

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

Usage Guidelines5/5

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

It gives explicit when-to-use criteria ('when a question turns on benefit start ages, pensions, taxes or account types'), an explicit alternative pattern ('to compare start ages, call it once per option'), and a when-not rule ('If the person hasn't said their age, province or state, savings or spending, ask; don't guess').

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. 3 tool updates
    • First observedget_plan_result
    • First observedretirement_quick_check
    • First observedrun_plan

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
    B
    maintenance
    This MCP server enables users to model personal cash runway under stochastic income shocks, quantify ruin probability and liquidity resilience, and calculate safe discretionary daily and monthly spending caps.
    7
    MIT
  • 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for cove-fi, a deterministic retirement and financial-independence projection engine. It lets users run plans, create scenarios, and explore year-by-year net-worth projections through natural language.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources