Koskamo

Glacier Planner MCP

A Canadian retirement-planning engine accessible via MCP that projects household savings, CPP/QPP, OAS, pensions, taxes, withdrawals, and estate details year by year using federal and provincial rules. It supports both public bounded calculations without sign-in and saved account tools requiring OAuth authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Glacier Planner MCP logo, by Glacier FinancialCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Glacier Financial
You need:Saved account tools require OAuth
MCP endpoint (Streamable HTTP)
https://planner.glacierfinancial.ca/calculate/mcp
Vendor documentation

What you can do with it

  • Project household savings and government benefits year by year
  • Analyze CPP/OAS timing and withdrawal strategies
  • Calculate retirement spending limits and tax implications
  • Compare different retirement plan scenarios

Source and maintenance

Community listingRegistry 1.0.1

Protocol and capabilities

Server
glacier-planner-first-plan 1.0.0
MCP protocol
2025-06-18
Tools
1 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Calculate a first Canadian retirement projection from numbers supplied by the person, without an account or payment. A first projection for one or two Canadian adults: employment, a defined-benefit pension, CPP/QPP, OAS, RRSP/RRIF, TFSA, non-registered investments and cash. No corporations, property, debts, children, benefit-entitlement history, LIRA/LIF or planned extra contributions. GIS, Allowance and refundable benefit payments (including Ontario GAINS and Trillium) are not included; missing benefits can make a projected shortfall look larger. Review eligibility and payment history before changing spending. Quebec employment requires explicit confirmation of Quebec payroll contributions; cross-province employment is outside this first-calculation scope. Excluded situations need additional facts and supported-case review. One optional alternative can change retirement ages, household spending, or explicit CPP/QPP and OAS start ages. A benefit-age comparison holds the CPP/QPP amount at 65 and OAS residence years fixed; extra contribution history and additional residence years are not inferred. It is a fixed-input comparison, not a broader search for a better start age. Confirm material inputs and explicit estimates; never invent zero balances or promise an outcome. Read and state the returned assumptions, dollar basis and engine provenance. An input artifact belongs to the caller; this server does not save a private household. The person can keep that artifact and sign in later at https://planner.glacierfinancial.ca/calculate. Saved account access uses the OAuth endpoint /mcp. Do not request account passwords, bank credentials or SINs.

Tools

1 advertised

calculate_retirement — Calculate a first Canadian retirement plan
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use the person’s supplied numbers to calculate whether savings cover spending and compare one explicit alternative: retirement age, household spending, or CPP/QPP and OAS start ages. A benefit-age comparison keeps the supplied amount at 65 and residence years fixed. It is not a search for a better start age. Free, no sign-in. Returns annual results, assumptions, provenance and a portable input artifact; no saved-record lookup or mutation.

calculate_retirement input schema
{
  "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
            },
            "cppStartAges": {
              "type": "array",
              "items": {
                "type": "integer",
                "maximum": 70,
                "minimum": 60
              },
              "maxItems": 2,
              "minItems": 1,
              "description": "One explicit CPP or QPP start age per person. The amount at 65 stays as supplied. Quebec below 65 is rejected. Not a search for a better age."
            },
            "oasStartAges": {
              "type": "array",
              "items": {
                "type": "integer",
                "maximum": 70,
                "minimum": 65
              },
              "maxItems": 2,
              "minItems": 1,
              "description": "One explicit OAS start age per person. Residence years stay as supplied. Not a search for a better age."
            },
            "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
}
calculate_retirement annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
961 ms
95th percentile latency
961 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 961 ms · metadata changed · 1 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http glacier-planner-mcp https://planner.glacierfinancial.ca/calculate/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add glacier-planner-mcp --url https://planner.glacierfinancial.ca/calculate/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable glacier-planner-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "glacier-planner-mcp": {
      "url": "https://planner.glacierfinancial.ca/calculate/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "glacier-planner-mcp": {
      "type": "streamableHttp",
      "url": "https://planner.glacierfinancial.ca/calculate/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start glacier-planner-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "glacier-planner-mcp": {
      "type": "http",
      "url": "https://planner.glacierfinancial.ca/calculate/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http glacier-planner-mcp https://planner.glacierfinancial.ca/calculate/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "glacier-planner-mcp": {
      "url": "https://planner.glacierfinancial.ca/calculate/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "glacier-planner-mcp": {
      "serverUrl": "https://planner.glacierfinancial.ca/calculate/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Glacier Planner MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.