GoodbyeMatrix Citizenship by Investment Costs
Server Details
Citizenship by investment and second passport costs for 9 programmes, per family, with eligibility.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
The three tools target largely different needs: listing programmes, computing indicative costs, and returning a prefilled quote-request link. The only mild overlap is that get_cbi_quote with no programme parameter compares all 9 programmes by cost, which brushes against list_cbi_programs, but the latter is descriptive (region, route, visa-free destinations) rather than financial, so an agent can still choose correctly.
All three names follow a consistent snake_case verb_noun pattern (get_cbi_quote, list_cbi_programs, request_cost_breakdown_link). The 'cbi' domain token is used consistently and verb-first ordering is predictable throughout.
Three tools sit at the low end of the well-scoped range but each covers a distinct step (discover, price, convert to exact quote). The domain is intentionally narrow around cost lookup, so no tool feels redundant, though the surface is minimal for anyone expecting broader programme research.
The cost-focused domain is covered end to end: enumerate programmes, get indicative totals with eligibility and payment phases, then hand off to the exact quote request. Gaps are minor and partly by design (no request submission tool, no detailed per-programme requirements or visa-free destination breakdown), which agents can work around via the returned page links.
Available Tools
3 toolsget_cbi_quoteGet CBI cost estimateARead-onlyIdempotentInspect
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.
| 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 declare a safe, idempotent read. The description adds real behavioral value beyond them: figures are rounded indicatively to the nearest 1,000 USD, are non-binding until a pre-check, and exact amounts require requesting the breakdown via quoteRequestUrl. It does not discuss caching, latency, or failure modes, so a 4 rather than 5.
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?
Three sentences, front-loaded with the core verb and resource, then output contents, then the comparison fallback and pricing caveats. Dense but every clause carries information; the programme enumeration is somewhat redundant with the schema enum.
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?
Despite an output schema existing, the description usefully summarizes what is returned and, importantly, supplies the eligibility and non-binding-pricing context an agent needs to answer cost questions responsibly. Nothing material for correct invocation appears to be 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%, so the schema already documents family structure, the programme enum, and language; the baseline is 3. The description reinforces the programme semantics ('without program compares all 9 programmes') and lists programme keys, but adds little syntax or format detail the schema does not already carry.
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 — answering 'how much citizenship by investment or a second passport costs' and comparing programmes by total cost — and enumerates the exact output components (government contribution, investment, fees, total in USD, eligibility, processing time). An agent can immediately distinguish this from list_cbi_programs or request_cost_breakdown_link.
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?
Clearly states the selection condition: 'With one programme it returns that programme; without program it compares all 9 programmes', plus the caveat that figures are indicative and binding only after a pre-check (steering the user toward the cost-breakdown sibling). No explicit when-not or named alternative tool, which keeps it just short of a 5.
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-onlyIdempotentInspect
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.
| 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 already declare the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds substantive context: exactly which 9 programmes are covered and the full field set returned, which lets an agent judge completeness without opening the output schema.
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?
A single dense sentence with the usage trigger front-loaded before the payload inventory. Everything listed is informative rather than filler, though the enumeration is long enough to read as a run-on.
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?
An output schema exists, so return values need not be explained, yet the description still enumerates them helpfully. With one optional parameter, full schema coverage, and explicit coverage of the 9 programmes, nothing an agent needs to call this correctly 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% and the single language parameter is fully documented in the schema, so the baseline of 3 applies. The description adds no language or localization guidance beyond what the schema already states.
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 (lists), resource (CBI programmes), and the exact scope: the 9 programmes the provider prices, with an explicit enumeration of the data fields returned. An agent can distinguish it from get_cbi_quote and request_cost_breakdown_link purely from the description.
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?
"For questions about which citizenship by investment (second passport) programmes exist or what they start from" gives a clear triggering condition. It does not explicitly name the sibling tools or state when to prefer get_cbi_quote over this one, but the routing intent is unambiguous.
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-onlyIdempotentInspect
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?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, but the description adds substantive behavior beyond them: contact details are never embedded in the link, prefill the form only, the link works without them, the privacy consent is never preselected, and the user must personally check and send the request. No rate limits or auth requirements are mentioned, hence not a 5.
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?
Front-loaded with what is returned, then privacy/prefill behavior, which is the right order. It is somewhat long and repeats the 'link works without them' idea that is also in the schema, but every sentence still carries operational meaning.
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?
With an output schema present, the description need not explain the return payload, and it covers the privacy and user-action semantics thoroughly. The gap is the absence of any relationship to the sibling quote/program tools, leaving the agent to infer whether this call presupposes a prior quote lookup.
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 coverage is 100%, so the baseline is 3; the description goes beyond it by explaining how the optional 'contact' object is actually used (prefill only, never part of the link, only details the user chose to pass on) and noting the family is pre-filled on the page rather than recomputed. It adds real semantic value for the optional parameter.
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 states a specific verb and resource ('Returns only the personal link (quoteRequestUrl) for one programme and family') and the word 'only' scopes it against alternatives that would return amounts. It does not name the sibling tools (get_cbi_quote, list_cbi_programs) directly, so differentiation is implied rather than explicit.
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 describes the downstream workflow (the user opens the calculator page and sends the request personally) which implies when the tool fits, but it never states an explicit when-to-use or when-not-to-use condition relative to get_cbi_quote or list_cbi_programs. No prerequisites or ordering guidance are given.
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.
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.
Verified residency, citizenship, tax and banking data for Latin America and Latin Europe.
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
- AlicenseAqualityCmaintenanceCheck visa requirements for 39,585 passport-destination pairs in 15 languages. Returns visa type, required documents, application process, and travel tips from 136 official government sources. Free quick checks without API key.544 npm1MIT
- 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.