GoodbyeMatrix CBI Pricing
Server Details
Indicative citizenship by investment costs for 9 programmes, per family, with eligibility checks.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a distinct primary purpose: listing programmes, calculating indicative quotes, and returning a request link. However, both get_cbi_quote and request_cost_breakdown_link return quoteRequestUrl, creating some output overlap that could lead to misselection when only the link is needed.
All tool names follow a consistent snake_case verb_noun pattern: get_cbi_quote, list_cbi_programs, request_cost_breakdown_link. The convention is predictable and readable throughout.
Three tools is a well-scoped set for an indicative CBI pricing server. Each tool earns its place: discovery (list_cbi_programs), calculation (get_cbi_quote), and next-step action (request_cost_breakdown_link).
The server covers programme discovery, indicative quote calculation for a family, and a link to request exact amounts. A minor gap is the lack of a dedicated single-programme detail tool, since list_cbi_programs returns all 9 programmes.
Available Tools
3 toolsget_cbi_quoteGet CBI cost estimateARead-onlyInspect
Calculates the indicative cost of citizenship by investment 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. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| family | Yes | 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. | |
| program | No | 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 | No | Response language: "en" (English, default) or "de" (German). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| pages | No | |
| route | No | |
| scope | Yes | |
| total | No | Total in USD, rounded to the nearest 1,000. |
| notice | No | |
| schema | Yes | |
| status | No | ok, partial, review_required, fees_on_request or not_eligible (main applicant excluded by nationality or country of birth: no figures, no link). |
| program | No | Programme key. |
| variant | No | |
| currency | No | |
| language | Yes | |
| programs | No | |
| rounding | No | |
| totalScope | No | total, or known_costs when professional fees are on request. |
| costSummary | No | contribution, investment and professionalFees as published; fees = total minus the other three. |
| eligibility | No | |
| generatedAt | No | |
| overviewUrl | No | Portfolio only: overview page of all programmes with the family filled in. |
| programLabel | No | |
| paymentPhases | No | |
| pricingNotice | No | |
| processingTime | No | |
| quoteRequestUrl | No | 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 | No | Only with status not_eligible: why the programme is not possible. |
| websiteEstimate | No | The figure the website calculator shows. |
| restrictionsChecked | No | true when nationalities or a country of birth were given and checked. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the description is not burdened with safety basics. It adds valuable behavioural context beyond the annotations: figures are rounded indicating they are indicative (total to nearest 1,000 USD), they are binding only after a pre-check, and exact amounts are obtained by requesting the cost breakdown through quoteRequestUrl. That is meaningful disclosure for a pricing tool. The only weakness is that the description does not discuss data freshness or whether rates vary by date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary purpose and output inventory. Every sentence carries information, though the list of return fields is dense and could have been compressed. It is well structured but not maximally lean.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a complete input schema and an output schema, so the description mainly needs to explain purpose, modes, and behavioural caveats. It covers the single-programme versus all-programme distinction and the indicative/binding caveat, which an agent needs when deciding whether to call it. Missing is any mention of performance or whether the calculation depends on external data, but overall it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter and its meaning. The description reinforces that 'program' selects one programme versus comparing all nine, but adds little syntax or format information beyond the schema. With the schema doing the heavy lifting, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Calculates the indicative cost of citizenship by investment for a family') and then enumerates exactly what is produced (government contribution, investment, fees, professional fees, payment phases, total in USD, eligibility, processing time, links). An agent knows precisely what this tool returns and how it differs from list_cbi_programs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the two operating modes clearly: 'With one programme it returns that programme; without program it compares all 9 programmes.' That tells an agent how the optional parameter changes behaviour, but it does not explicitly name the sibling tools or say when to use list_cbi_programs or request_cost_breakdown_link instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cbi_programsList CBI programmesARead-onlyInspect
Lists the 9 citizenship by investment programmes GoodbyeMatrix prices: name, 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. Answers which programmes exist and what they start from.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Response language: "en" (English, default) or "de" (German). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| notice | No | |
| schema | No | |
| currency | No | |
| language | Yes | |
| overview | No | |
| programs | Yes | |
| updatedAt | No | |
| generatedAt | No | |
| documentation | No | |
| quoteEndpoint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=true, openWorldHint=false), and the description adds real context: the list is a fixed set of 9, the fields returned, and the caveat 'where known' for visa-free destinations, signalling possibly missing data. It does not mention pagination or result ordering, but a fixed 9-item list makes that largely moot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, which is good, but the long run-on enumeration of return fields duplicates the existing output schema and bloats a one-parameter list tool. The second sentence is the only non-redundant addition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-required-parameter list tool with a full output schema and full parameter coverage, the description supplies purpose, scope and a data-quality caveat. Only the explicit relationship to the quote sibling tools is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single 'language' enum is fully documented in the schema — and the description says nothing about it, instead enumerating output fields. With the schema doing all parameter work, the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists the 9 citizenship by investment programmes GoodbyeMatrix prices') and pins the exact scope — all 9 programmes with their attributes. It is clearly distinguishable from get_cbi_quote (a computed quote) and request_cost_breakdown_link (a link request) without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing line 'Answers which programmes exist and what they start from' implies the use case, but no sibling is named and there is no explicit when-to-use/when-not guidance versus get_cbi_quote. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_cost_breakdown_linkGet cost breakdown request linkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| family | Yes | 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. | |
| contact | No | 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. | |
| program | Yes | 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 | No | Response language: "en" (English, default) or "de" (German). | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| program | Yes | |
| language | Yes | |
| programLabel | No | |
| ignoredFields | No | Only when contact was given: contact fields that were invalid and dropped. |
| quoteRequestUrl | Yes | Link to the calculator page with the family filled in, where the user requests the detailed cost breakdown by e-mail. |
| contactPrefilled | No | Only when contact was given: true if at least one contact field was accepted and will prefill the form. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses rich behavior: the link works without contact details, contact only prefills the form and is never part of the link, the user checks and sends the request personally, and privacy consent is never preselected. This is exactly the kind of non-obvious operational context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause and every sentence carries behavioral weight (link independence, user-sends flow, consent). It is somewhat dense with stacked clauses, but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested family objects and an output schema, the description covers what the agent must know about behavior, contact handling and user responsibility, while return-value detail is appropriately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 100%, the baseline is 3, but the description adds genuine meaning about the contact object: details are optional, used only as the user provided them, and passed for form prefill rather than embedded in the link. This clarifies the intent behind a parameter the schema only describes structurally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: it "Returns only the personal link (quoteRequestUrl) for one programme and family." The word "only" implicitly distinguishes it from a fuller quote result like get_cbi_quote, but no sibling is named explicitly, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the end-to-end flow (the user opens the calculator page and sends the breakdown request personally), which implies when this tool applies, but it never states when to use this instead of get_cbi_quote or list_cbi_programs. Usage is implied rather than an explicit when/when-not rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_cbi_quote4 fields changed- changed
Input schema / properties / family / descriptionPrevious value: -"Everyone who applies together. The first person must be the main applicant (role \"main\"); only the first person may be \"main\". Defaults: a partner counts as married and not same-sex unless stated; a child under 18 counts as dependent."New value: +"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." - changed
Input schema / properties / family / items / properties / birthplace / descriptionPrevious value: -"Optional: country of birth as ISO 3166-1 alpha-2 code. Only if the user mentioned it."New value: +"Optional: country of birth as ISO 3166-1 alpha-2 code, as mentioned by the user." - changed
Input schema / properties / family / items / properties / nationalities / descriptionPrevious value: -"Optional: every citizenship of this person as ISO 3166-1 alpha-2 codes (for example [\"DE\"] or [\"RU\", \"GE\"] for dual citizens). Only if the user mentioned it."New value: +"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." - changed
Input schema / properties / program / descriptionPrevious value: -"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. Omit it to get figures for all programmes at once."New value: +"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."
- Changed
request_cost_breakdown_link4 fields changed- changed
Input schema / properties / contact / descriptionPrevious value: -"Optional. Only details the user has given in this conversation and wants to pass on to GoodbyeMatrix; never ask for them just for this and never invent 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."New value: +"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." - changed
Input schema / properties / family / descriptionPrevious value: -"Everyone who applies together. The first person must be the main applicant (role \"main\"); only the first person may be \"main\". Defaults: a partner counts as married and not same-sex unless stated; a child under 18 counts as dependent."New value: +"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." - changed
Input schema / properties / family / items / properties / birthplace / descriptionPrevious value: -"Optional: country of birth as ISO 3166-1 alpha-2 code. Only if the user mentioned it."New value: +"Optional: country of birth as ISO 3166-1 alpha-2 code, as mentioned by the user." - changed
Input schema / properties / family / items / properties / nationalities / descriptionPrevious value: -"Optional: every citizenship of this person as ISO 3166-1 alpha-2 codes (for example [\"DE\"] or [\"RU\", \"GE\"] for dual citizens). Only if the user mentioned it."New value: +"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."
3 tool updates
- First observed
get_cbi_quote - First observed
list_cbi_programs - First observed
request_cost_breakdown_link
Related MCP Connectors
Verified CBI/RBI data + Mirabello Freedom Compass origin-aware migration planner. 96 programmes.
Citizenship, residency & tax-residency data for 190+ countries, with origin-aware route planning
Match a profile against 100+ visas in 16 countries: eligibility, cost, timeline, intake status.
Golden Visa Calculator: the site's own MCP server — calculator, enquiry (enquiry = a human...
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables read-only lookup and comparison of sourced, dated migration data — 39 countries and 27,000+ cities, visa and residence routes, passport entry rules, cost of living, salaries, crime, air quality and climate. Every fact returned includes its value, unit, geographic grain, observation date, source and grade, with unknown values left explicit rather than estimated.MIT
- AlicenseNot gradedqualityBmaintenanceEnables geographic parity analysis with 26 read-only tools covering purchasing power, salary localization, cost of living, nomad visas, tax residency, FIRE planning, and relocation costs.MIT
- AlicenseAqualityDmaintenanceCost-of-living and quality-of-life comparison across ~165 cities: take-home pay, the equivalent salary you'd need, and the safety-net deltas (childcare, healthcare, vacation, parental leave).611 npm2MIT
- AlicenseAqualityCmaintenanceProvides immigration eligibility intelligence, enabling AI assistants to match user profiles to visas, compare pathways, and get country overviews using Transita's API.5273 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.