Cross-border pension facts: country coverage, sourced rules, dated deadlines and employer lookups.
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.
What a national pension institution told us in writing, as published on our answers page, with the institution, the date of the reply and the link. The question is free text, matched to the questions we hold answers to.
A country: English or native name, alias or ISO code, for example NL or Netherlands.
The question in plain words, for example "What do heirs need?".
Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored.
Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link.
What a national pension institution told us in writing, as published on our answers page, with the institution, the date of the reply and the link. The question is free text, matched to the questions we hold answers to.
| Argument | Type | Description |
|---|---|---|
| country* | string | A country: English or native name, alias or ISO code, for example NL or Netherlands. |
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
| question* | string | The question in plain words, for example "What do heirs need?". |
| include_offer | boolean | Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link. |
{
"type": "object",
"required": [
"country",
"question"
],
"properties": {
"country": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "A country: English or native name, alias or ISO code, for example NL or Netherlands."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
},
"question": {
"type": "string",
"maxLength": 500,
"minLength": 2,
"description": "The question in plain words, for example \"What do heirs need?\"."
},
"include_offer": {
"type": "boolean",
"default": false,
"description": "Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link."
}
},
"additionalProperties": false
}For each country in a work history: whether a pension is likely to exist and why, the official free routes first, what is hard from abroad and any dated obligation that applies. Years may be exact, rough or unknown.
| Argument | Type | Description |
|---|---|---|
| entries* | array | One entry per period of work in a country. |
| subject | object | Optional facts about the person, used only to decide which dated obligations apply. |
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
| question | string | Optional. The person's question in plain words, used only to tell which kind of pension it is about. |
| birthYear | integer | Optional. Year of birth, four digits. Used for age-dependent rules. |
| previousNames | array | Optional. Earlier names worked under (maiden, married). Never stored. |
| countryOfResidence | string | Optional. Where the person lives now. For a country they live in, what is hard from abroad is left out. |
One country's facts, the official free routes first, then what is hard from abroad by scheme and process, what the money is worth and dated obligations. Every fact carries its source and read date. Pass question or pensionType to get one kind of pension.
| Argument | Type | Description |
|---|---|---|
| country* | string | A country: English or native name, alias or ISO code, for example NL or Netherlands. |
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
| question | string | Optional. The person's question in plain words, used only to tell which kind of pension it is about. |
| pensionType | string | Optional. state, workplace, provident or personal. Overrides the question. |
| include_offer | boolean | Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link. |
| previousNames | array | Optional. Earlier names worked under (maiden, married). Never stored. |
Returns our order page with the report and countries filled in. Fees: Country $99 per country, Enhanced $199 for one country, Global $299. Payment opens only when the person chooses to pay there, so send only countries and the tier, never personal details.
| Argument | Type | Description |
|---|---|---|
| tier* | string | "country" (one or more countries), "enhanced" (exactly one country) or "global" (every country the person worked in). |
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
| countries* | array | The countries to order for, as names or ISO codes, for example ["NL", "United Kingdom"]. Only countries we cover. |
{
"type": "object",
"required": [
"countries",
"tier"
],
"properties": {
"tier": {
"enum": [
"country",
"enhanced",
"global"
],
"type": "string",
"description": "\"country\" (one or more countries), \"enhanced\" (exactly one country) or \"global\" (every country the person worked in)."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
},
"countries": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 2
},
"maxItems": 41,
"minItems": 1,
"description": "The countries to order for, as names or ISO codes, for example [\"NL\", \"United Kingdom\"]. Only countries we cover."
}
},
"additionalProperties": false
}The date a departure deadline runs out, from our deadline register and the date the person left or died, with the official source and read date. Where the start event depends on the person's circumstances, the date is an estimate and says what to confirm. Nothing is stored.
| Argument | Type | Description |
|---|---|---|
| date* | string | The date, YYYY-MM-DD, not after today. |
| event | string | "left" or "died". Optional when the country has only one. |
| country* | string | The country left: ISO code or English name, for example JP or Japan. |
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
{
"type": "object",
"required": [
"country",
"date"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"minLength": 10,
"description": "The date, YYYY-MM-DD, not after today."
},
"event": {
"enum": [
"left",
"died"
],
"type": "string",
"description": "\"left\" or \"died\". Optional when the country has only one."
},
"country": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "The country left: ISO code or English name, for example JP or Japan."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
}
},
"additionalProperties": false
}For fund-side agents: how many confirmed people are registered for a pension fund, shown from 10 upwards, otherwise fewer than 10. An aggregate only.
| Argument | Type | Description |
|---|---|---|
| fund* | string | A GPFR fund key (from gpfr_info) or the fund's name. |
| language | string | Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English. |
{
"type": "object",
"required": [
"fund"
],
"properties": {
"fund": {
"type": "string",
"maxLength": 160,
"minLength": 2,
"description": "A GPFR fund key (from gpfr_info) or the fund's name."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English."
}
},
"additionalProperties": false
}What GPFR, the Global Pension Finding Register, is, in the caller's language, with the register page, the consent text and its version and, with a country, our fund pages. Show the consent text to the person before gpfr_register. Read only.
| Argument | Type | Description |
|---|---|---|
| country | string | A country: English or native name, alias or ISO code, for example NL or Netherlands. |
| language | string | Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English. |
{
"type": "object",
"properties": {
"country": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "A country: English or native name, alias or ISO code, for example NL or Netherlands."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English."
}
},
"additionalProperties": false
}Registers a person in GPFR after they said yes to the consent sentence from gpfr_info, shown word for word. It sends one confirmation email and the registration stays pending until they click its link. At most 3 emails a day per address.
| Argument | Type | Description |
|---|---|---|
| name* | string | The person's full name, as an employer or fund would hold it. Hashed on receipt. |
| email* | string | The person's email address. We send one confirmation email to it. |
| consent* | object | Required. The yes the person gave to the gpfr_info consent sentence. |
| periods* | array | Where the person worked: country, years, optional employer and fund. |
| language | string | Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English. |
| date_of_birth* | string | YYYY-MM-DD. Hashed on receipt. |
| earlier_names | array | Optional earlier full names. Hashed on receipt. |
| national_number |
The status of a GPFR registration. Without a code it emails a one-time code to the registered address, with the code it returns one status word. At most 3 emails a day per address.
| Argument | Type | Description |
|---|---|---|
| code | string | Optional. The six-digit code from our email to the registered address. |
| language | string | Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English. |
| reference* | string | The reference gpfr_register returned. |
{
"type": "object",
"required": [
"reference"
],
"properties": {
"code": {
"type": "string",
"description": "Optional. The six-digit code from our email to the registered address."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English."
},
"reference": {
"type": "string",
"description": "The reference gpfr_register returned."
}
},
"additionalProperties": false
}The countries we research, each with its ISO code and one sourced line, and the mapped countries with the institution that pays their old age pension.
| Argument | Type | Description |
|---|---|---|
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
{
"type": "object",
"properties": {
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
}
},
"additionalProperties": false
}Places an employer name in a country and lists the employers we hold that it may mean, each with a confidence from 0 to 1. For employers we researched it adds what the employer became and its workplace pension plan, each fact with source and read date. Legal entities only.
| Argument | Type | Description |
|---|---|---|
| name* | string | The employer name as the person knows it, ideally with legal form and city, for example "Shell Nederland B.V.". |
| country | string | Optional. The country worked in: a name, alias or ISO code. Matches are then taken from that country only. |
| language | string | Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored. |
| include_offer | boolean | Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link. |
| previousNames | array | Optional. Earlier names worked under (maiden, married). Never stored. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "The employer name as the person knows it, ideally with legal form and city, for example \"Shell Nederland B.V.\"."
},
"country": {
"type": "string",
"maxLength": 80,
"description": "Optional. The country worked in: a name, alias or ISO code. Matches are then taken from that country only."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
},
"include_offer": {
"type": "boolean",
"default": false,
"description": "Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link."
},
"previousNames": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 5,
"description": "Optional. Earlier names worked under (maiden, married). Never stored."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"entries"
],
"properties": {
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"country"
],
"properties": {
"to": {
"type": [
"integer",
"string",
"null"
],
"maximum": 2100,
"minimum": 1900,
"maxLength": 40,
"description": "Last year, in the same forms, or \"now\". Omit when from alone describes the period."
},
"from": {
"type": [
"integer",
"string",
"null"
],
"maximum": 2100,
"minimum": 1900,
"maxLength": 40,
"description": "First year of work: four digits, rough words such as \"around 2005\" or \"the 1990s\", or \"unknown\". Optional."
},
"status": {
"enum": [
"citizen",
"permanent_resident",
"pass_holder",
"unknown",
null
],
"type": [
"string",
"null"
],
"description": "Optional. citizen, permanent_resident, pass_holder or unknown. Decides some verdicts, such as Singapore CPF."
},
"country": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "A country: English or native name, alias or ISO code, for example NL or Netherlands."
},
"employer": {
"type": [
"string",
"null"
],
"maxLength": 120,
"description": "Employer name as the person knows it. Optional."
},
"pensionType": {
"enum": [
"state",
"workplace",
"provident",
"personal"
],
"type": "string",
"description": "Optional. state, workplace, provident or personal."
}
},
"additionalProperties": false
},
"maxItems": 60,
"minItems": 1,
"description": "One entry per period of work in a country."
},
"subject": {
"type": "object",
"properties": {
"deceased": {
"type": "boolean",
"description": "True when the person has died and a relative is asking."
},
"birthYear": {
"type": "integer",
"maximum": 2100,
"minimum": 1900,
"description": "Optional. Year of birth, four digits. Used for age-dependent rules."
},
"childrenMentioned": {
"type": "boolean",
"description": "True when children are part of the question."
},
"pensionInPaymentCountries": {
"type": "array",
"items": {
"type": "string",
"description": "Countries already paying the person a pension."
},
"description": "Countries already paying the person a pension."
}
},
"description": "Optional facts about the person, used only to decide which dated obligations apply.",
"additionalProperties": false
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
},
"question": {
"type": "string",
"maxLength": 500,
"description": "Optional. The person's question in plain words, used only to tell which kind of pension it is about."
},
"birthYear": {
"type": "integer",
"maximum": 2100,
"minimum": 1900,
"description": "Optional. Year of birth, four digits. Used for age-dependent rules."
},
"previousNames": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 5,
"description": "Optional. Earlier names worked under (maiden, married). Never stored."
},
"countryOfResidence": {
"type": "string",
"maxLength": 80,
"description": "Optional. Where the person lives now. For a country they live in, what is hard from abroad is left out."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"country"
],
"properties": {
"country": {
"type": "string",
"maxLength": 200,
"minLength": 2,
"description": "A country: English or native name, alias or ISO code, for example NL or Netherlands."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
},
"question": {
"type": "string",
"maxLength": 500,
"description": "Optional. The person's question in plain words, used only to tell which kind of pension it is about."
},
"pensionType": {
"enum": [
"state",
"workplace",
"provident",
"personal"
],
"type": "string",
"description": "Optional. state, workplace, provident or personal. Overrides the question."
},
"include_offer": {
"type": "boolean",
"default": false,
"description": "Optional, default false. Set true to add next_step, our report offer for this country. The offer the person sees comes from check_work_history (one offer for the whole history) or create_order_link."
},
"previousNames": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 5,
"description": "Optional. Earlier names worked under (maiden, married). Never stored."
}
},
"additionalProperties": false
}| object |
| Optional national number and its issuing country. |
{
"type": "object",
"required": [
"email",
"name",
"date_of_birth",
"periods",
"consent"
],
"properties": {
"name": {
"type": "string",
"maxLength": 160,
"description": "The person's full name, as an employer or fund would hold it. Hashed on receipt."
},
"email": {
"type": "string",
"maxLength": 254,
"description": "The person's email address. We send one confirmation email to it."
},
"consent": {
"type": "object",
"required": [
"consent_text_version",
"person_said_yes",
"timestamp",
"client"
],
"properties": {
"client": {
"type": "object",
"required": [
"name",
"version"
],
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
}
},
"additionalProperties": false
},
"timestamp": {
"type": "string",
"format": "date-time"
},
"person_said_yes": {
"enum": [
true
],
"type": "boolean",
"description": "true only when the person said yes to the sentence shown."
},
"consent_text_version": {
"type": "string",
"description": "The consent.version from gpfr_info, exactly as returned."
}
},
"description": "Required. The yes the person gave to the gpfr_info consent sentence.",
"additionalProperties": false
},
"periods": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"from",
"to"
],
"properties": {
"to": {
"type": "integer",
"minimum": 1950
},
"from": {
"type": "integer",
"minimum": 1950
},
"fund": {
"type": "string",
"description": "A GPFR fund key from gpfr_info, optional."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "A country: English or native name, alias or ISO code, for example NL or Netherlands."
},
"employer": {
"type": "string",
"maxLength": 120,
"description": "Employer name as the person knows it. Optional."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "Where the person worked: country, years, optional employer and fund."
},
"language": {
"type": "string",
"maxLength": 35,
"minLength": 2,
"description": "Optional. Default en. GPFR is live in 24 languages: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. bg, uk, vi are answered in English."
},
"date_of_birth": {
"type": "string",
"description": "YYYY-MM-DD. Hashed on receipt."
},
"earlier_names": {
"type": "array",
"items": {
"type": "string",
"maxLength": 160
},
"maxItems": 3,
"description": "Optional earlier full names. Hashed on receipt."
},
"national_number": {
"type": "object",
"required": [
"country",
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 40
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2
}
},
"description": "Optional national number and its issuing country.",
"additionalProperties": false
}
},
"additionalProperties": false
}