GoodbyeMatrix Citizenship by Investment Costs
Citizenship by investment and second passport costs for 9 programmes, per family, with eligibility.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"citizenship-by-investment": {
"url": "https://ai.goodbyematrix.com/cbi/api/agent/v1/mcp"
}
}
}Remote endpoints
https://ai.goodbyematrix.com/cbi/api/agent/v1/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢list_cbi_programs(language)
For questions about which citizenship by investment (second passport) programmes exist or what they start from: lists the 9 programmes GoodbyeMatrix prices (St Kitts and Nevis, Antigua and Barbuda, Dominica, Grenada, Saint Lucia, Vanuatu, Sao Tome and Principe, Nauru, Argentina) with region, route (contribution, investment or both), starting amount in USD for a single applicant, professional fee label, processing time, number of visa-free destinations where known, calculator and programme page links, and short notes.
Input Schema
{
"type": "object",
"properties": {
"language": {
"type": "string",
"enum": [
"de",
"en"
],
"default": "en",
"description": "Response language: \"en\" (English, default) or \"de\" (German)."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"schema": {
"type": "string"
},
"language": {
"type": "string",
"enum": [
"de",
"en"
]
},
"currency": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"generatedAt": {
"type": "string"
},
"overview": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"documentation": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"quoteEndpoint": {
"type": "string"
},
"programs": {
"type": "array",
"items": {
"type": "object",
"required": [
"key",
"label"
],
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"region": {
"type": "string"
},
"route": {
"type": "string",
"description": "contribution, investment or both."
},
"startingAmount": {
"type": [
"number",
"null"
],
"description": "\"From\" amount in USD for a single applicant."
},
"currency": {
"type": "string"
},
"professionalFeesLabel": {
"type": [
"string",
"null"
]
},
"processingTime": {
"type": "string"
},
"visaFreeCount": {
"type": "integer"
},
"pages": {
"type": "object",
"properties": {
"calculator": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"info": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
}
}
},
"notes": {
"type": "string"
},
"restrictions": {
"type": "object",
"description": "Public programme rule: excluded nationalities and countries of birth (ISO-2 code and name).",
"properties": {
"nationalities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
},
"birthplaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
}
}
}
}
},
"notice": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
}
},
"required": [
"ok",
"language",
"programs"
],
"description": "Same JSON as the GET programs endpoint of the GoodbyeMatrix pricing API."
}🟢get_cbi_quote(program, language, family)
Answers how much citizenship by investment or a second passport costs for a person or family, or compares programmes by total cost. Calculates the indicative cost for a family: government contribution, investment, fees, professional fees, payment phases and total in USD, plus which family members are eligible, processing time, page links and quoteRequestUrl. With one programme it returns that programme; without program it compares all 9 programmes (St Kitts and Nevis, Antigua and Barbuda, Dominica, Grenada, Saint Lucia, Vanuatu, Sao Tome and Principe, Nauru, Argentina). Figures are rounded indicative figures (total to the nearest 1,000 USD), binding only after a pre-check; the user receives the exact amounts by requesting the cost breakdown through quoteRequestUrl.
Input Schema
{
"type": "object",
"properties": {
"program": {
"type": "string",
"enum": [
"sao_tome",
"vanuatu",
"dominica",
"st_lucia",
"st_kitts",
"grenada",
"antigua",
"nauru",
"argentina"
],
"description": "Programme key: sao_tome (Sao Tome and Principe), vanuatu, dominica, st_lucia (Saint Lucia), st_kitts (St. Kitts and Nevis), grenada, antigua (Antigua and Barbuda), nauru, argentina. Without a programme, the figures cover all programmes at once."
},
"language": {
"type": "string",
"enum": [
"de",
"en"
],
"default": "en",
"description": "Response language: \"en\" (English, default) or \"de\" (German)."
},
"family": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"description": "Everyone who applies together. The first person is the main applicant (role \"main\"); only the first person has the role \"main\". Defaults: a partner counts as married and not same-sex unless stated; a child under 18 counts as dependent.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"role",
"age"
],
"properties": {
"role": {
"type": "string",
"enum": [
"main",
"partner",
"child",
"parent",
"parent_in_law",
"grandparent",
"grandparent_in_law",
"sibling"
],
"description": "Relationship to the main applicant: main, partner, child, parent, parent_in_law, grandparent, grandparent_in_law, sibling."
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 120,
"description": "Age in years."
},
"married": {
"type": "boolean",
"description": "Married to the main applicant (partner) or married themselves (other roles)."
},
"same_sex": {
"type": "boolean",
"description": "Same-sex partnership (relevant for partners)."
},
"dependent": {
"type": "boolean",
"description": "Dependent on the main applicant (for example a child in education or a parent living in the household)."
},
"financially_dependent": {
"type": "boolean",
"description": "Financially dependent on the main applicant (relevant for adult children and parents)."
},
"nationalities": {
"type": "array",
"maxItems": 5,
"items": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"description": "Optional: every citizenship of this person as ISO 3166-1 alpha-2 codes (for example [\"DE\"] or [\"RU\", \"GE\"] for dual citizens), as mentioned by the user."
},
"birthplace": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Optional: country of birth as ISO 3166-1 alpha-2 code, as mentioned by the user."
}
}
}
}
},
"required": [
"family"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"schema": {
"type": "string"
},
"scope": {
"type": "string",
"enum": [
"program",
"portfolio"
]
},
"language": {
"type": "string",
"enum": [
"de",
"en"
]
},
"generatedAt": {
"type": "string"
},
"program": {
"type": "string",
"description": "Programme key."
},
"programLabel": {
"type": "string"
},
"variant": {
"type": [
"string",
"null"
]
},
"route": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"description": "ok, partial, review_required, fees_on_request or not_eligible (main applicant excluded by nationality or country of birth: no figures, no link)."
},
"total": {
"type": [
"integer",
"null"
],
"description": "Total in USD, rounded to the nearest 1,000."
},
"totalScope": {
"type": [
"string",
"null"
],
"description": "total, or known_costs when professional fees are on request."
},
"costSummary": {
"type": [
"object",
"null"
],
"description": "contribution, investment and professionalFees as published; fees = total minus the other three.",
"properties": {
"contribution": {
"type": "number"
},
"investment": {
"type": "number"
},
"fees": {
"type": "number"
},
"professionalFees": {
"type": [
"number",
"null"
]
}
}
},
"paymentPhases": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"amount": {
"type": [
"number",
"null"
]
},
"currency": {
"type": "string"
},
"applicable": {
"type": "boolean"
}
}
}
},
"websiteEstimate": {
"type": [
"number",
"null"
],
"description": "The figure the website calculator shows."
},
"eligibility": {
"type": "object",
"properties": {
"includedCount": {
"type": [
"integer",
"null"
]
},
"excludedCount": {
"type": [
"integer",
"null"
]
},
"excluded": {
"type": "array",
"items": {
"type": "object"
}
}
}
},
"processingTime": {
"type": "string"
},
"pages": {
"type": "object",
"properties": {
"calculator": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"info": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
}
}
},
"quoteRequestUrl": {
"type": [
"string",
"null"
],
"description": "Link to the calculator page of the programme on goodbyematrix.com with the family already filled in; there the user requests the detailed cost breakdown with the exact amounts. null when not_eligible."
},
"restrictionNote": {
"type": "string",
"description": "Only with status not_eligible: why the programme is not possible."
},
"rounding": {
"type": "object",
"properties": {
"step": {
"type": "integer"
},
"mode": {
"type": "string"
},
"note": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
}
}
},
"currency": {
"type": "string"
},
"notice": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"pricingNotice": {
"type": "string"
},
"restrictionsChecked": {
"type": "boolean",
"description": "true when nationalities or a country of birth were given and checked."
},
"overviewUrl": {
"type": [
"string",
"null"
],
"description": "Portfolio only: overview page of all programmes with the family filled in."
},
"programs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"program": {
"type": "string",
"description": "Programme key."
},
"programLabel": {
"type": "string"
},
"variant": {
"type": [
"string",
"null"
]
},
"route": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"description": "ok, partial, review_required, fees_on_request or not_eligible (main applicant excluded by nationality or country of birth: no figures, no link)."
},
"total": {
"type": [
"integer",
"null"
],
"description": "Total in USD, rounded to the nearest 1,000."
},
"totalScope": {
"type": [
"string",
"null"
],
"description": "total, or known_costs when professional fees are on request."
},
"costSummary": {
"type": [
"object",
"null"
],
"description": "contribution, investment and professionalFees as published; fees = total minus the other three.",
"properties": {
"contribution": {
"type": "number"
},
"investment": {
"type": "number"
},
"fees": {
"type": "number"
},
"professionalFees": {
"type": [
"number",
"null"
]
}
}
},
"paymentPhases": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"amount": {
"type": [
"number",
"null"
]
},
"currency": {
"type": "string"
},
"applicable": {
"type": "boolean"
}
}
}
},
"websiteEstimate": {
"type": [
"number",
"null"
],
"description": "The figure the website calculator shows."
},
"eligibility": {
"type": "object",
"properties": {
"includedCount": {
"type": [
"integer",
"null"
]
},
"excludedCount": {
"type": [
"integer",
"null"
]
},
"excluded": {
"type": "array",
"items": {
"type": "object"
}
}
}
},
"processingTime": {
"type": "string"
},
"pages": {
"type": "object",
"properties": {
"calculator": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"info": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
}
}
},
"quoteRequestUrl": {
"type": [
"string",
"null"
],
"description": "Link to the calculator page of the programme on goodbyematrix.com with the family already filled in; there the user requests the detailed cost breakdown with the exact amounts. null when not_eligible."
},
"restrictionNote": {
"type": "string",
"description": "Only with status not_eligible: why the programme is not possible."
},
"rounding": {
"type": "object",
"properties": {
"step": {
"type": "integer"
},
"mode": {
"type": "string"
},
"note": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
}
}
},
"currency": {
"type": "string"
},
"notice": {
"type": "object",
"properties": {
"de": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"startingAmount": {
"type": [
"object",
"null"
],
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
}
}
}
}
}
},
"required": [
"ok",
"schema",
"scope",
"language"
],
"description": "Same JSON as the GET/POST quote endpoint of the GoodbyeMatrix pricing API: one programme (scope \"program\") or all programmes (scope \"portfolio\", list in programs)."
}🟢request_cost_breakdown_link(program, language, family, contact)
Returns only the personal link (quoteRequestUrl) for one programme and family: the calculator page on goodbyematrix.com with the family already filled in, where the user requests the detailed cost breakdown with the exact amounts by e-mail from the GoodbyeMatrix team. Contact details (first name, last name, e-mail, phone) are optional; only details the user has provided and wants to pass on are used. They prefill the form on that page and are never part of the link; the link works without them. The user checks the details and sends the request personally; the privacy consent is never preselected.
Input Schema
{
"type": "object",
"properties": {
"program": {
"type": "string",
"enum": [
"sao_tome",
"vanuatu",
"dominica",
"st_lucia",
"st_kitts",
"grenada",
"antigua",
"nauru",
"argentina"
],
"description": "Programme key: sao_tome (Sao Tome and Principe), vanuatu, dominica, st_lucia (Saint Lucia), st_kitts (St. Kitts and Nevis), grenada, antigua (Antigua and Barbuda), nauru, argentina."
},
"language": {
"type": "string",
"enum": [
"de",
"en"
],
"default": "en",
"description": "Response language: \"en\" (English, default) or \"de\" (German)."
},
"family": {
"type": "array",
"minItems": 1,
"maxItems": 20,
"description": "Everyone who applies together. The first person is the main applicant (role \"main\"); only the first person has the role \"main\". Defaults: a partner counts as married and not same-sex unless stated; a child under 18 counts as dependent.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"role",
"age"
],
"properties": {
"role": {
"type": "string",
"enum": [
"main",
"partner",
"child",
"parent",
"parent_in_law",
"grandparent",
"grandparent_in_law",
"sibling"
],
"description": "Relationship to the main applicant: main, partner, child, parent, parent_in_law, grandparent, grandparent_in_law, sibling."
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 120,
"description": "Age in years."
},
"married": {
"type": "boolean",
"description": "Married to the main applicant (partner) or married themselves (other roles)."
},
"same_sex": {
"type": "boolean",
"description": "Same-sex partnership (relevant for partners)."
},
"dependent": {
"type": "boolean",
"description": "Dependent on the main applicant (for example a child in education or a parent living in the household)."
},
"financially_dependent": {
"type": "boolean",
"description": "Financially dependent on the main applicant (relevant for adult children and parents)."
},
"nationalities": {
"type": "array",
"maxItems": 5,
"items": {
"type": "string",
"pattern": "^[A-Za-z]{2}$"
},
"description": "Optional: every citizenship of this person as ISO 3166-1 alpha-2 codes (for example [\"DE\"] or [\"RU\", \"GE\"] for dual citizens), as mentioned by the user."
},
"birthplace": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Optional: country of birth as ISO 3166-1 alpha-2 code, as mentioned by the user."
}
}
}
},
"contact": {
"type": "object",
"additionalProperties": false,
"description": "Optional. Contact details are used only as the user has provided them in this conversation and wants to pass them on to GoodbyeMatrix; the link works without them. They prefill the request form on the page; they are not part of the link and the user still checks and sends the request personally.",
"properties": {
"first_name": {
"type": "string",
"maxLength": 60
},
"last_name": {
"type": "string",
"maxLength": 60
},
"email": {
"type": "string",
"maxLength": 254
},
"phone": {
"type": "string",
"maxLength": 40,
"description": "With international dialling code, for example +49 151 2345678."
}
}
}
},
"required": [
"program",
"family"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"program": {
"type": "string"
},
"programLabel": {
"type": "string"
},
"language": {
"type": "string",
"enum": [
"de",
"en"
]
},
"quoteRequestUrl": {
"type": "string",
"description": "Link to the calculator page with the family filled in, where the user requests the detailed cost breakdown by e-mail."
},
"contactPrefilled": {
"type": "boolean",
"description": "Only when contact was given: true if at least one contact field was accepted and will prefill the form."
},
"ignoredFields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Only when contact was given: contact fields that were invalid and dropped."
}
},
"required": [
"program",
"language",
"quoteRequestUrl"
]
}Community
Evidence