Free Canadian retirement projections and one what-if from confirmed inputs. No Glacier account.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use the person’s supplied numbers to calculate whether savings cover spending and compare one explicit retirement/spending alternative. Free, no sign-in. Returns annual results, assumptions, provenance and a portable input artifact; no saved-record lookup or mutation.
Use the person’s supplied numbers to calculate whether savings cover spending and compare one explicit retirement/spending alternative. Free, no sign-in. Returns annual results, assumptions, provenance and a portable input artifact; no saved-record lookup or mutation.
| Argument | Type | Description |
|---|---|---|
| input* | object |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"province",
"people",
"annualSpending",
"assumptionsAccepted"
],
"properties": {
"name": {
"type": "string",
"default": "My retirement plan",
"maxLength": 120,
"minLength": 1
},
"people": {
"type": "array",
"items": {
"type": "object",
"required": [
"birthDate",
"retirementAge",
"employmentIncome",
"cppAnnualAt65",
"oasResidenceYears",
"savings"
],
"properties": {
"name": {
"type": "string",
"default": "You",
"maxLength": 60,
"minLength": 1,
"description": "A label is enough; a legal name is unnecessary."
},
"pension": {
"type": "object",
"required": [
"annual",
"startAge"
],
"properties": {
"annual": {
"type": "number",
"maximum": 25000000,
"minimum": 0,
"description": "Annual pension in 2026 CAD; grown by plan inflation to its start age, then by its stated indexing."
},
"indexing": {
"type": "number",
"default": 0,
"maximum": 0.05,
"minimum": 0
},
"startAge": {
"type": "integer",
"maximum": 85,
"minimum": 18
}
},
"additionalProperties": false
},
"savings": {
"type": "object",
"required": [
"rrsp",
"rrif",
"tfsa",
"nonRegistered",
"nonRegisteredCostBasis",
"cash"
],
"properties": {
"cash": {
"type": "number",
"maximum": 25000000,
"minimum": 0
},
"rrif": {
"type": "number",
"maximum": 25000000,
"minimum": 0
},
"rrsp": {
"type": "number",
"maximum": 25000000,
"minimum": 0
},
"tfsa": {
"type": "number",
"maximum": 25000000,
"minimum": 0
},
"nonRegistered": {
"type": "number",
"maximum": 25000000,
"minimum": 0
},
"nonRegisteredCostBasis": {
"type": "number",
"maximum": 25000000,
"minimum": 0
}
},
"additionalProperties": false
},
"rrspRoom": {
"type": "number",
"default": 0,
"maximum": 25000000,
"minimum": 0
},
"tfsaRoom": {
"type": "number",
"default": 0,
"maximum": 25000000,
"minimum": 0
},
"birthDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Exact birth date controls ages and benefit timing."
},
"cppStartAge": {
"type": "integer",
"default": 65,
"maximum": 70,
"minimum": 60
},
"oasStartAge": {
"type": "integer",
"default": 65,
"maximum": 70,
"minimum": 65
},
"cppAnnualAt65": {
"anyOf": [
{
"type": "number",
"maximum": 25000000,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Annual CPP or QPP at 65 in 2026 CAD from statement. Explicit null accepts the labelled 60%-of-maximum starting estimate."
},
"retirementAge": {
"type": "integer",
"maximum": 85,
"minimum": 18
},
"employmentIncome": {
"type": "number",
"maximum": 25000000,
"minimum": 0,
"description": "Gross annual employment income now, CAD; enter 0 if none."
},
"oasResidenceYears": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Canadian residence years after 18 used for OAS entitlement at its start; 40 means full OAS."
},
"quebecPayrollConfirmed": {
"type": "boolean",
"const": true,
"description": "Required only for positive employment income in Quebec: explicitly confirm this employment is subject to Quebec payroll contributions. Residence alone does not establish the employment jurisdiction. Cross-province employment is outside this first-calculation scope."
}
},
"additionalProperties": false
},
"maxItems": 2,
"minItems": 1
},
"province": {
"enum": [
"AB",
"BC",
"MB",
"NB",
"NL",
"NS",
"NT",
"NU",
"ON",
"PE",
"QC",
"SK",
"YT"
],
"type": "string"
},
"inflation": {
"type": "number",
"default": 0.021,
"maximum": 0.06,
"minimum": 0
},
"startYear": {
"type": "number",
"const": 2026,
"default": 2026
},
"alternative": {
"type": "object",
"properties": {
"name": {
"type": "string",
"default": "What if",
"maxLength": 80,
"minLength": 1
},
"annualSpending": {
"type": "number",
"maximum": 25000000,
"exclusiveMinimum": 0
},
"retirementAges": {
"type": "array",
"items": {
"type": "integer",
"maximum": 85,
"minimum": 18
},
"maxItems": 2,
"minItems": 1
}
},
"additionalProperties": false
},
"annualSpending": {
"type": "number",
"maximum": 25000000,
"description": "Annual household spending after tax in 2026 CAD, excluding contributions.",
"exclusiveMinimum": 0
},
"investmentReturn": {
"type": "number",
"default": 0.05,
"maximum": 0.1,
"minimum": -0.02
},
"assumptionsAccepted": {
"type": "boolean",
"const": true,
"description": "Confirm the stated basic scope, return/inflation assumptions and any explicit CPP estimate with the person before calculating."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}