← The evidence ledger
Evidence row 583191
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 90c40a93-0ee8-465e-b824-333d57533869
- Recorded
- Previous row
- #259127
- Body SHA-256
- 0490f2cd14d40e2fddc0d101049273d729e00386cdac46580e3c032d826812ee
- Leaf
- 0xa7a8eef2ab65a91f8c473aa097052f85d7b6129294348e287df9c7586822f7ce
What was observed
{
"count": 1,
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"alternative": {
"additionalProperties": false,
"properties": {
"annualSpending": {
"exclusiveMinimum": 0,
"maximum": 25000000,
"type": "number"
},
"cppStartAges": {
"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.",
"items": {
"maximum": 70,
"minimum": 60,
"type": "integer"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
},
"name": {
"default": "What if",
"maxLength": 80,
"minLength": 1,
"type": "string"
},
"oasStartAges": {
"description": "One explicit OAS start age per person. Residence years stay as supplied. Not a search for a better age.",
"items": {
"maximum": 70,
"minimum": 65,
"type": "integer"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
},
"retirementAges": {
"items": {
"maximum": 85,
"minimum": 18,
"type": "integer"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
}
},
"type": "object"
},
"annualSpending": {
"description": "Annual household spending after tax in 2026 CAD, excluding contributions.",
"exclusiveMinimum": 0,
"maximum": 25000000,
"type": "number"
},
"assumptionsAccepted": {
"const": true,
"description": "Confirm the stated basic scope, return/inflation assumptions and any explicit CPP estimate with the person before calculating.",
"type": "boolean"
},
"inflation": {
"default": 0.021,
"maximum": 0.06,
"minimum": 0,
"type": "number"
},
"investmentReturn": {
"default": 0.05,
"maximum": 0.1,
"minimum": -0.02,
"type": "number"
},
"name": {
"default": "My retirement plan",
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"people": {
"items": {
"additionalProperties": false,
"properties": {
"birthDate": {
"description": "Exact birth date controls ages and benefit timing.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"cppAnnualAt65": {
"anyOf": [
{
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
{
"type": "null"
}
],
"description": "Annual CPP or QPP at 65 in 2026 CAD from statement. Explicit null accepts the labelled 60%-of-maximum starting estimate."
},
"cppStartAge": {
"default": 65,
"maximum": 70,
"minimum": 60,
"type": "integer"
},
"employmentIncome": {
"description": "Gross annual employment income now, CAD; enter 0 if none.",
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"name": {
"default": "You",
"description": "A label is enough; a legal name is unnecessary.",
"maxLength": 60,
"minLength": 1,
"type": "string"
},
"oasResidenceYears": {
"description": "Canadian residence years after 18 used for OAS entitlement at its start; 40 means full OAS.",
"maximum": 40,
"minimum": 0,
"type": "integer"
},
"oasStartAge": {
"default": 65,
"maximum": 70,
"minimum": 65,
"type": "integer"
},
"pension": {
"additionalProperties": false,
"properties": {
"annual": {
"description": "Annual pension in 2026 CAD; grown by plan inflation to its start age, then by its stated indexing.",
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"indexing": {
"default": 0,
"maximum": 0.05,
"minimum": 0,
"type": "number"
},
"startAge": {
"maximum": 85,
"minimum": 18,
"type": "integer"
}
},
"required": [
"annual",
"startAge"
],
"type": "object"
},
"quebecPayrollConfirmed": {
"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.",
"type": "boolean"
},
"retirementAge": {
"maximum": 85,
"minimum": 18,
"type": "integer"
},
"rrspRoom": {
"default": 0,
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"savings": {
"additionalProperties": false,
"properties": {
"cash": {
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"nonRegistered": {
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"nonRegisteredCostBasis": {
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"rrif": {
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"rrsp": {
"maximum": 25000000,
"minimum": 0,
"type": "number"
},
"tfsa": {
"maximum": 25000000,
"minimum": 0,
"type": "number"
}
},
"required": [
"rrsp",
"rrif",
"tfsa",
"nonRegistered",
"nonRegisteredCostBasis",
"cash"
],
"type": "object"
},
"tfsaRoom": {
"default": 0,
"maximum": 25000000,
"minimum": 0,
"type": "number"
}
},
"required": [
"birthDate",
"retirementAge",
"employmentIncome",
"cppAnnualAt65",
"oasResidenceYears",
"savings"
],
"type": "object"
},
"maxItems": 2,
"minItems": 1,
"type": "array"
},
"province": {
"enum": [
"AB",
"BC",
"MB",
"NB",
"NL",
"NS",
"NT",
"NU",
"ON",
"PE",
"QC",
"SK",
"YT"
],
"type": "string"
},
"startYear": {
"const": 2026,
"default": 2026,
"type": "number"
}
},
"required": [
"province",
"people",
"annualSpending",
"assumptionsAccepted"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
},
"name": "calculate_retirement"
}
]
}What the leaf hashes
{"body":"0490f2cd14d40e2fddc0d101049273d729e00386cdac46580e3c032d826812ee","id":583191,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793145394515837,"prev":259127,"subject":"90c40a93-0ee8-465e-b824-333d57533869","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).
- 0xa7a91133e290cad60f9a13cbe235427bc68d8687b35bbc57393a2622d40bb2d8
- 0xee9fa9895c15329870651f9d8e95892ec44b93a94c95626f4d277aeac5bdc024
- 0xc9e39a8eba98c2373d134cfdea92c5fddabffd5e1dd83c6c05011c9c0c1b3233
- 0x41cd6f6612e54c5490ed311e078e29edfe1d459d2db4201d350028828e549f72
- 0x204df58e0eacb5729c3bb7836cfc830ebdba6450cf848bde5b64efa132090097
- 0x3494cd82b93c3d2db2897fff2e64bc0f4c20097734a92fa58f874695d93eaf12
- 0xacddc934d6b0a10b53c1c1eeaa2b6b18e464f7fc95805c1eb313d9db40f96cd7
- 0x3aa3138c28da513d4dadca76643c981af1e8803860ca1e06afd6f23f7bb15f4f
- 0xe535660a3dbc795d3ecb4469237f7666ac246dc3c4a8f48c650f89f863e74bed
- 0x6d1531902ccbd49f5cdbe8417d2f6bff2c9149bee4291d4796657fb912648fa8
- 0xd2aa44cc055bcdb3ddafd2370919a57805f054c24aa9409ec35ce2603240def3
- 0xa08d28946903c13551b0c68269e38bfa91b368f8e33183ac691c11e2b5a9506a
- 0xb37156a04839055daed26674da38864f8dae598cab9742c6fb3e74eb3178f2d4
- 0x0644f7e2a4b5bf9b66f185cc3fbb766d456ad94490183852f4c6db5855114cc5
- 0xa3fff4662cd48659f5bafd0612931759a90e53a7b4209ed8f26f6594a07bb547
- 0x64c405a28e8819716221eb2529fe4ce277ab08025e17e685cbd5ece75ceb75c7
- 0xf30fddbf4811226c58e8f0daf36fddd79fc5f1356b592bb1d99a8061ddbabe66
- 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
- 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
- Day root
- 0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
- Chained
- 0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
- Published
- On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4