Mirabello Immigration Intelligence
Server Details
Mira, by Mirabello: verified, source-cited data on citizenship and residency by investment, golden visas, immigration pathways, visa requirements, naturalisation and tax residency across 190+ countries. 68 tools, remote, no key needed. Built and operated by Mirabello Consultancy (Zurich, Dubai, Hong Kong): https://www.mirabelloconsultancy.com/mcp. General information, not legal, tax or immigration advice.
- Status
- Healthy
- Uptime
- 57.6% over 81 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- mirabello-consultancy/mcp-server
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 68 tools
Although individual descriptions are unusually verbose and often self-differentiating, the 68-tool surface contains several genuinely overlapping clusters: compare_treaty_position vs withholding_map (both return treaty withholding rates for a from→to corridor), get_banking_access vs get_nonresident_banking, find_trust_jurisdictions vs get_foundation_rules vs get_company_formation, and estimate_malta_passport_fee vs get_malta_citizen_service (which also itemises Identità passport fees). The programme cluster (get_programme, list_programmes, get_index, compare_programmes, recommend_programmes, query_graph, plan_path, generate_briefing) forces the agent into fine-grained selection calls that the names alone do not resolve.
The dominant convention is clear snake_case verb_noun (get_country_tax, find_low_tax, compare_programmes, estimate_total_cost, search_properties), applied across the large majority of tools. A minority break the pattern with bare noun phrases: choice_of_law_options, forced_heirship_risk, matrimonial_regime_screen, succession_conflict_map, withholding_map, compliance_checklist, residence_evidence_checklist. Readable and predictable overall, but not uniform.
68 tools is far beyond a well-scoped set and well past the 15-tool comfort band, even for a broad wealth/immigration domain. The surface has visibly accreted as parallel layers (tax, residence, succession, banking, property, Malta-specific, provenance, index) each with its own near-duplicate lookup, so many tools do not clearly earn a distinct place.
Coverage is exceptional: programmes (list/get/compare/recommend/index), eligibility, cost/timeline/fees, family pathways, documents, property search + enquiry, tax/residence/succession/banking layers, provenance and change subscription. Minor gaps remain around write/lifecycle operations (no update or unsubscribe tool, no enquiry or booking management) and a few layers are lookups only, but an agent is unlikely to hit a dead end for the stated purpose.
Available Tools
68 toolsbook_consultationBook ConsultationADestructiveInspect
Request a consultation with a Mirabello Consultancy specialist. Use only when the user asks to be contacted or to book. Requires email + programme interest/message and explicit consent. Side effect: delivers the enquiry to Mirabello and returns a tracked booking URL. Each call sends a separate enquiry, so do not repeat a call that succeeded.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | why / use-case (e.g. second passport, EU residency, tax, mobility, family relocation) | |
| name | No | full name | |
| Yes | Contact email address for the enquiry. Only ever send an address the user has explicitly provided for this purpose. | ||
| phone | No | phone / WhatsApp (with country code) | |
| budget | No | investment budget or band (e.g. "$250k", "up to $500k") | |
| source | No | origin surface of this lead for attribution, e.g. "plan_path" when booking follows a plan_path result | |
| consent | No | User consents to share details with Mirabello Consultancy (GDPR). Must be true to deliver. | |
| message | No | short comment / interest description | |
| website | No | leave blank (spam honeypot) | |
| timeline | No | desired timeline (e.g. "ASAP", "6 months", "within a year") | |
| salutation | No | salutation / honorific | |
| family_size | No | who is included (e.g. "single", "couple", "family of 4") — optional summary; prefer number_of_children + childrens_ages | |
| nationality | No | current nationality (country name) | |
| childrens_ages | No | children ages, comma-separated (e.g. 5, 12, 17) | |
| marital_status | No | married? Yes/No | |
| preferred_channel | No | how the client prefers to be contacted | |
| residence_country | No | current country of residence (if different from nationality) | |
| number_of_children | No | how many children to include | |
| programme_interest | No | programme or shortlist of interest (e.g. "st-kitts-cbi" or "CBI Caribbean", or service category: "Citizenship by Investment", "Residency by Investment", "Citizenship by Marriage", "Citizenship by Descent", "Passport Renewal", "Government Advisory") |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides rich operational context that goes beyond annotations: it specifies the side effect (delivering the enquiry to Mirabello), the expected output (a tracked booking URL), and a critical non-idempotency warning (do not repeat a call).
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 extremely efficient. It moves logically from action to operational constraints to side effects in a concise, front-loaded manner with no superfluous language.
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?
Given the complexity of a 19-parameter form, the description successfully summarizes the operational flow, success criteria (tracked URL), and anti-pattern behavior (duplicate calls), making it fully 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?
While the schema is comprehensive, the description adds vital policy constraints to key parameters like 'email' (must be explicitly provided) and reinforces 'consent' as mandatory for delivery. This is highly valuable despite 100% schema coverage.
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 tool clearly defines its action (Request a consultation) and its purpose (specialist consultation). It is highly distinct from the surrounding sibling tools which are primarily used for checks, listing, or estimation.
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?
Usage is rigidly defined: use ONLY when the user asks to be contacted or to book. It also mandates necessary preconditions (email, consent, and message).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_sow_packBuild Source-of-Wealth PackARead-onlyIdempotentInspect
Source-of-Wealth / Source-of-Funds evidence pack: given a wealth-origin type (e.g. business_sale, inheritance, ipo_liquidity_event, real_estate_sale, employment_income, crypto_asset_gains) and an optional destination context (a CBI/RBI programme, generic private-bank onboarding, trustee acceptance, or EU AML account-opening), returns the documentary evidence typically required — core + corroborating documents, the context overlay (programme SoF requirements + extra due-diligence), and common red flags. Grounded in FATF/Wolfsberg standards + programme due-diligence rules. INFORMATION ONLY — lists the evidence usually required, never asserts a case is compliant. Call with no args to list available origins and contexts.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Country the applicant is relocating FROM, as a country name. | |
| context | No | Free-text background about the applicant's situation, used to tailor the answer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral context: output structure (core + corroborating documents, context overlay, red flags), provenance (FATF/Wolfsberg + programme due-diligence rules), and a scope caveat that it is INFORMATION ONLY and never asserts compliance. The no-arg discovery call is also a useful behavioral trait not visible in annotations.
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 the deliverable and packed with substantive detail; the constraints (information only, no-arg listing) come at the end where they belong. It is a single very dense sentence-plus-tail, so slightly heavy to parse, but no sentence is filler.
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 the return shape need not be spelled out, and the safety profile is covered by annotations. However, the description leaves a critical gap: after reading it, an agent still cannot reliably determine what value belongs in 'origin' — the country-versus-wealth-type conflict is unresolved in the description.
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%, but the description actively conflicts with it: it says 'origin' is a wealth-origin type (business_sale, crypto_asset_gains) and 'context' is a destination programme, while the schema defines 'origin' as the country the applicant is relocating FROM (example: "South Africa") and 'context' as free-text applicant background. An agent following the description would pass the wrong value type for both parameters.
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 deliverable — returns a Source-of-Wealth/Source-of-Funds documentary evidence pack — and enumerates both the origin types (business_sale, inheritance, ipo_liquidity_event…) and destination contexts (CBI/RBI, private-bank onboarding, trustee acceptance, EU AML). That is far more specific than a generic checklist. It does not name the adjacent siblings (get_document_checklist, compliance_checklist, residence_evidence_checklist), so an agent must infer the boundary itself.
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?
Gives concrete usage contexts (CBI/RBI application, private-bank onboarding, trustee acceptance, EU account opening) and an explicit zero-argument discovery invocation: "Call with no args to list available origins and contexts." It stops short of stating when NOT to use it or which sibling to prefer for plain document checklists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_eligibilityCheck EligibilityARead-onlyIdempotentInspect
Check which programmes a given nationality can realistically apply to: published nationality restrictions/suspensions (e.g. Russia/Belarus/Iran policies), EU-citizen applicability, minimum age and core requirements. Factual published policies only — final acceptance always rests with government due diligence.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | optional filter | |
| nationality | Yes | applicant nationality (country name, e.g. "Iran", "India") | |
| programme_id | No | optional: check one programme in detail |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real value beyond that: it scopes output to 'factual published policies only' and warns that 'final acceptance always rests with government due diligence', which tells the agent how much to trust and how to present results. It does not mention caching or whether results are exhaustive for a nationality.
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?
Two dense sentences, front-loaded with the core action and scope, followed by the caveat. No filler or repetition of the title.
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 a full input schema, an output schema and read-only annotations, the description supplies the essential scope and the confidence caveat an agent needs. It stops short of stating result exhaustiveness or sibling routing, which would make it fully 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 coverage is 100% and all three parameters are documented, including the CBI/RBI enum and the 'check one programme in detail' semantics of programme_id, so the baseline of 3 applies. The description only loosely gestures at filtering via 'EU-citizen applicability' and adds no syntax or format detail beyond the schema.
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 (check) and object (which programmes a nationality can apply to), plus the concrete restriction categories it evaluates (nationality suspensions, EU-citizen applicability, minimum age). It implicitly separates itself from Malta-specific siblings like check_maltese_citizenship_eligibility, but never explicitly contrasts with recommend_programmes or find_pathways.
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?
Usage is implied by the framing ('realistically apply to') but there is no explicit when-to-use guidance, no exclusion of alternatives, and no statement about how this differs from recommend_programmes or check_maltese_citizenship_eligibility. An agent must infer the routing decision from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_maltese_citizenship_eligibilityMaltese Citizenship ScreenerARead-onlyIdempotentInspect
Rules-based first screen of whether a person is already Maltese or can register, for two family routes: "birth" (a child born in Malta or abroad to a Maltese parent, the 1 August 1989 rule, the father-only rule for 1964-1989 births abroad and the maternal-line Form I) and "marriage" (spouse of a Maltese citizen, 5 years married and living together, widow/widower and separation cases, the prerequisite of registering a foreign marriage in Malta). Returns an outcome (citizen_automatically | likely_eligible | not_yet_eligible | needs_legal_opinion | out_of_scope), the reasons, the form to use, next steps and official sources. A screen, not a legal determination; the decision rests with Aġenzija Komunità Malta.
| Name | Required | Description | Default |
|---|---|---|---|
| route | Yes | "birth" to check a child's citizenship by birth/descent, "marriage" to check a foreign spouse's eligibility to register. | |
| separated | No | Route marriage: true if the spouses are separated (legally or in fact). | |
| birth_date | No | Route birth: the child's date of birth, ISO YYYY-MM-DD. | |
| born_in_malta | No | Route birth: true if the child was born in Malta, false if born abroad. | |
| marriage_date | No | Route marriage: date of the marriage, ISO YYYY-MM-DD (the 5 years run from this date). | |
| maltese_parent | No | Route birth: which parent was a Maltese citizen when the child was born. | |
| living_together | No | Route marriage: true if the spouses still live together. | |
| spouse_deceased | No | Route marriage: true if the Maltese spouse has died. | |
| parent_citizenship_basis | No | Route birth: how the Maltese parent holds citizenship. "registration_by_descent" means the parent registered as a descendant (Forms K/M), citizenship then does not pass automatically. | |
| marriage_registered_in_malta | No | Route marriage: true if a marriage celebrated abroad has already been registered at the Malta Public Registry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, closed-world profile, so the description's burden is lower. It adds genuine value beyond the annotations by listing the full outcome set (citizen_automatically through out_of_scope), the returned artifacts (reasons, form, next steps, official sources), and the legal disclaimer — the kind of disclosure an agent needs to decide whether to escalate.
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?
Information-dense and front-loaded: purpose, routes, then return values and disclaimer. The middle sentence is long with nested parentheses but each clause carries rule-relevant substance rather than filler. Slightly heavy for a single sentence, but nothing 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 10-param, rule-driven screener, the description covers what it evaluates, which routes and rules apply, the possible outcomes, the outputs, and the limits of its authority. With an output schema present it need not detail return structure, and no essential calling information 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 coverage is 100%, so per-dimension baseline is 3. The description adds meaning beyond the schema by explaining the substantive rules that the route parameters trigger — the 1 August 1989 rule, the father-only rule for 1964-1989 births abroad, the maternal-line Form I, and the 5-years-married-and-living-together marriage test — which helps an agent understand why certain flags matter.
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 definition names a specific verb ('rules-based first screen'), a specific resource ('whether a person is already Maltese or can register'), and enumerates the two supported routes with their governing rules. This is narrow enough to be distinguished from broad siblings like check_eligibility, find_pathways, or get_family_pathway without opening the 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 'first screen' framing and the closing 'A screen, not a legal determination; the decision rests with Aġenzija Komunità Malta' give clear context for when this tool is appropriate and where its authority ends. It does not explicitly name a sibling alternative (e.g., book_consultation or get_family_pathway) for cases that fall outside the two routes, so a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_visa_freeCheck Visa-Free AccessCRead-onlyIdempotentInspect
Mobility for a programme passport: visa-free count and access to key destinations (Schengen, UK, USA, China).
| Name | Required | Description | Default |
|---|---|---|---|
| destination | No | optional: check access to a specific destination (e.g. Schengen, UK, USA, China) | |
| programme_id | Yes | Programme id as returned by list_programmes (e.g. "st-kitts-cbi") or an unambiguous name ("St Kitts"); an ambiguous name returns the candidates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds nothing further: it doesn't say whether the count is a total or filtered by the destination argument, nor how the two response modes interact. It does not contradict the annotations, but it contributes almost no behavioral context.
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 tight sentence with no filler, and the key result ('visa-free count') appears early. It is slightly under-specified rather than over-long, which is the right direction for conciseness.
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 and annotations cover the safety profile, so much of the burden is lifted. Still, a tool with an optional destination parameter and a sibling dedicated to listing destinations should say what changes when destination is omitted versus supplied; that distinction is left to inference.
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 both parameters are documented in the schema, including the programme_id lookup path and the ambiguity-resolves-to-candidates behavior. The description only echoes the destination examples ('Schengen, UK, USA, China') that the schema already gives, so 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?
The description names the resource (visa-free access for a programme passport) and the shape of the answer (a count plus access to key destinations), so the intent is inferable. But it opens with the vague noun phrase 'Mobility for a programme passport' rather than a verb, and it never distinguishes itself from close siblings such as check_visa_requirement, list_visa_free_destinations, or get_mobility_optionality.
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?
There is no guidance on when to call this versus the many adjacent tools – notably check_visa_requirement (likely per-destination rules) and list_visa_free_destinations (likely the full list). The parenthetical destination examples hint at a use case but stop short of stating a selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_visa_requirementVisa Requirement by NationalityARead-onlyIdempotentInspect
VISA REQUIREMENT for ONE nationality travelling to ONE destination: visa-free (with maximum stay in days where published), visa on arrival, e-visa, electronic travel authorisation, visa required, or no admission. Covers 199 passports x 199 destinations from the open Passport Index dataset, with the Wikipedia corroboration page and the IATA Travel Centre verification link returned alongside. General information only - entry rules change without notice; the destination authority is final.
| Name | Required | Description | Default |
|---|---|---|---|
| destination | Yes | destination - ISO alpha-2 code or country name, e.g. TR, "Turkey", "Schengen" (checked via Germany) | |
| from_nationality | Yes | passport held - ISO alpha-2 code or country name, e.g. NG, IN, "Nigeria" |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description still adds genuine value: the underlying Passport Index dataset and its 199x199 coverage, the fact that a Wikipedia corroboration page and IATA Travel Centre verification link come back with the answer, that 'no admission' is a valid outcome, and that rules can change without notice.
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?
Two sentences, front-loaded with the resource and cardinality, then the dataset and provenance. Dense but nearly every clause carries information; the enumerated outcome list is long yet functional since it defines the result vocabulary.
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 shape, and it still discloses data source, corroboration links, and the disclaimer that the destination authority is final. The only gap is sibling disambiguation, which matters in a roster containing check_visa_free and get_entry_requirements.
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% and both parameters already document accepted formats (ISO alpha-2 or name, with 'Schengen' resolving via Germany), so the description does not need to re-explain syntax. It reinforces the one-to-one cardinality and the covered domain, but adds no per-parameter meaning beyond the schema.
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 ('VISA REQUIREMENT for ONE nationality travelling to ONE destination') and enumerates the exact possible outcomes (visa-free with max stay, VOA, e-visa, ETA, visa required, no admission). The dataset scope (199 passports x 199 destinations) and the single-pair cardinality clearly separate it from list-style siblings like list_visa_free_destinations.
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 'ONE nationality travelling to ONE destination' framing implicitly tells the agent this is a pairwise lookup rather than a bulk scan, which is real routing guidance. However, it never names an alternative (e.g. check_visa_free, list_visa_free_destinations, get_entry_requirements) or states when not to use it, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
choice_of_law_optionsChoice-of-Law OptionsARead-onlyIdempotentInspect
Which law may govern a cross-border family succession, matrimonial property and divorce, and whether NATIONALITY opens an election. From nationalities held, habitual residence, asset situs and marital status, returns the default applicable law (EU Succession Reg 650/2012 Art 21; Swiss PILA last domicile), the instruments in scope (650/2012 Art 22; Matrimonial Property Reg 2016/1103 Art 22, 18 states; Rome III Art 5, 17 states; Swiss professio juris Arts 90-91), the elections available, hard TIMING rules (2016/1103 and Rome III need the nationality at the time of the agreement; Swiss professio juris is VOID if Swiss nationality is later acquired), situs overrides (e.g. French Code civil art. 913), and the trade-off: a common-law election swaps a FIXED reserved share for a DISCRETIONARY family claim. Returns no-useful-election where nationality opens nothing. Every election needs a properly executed declaration. INFORMATION ONLY, NOT LEGAL OR TAX ADVICE. Pass ISO alpha-2 codes only, never personal data.
| Name | Required | Description | Default |
|---|---|---|---|
| married | No | Whether the applicant is married — affects family pricing and some eligibility rules. | |
| asset_situs | No | ISO alpha-2 codes where assets are situated. | |
| nationalities | No | ISO alpha-2 codes of nationalities held. | |
| habitual_residence | No | ISO alpha-2 of current habitual residence. | |
| spouse_nationalities | No | Array of the spouse's citizenships as country names. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (read-only, idempotent, non-destructive, closed-world), and the description adds substantial behavior beyond them: hard timing rules (2016/1103 and Rome III require nationality at the time of the agreement), the VOID outcome if Swiss nationality is later acquired, situs overrides like Code civil art. 913, the fixed-versus-discretionary trade-off, and the 'no-useful-election' sentinel. It also warns that every election requires a properly executed declaration and disclaims legal/tax advice.
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 content is all relevant, but it is delivered as a single dense run-on paragraph with heavy mid-sentence capitalization (NATIONALITY, TIMING, VOID, FIXED, DISCRETIONARY). It is front-loaded on the core question, yet a reader must parse a wall of text to extract the timing rules and disclaimers.
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 legal-analysis tool with an output schema, an output-schema-free return explanation and a 100%-covered input schema, the description supplies the legal bases, edge-case outcomes and privacy constraint an agent needs to call it correctly. What is missing is only the sibling routing that would clarify when this is preferred over succession_conflict_map or matrimonial_regime_screen.
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 schema carries most parameter meaning and the baseline is 3. The description adds format guidance ('Pass ISO alpha-2 codes only, never personal data'), but that guidance conflicts with the sibling schema, which describes spouse_nationalities as 'country names' with the example 'Brazil' — an inconsistency an agent could trip over.
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 very specific deliverable set: default applicable law under Reg 650/2012 Art 21 / Swiss PILA, instruments in scope, elections available, timing rules and situs overrides, for cross-border succession, matrimonial property and divorce. That is far beyond a restatement of the name. However it never names an overlapping sibling such as succession_conflict_map or matrimonial_regime_screen, so the boundary between those tools must be inferred.
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?
Usage is implied rather than stated: 'From nationalities held, habitual residence, asset situs and marital status, returns...' tells the agent what inputs trigger the analysis, and 'Returns no-useful-election where nationality opens nothing' describes a boundary outcome. There is no explicit when-to-use/when-not or routing to succession_conflict_map, matrimonial_regime_screen or forced_heirship_risk, which overlap heavily with this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_formationCompare Company StructuresARead-onlyIdempotentInspect
Side-by-side facts for 2-6 structures by profile key: tax facts, indicative costs, timeline, substance, list status, caveats and who each does not suit. Comparison only, no recommendation. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| structures | Yes | 2-6 profile keys |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description still adds real value by disclosing the comparison facets including caveats and "who each does not suit", plus the important constraint that no recommendation is produced. The main omission is input validation behavior for out-of-range or unknown profile keys, which matters for a 2-6 item array.
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 the verb and resource, then the facets, then the two scope caveats — a sensible priority order with no filler sentences. The telegraphic facet list is dense but readable; a slightly less compressed phrasing would cost nothing.
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 the description needn't explain return structure, yet it helpfully previews the facets returned. Combined with annotations covering read-only/idempotent semantics, the definition is nearly sufficient; the remaining gap is how to source valid profile keys, which is the most likely cause of a failed call.
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% and the single parameter is already described in the schema as "2-6 profile keys"; the description's "by profile key" and "2-6" restate that rather than adding meaning. It never explains what a profile key looks like or where to obtain one, which is the one piece of semantics the schema also lacks. Baseline 3 applies given full schema coverage.
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+resource ("side-by-side facts for 2-6 structures") and enumerates the facets compared: tax facts, costs, timeline, substance, list status, caveats, negative fit. The resource noun "structures" distinguishes it from compare_programmes and compare_scenarios, but it never names those siblings, so an agent must infer the routing itself.
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?
"Comparison only, no recommendation" and "General information, not advice" set scope boundaries, which is useful when-not guidance. However, there is no positive routing: nothing says to use get_company_formation for a single structure or find_formation_jurisdictions to discover valid keys before calling this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_programmesCompare ProgrammesARead-onlyIdempotentInspect
Compare programmes side by side. Pass a + b (two programme ids) for the canonical versioned comparison artefact from the Mirabello Investment Migration Index: rank, composite, the dimension scores, per-dimension deltas, per-metric leads (a|b|tie) and the human compare page URL where one exists. Or pass ids (2-4) for the classic multi-column comparison of cost, processing, mobility, family inclusion, tax, path to citizenship. Use this, not several single-programme lookups, whenever the user wants two or more programmes compared; ids or names ("Portugal golden visa") both work.
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | programme id (use with b) for the canonical two-programme artefact | |
| b | No | programme id (use with a) | |
| ids | No | 2-4 programme ids for the classic comparison |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds useful conduct detail — that both ids and names work and what each mode returns — but since an output schema exists, the enumerated return fields are largely duplication rather than new behavioural context.
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 purpose and scoped by mode in successive sentences, with no filler. It is dense and slightly long due to field enumeration, but every clause carries routing or input information.
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?
Given two mutually exclusive input modes, name-vs-id flexibility, and an output schema that handles return values, the description covers everything needed to select and invoke the tool correctly. No material ambiguity remains.
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% (baseline 3), and the description earns above that by explaining the relationship between parameters: a+b pairs select the canonical artefact while ids (2-4) selects the classic comparison, and that either ids or names are acceptable. This resolves ambiguity the schema alone leaves open (e.g., mutually exclusive modes).
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?
Opens with a specific verb+resource ('Compare programmes side by side') and then distinguishes two distinct modes: canonical a+b artefact versus classic 2-4 id multi-column comparison, enumerating the exact fields each returns. An agent can differentiate this from get_programme or list_programmes immediately.
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?
Explicitly states 'Use this, not several single-programme lookups, whenever the user wants two or more programmes compared,' naming the alternative behaviour to avoid. It also clarifies that names as well as ids are accepted, removing a likely usage failure mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_scenariosCompare ScenariosARead-onlyIdempotentInspect
Side-by-side comparison of 2-8 jurisdictions across every wealth-protection dimension at once: tax (income/CGT/inheritance/wealth top rates + territorial-vs-worldwide + special regimes), crypto-asset treatment, tax-residence day-count, trust/foundation structure availability, reporting (CRS/EU-list/DAC6) and succession/forced-heirship. The synthesis view over the tax, residence, structure, reporting and succession layers. Pass scenarios as an array of {cc,pathway} or cc as a comma list (e.g. AE,PT,SG). Informational only, not advice; combine with the immigration route and a specific double-tax-treaty corridor for the full picture.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. | |
| scenarios | No | Array of scenario objects to compare side by side, each naming a programme id and the family composition and options to price. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety bar is low. The description adds real context beyond that: the 2-8 jurisdiction range, the dual input encoding, and an explicit 'informational only, not advice' limitation. No latency/rate/return details beyond what the output schema covers.
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 comparison scope is front-loaded in the first sentence and the routing/disclaimer closes it. The parenthetical dimension list is dense but each item is substantive for a synthesis tool. Slightly long, though nothing is pure filler.
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 and annotations covering the safety profile, the description need not explain returns. It supplies the missing pieces an agent needs: input shape alternatives, cohort size, scope of dimensions, and the informational-only caveat. Only minor gap is the ambiguity between the description's {cc,pathway} and the schema's 'programme id + family composition' wording.
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 baseline is 3; the description earns an extra point by contributing what the schema does not: the 2-8 cardinality bound and the alternative comma-list encoding ('AE,PT,SG') for cc. It leaves the scenarios array's pathway/family-composition semantics to the schema, which is acceptable given coverage.
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 ('side-by-side comparison of 2-8 jurisdictions') plus the exact dimensions compared (tax, crypto, residence day-count, structures, reporting, succession). It also positions itself against siblings by calling itself 'the synthesis view over the tax, residence, structure, reporting and succession layers', which distinguishes it from compare_formation, compare_programmes and compare_treaty_position.
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?
Tells the agent this is the aggregate/multi-dimension comparison and to pair it with 'the immigration route and a specific double-tax-treaty corridor' — effectively routing to find_pathways/compare_treaty_position for depth. It stops short of naming those siblings or stating exclusions (e.g. when a narrower comparator is preferable), so it is clear but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_treaty_positionCompare Treaty PositionCRead-onlyIdempotentInspect
Double-tax-treaty position for a relocation corridor (from→to): is a DTA in force, the residence tie-breaker test, treaty withholding rates (dividends/interest/royalties), and any limitation-on-benefits/principal-purpose test. Use ISO alpha-2 codes. Indicative, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End of the date range, ISO date (YYYY-MM-DD). | |
| from | Yes | Start of the date range, ISO date (YYYY-MM-DD). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context by stating the analytical scope and the 'indicative, not advice' caveat, though it does not discuss freshness or source limitations.
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 front-loaded and dense, packing the purpose, output scope, input convention, and disclaimer into one efficient sentence plus caveat. There is little wasted text, though the long semicolon-separated list is slightly harder to scan.
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 and the annotations are rich, so return-value and safety details need not be repeated. However, for a two-parameter comparison tool, the description's country-code guidance directly conflicts with the schema's date-range definition, making it incomplete and unsafe to call without opening the 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?
The description says to use ISO alpha-2 country codes for from→to, while the input schema explicitly defines both parameters as ISO dates for a range. This is an active contradiction that would mislead an agent about how to populate the required parameters.
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 clearly states the treaty-position resource and enumerates what the comparison covers: DTA status, residence tie-breaker, withholding rates, and LOB/PPT. It does not explicitly differentiate this tool from siblings such as withholding_map or get_country_tax, which keeps it from a 5.
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 gives only an implied use case (a relocation corridor) and a disclaimer ('Indicative, not advice'), but never says when to use this instead of alternatives like withholding_map or choice_of_law_options. No when-not or sibling routing guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance_checklistCompliance ChecklistARead-onlyIdempotentInspect
Lists the reporting/compliance obligations a stated profile may trigger — FATCA (US persons), CRS, CARF/DAC8 (crypto), DAC6 (EU cross-border arrangements), PEP enhanced due diligence, investment-migration due diligence, trust/beneficial-ownership reporting and source-of-wealth evidence. Pass boolean flags (us_person, crs_reportable, crypto_holder, dac6, pep, cbi_applicant, trust_settlor, large_cash_or_sow). STATELESS — pass only non-identifying flags, never personal data. Informational only, not legal/tax advice, not exhaustive.
| Name | Required | Description | Default |
|---|---|---|---|
| pep | No | True if the client is a politically exposed person, a family member or a known close associate — requires enhanced due diligence. | |
| dac6 | No | True if a reportable cross-border arrangement under EU DAC6 may be involved. | |
| us_person | No | True if the client is a US person for tax purposes (citizen, green-card holder or substantial-presence resident) — triggers FATCA and US filing obligations. | |
| cbi_applicant | No | True if the client is applying for citizenship by investment. | |
| crypto_holder | No | True if the client holds digital assets — relevant to CARF and local crypto reporting. | |
| rbi_applicant | No | True if the client is applying for residence by investment. | |
| trust_settlor | No | True if the client settles or controls a trust or foundation. | |
| crs_reportable | No | True if the client holds financial accounts reportable under the CRS automatic-exchange regime. | |
| large_cash_or_sow | No | True if large cash movements or a complex source-of-wealth story are involved. | |
| eu_cross_border_arrangement | No | True if the structure spans two or more EU member states. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds valuable behavioral context beyond that: it is stateless, requires only non-identifying boolean flags, and is explicitly 'Informational only, not legal/tax advice, not exhaustive.' These are meaningful disclosures about data handling and limitations.
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 front-loaded with the core purpose and then lists flags and caveats efficiently. The disclaimer sentences earn their place. It is somewhat dense but not padded.
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. The description covers statelessness, privacy constraints, and the informational scope. It is nearly complete, though it could mention the two schema flags it omits from its inline list.
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 each flag thoroughly. The description reinforces the mapping by naming most flags and their associated regimes (FATCA, CRS, CARF/DAC8, DAC6, PEP, etc.), but it omits rbi_applicant and eu_cross_border_arrangement from its list, so it adds only marginal value beyond the schema.
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') and resource ('reporting/compliance obligations') and enumerates the regimes covered. It is clearly distinguishable from siblings like check_eligibility and get_document_checklist, which handle different screening tasks.
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 purpose implies when to use it (compliance obligation screening for a profile), and it gives a privacy constraint ('STATELESS — pass only non-identifying flags'). However, it never explicitly says when to choose this over alternatives such as check_eligibility or get_document_checklist, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_enquiryCreate Real-Estate EnquiryADestructiveInspect
Route a qualified buyer enquiry about a specific property to Mirabello Consultancy, which acts as introducer only (it does not sell or broker property). Requires property_id (slug) + a valid email + explicit consent:true (GDPR). Side effect: delivers the enquiry to Mirabello and returns the next step. CBI/RBI property purchases must use a government-approved project and an authorised agent; Mirabello handles the purchase and the citizenship/residency application. Each call sends a separate enquiry, so do not repeat a call that succeeded.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Enquirer full name, only as the user has given it. Never invent or infer personal details. | |
| Yes | Contact email address for the enquiry. Only ever send an address the user has explicitly provided for this purpose. | ||
| phone | No | Contact telephone number in international format, only if the user has provided it. | |
| budget | No | Budget the enquirer has stated, in their own words including the currency. | |
| consent | Yes | must be true (GDPR consent to share details with Mirabello) | |
| message | No | The enquiry itself in the user’s own words. Do not add commitments or figures the user did not state. | |
| timeline | No | When the enquirer wants to proceed, in their own words (e.g. "within 3 months"). | |
| nationality | No | Applicant's current citizenship, as a country name (for example India, Nigeria, Russia). Drives eligibility restrictions. | |
| property_id | Yes | listing slug from search_properties/get_property | |
| preferred_channel | No | How the enquirer prefers to be contacted: email, phone or WhatsApp. | |
| residence_country | No | Country where the enquirer currently lives. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false; the description explains why — the enquiry is delivered irrevocably to a third party and each call sends a separate enquiry, so retries duplicate. It also discloses the GDPR consent gate and that eligibility varies for CBI/RBI routes. Remaining minor gap: no mention of failure/partial-delivery handling.
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 core action, requirements and side effect are front-loaded in the first three sentences with no filler. The closing CBI/RBI sentence is the weakest link — useful eligibility context but tangential to how the tool is invoked — so not a 5.
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, return values need no explanation, and the description covers the side effect, non-idempotence, consent, and the introducer role. For an 11-parameter mutation tool this is close to complete; only edge-case behavior (duplicate-submission handling, error cases) is unaddressed.
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 all 11 fields including the 'never invent personal details' constraints. The description adds only the required-field set and the GDPR meaning of consent, which is reinforcement rather than new semantics. 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+resource ('Route a qualified buyer enquiry about a specific property to Mirabello') and immediately scopes the relationship (introducer only, does not sell or broker). It is clearly distinct from the listing-discovery siblings search_properties and get_property, which it references as the source of property_id.
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?
Gives explicit preconditions (property_id slug, valid email, consent:true) and points to search_properties/get_property for obtaining the slug, plus an anti-pattern warning ('do not repeat a call that succeeded'). It does not explicitly contrast with sibling book_consultation, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_malta_passport_feeMaltese Passport Fee EstimateARead-onlyIdempotentInspect
Itemised official government fee for a Maltese passport (Identità): age band (under 10 / 10-15 / 16+), seasonal adult rate (€70 September-March, €80 April-August), the official urgent service (€160 adult, 4 working hours, in Malta only), the €15 supplement when a lost or stolen passport was still valid, and, for applications through a Maltese embassy or consulate abroad, the mission processing fee and courier charges (flagged where unverified). Deterministic: computed from the official fee table with sources. Information only; confirm with the Passport Office or mission before paying.
| Name | Required | Description | Default |
|---|---|---|---|
| age | Yes | Age in years of the passport holder on the application date. | |
| month | No | Month of application, 1-12 (adult standard fee is €80 April-August, €70 otherwise). Defaults to the current month. | |
| urgent | No | True for the official urgent service (4 working hours in Malta; from abroad the urgent fee applies but no 4-hour timeframe). | |
| location | No | "malta" if applying at the Passport Office in Malta, "abroad" if applying through a Maltese embassy, high commission or consulate. | |
| lost_still_valid | No | True if the passport being replaced was lost, stolen or destroyed while still valid (adds the €15 oath supplement; a Maltese police report is required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the description earns credit for adding substance: it is deterministic, derived from the official fee table with sources, flags unverified mission fees, and is explicitly information-only with a confirm-before-paying warning. It does not describe output shape, but an output schema exists, so that is not a real gap.
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-loads the resource and the component breakdown, then closes with the determinism and information-only caveats in short sentences. The middle is one long enumerated sentence, but each clause corresponds to a distinct fee component, so nothing 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 read-only calculator with five well-documented parameters and an output schema, the description covers every input dimension (age, season, urgency, location, lost-while-valid) plus sourcing and verification caveats. Nothing needed to call it 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 coverage is 100%, so the baseline is 3; the description goes beyond it by supplying the age bands (under 10 / 10-15 / 16+) that the schema does not state, plus the linkage between location=abroad and mission processing/courier charges. The specific euro amounts largely duplicate what the schema descriptions already say, which limits it to a 4 rather than a 5.
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 — an itemised government fee estimate for a Maltese passport — and enumerates exactly what the estimate decomposes into (age band, seasonal rate, urgent service, lost-passport supplement, mission fees abroad). This lets an agent distinguish it from siblings like estimate_total_cost or get_passport_renewal without opening any 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 scope is implied clearly (a fee-only, information-only estimate), and the closing caveat about confirming with the Passport Office is useful. But no sibling is named and no when-to-use/when-not rule is given — an agent gets no help choosing this over estimate_total_cost or get_passport_renewal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_timelineEstimate TimelineARead-onlyIdempotentInspect
Step-by-step expected timeline for a programme: published processing time plus the stage breakdown where available.
| Name | Required | Description | Default |
|---|---|---|---|
| programme_id | Yes | Programme id as returned by list_programmes (e.g. "st-kitts-cbi") or an unambiguous name ("St Kitts"); an ambiguous name returns the candidates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The one added signal is 'where available', which honestly flags that stage breakdowns may be partial or absent. It does not say what happens when data is missing (error vs. degraded result), so beyond that caveat the description adds modest context.
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 front-loaded sentence with no filler; the output shape is stated before the qualifier. It is arguably too terse rather than padded, which is the better failure mode, but it means nothing beyond the bare shape is communicated.
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, and with one fully documented parameter the agent has enough to invoke it correctly. The only residual gap is knowing how this differs from get_processing_times and how a missing stage breakdown manifests.
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 programme_id parameter is fully documented in the schema, including the ambiguity-resolution behaviour. The description adds nothing about the parameter, so the baseline of 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 concrete output ('step-by-step expected timeline') and the resource it is computed for (a programme), including the two components: published processing time and stage breakdown. It does not, however, distinguish itself from the sibling get_processing_times, which sounds like it covers overlapping content.
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?
Usage is only implied by the phrase 'for a programme' – the agent must infer this is a per-programme lookup rather than a comparison or global listing. There is no explicit 'use this instead of get_processing_times when…' guidance, which matters given the near-duplicate sibling name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_total_costEstimate Total CostARead-onlyIdempotentInspect
Estimate the total cost of a programme for a given family: investment + government & due-diligence fees + family add-ons. Indicative; excludes professional/property/legal fees.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | main + spouse/adult applicants (default 1) | |
| programme_id | Yes | Programme id as returned by list_programmes (e.g. "st-kitts-cbi") or an unambiguous name ("St Kitts"); an ambiguous name returns the candidates. | |
| children_16plus | No | Number of dependent children aged 16 or over — usually priced higher than under-16s. | |
| children_under16 | No | Number of dependent children aged under 16 — priced separately by most Caribbean programmes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is fully covered. The description adds genuinely non-structured behavioral context — that the result is indicative and omits professional, property and legal fees — which an agent needs in order to caveat any answer it gives.
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?
Two sentences: the first front-loads what is computed and its components, the second carries the disclaimer. No redundant restatement of the title or schema and nothing that could be cut.
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, return values need no explanation, and annotations handle safety. What remains is the fee-component breakdown and the exclusion caveat, both stated. The one real gap is currency/assumption basis for the figures, which matters for a cost tool but is left unstated.
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 programme_id, adults and both child brackets are fully documented in the schema. The description's 'family add-ons' phrasing loosely signals that adult/child counts drive the add-on portion, but adds no format, defaults or validation detail beyond the schema — 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?
A specific verb ('Estimate') plus resource ('total cost of a programme') and the exact components included (investment + government & due-diligence fees + family add-ons). It is clear what the tool computes, but it never names its closest siblings (estimate_malta_passport_fee, compare_programmes), so an agent must infer the boundary itself.
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 'Indicative; excludes professional/property/legal fees' clause effectively tells the agent when this number is and isn't sufficient, which is useful context. However, there is no explicit instruction on when to pick this over compare_programmes or the Malta-specific fee estimator; usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_charity_jurisdictionsFind Charity JurisdictionsARead-onlyIdempotentInspect
Find jurisdictions for setting up a CHARITABLE/PHILANTHROPIC structure — charitable foundations (e.g. the Liechtenstein gemeinnützige Stiftung), donor-advised funds (US 501(c)(3) ecosystem), charitable trusts, waqf — with donor tax relief, the entity tax status, cross-border granting and the standout vehicle. The philanthropy/legacy complement to the residence/citizenship + tax + trust layers.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results returned (default 20, up to 200). The list is ranked; total_matched gives the full count. | |
| vehicle | No | e.g. foundation, donor-advised fund, charitable trust, waqf | |
| donor_relief | No | only jurisdictions giving donors a tax deduction/credit |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine value beyond that by naming the comparison dimensions returned for each jurisdiction — donor tax relief, entity tax status, cross-border granting, standout vehicle — which tells the agent what the results are good for.
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?
Two sentences, front-loaded with the core scope and specific examples. The second sentence is somewhat dense with positioning language but earns its place by establishing the tool's role in the wider layering.
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, complete parameter documentation and full annotations, the description only needs to frame scope and results, which it does. Minor gap: no hint about ranking criteria or how best to use the ranked order, though the limit parameter covers pagination.
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 limit, vehicle and donor_relief are already fully documented including default, cap, and ranking behavior. The description echoes the vehicle taxonomy and 'donor tax relief' but adds no filtering nuance (e.g. matching semantics for vehicle strings) beyond the schema.
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 ('find jurisdictions') scoped precisely to charitable/philanthropic structures, and enumerates the vehicle classes covered (gemeinnützige Stiftung, US 501(c)(3) DAFs, charitable trusts, waqf). This clearly separates it from the sibling find_formation_jurisdictions and find_trust_jurisdictions without needing to name them.
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 charitable/philanthropic framing plus the closing line ('complement to the residence/citizenship + tax + trust layers') tells an agent when this tool applies and where it sits relative to adjacent tools. It stops short of explicit exclusions or a named alternative ('for non-charitable vehicles use find_trust_jurisdictions').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_fastest_citizenshipFastest Route to Citizenship by NationalityARead-onlyIdempotentInspect
Naturalisation periods and NATIONALITY-BASED FAST TRACKS, verified against the enacted statute. Pass nationality (ISO-3166 alpha-2 of the passport held) to rank covered jurisdictions by how soon THAT nationality may apply for citizenship — e.g. an Ibero-American national reaches Spanish citizenship in 2 years instead of 10 (Codigo Civil art. 22.1), a CPLP national reaches Portuguese citizenship in 7 instead of 10 (Lei 37/81 art. 6 as amended by Lei Organica 1/2026). Pass cc instead for one jurisdiction in full, including the ordinary baseline, who gets NO reduction, and any transitional regime. Periods are qualifying residence before an application may be made and exclude processing time. Coverage is narrow by design — a jurisdiction appears only once its statute has been read in full, so absence means unverified, never that no fast track exists. NOT for buying a passport: for citizenship by investment (the fastest second passport for a budget) use the programme listing or recommendation tools.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO-3166 alpha-2 of the destination jurisdiction, e.g. ES, PT, NZ, AU | |
| bloc | No | Limit the ranking to one bloc, e.g. EU for "fastest EU passport". One call returns every covered member ranked, with presence and requirements, plus the members not yet covered. | |
| nationality | No | ISO-3166 alpha-2 of the passport held, e.g. BR, AR, WS, NZ |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely useful behavioral context: periods are qualifying residence excluding processing time, and coverage is narrow-by-design so absence means unverified rather than non-existent. What it does not do is go beyond that to describe response shape, but the output schema exists to carry that.
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 scope statement and mode selection come first, and the two statutory examples do real illustrative work rather than padding. It is dense and long, with a couple of clauses that could be trimmed, but nothing is wasted or buried.
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 research-lookup tool with full annotations and an output schema, the description supplies the non-obvious caveats an agent needs: narrow verified-only coverage, absence-means-unverified, and processing time excluded from the stated periods. Nothing required for correct invocation 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 coverage is 100%, so baseline is 3. The description earns above baseline by explaining what each mode yields: nationality produces a cross-jurisdiction ranking, cc produces the ordinary baseline, who gets no reduction, and any transitional regime. It also disambiguates nationality as the passport held rather than a target country.
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 (rank covered jurisdictions by how soon a given nationality may apply) and resource (naturalisation fast tracks keyed to nationality), with worked examples citing statute articles. It is clearly distinguishable from sibling tools like find_pathways or the citizenship-by-investment programme tools.
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?
Explicitly prescribes two modes (nationality for ranking across jurisdictions, cc for one jurisdiction in full) and names the exclusion: 'NOT for buying a passport: for citizenship by investment ... use the programme listing or recommendation tools.' Alternatives are pointed at directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_formation_jurisdictionsFilter Company StructuresBRead-onlyIdempotentInspect
Filter reference profiles by facts: remote_only, max_setup_usd, banking_tier (good or moderate access), eu_clean (not on EU or FATF lists at the dated snapshot), lane (company or trust). Results are alphabetical, not ranked or recommended. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| lane | No | company | trust | |
| limit | No | Maximum results returned (default 12, up to 100). The list is ranked; total_matched gives the full count. | |
| eu_clean | No | True to require the jurisdiction be absent from EU tax and AML listings. | |
| remote_only | No | True to return only options that can be completed without travelling to the country. | |
| banking_tier | No | good | moderate (minimum acceptable) | |
| max_setup_usd | No | Maximum acceptable set-up cost in USD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Useful behavioral context is added beyond the readOnly/idempotent annotations: results are unranked and explicitly not recommendations, and the EU/FATF screening is pinned to a dated snapshot. However, 'Results are alphabetical' directly conflicts with the limit parameter's schema text ('The list is ranked'), leaving the agent unsure of the true ordering.
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 tight sentences, front-loaded with the filter vocabulary and followed by ordering and disclaimer caveats. The parameter enumeration is somewhat redundant given complete schema descriptions, but nothing 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?
With an output schema present, return-shape explanation is correctly omitted, and the disclaimer covers the advisory boundary. What is missing is the ordering question raised above and any guidance on combining these filters with sibling discovery tools, which matters for a 6-parameter optional-filter tool.
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 adds some nuance (banking_tier means minimum acceptable access, eu_clean covers both EU and FATF lists), but it repeats what the schema already states and omits limit entirely, so it does not meaningfully extend parameter meaning.
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?
Names a specific verb and resource ('Filter reference profiles') and enumerates the exact filter dimensions, so an agent can tell it produces a filtered jurisdiction list rather than a comparison or detail lookup. It stops short of naming siblings such as find_trust_jurisdictions or find_low_tax, even though the 'lane' parameter overlaps with those tools.
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?
Usage is only implied: an agent can infer this is the discovery step before compare_formation or get_company_formation, but the description never says so or states when to prefer a sibling. 'General information, not advice' sets a scope boundary but is not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_low_taxFind Low-Tax JurisdictionsARead-onlyIdempotentInspect
Find countries by wealth-protection tax criteria — no personal income tax, no inheritance tax, no wealth tax, no capital gains tax, territorial taxation, non-CRS (no automatic financial-account exchange), not on the EU tax black/grey list, or crypto-friendly (favourable crypto-asset tax regime). Returns matching countries with their HNWI tax + CRS + EU-list (+ crypto) snapshot. Combine with a residence or citizenship route for a full tax-plus-pathway view.
| Name | Required | Description | Default |
|---|---|---|---|
| territorial | No | True to require a territorial tax system (foreign income untaxed). | |
| no_income_tax | No | True to require no personal income tax. | |
| no_wealth_tax | No | True to require no net-wealth tax. | |
| not_eu_listed | No | True to exclude jurisdictions on the EU list of non-cooperative tax jurisdictions. | |
| crypto_friendly | No | True to require a favourable published treatment of digital assets. | |
| no_inheritance_tax | No | True to require no inheritance or estate tax. | |
| no_capital_gains_tax | No | True to require no capital-gains tax. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and a closed-world dataset; the description usefully adds what the result payload contains (HNWI tax + CRS + EU-list + crypto snapshot). However, it never resolves the central behavioral question for a 7-flag filter: whether multiple boolean criteria combine as AND or OR — the prose "or crypto-friendly" actively suggests OR while sibling filters normally conjunct. It also mentions "non-CRS" as a criterion when no such parameter exists.
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, and the criteria list is compressed into one em-dash series where each element earns its place by mapping to a filter. The trailing combination hint is valuable but the sentence is long and the criteria list reads as enumeration rather than ranked priority.
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 no explanation, and the description covers scope, criteria, and follow-on combination adequately for a zero-required-parameter, closed-world filter tool. It is still silent on the all-flags-omitted case (does it return every country?) and on filter conjunction semantics, which is the main residual gap.
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 per-parameter glosses in the description (no inheritance tax, territorial taxation, etc.) largely restate the schema — baseline 3. The one added signal, the wealth-protection framing, is offset by the non-CRS criterion that has no corresponding parameter, which could lead an agent to look for a knob that does not exist.
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+resource ("Find countries") and enumerates the exact wealth-protection criteria screened, which separates it from siblings like get_country_tax (single-country lookup) or find_trust_jurisdictions (trust-specific). The parenthetical glosses ("no automatic financial-account exchange", "favourable crypto-asset tax regime") make each criterion intelligible without opening the 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?
Gives a concrete usage pattern — "Combine with a residence or citizenship route for a full tax-plus-pathway view" — which implies routing to find_pathways/find_fastest_citizenship as follow-ups. It does not state explicitly when NOT to use this tool or name the sibling to prefer for single-country detail, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_pathwaysFind Immigration PathwaysARead-onlyIdempotentInspect
Find which countries offer a given immigration pathway (e.g. digital-nomad, skilled-work, ancestry-descent, retirement-passive, eu-free-movement). Returns the screened countries that have it, each with its key requirements (income thresholds included), cost and path to PR. EU/EEA/Swiss citizens moving within the EU/EEA or Switzerland use eu-free-movement, not a visa.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Region filter, matched case-insensitively (e.g. "Caribbean", "EU", "Middle East", "Pacific", "Africa", "Asia"). | |
| pathway | Yes | Pathway id. eu-free-movement = living in another EU/EEA state or Switzerland as an EU/EEA/Swiss citizen. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and a closed-world dataset; the description adds genuinely new context by describing the shape of the result ('screened countries ... each with its key requirements (income thresholds included), cost and path to PR'). It does not contradict any annotation and hints that results come from a pre-screened set, though it says nothing about result size, ordering, or empty-result behavior.
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 tight sentences, front-loaded with the core lookup question followed by return contents and an edge case. Slight redundancy in re-explaining eu-free-movement, which the schema already covers, keeps it from a 5.
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 no full explanation, and the description covers purpose, output gist, and the key EU edge case. The one notable omission is any mention of the region filter, which an agent can only learn from the 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?
Schema description coverage is 100% for both parameters, so baseline is 3. The description's list of example pathways largely restates the enum, and its eu-free-movement clarification duplicates the schema's own parameter description; it adds no region-filtering or matching semantics beyond what the schema 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 and resource ('Find which countries offer a given immigration pathway') and enumerates example pathway ids, so an agent can immediately tell this is a reverse lookup by pathway rather than a per-country lookup like get_country or check_eligibility. The scope is further sharpened by describing what is returned (screened countries with requirements, cost, PR path).
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?
Usage is implied by the pathway enumeration, and there is one explicit routing rule ('EU/EEA/Swiss citizens moving within the EU/EEA or Switzerland use eu-free-movement, not a visa'), but that rule governs choosing a pathway value rather than choosing between this tool and siblings. No guidance is given on when to prefer this over find_retirement_routes, recommend_programmes, or check_eligibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_retirement_routesFind Retirement & Passive-Income ResidenceARead-onlyIdempotentInspect
Find RETIREMENT and PASSIVE-INCOME residence routes (pensionado, rentista, retiree visas) that qualify on income or savings, not an investment. Filter by monthly income in USD, income type, net worth, the most days a year you want to spend there, region, dependants and untaxed foreign income. golden_only returns only routes rated Golden by the Mirabello Golden Retirement Index (score 70+/100: no investment, little or no tax on foreign income, little presence, little renewal); min_score sets a score floor. Each route gives its official requirement in its legal currency, whether you appear to qualify (indicative FX), the stay rule, the foreign-income tax label (Mexico, Portugal, Colombia and Brazil tax the foreign pension of a tax resident), the Golden Retirement score with its reasons, the path to permanent residence, and the official source. Unverified figures are withheld, never estimated. Information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results returned (default 5, up to 62). The list is ranked; total_matched gives the full count. | |
| region | No | Region filter, case-insensitive: e.g. "Latin America", "Caribbean", "Europe", "Asia", "Middle East", "Americas". | |
| min_score | No | Only routes with a Golden Retirement score at or above this value (0 to 100); unscored routes are excluded. Results are then ordered by score. | |
| dependants | No | Number of dependants (spouse, children) to include; routes with a per-dependant income add-on raise the requirement accordingly. Default 0. | |
| golden_only | No | true = only routes rated Golden by the Mirabello Golden Retirement Index; results are then ordered by score. Default false. | |
| income_type | No | What the income is: pension (state or private retirement pension), passive (rents, dividends, interest), or either/both. Default either. | |
| net_worth_usd | No | Liquid savings or investable net worth in USD, for routes that accept a deposit, savings balance or assets instead of income. Optional. | |
| monthly_income_usd | No | Your regular monthly income in USD (pension and/or passive income). Optional; without it qualification by income is left open. | |
| max_stay_days_per_year | No | The most days a year you are willing to spend in the country. Routes with a higher stated minimum are excluded; routes whose stay rule is not stated are kept and flagged. | |
| foreign_income_untaxed_only | No | true = only routes where foreign income is untaxed for a tax resident (exempt, territorial or remittance basis). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real behavioral context beyond that: qualification is 'indicative' with FX assumptions, unverified figures are withheld rather than estimated, tax labels for specific countries are surfaced, and it disclaims 'Information, not advice.' No pagination or ranking-mechanics detail is given beyond what the schema says.
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 front-loaded with the core purpose and the qualifying criterion, and every clause carries filtering or return-value information. It is dense and somewhat run-on as a single block, but there is little true filler.
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 10-parameter, zero-required, read-only search tool with an output schema and full annotations, the description supplies everything an agent needs: scope, filter semantics, score/golden behavior, and the shape of each returned route, plus data-integrity caveats.
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 every parameter is already documented in the schema. The description restates the filter set (income, net worth, stay days, region, dependants, untaxed income) and explains golden_only/min_score semantics, but that largely duplicates the schema's own descriptions; it adds little beyond the structured fields.
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 (find) and resource (retirement/passive-income residence routes), and narrows the scope decisively with 'qualify on income or savings, not an investment,' which separates it from investment-style programme tools. It does not name a specific sibling to route away to (e.g. find_pathways), so it falls short of the 5 bar.
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 exclusion criterion ('not an investment') gives clear selection context, and the listed filters imply when the tool is appropriate. However, there is no explicit 'use X instead when...' routing to a named alternative among the many sibling find_* and get_programme tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_trust_jurisdictionsFind Trust JurisdictionsARead-onlyIdempotentInspect
Facts on trust and foundation regimes by jurisdiction (statute, CRS status, EU-list status), for succession and governance research. Not a recommendation, and no structure hides assets from tax authorities: CRS and FATCA reporting applies. Filter by vehicle. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results returned (default 15, up to 100). The list is ranked; total_matched gives the full count. | |
| vehicle | No | trust or foundation | |
| strong_protection | No | True to require strong asset-protection legislation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the tool is informational only, is not a recommendation, and that CRS/FATCA reporting applies regardless of structure — framing that matters for how an agent presents results. It does not describe ranking or pagination behavior, but the output schema covers the return shape.
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, which is good. However the tail is disclaimer padding, and 'Not a recommendation' and 'General information, not advice' are near-duplicates that could be collapsed into one clause, making the description longer than its informational content warrants.
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, three-parameter lookup with a full output schema and complete annotation coverage, the description supplies the essential frame: what data fields are returned and the compliance caveat that structures do not avoid reporting. Only the ranking behavior and sibling routing are left implicit.
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 limit, vehicle, and strong_protection are already documented in structured form. The description only adds 'Filter by vehicle', which restates the schema, and says nothing about strong_protection or the ranked list semantics beyond what the schema already explains. Baseline 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?
States a specific verb and resource: 'Facts on trust and foundation regimes by jurisdiction', and enumerates the fields covered (statute, CRS status, EU-list status). It differentiates broadly from sibling tools like get_foundation_rules or find_charity_jurisdictions by naming the jurisdiction-comparison angle and the trust/foundation vehicle filter, though it never references a sibling by name.
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 succession and governance research' implies the intended context, and 'Filter by vehicle' hints at narrowing. But there is no explicit when-to-use versus when-not, and no pointer to the adjacent tools (get_foundation_rules, find_charity_jurisdictions, choice_of_law_options) that an agent must choose between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flag_cfc_poe_riskFlag CFC / PoE RiskARead-onlyIdempotentInspect
Anti-avoidance & relocation-tax flags for a jurisdiction: CFC (controlled foreign company), GAAR (general anti-avoidance rule), POEM (place of effective management)/corporate-residence, economic substance, exit-tax detail and step-up-in-basis on becoming resident. The depth behind headline rates. Use ISO alpha-2. Indicative, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds useful scope and the caveat 'Indicative, not advice,' but does not go further into confidence, coverage limits, or how flags are derived.
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 and scope are front-loaded, and the description stays compact for a complex tax-risk domain. It is dense with acronyms, but every fragment contributes to defining the flag set or the advisory limitation.
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 one-parameter, read-only jurisdiction risk tool with an output schema, the description covers the relevant anti-avoidance subject areas and the 'not advice' limitation. It does not need to explain return values because an output schema exists.
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 fully documents the single `cc` parameter, including acceptance of country names beyond ISO alpha-2. The description's 'Use ISO alpha-2' is redundant and narrower than the schema, but the baseline is 3 because the schema carries the detailed semantics.
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 names a specific resource and scope: anti-avoidance and relocation-tax flags for a jurisdiction, then enumerates CFC, GAAR, POEM/corporate-residence, economic substance, exit tax, and step-up basis. 'The depth behind headline rates' implicitly distinguishes it from headline-rate siblings such as get_country_tax.
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 explains what the tool returns but gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not say when to choose this over get_country_tax, compliance_checklist, or structuring-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forced_heirship_riskForced Heirship RiskARead-onlyIdempotentInspect
Forced-heirship / testamentary-freedom position for a jurisdiction: whether forced heirship exists, the reserved shares (e.g. France réserve héréditaire, Germany Pflichtteil, Switzerland reform), the freely-disposable portion, whether a spouse/children can be disinherited, and how trusts/foundations interact with reserved shares. States the default legal rules — NOT how any estate will devolve. Use ISO alpha-2.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive lookup. The description adds meaningful behavioral context by clarifying that the result is the default legal rule set and not an estate-specific devolution analysis, which is a critical interpretation limit for a legal-risk tool.
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 definition is front-loaded with the resource scope, then adds the key caveat and parameter instruction. Every clause earns its place by clarifying what legal content is returned and what the tool is not intended to answer.
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?
Given the rich annotations, complete parameter schema, and presence of an output schema, the description is complete enough for correct tool selection and invocation. It covers purpose, scope boundaries, and input format without needing to restate return-value structure.
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%, and the single cc parameter is fully documented in the schema, including ISO alpha-2 codes, examples, and multilingual country-name input. The description only repeats 'Use ISO alpha-2' and adds no semantic detail beyond the schema, so the baseline 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 states a specific legal resource for a jurisdiction and enumerates exactly what it covers: forced heirship existence, reserved shares, freely disposable portion, disinheritance, and trust/foundation interaction. It also distinguishes the output from estate-specific planning by saying it states default legal rules, not how any estate will devolve.
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 gives clear usage context and an explicit exclusion: use it for the default forced-heirship position, not for predicting how an estate will devolve. It does not explicitly name sibling alternatives such as succession_conflict_map or matrimonial_regime_screen, so it falls short of full when/when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_briefingGenerate Personalised BriefingADestructiveInspect
Generate a personalised Mirabello briefing: given a client profile (nationality, budget, family, goals), returns a ranked shortlist with full family cost math AND a shareable branded briefing page URL (valid 90 days). Optionally registers the client for specialist follow-up (email + consent): that sends a follow-up request to Mirabello. Each call creates a new briefing link, and with email + consent repeating the call sends another request.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | primary goal in own words | |
| type | No | citizenship or residency preference (omit for both) | |
| No | optional — to register for specialist follow-up | ||
| adults | No | adult applicants incl. spouse (default 1) | |
| consent | No | required true if email given (GDPR) | |
| website | No | leave blank (spam honeypot) | |
| tax_goal | No | True when the applicant's main objective is a tax outcome rather than mobility. | |
| budget_max | No | maximum investment budget in USD | |
| nationality | No | client nationality (country name) | |
| programme_ids | No | optional: specific programmes to brief on (max 3) instead of auto-shortlist | |
| children_16plus | No | Number of dependent children aged 16 or over — usually priced higher than under-16s. | |
| children_under16 | No | Number of dependent children aged under 16 — priced separately by most Caribbean programmes. | |
| mobility_priority | No | True when visa-free travel is the applicant's main objective. | |
| timeline_max_months | No | Maximum acceptable time to the outcome, in MONTHS. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, destructive; the description adds real value beyond them — each call creates a new briefing link, email + consent triggers an outbound follow-up request to Mirabello, and the page URL expires in 90 days. It doesn't explain why destructiveHint is true, but this is a create-and-share operation with side effects that are otherwise well disclosed.
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-loads what you get back (shortlist, cost math, URL) before the optional follow-up path. It is slightly redundant — the follow-up side effect is stated twice in the final sentence — but still compact and well ordered.
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 and full annotations, the description is more than sufficient: it covers the return artifacts, URL lifetime, and the outbound-request side effect of email + consent. Only a mapping to alternative shortlist/comparison 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 coverage is 100%, so the baseline is 3. The description adds some cross-parameter semantics (email must be paired with consent under GDPR; programme_ids overrides auto-shortlisting) and groups the client profile fields, but most per-field meaning is already carried by the schema.
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 (generate) and a concrete artifact (a personalised briefing with ranked shortlist, cost math, and a shareable URL). It is distinguishable from siblings like recommend_programmes or compare_programmes because it produces a shareable branded page, though it doesn't name any sibling explicitly.
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?
Gives clear triggering context: supply a client profile and optionally email + consent to register for follow-up, with the noted consequence that repeat calls create new links and repeat requests. It lacks explicit when-not-to-use guidance or pointers to alternatives such as recommend_programmes for a plain shortlist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aboutAbout MirabelloARead-onlyIdempotentInspect
About Mirabello Consultancy: track record (cases, approval rate), credentials (IMC, ACAMS), offices, languages, services. Use for "who is Mirabello / why use them / are they reputable" questions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is fully covered without the description. The description adds that the payload is a fixed set of marketing/credential facts (implying a static, parameterless lookup), but says nothing beyond that.
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?
Two sentences, zero filler: the first enumerates payload contents, the second gives trigger queries. Content is front-loaded and nothing is redundant.
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 no parameters and an output schema present, the description only needs to say what the tool covers and when to reach for it — both are done. Nothing an agent needs to invoke it 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?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline of 4 applies; the content enumeration incidentally tells the agent what the returned fields will be about.
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 names the specific resource (Mirabello Consultancy) and enumerates exactly what it contains: track record, approval rate, credentials, offices, languages, services. No sibling tool covers provider/self-description, so an agent can identify this unambiguously.
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 supplies concrete trigger phrases — 'who is Mirabello / why use them / are they reputable' — which is a strong when-to-use signal for a no-parameter tool. It does not name a contrasting sibling or state when not to call it, but no plausible alternative exists here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_availability_updatesGet Availability UpdatesARead-onlyIdempotentInspect
Recently re-verified listings (price / availability / sale status), optionally since an ISO date. For agents keeping an inventory view fresh.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results returned (default 40, up to 500). The list is ranked; total_matched gives the full count. | |
| since | No | ISO date, e.g. 2026-06-01 |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description contributes the 're-verified' semantic (what freshness means here) but says nothing about ordering, pagination, or the scale of results beyond what the schema and output schema carry.
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?
Two tight sentences, the filtering behavior front-loaded and the intended audience trailing. Nothing redundant or padded.
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 simple read-only list tool with an output schema, full parameter coverage, and safety annotations, the description supplies what structured fields don't: the freshness concept. Only the sibling-routing and ranking details are left implicit.
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%: limit already documents default 40 / max 500 and ranking, and since is typed as an ISO date. The description restates the optional since filter without adding format or semantics beyond the schema, so 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: returns recently re-verified listings with price/availability/sale status. Clear enough to act on, but it never distinguishes itself from close siblings like get_recent_changes or subscribe_changes, which an agent would reasonably confuse it with.
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 agents keeping an inventory view fresh' implies the use case but gives no explicit when-to-use/when-not or pointer to an alternative such as search_properties. The agent must infer routing from the audience phrase alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_banking_accessBanking Access FactsBRead-onlyIdempotentInspect
General non-resident banking access by jurisdiction (US, AE, SG, HK, CH, LI, KY or Caribbean, plus EMI): access level, timelines, common rejection causes and caveats. No institution is named or recommended, and no account is guaranteed. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 (US, AE, SG, HK, CH, LI, KY) or EMI for the e-money layer | |
| type | No | corporate | personal (omit for both) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely non-structured behavioral context: results are jurisdiction-level only, no institution is named or recommended, and no account outcome is guaranteed — meaningful framing for a tool whose answers could otherwise be over-trusted. It stops short of describing null/coverage behavior when a jurisdiction has no data.
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?
Two sentences, purpose front-loaded, no filler. The jurisdiction parenthetical is the only element that partly repeats schema content, though it usefully includes the Caribbean option. Nothing else could be cut without losing a caveat.
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?
Low-complexity, zero-required-param read tool with full schema coverage, rich annotations and an output schema, so the description needn't explain return values. The remaining material gap is sibling differentiation from get_nonresident_banking, which matters in a ~70-tool namespace. The advice disclaimer is a good inclusion that partially compensates.
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% and both parameters are documented in-schema, so the baseline of 3 applies. The description does add a small amount beyond the schema by naming "Caribbean" as an accepted jurisdiction grouping, which the cc parameter description omits, but it adds nothing about the corporate|personal axis beyond what the schema 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?
The description gives a specific resource with named facets: "non-resident banking access by jurisdiction" returning "access level, timelines, common rejection causes and caveats". An agent knows exactly what data comes back. It loses a point because the namespace contains a near-identical sibling, get_nonresident_banking, which is never mentioned, so the two are not distinguishable from the text alone.
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?
There is no when-to-use guidance, no exclusion, and no pointer to an alternative, despite get_nonresident_banking sitting in the same namespace. The sentences "No institution is named or recommended, and no account is guaranteed" and "General information, not advice" are output caveats, not invocation guidance. An agent must infer the selection rule from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capital_controlsCapital Controls & Outbound LimitsARead-onlyIdempotentInspect
CAPITAL MOBILITY — can money legally LEAVE this country, and how much? For an ORIGIN jurisdiction returns the exchange-control regime (free | liberalising | controlled), the annual outbound allowance or remittance scheme (e.g. India LRS USD 250,000/year under FEMA; China SAFE USD 50,000/year), the cash-declaration threshold, the regulator, and what it means for FUNDING an investment-migration programme (whether and how the investment can lawfully be transferred out of the origin country). Pass cc for one jurisdiction; omit for all, or filter by regime. Information, not legal/tax/financial advice — exchange-control rules change frequently; verify with the central bank or local counsel.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 origin country code (e.g. IN, CN, ZA) | |
| regime | No | optional filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is free. The description earns credit beyond that by disclosing the volatility caveat — exchange-control rules change frequently, verify with the central bank or local counsel — and by characterizing the payload as informational rather than legal/tax advice. It does not discuss coverage gaps or staleness dating of records, which keeps it below 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?
The scoping question is front-loaded, the return fields are packed into a single clause, and call mechanics plus caveats close it out. Capitalized emphasis and parenthetical examples are dense rather than padded — no sentence is redundant given the field list it conveys.
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 the description need not document return shapes, yet it still sketches the key fields, which helps the agent judge fitness. Caveats, call mechanics, and the practical use case (funding an investment-migration programme) are all covered. The only real omission is the absence of any sibling routing, which is minor for such a distinctly scoped resource.
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?
Both parameters are fully documented in the schema (100% coverage) with an enum on regime, so the baseline applies. The description adds only the operational nuance that omitting cc returns all jurisdictions and that regime narrows the set, which is marginal value over what the schema already states as 'optional filter'. No guidance on result volume or ordering when cc is omitted.
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?
Opens with a concrete framing question and then enumerates exactly what comes back: the exchange-control regime, the outbound allowance/remittance scheme with real examples (India LRS, China SAFE), the cash-declaration threshold, and the regulator. That is a specific verb-plus-resource identity an agent can match without opening the schema. It stops short of naming the nearest sibling (e.g. get_banking_access or get_mobility_optionality), so differentiation is inferred from the resource label 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?
The final lines give call mechanics — 'Pass cc for one jurisdiction; omit for all, or filter by regime' — and the intended purpose (assessing whether an investment can be lawfully moved out for a funding decision). But there is no explicit when-not-to-use clause and no sibling is named as an alternative, so routing between this and adjacent tools like get_banking_access or get_mobility_optionality is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_formationCompany Structure FactsARead-onlyIdempotentInspect
Reference facts for one company, trust or foundation structure: tax facts and caveats, indicative costs, timeline, remote feasibility, substance requirements, list status and who it does not suit. Omit structure for the catalogue. Not a recommendation. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| structure | No | profile key, e.g. us-llc-wy, ae-freezone, sg-pte (omit for the catalogue) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the output is reference material, explicitly 'not a recommendation' and 'general information, not advice', and it discloses the omission-driven catalogue mode.
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?
Content is front-loaded into one dense sentence covering scope and fact categories, followed by the catalogue rule and disclaimers. The list is long but every item maps to real output content; only the double disclaimer ('Not a recommendation. General information, not advice.') is mildly redundant.
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 single-optional-parameter read tool with an output schema, the description covers scope, content categories, catalogue fallback and interpretive caveats. Return values are covered by the output schema and safety by annotations, so nothing needed to call it 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 coverage is 100% and the single optional parameter is fully documented in the schema, including the 'omit for the catalogue' behaviour and example keys. The description's mention of omitting structure duplicates rather than extends the schema, so the baseline 3 is correct.
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 retrieval target ('reference facts for one company, trust or foundation structure') and enumerates the fact categories covered, so an agent can tell it apart from analysis tools like compare_formation or find_formation_jurisdictions. It never names a sibling explicitly, which keeps it short of a 5.
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?
Provides one concrete usage rule — 'Omit structure for the catalogue' — which tells the agent how to get the full list. It does not state when to prefer this over compare_formation or get_structuring_playbook, so routing between single-structure lookup and comparison tools is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_countryCountry IntelligenceARead-onlyIdempotentInspect
Country immigration profile (beyond investment migration): ALL screened pathways for a country — skilled-work, digital-nomad, retirement, citizenship-by-descent, naturalisation, study, family etc. — each with requirements, cost, processing, rights, path to PR/citizenship and the official source. Use the ISO-3166 alpha-2 code (e.g. CA, GB, DE, PT).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | ISO alpha-2 country code | |
| pathway | No | optional: one pathway id to return | |
| nationality | No | optional: the applicant's citizenship (ISO alpha-2 or name). For an EU/EEA/Swiss citizen in an EU/EEA country or Switzerland, free movement is shown as their route, national visas are marked not needed and golden visas are omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds output-content context (requirements, cost, processing, rights, path to PR/citizenship, official source) and a nationality-dependent filtering behavior (golden visas omitted, free movement shown for EU/EEA/Swiss citizens), which is real behavioral value beyond annotations.
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 the scope statement, then input format — good ordering with no filler sentences. The long parenthetical enumeration of pathway types is dense but each item conveys scope an agent may need to match a query.
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 and annotations cover the safety profile, so the description only needs to convey scope and input format — both are present, including what each pathway record contains. The only gap, sibling routing, is mild for a lookup tool keyed by a unique country code.
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 'cc', 'pathway', and 'nationality' including the EU/EEA filtering rule. The description only restates the ISO alpha-2 format with examples; it adds no semantics for the two optional parameters. Baseline 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?
States a specific verb and resource ('Country immigration profile') and scopes it precisely: 'ALL screened pathways for a country' with an explicit enumeration of the pathway types covered. The phrase 'beyond investment migration' distinguishes it from programme-specific siblings like get_programme and compare_programmes.
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?
Usage is implied — call it with a country code to get that country's full immigration profile — and the description gives input format guidance ('Use the ISO-3166 alpha-2 code'). But it never names an alternative (find_pathways, get_programme) or states when not to use this tool, despite several overlapping siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_country_taxCountry Tax ProfileARead-onlyIdempotentInspect
HNWI tax profile for a country (wealth-protection view): personal income tax (worldwide vs territorial), capital gains, inheritance/estate, wealth tax, exit tax, CRS/AEOI status and special regimes (non-dom, lump-sum, NHR/IFICI, flat-tax). For Switzerland also canton and commune tax at standard household profiles (field subnational), for "which canton taxes least" or "Geneva vs Zug". From official/Tier-A sources. Informational only — not tax advice. ISO alpha-2 code or country name.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | ISO alpha-2 country code |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, closed-world, non-destructive behavior, so the description doesn't need to. It adds real context — official/Tier-A sourcing and an 'informational only, not tax advice' disclaimer — but says nothing about freshness, coverage gaps, or how the Swiss subnational profiles are scoped/standardized. Solid but not rich.
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 the core purpose, then scope, then the Switzerland carve-out and caveat. Dense but largely earned; the parenthetical '(wealth-protection view)' and the long regime acronym list (non-dom, lump-sum, NHR/IFICI, flat-tax) add some clutter.
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 needn't be explained; the description still conveys data coverage, source tier, a scope caveat, and the Swiss subnational special case. What's missing is any indication of update recency or known jurisdiction gaps — relevant for a tax-data tool.
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% and documents cc as ISO alpha-2 only, yet the description explicitly widens accepted input to 'ISO alpha-2 code or country name' — a meaningful addition the schema would otherwise contradict. It's a single short clause, so no more depth is expected.
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?
Names a specific verb+resource ('HNWI tax profile for a country') and enumerates the exact data domains covered (income, capital gains, inheritance, wealth tax, exit tax, CRS/AEOI, special regimes). This clearly separates it from siblings like get_country, withholding_map, find_low_tax, and forced_heirship_risk.
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?
Gives concrete triggering questions ('which canton taxes least', 'Geneva vs Zug') tied to the subnational field, which is genuinely useful routing guidance. It stops short of explicitly naming what to use instead for pure tax-rate comparisons (e.g. withholding_map) or for non-HNWI/entity questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_digital_gov_progressDigital-Government ProgressARead-onlyIdempotentInspect
Per-country digital-money & identity progress relevant to wealth planning: (1) CBDC status (none/researching/exploring/pilot/launched) + type (retail/wholesale) and issuer; (2) government-issued or government-sanctioned STABLECOIN status + regulatory framework (e.g. MiCA, MAS, GENIUS Act); (3) national DIGITAL ID status (planned/piloting/operational/mandatory), legal framework, biometric/mobile, cross-border interoperability (eIDAS/EUDI) and privacy law. Each block carries provenance (confidence, verified_date, official sources); low-confidence detail is withheld as CHECK-OFFICIAL-SOURCE. Pass cc for one jurisdiction, omit for all. INFORMATION, NOT ADVICE — government status/timelines change frequently; verify the cited source.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description nonetheless adds real behavioral context — provenance metadata per block, low-confidence detail being withheld as CHECK-OFFICIAL-SOURCE, and a staleness warning that government statuses change frequently. It does not describe volume or response size when cc is omitted, which is the only notable gap.
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 the resource and segmented into numbered blocks; every sentence carries information (return shape, provenance, caveat). It is dense and long-ish for a one-parameter read tool, with some all-caps emphasis that edges toward noise, keeping it from a 5.
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-value enumeration is partly redundant, but the description still supplies what the schema can't: confidence/provenance semantics, the withholding behavior, and the advice disclaimer. Only the bulk-return case (omitting cc across all jurisdictions) is left unaddressed.
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 would be 3, but the description adds meaning the schema does not: omitting cc returns all jurisdictions, and passing it scopes to one. That default/omission semantics is genuinely useful beyond the schema's format description.
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 names a specific resource (per-country digital-money & identity progress) and enumerates the three exact data blocks returned (CBDC, stablecoin, digital ID) with their status vocabularies. This is far more specific than the title and is clearly distinguishable from siblings like get_country or get_regulator_registry.
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?
"Pass cc for one jurisdiction, omit for all" gives explicit invocation guidance for the single parameter, and "relevant to wealth planning" frames the context of use. It does not name alternatives or state when another sibling tool would be preferable, so it stops 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.
get_document_checklistGet Document ChecklistARead-onlyIdempotentInspect
Standard document checklist for a programme application (per programme type, plus programme-specific items where published). Final list always confirmed by a specialist — varies by family composition and nationality.
| Name | Required | Description | Default |
|---|---|---|---|
| programme_id | Yes | Programme id as returned by list_programmes (e.g. "st-kitts-cbi") or an unambiguous name ("St Kitts"); an ambiguous name returns the candidates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive semantics, so the description correctly spends its budget on what annotations cannot say: coverage varies by programme, is incomplete where items are unpublished, and output depends on family composition and nationality. The remaining gap is that it never states whether this call returns a generic list or one adapted to an applicant profile, which matters given the single programme_id parameter.
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?
Two sentences, no filler, with the core deliverable stated first and the caveats second. The parenthetical about programme-specific items is slightly dense but earns its place by bounding completeness.
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 one-parameter, read-only lookup with an output schema that already documents return shape, the description supplies the necessary caveats about variability and specialist confirmation. The one material omission is failing to resolve the tension between 'varies by family composition and nationality' and a schema that accepts no applicant-profile inputs, which leaves the agent unsure how personalized the returned list is.
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% and the schema already documents programme_id with an example and a note that ambiguous names return candidates. The description adds only the 'per programme type' framing, which does not extend what the schema provides, so 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?
The description names a specific verb+resource ('Standard document checklist for a programme application') and scopes it to item types (per programme type plus programme-specific items). It never names or distinguishes itself from the plausible siblings compliance_checklist and residence_evidence_checklist, so an agent must infer which checklist tool applies.
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?
Usage is only implied: the mention of 'programme application' signals the context, and the note that the final list must be confirmed by a specialist suggests this is a preparatory, non-authoritative lookup. No explicit when-to-use, when-not-to-use, or routing to alternatives (residence_evidence_checklist, compliance_checklist) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emigration_flowsGerman Emigration Flows by DestinationARead-onlyIdempotentInspect
OFFICIAL GERMAN EMIGRATION DATA: where German citizens actually move, by destination country and year (Destatis statistic 12711-0008, 2016 onwards). Returns departures, arrivals and net migration per destination, plus each destination share of the NAMED-destination base. Revealed preference, not opinion: in 2025 at least 288,579 German citizens deregistered for a move abroad, a net loss of about 96,689; Switzerland, Austria, Spain, the United States and France were the largest stated destinations. CRITICAL, returned in the caveats field: roughly 48% of departures state NO destination, so rankings describe the named base only, and totals are a floor because people leave without deregistering. Never trend across 2015/2016 (definitional break). Popularity is not suitability. Pass year, destination or top. Licence dl-de/by-2-0; Destatis attribution mandatory on reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | limit the destination list (default 25) | |
| year | No | e.g. "2025"; defaults to the latest available | |
| destination | No | destination country name in German, e.g. "Schweiz", or a fragment |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, closed-world reads, but the description adds substantive behavioral context beyond them: ~48% of departures state no destination, totals are a floor due to non-deregistration, and the 2015/2016 definitional break. It also discloses the licensing/attribution obligation.
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?
Information is front-loaded (source, scope, then caveats) and nearly every sentence carries signal. It is dense and reads somewhat as a wall of text, which slightly hurts scannability, but nothing is filler.
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 describe return values, and it covers the remaining risk areas: data caveats, temporal comparability limits, and the named-base denominator. An agent has everything needed to call and interpret it correctly.
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 schema already documents defaults and examples ('2025', 'Schweiz'). The description's 'Pass year, destination or top' only restates parameter names without adding format or interpretation rules, so 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?
Names the specific resource (German citizen emigration flows by destination country and year), the underlying statistic (Destatis 12711-0008), and the returned measures (departures, arrivals, net migration, share of named base). An agent can distinguish this from siblings like get_wealth_atlas or get_mobility_optionality without opening the 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?
Gives concrete invocation guidance ('Pass year, destination or top') and explicit constraints ('Never trend across 2015/2016', 'rankings describe the named base only'). It stops short of naming a sibling alternative for related questions, so it is clear context without full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entry_requirementsPassport Validity & Health Entry RulesARead-onlyIdempotentInspect
ENTRY REQUIREMENTS for a DESTINATION: passport-validity rule (the "6-month rule", the Schengen "issued within the previous 10 years AND valid 3 months beyond departure" cap, blank-page requirements) and health/vaccination entry rules (e.g. yellow-fever certificate). Operationally critical: a valid-looking passport is refused BOARDING if it fails these, and the Schengen 10-year issuance cap invalidates passports whose printed expiry is still in the future. Pass cc for one destination; omit for all. Information, not advice — rules and airline enforcement vary by nationality and change without notice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 destination country code |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/idempotent annotations, the description explains operationally critical consequences: boarding refusal despite a valid-looking passport, the Schengen 10-year issuance cap, and nationality-dependent airline enforcement. This adds substantial behavioral context not present in the structured annotations.
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 front-loaded with the core purpose and contains no filler, but the first sentence is dense and packs multiple examples into one long clause. It remains readable and every sentence adds value.
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 and only one optional parameter, the description covers the key missing context: purpose, operational impact, parameter omission behavior, and limitations around nationality and changing rules. Nothing critical for correct invocation appears absent.
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 schema already documents that cc is an ISO alpha-2 destination country code. The description adds important semantics by stating that passing cc returns one destination and omitting it returns all destinations.
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 resource and scope: destination entry requirements covering passport-validity rules and health/vaccination rules. It distinguishes this from broader visa-checking siblings by emphasizing passport validity, blank pages, yellow-fever certificates, and airline boarding enforcement.
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 gives clear usage context, including 'Pass cc for one destination; omit for all,' which tells the agent how to scope the call. It does not explicitly name sibling alternatives such as check_visa_requirement, but its scope is sufficiently clear to avoid likely misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_family_pathwayFamily, Dependants & ReunificationARead-onlyIdempotentInspect
FAMILY PATHWAYS: who can come with, or join, the main applicant — spouse, unmarried/same-sex partner, children (MAXIMUM AGE and when age is measured), adult dependent children, parents, siblings — whether they join at the SAME TIME or LATER, what happens if a child ages out, and every related cost by dependant category. Three modes. (1) programme_id: dependants record of one investment-migration programme, e.g. antigua-cbi, greece-gv. (2) cc: family-reunification law of a country by sponsor class (citizen, resident, investor-visa holder): relatives, waiting period, income and housing tests, fees, processing time. (3) screen: pass children_ages (e.g. [7,15,24]) plus optional parents, partner, together_required to rank programmes that can include the WHOLE family, per person. Each figure carries legal basis, source tier and date. Absence means UNVERIFIED, never that no route exists. Information, not legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO-3166 alpha-2 of the country whose family-reunification law you need, e.g. PT, AE, US | |
| type | No | Screen mode: limit to citizenship or residence programmes | |
| limit | No | Screen mode: max rows (default 25) | |
| parents | No | Screen mode: parents must be includable | |
| partner | No | Screen mode: include an unmarried partner who is not a spouse | |
| sponsor | No | Filter the cc routes by sponsor class: citizen, permanent_resident, temporary_resident, investor_visa_holder, worker, student | |
| programme_id | No | A programme id from list_programmes, e.g. antigua-cbi | |
| children_ages | No | Ages of the children (completed years) for screen mode, e.g. [7,15,24] | |
| together_required | No | Screen mode: everyone must be includable in the SAME application (no later add-on) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety needs no restating. The description adds genuinely useful interpretive context the annotations cannot: each figure carries legal basis, source tier and date, and 'absence means UNVERIFIED, never that no route exists' prevents a serious misreading of empty results. It stops short of describing result ordering or how the three modes interact if multiple parameters are supplied.
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 the topic and the three modes numbered, so an agent can stop reading once it matches a mode. It is dense and long for a description, with a slightly redundant closing line ('Information, not legal advice'), but nearly every clause carries operational content.
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 9 optional parameters, three operating modes and an output schema already present, this covers what an agent needs to choose a mode and populate its parameters, plus the critical unverified-absence caveat. The remaining gap is mode precedence when parameters from different modes are combined, which matters given that all nine parameters are optional.
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 earns an extra point by binding each parameter to its mode and adding semantics beyond the schema, notably that together_required means no later add-on and that children_ages should be completed years as an array. Mode-to-parameter mapping (parents, partner, together_required all 'screen mode') is spelled out, though the interplay of simultaneously supplied programme_id and cc is not resolved.
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 names a specific domain (family dependants and reunification) and enumerates exactly what it answers: which relatives qualify, age limits and how age is measured, same-time vs later joining, aging-out, and per-category costs. It also distinguishes itself from the broader pathway tools by scoping strictly to the family/dependant slice of a programme, so an agent can separate it from find_pathways, get_programme or compare_programmes without opening a 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?
It gives explicit mode selection guidance with concrete trigger examples: programme_id for one programme's dependant record, cc for a country's reunification law by sponsor class, and screen with children_ages for ranking whole-family options. What is missing is an explicit negative: nothing says when NOT to use this (e.g. for the main applicant's own eligibility) or which sibling to fall back on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_foundation_rulesFoundation & Trust RulesARead-onlyIdempotentInspect
CHARITABLE & PRIVATE FOUNDATION and TRUST rules for a jurisdiction: whether the foundation legal form exists (Stiftung / fondation / fundación / waqf / foundation company), legal basis, regulator/registry, minimum endowment, governance organs, founder reserved powers, beneficiary rights, charitable-purpose requirements, tax treatment and cross-border donor deductibility, reporting/audit duties, UBO-register visibility, trust recognition (domestic trust law / Hague Convention / not recognised) and lawful foundation+trust combination patterns. Deepens the charity and trust jurisdiction shortlists to 194-country coverage. Pass cc for one jurisdiction; omit for the covered list. Establishment is decided by the competent registry or regulator and executed via licensed local partners; tax outcomes follow the founder's and beneficiaries' residence. Information, not legal or tax advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 country code, e.g. LI, CH, AE |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world, so the description adds value by disclosing that establishment is decided by the competent registry and executed via licensed local partners, that tax outcomes depend on founder/beneficiary residence, and that the content is information rather than legal or tax advice. Return format or the coverage list contents are not described, which keeps it below 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 the resource and scope, and the calling rule is stated in the second half. The first sentence is a long topic list, but each item signals a real field the agent will receive, so most of it earns its place; some compression would still improve it.
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, and the description covers coverage breadth (194 countries), the two calling modes, and the advisory/authorization caveats. Only edge-case behavior (e.g. invalid or unsupported cc) is unaddressed, which is a minor gap for a single-optional-param lookup tool.
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 behavior the schema does not state: passing cc scopes to a single jurisdiction and omitting it returns the covered list. That omission-default semantics is genuinely useful beyond the ISO alpha-2 hint in the schema.
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+resource combination ('CHARITABLE & PRIVATE FOUNDATION and TRUST rules for a jurisdiction') and then enumerates the concrete data domains returned: legal form existence, regulator, endowment, governance, tax, UBO visibility, trust recognition. It also distinguishes itself from the shortlist siblings by stating that it 'deepens' the charity and trust shortlists rather than producing them.
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?
'Pass cc for one jurisdiction; omit for the covered list' gives clear calling guidance for both modes. It implies sequencing after the shortlist tools ('deepens the charity and trust jurisdiction shortlists') but never names find_trust_jurisdictions or find_charity_jurisdictions as alternatives with an explicit 'use this when' rule, so routing 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.
get_indexInvestment Migration IndexARead-onlyIdempotentInspect
The Mirabello Investment Migration Index — a composite 0–100 ranking of CBI/RBI programmes across cost, mobility, speed, path-to-citizenship, stability, family and tax, with transparent published methodology. Filter by type (CBI/RBI) and limit. Returns the TOP 25 by default (the full table is large); pass limit for more, or limit:0 for every ranked programme. Programmes with insufficient verified data are flagged provisional and excluded from the headline ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Programme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both. | |
| limit | No | Maximum number of items to return. Responses can be large; use this to keep the answer small. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world behaviour, so the bar is lower; the description adds the non-obvious default truncation to 25 items and the provisional-flag exclusion rule, which materially affect results. It doesn't mention rate limits or auth, but none are implied for a static index.
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-loads what the index is, then the filtering and default-vs-limit behaviour. Slightly dense as a single paragraph, but every sentence carries operational information and nothing is padding.
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-shape explanation isn't needed, and both parameters are fully documented. The description covers defaults, truncation and exclusions; what remains implicit is how the ranking behaves with both filters off, which is minor.
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 the schema by defining the magic value limit:0 (return all) and the default of 25, which the schema does not state. The type enum semantics are already fully documented in the schema.
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 noun+verb: a composite 0–100 ranking of CBI/RBI programmes with named ranking dimensions, filterable by type and limit. This is clearly distinguishable from siblings such as list_programmes, compare_programmes or get_wealth_index without opening any 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?
Explains the default behaviour (top 25), how to get more (pass limit) and how to get everything (limit:0), plus the exclusion of provisional programmes. It doesn't explicitly contrast with an alternative sibling like compare_programmes, so it falls 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.
get_malta_citizen_serviceMaltese Citizen ServicesARead-onlyIdempotentInspect
Official procedure facts for Maltese citizens and their families, in Malta and abroad: (1) passport renewal (Identità fees by age and season, the official 4-hour urgent service in Malta, applying through a mission abroad, minors, lost/stolen); (2) a newborn's birth registration, citizenship and first passport (born in Malta or abroad to a Maltese parent); (3) a foreign spouse's citizenship by marriage (Cap. 188 art. 6, Form B, 5-year rule); (4) registration by descent (art. 5(3), Forms K and M, two consecutive Malta-born generations; the 1 August 2028 dates concern the parent or ancestor, not an application deadline). Returns steps, documents, itemised fees with source and verified flag, timelines, the authority, missions for the residence country and how Mirabello prepares the file. NOT investment citizenship (Malta's investor programme closed in 2025). Omit service for an overview. Information, not legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | Which service: "passport-renewal" (renew a Maltese passport), "newborn" (register a birth, prove citizenship, first passport), "marriage" (foreign spouse of a Maltese citizen), "descent" (planned). Omit for an overview of all services. | |
| applicant_age | No | Age in years of the person the passport is for (passport service only); selects the minors rules and fee band. | |
| residence_country | No | Where the applicant lives now, as a country name or ISO code (e.g. "Australia", "GB", "Malta"). Selects the in-Malta or abroad procedure and the nearest Maltese missions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a read-only, idempotent, closed-world, non-destructive tool, so the safety profile is covered. The description adds real value beyond that: it discloses what is returned (steps, documents, itemised fees with source and verified flag, timelines, authority, nearest missions, Mirabello prep), which tells the agent how authoritative and how citable the output is. It also pre-empts a likely misreading of the 1 August 2028 dates.
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?
It is a single front-loaded paragraph with zero filler — every clause maps to a distinct service or constraint. It is dense to the point of being hard to scan (nested parentheses and semicolons), which costs a little against a perfect score, but no sentence is redundant.
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 needn't spell out return structure, and it still gives the agent scope, exclusions, per-service depth, and a legal-advice disclaimer. For a three-parameter, all-optional lookup tool, nothing an agent needs in order to call it correctly is absent.
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 a baseline of 3 is warranted, but the description goes further by expanding what each service value actually contains (age/season fee bands for passports, Cap. 188 art. 6 and the 5-year rule for marriage, Forms K and M plus two-generation rule for descent), which materially helps the agent pick the right enum value. It also clarifies that the 2028 dates are about the ancestor, not a filing deadline.
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 clear resource (official procedure facts for Maltese citizens) and enumerates four concrete service areas with the statutes and forms attached to each, so an agent knows exactly what content lives here. It also excludes investment citizenship by name. It stops short of naming overlapping siblings such as get_passport_renewal or check_maltese_citizenship_eligibility, so the boundary with those tools must be inferred.
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?
Usage is well signalled: 'Omit service for an overview', the exclusion of Malta's closed investor programme, and 'Information, not legal advice'. The schema-level note that applicant_age is passport-only and residence_country selects in-Malta vs abroad further steers invocation. What's missing is explicit routing to alternatives when the user only wants a fee estimate or a pure eligibility check, both of which have dedicated siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mobility_optionalityMobility OptionalityARead-onlyIdempotentInspect
Strategic mobility optionality for a jurisdiction: the lawful residence/citizenship ROUTES it offers (investment programmes) with minimum physical presence, family inclusion, path to permanence, processing time and regulator — the planning view of mobility, not passport strength. Passport reach (visa-free count) is included as context only. Pass cc for one jurisdiction, omit for all. INFORMATION, NOT ADVICE; combine with the full immigration profile and a Mirabello consultation.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower. The description adds genuinely useful non-schema context: passport reach is included 'as context only', and the 'INFORMATION, NOT ADVICE' disclaimer sets expectations about reliance. Return format is not described, but an output schema exists.
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 core scope and the key disambiguation ('not passport strength') are front-loaded, and the trailing sentences are short and purposeful. The middle clause is a dense list, but each item maps to a returned field, so 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?
With a full output schema and complete annotations, the description only needs to convey scope, invocation, and reliance caveats — all present. Minor gap: it does not hint that 'all jurisdictions' output could be large or how results are ordered.
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% and the schema already documents the cc format, so baseline is 3. The description adds the optionality rule — single cc scopes one jurisdiction, omission returns all — which is behavioral meaning not stated in the schema.
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 resource ('strategic mobility optionality for a jurisdiction') and enumerates the returned facets (investment routes, physical presence, family inclusion, path to permanence, processing time, regulator), while explicitly distinguishing itself from passport-strength tools like check_visa_free or list_visa_free_destinations. The 'planning view of mobility, not passport strength' framing lets an agent route correctly without opening schemas.
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?
'Pass cc for one jurisdiction, omit for all' gives concrete invocation guidance, and 'combine with the full immigration profile and a Mirabello consultation' indicates downstream usage. It implicitly steers away from passport-reach tools but never names a specific sibling alternative or exclusion, keeping it 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.
get_name_changeLegal Name Change RulesARead-onlyIdempotentInspect
LEGAL NAME CHANGE rules for a jurisdiction: whether a change is permitted, on what grounds (or none), which authority decides (civil registry or court), who may apply, the process, indicative cost and timeline, the effect on the passport, transliteration rules for rendering a name into Latin script, and whether the former name persists on records held abroad. Commonly needed after marriage, after naturalisation, and when a non-Latin name must be rendered consistently across documents. Pass cc for one jurisdiction; omit for the covered list. Decided solely by the competent registry or court; Mirabello informs and orchestrates but does not file applications. Information, not legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 country code, e.g. GB, AE, CH |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, closed-world lookup, so the safety profile is covered. The description adds genuinely non-obvious context beyond that: the outcome is decided solely by the registry or court, Mirabello informs but does not file, and the content is information rather than legal advice — all of which shape how an agent should present results.
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 the core purpose, then the use cases, then the invocation rule and the disclaimer — a sensible ordering. The opening sentence is very dense with enumerated facets, but each clause conveys distinct scope information rather than filler.
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?
Return values need not be explained because an output schema exists, and the description fully covers scope, coverage boundaries, invocation, and the authoritative-source caveat. Nothing an agent needs in order 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 coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: omitting cc returns the covered-jurisdiction list rather than erroring, and cc identifies a single jurisdiction. That is useful semantics layered on a fully documented single 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?
Names a specific resource (legal name change rules) and enumerates exactly what it returns: permitted-or-not, grounds, deciding authority, who may apply, process, cost, timeline, passport effect, transliteration, and persistence of the former name abroad. That scope is clearly distinct from sibling tools such as get_passport_renewal or get_document_checklist, so an agent can route without opening the 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?
"Pass cc for one jurisdiction; omit for the covered list" gives explicit invocation guidance, and the marriage/naturalisation/transliteration triggers tell the agent when this is the relevant tool. It stops short of naming a specific alternative or exclusion, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nonresident_bankingNon-Resident Banking AccessARead-onlyIdempotentInspect
Includes basic_account_right: whether residents (or EEA residents) have a statutory right to a basic account; that right is not a ban on non-residents. BANK-ACCOUNT ACCESS for FOREIGN NON-RESIDENTS in a jurisdiction — two profiles: (a) non-resident individual, (b) foreign entity. Each carries the STATUTORY position AND the PRACTICAL bank appetite separately (many countries are legally open but practically closed — the two are never merged), plus typical KYC/document set, remote-opening availability, indicative minimums (bank policy, never law), timelines, CRS/FATCA notes and EDD triggers. Deepens the formation-linked banking landscape to 194-country coverage. Pass cc for one jurisdiction; omit for the covered list. Account opening is decided unilaterally by each bank — NO account opening is ever guaranteed; full CRS/FATCA transparency always. Information, not financial or legal advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 country code, e.g. AE, CH, SG |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds substantial domain-specific context beyond them: the legal-versus-practical distinction, KYC/document expectations, remote-opening availability, bank-policy minimums, CRS/FATCA transparency, EDD triggers, and the fact that account opening is never guaranteed. These are exactly the caveats an agent needs before relying on the output.
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 dense but appropriately sized for a multi-faceted jurisdiction tool, and most sentences carry substantive information. It is not perfectly front-loaded because it opens with a subfield detail about basic_account_right before stating the main non-resident banking purpose.
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?
Given the rich annotations, 100% schema coverage, one optional parameter, and an output schema, the description supplies ample context about scope, outputs, caveats, and invocation. An agent has enough information to call it correctly without needing more behavioral or return-value explanation.
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 ISO alpha-2 format of cc is already fully documented. The description adds useful semantics by explaining that passing cc returns one jurisdiction while omitting it returns the covered list, which goes beyond the schema.
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 clearly states it covers bank-account access for foreign non-residents, with separate statutory and practical positions plus KYC, minimums, timelines, CRS/FATCA, and EDD details. It distinguishes the resource from general country or formation tools by target population and content, but it does not explicitly name the closely related sibling get_banking_access, so sibling differentiation is left implicit.
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 gives direct invocation guidance: pass cc for one jurisdiction and omit it for the covered list. However, it does not explicitly say when to use this tool versus get_banking_access or other banking-related siblings, and it offers no when-not guidance beyond the no-guarantee caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_passport_renewalPassport Renewal FactsARead-onlyIdempotentInspect
CBI passport-RENEWAL facts for a Caribbean/Pacific programme country (St Kitts & Nevis, Antigua & Barbuda, Dominica, Grenada, St Lucia, Vanuatu): official government renewal fees (currency-primary EC$/GBP/VT with USD approximations, adult/child/lost-stolen), passport validity (adult/child years incl. Grenada adult 10-year since Jul 2024 and St Lucia 10-year since Aug 2025), typical processing, remote-renewal capability (Vanuatu requires in-person biometrics), biometric status, ECCIRA status (postponed to mid-2026, existing rules in force), the biometric/ECCIRA deadlines (e.g. St Kitts 31 Jul 2027), official source URLs, last_verified and the Mirabello /passport-renewal page. Pass country (programme id, e.g. st-kitts-cbi) for one; omit for all six. Citizenship is permanent; an expired passport is only a lapsed travel document. The St Kitts & Nevis record also carries renunciation of citizenship (statute, documents, fee structure, sources). Information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | programme id (e.g. st-kitts-cbi, st-lucia-cbi) or country alias; omit for all six |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description adds genuinely non-obvious context: data carries official source URLs and a last_verified stamp (freshness), the St Kitts record uniquely includes renunciation content, and a domain caveat that citizenship is permanent while an expired passport is only a lapsed travel document. It does not describe result shape, though an output schema exists.
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 and free of filler, but the opening sentence is a ~130-word run-on catalogue that would scan far better as a short structured list. Everything stated earns its place; the formatting is what costs it a point.
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, return values needn't be explained, and annotations cover the safety profile; the description fully covers scope, coverage (six countries), freshness signals and a domain caveat. The remaining gap is sibling disambiguation, which matters here given the dense cluster of programme/cost/timeline tools.
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% and the schema already documents `country`, so baseline is 3. The description adds value beyond it: concrete programme-id examples, the alias form, and the explicit omit-for-all-six default behaviour, which the schema states but the description reinforces in context.
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+resource (CBI passport-renewal facts) and enumerates the exact data returned — fees with currency basis, validity years, processing times, biometric/ECCIRA deadlines, source URLs — across six named programmes. An agent can immediately tell this apart from get_programme, get_document_checklist or estimate_timeline without opening any 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 description gives strong invocation guidance ('Pass country ... for one; omit for all six'), but never says when to prefer this tool over siblings like get_programme, get_document_checklist or get_processing_times, nor any exclusions. Usage is implied by the content scope rather than routed explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_processing_timesGet Processing TimesARead-onlyIdempotentInspect
Processing-time estimate for one programme (by id) or all programmes: the typical government processing range, the basis of the estimate and its source. Use when the user asks how long an application takes. Figures are indicative and vary with the case and the workload of the authority.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Programme id as returned by list_programmes (e.g. "dominica-cbi", "greece-gv") or an unambiguous name ("Dominica", "Portugal golden visa"); an ambiguous name returns the candidates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so safety is covered. The description adds real behavioural context beyond that: the output is an indicative range with a stated basis and source, and figures vary with case specifics and authority workload. It also implies the all-programmes mode when no id is supplied. Missing only things like output granularity or pagination for the all-programmes case.
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 tight sentences: what it returns, when to use it, and the reliability caveat. The trigger is front-loaded right after the returned data, and no sentence repeats the name, title or schema.
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 single optional-parameter, read-only tool with full schema coverage, complete annotations and an output schema, the description covers purpose, trigger, returned content and reliability caveat. Nothing an agent needs to call it 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 coverage is 100%, so the baseline would be 3, but the description contributes meaning the schema does not: it clarifies that omitting the id yields all programmes, and that the id resolves names, not just ids from list_programmes. That said, ambiguity resolution detail (candidate list on ambiguous name) lives in the schema rather than the description, so the added value is moderate.
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 and resource ("processing-time estimate for one programme (by id) or all programmes") and enumerates the returned content: range, basis and source. The scope distinction between a single programme and all programmes is explicit. It stops short of a 5 because it never names the nearest sibling (estimate_timeline, find_fastest_citizenship), so an agent comparing them gets no disambiguation from the description alone.
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?
"Use when the user asks how long an application takes" is a clear, actionable trigger condition. It provides positive context but no exclusions or named alternatives, so it does not reach the 5 bar of stating when-not or which sibling to prefer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_programmeGet ProgrammeARead-onlyIdempotentInspect
Full detail for one programme by id (e.g. "dominica-cbi","greece-gv"): routes, fees, processing, mobility, tax, path to citizenship, its Mirabello Index composite score + rank (mirabello_index), and the Mirabello programme page.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Programme id as returned by list_programmes (e.g. "dominica-cbi", "greece-gv") or an unambiguous name ("Dominica", "Portugal golden visa"); an ambiguous name returns the candidates. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds the useful content scope of the returned record, but since an output schema exists it needn't enumerate fields, and it says nothing about size, rate limits, or not-found behavior.
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 front-loaded sentence that leads with the verb, resource, and key identifier, followed by a content list. Dense but efficient; the long mid-sentence enumeration of nine content areas is slightly heavy but each item earns its place by telling the agent what's inside.
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 one-parameter read tool with full annotations and an output schema, the description supplies everything needed to call it correctly plus a content preview. Only cross-tool routing guidance 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 coverage is 100% and the id parameter's description already covers id-vs-name input and the ambiguous-name fallback. The description only echoes the examples and ties the id back to list_programmes, adding little beyond the schema — 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 ("Full detail for one programme by id") and enumerates the content domains returned — routes, fees, processing, mobility, tax, path to citizenship, index score/rank, page. The word "one" implicitly contrasts with list_programmes, but no sibling is named explicitly.
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?
Usage is only implied: the description suggests fetching a single programme's full record rather than a comparison or list, but it never says when to prefer this over list_programmes, compare_programmes, or recommend_programmes, nor any prerequisites. An agent must infer the workflow (list then get) from the domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_propertyGet PropertyARead-onlyIdempotentInspect
Full detail for one investment property by slug: price, specs, location, qualifying programme + holding period, project/developer (where disclosed), availability and freshness. Mirabello Consultancy acts as introducer only; brochure, floor plan and due-diligence pack are available from Mirabello on enquiry. Indicative; verify with Mirabello.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Listing slug exactly as returned by search_properties. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, idempotent, closed-world read; the description adds real value beyond them by disclosing data-freshness caveats ('availability and freshness'), fields that may be absent ('where disclosed'), the introducer-only role, and the 'Indicative; verify with Mirabello' warning. It does not cover rate limits or response detail, but the output schema handles the latter.
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 field inventory is front-loaded in the first sentence, followed by two short caveat sentences about introducer role and verification. It is dense but every clause contributes useful scope or caution; the repeated Mirabello branding is slightly redundant but not wasteful.
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?
Given that an output schema exists, the description need not explain return values, and it instead covers scope, disclosure caveats, and the commercial role of the provider. An agent has everything needed to call it correctly and interpret its limits.
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 the single slug parameter, including the crucial 'exactly as returned by search_properties' instruction. The description adds only the phrase 'by slug', so the baseline 3 is appropriate when the schema does the heavy lifting.
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 ('Full detail for one investment property by slug') and enumerates the fields returned: price, specs, location, programme/holding period, developer, availability and freshness. This clearly distinguishes it from the sibling search_properties, which finds listings rather than returning one property's detail.
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 slug parameter's requirement that it be 'exactly as returned by search_properties' effectively routes the agent through the search step first, which is clear usage context. It does not, however, explicitly state when not to use it or name any alternative retrieval path, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_lawReal-Estate Law for Foreign BuyersARead-onlyIdempotentInspect
REAL-ESTATE LAW FOR FOREIGN BUYERS in a jurisdiction: whether foreigners may own freehold (unrestricted / restricted zones / leasehold-only / approval required / prohibited), restricted categories (border, agricultural, coastal), approval regimes (e.g. Lex Koller, FIRB), which ownership vehicles a foreigner may lawfully use (direct / local company / foreign company / trust / foundation), purchase taxes and foreign-buyer surcharges, holding taxes on non-resident owners, rental restrictions, repatriation of proceeds, golden-visa linkage and inheritance by foreign heirs. Federal states (US, CH, AU, CA, AE) are flagged subnational: no single country-wide answer is inferred. The law behind a purchase, not listings. Pass cc for one jurisdiction; omit for the covered list. Rules change without notice; conveyancing runs via licensed local professionals. Information, not legal, tax or investment advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 country code, e.g. CH, AE, PT |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and a closed-world dataset, so the safety profile is covered. The description adds genuinely non-structured caveats: rules change without notice, subnational flagging for US/CH/AU/CA/AE, professional-conveyancing requirement, and an advice disclaimer — useful behavioral context an agent can't get from the annotations.
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 and scope are front-loaded, and invocation mechanics plus the disclaimer land at the end. The long parenthetical coverage list is dense but each item is a legitimate retrieval facet; only the disclaimer tail could be tightened.
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?
Output schema exists, so return values need no explanation, and annotations cover safety. Scope, subnational caveat, optional-parameter behavior, and the non-advice framing make it callable as-is; only the missing hand-off to overlapping inheritance/withholding siblings leaves a small gap.
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% and the single cc parameter is already documented as ISO alpha-2. The description still adds semantics the schema lacks: the parameter is optional and omitting it returns the covered-jurisdiction list, which changes the shape of the call's outcome.
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?
Names a specific resource (real-estate law for foreign buyers) and enumerates exactly what facets it returns: freehold rules, restricted zones, approval regimes, ownership vehicles, taxes, repatriation, inheritance. Crucially it differentiates from the sibling listing tools with 'The law behind a purchase, not listings,' so an agent can separate it from get_property/search_properties without opening the 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?
Gives concrete invocation guidance: 'Pass cc for one jurisdiction; omit for the covered list,' and warns that federal states yield no single country-wide answer. It lacks explicit routing to adjacent siblings (forced_heirship_risk, succession_conflict_map, withholding_map) whose topics it partially claims, so the when-not is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provenanceCitation-First ProvenanceARead-onlyIdempotentInspect
CITATION-FIRST provenance for a country's pathway facts (W3C PROV-O + Schema.org). For each fact returns: the cited official source_url + source_class + verbatim quote (evidence), how it was derived (extraction model + ensemble + independent corroboration), confidence, first_seen/last_changed, and a per-data-class FRESHNESS block (as_of, governing_class, sla_days, status fresh|aging|stale|CHECK-OFFICIAL-SOURCE, recheck_by). Use this to CITE Mirabello data with a source + as-of date and to know when to re-verify. Pass cc (+ optional pathway).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | ISO alpha-2 country code | |
| pathway | No | optional: one pathway id |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior. The description adds valuable behavioral context beyond that: each fact carries a verbatim quote, derivation details, independent corroboration, and freshness statuses including CHECK-OFFICIAL-SOURCE and recheck_by. Much of the return-shape detail overlaps with the output schema, so it is not a full 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?
The description is dense but front-loads the CITATION-FIRST concept and then summarizes returns and usage in a single focused paragraph. It could be easier to scan with structure, but every sentence carries relevant information.
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?
Given that an output schema exists and schema coverage is complete, the description provides enough context for an agent to call the tool correctly and understand its citation/freshness purpose. It leaves minor gaps, such as how pathway ids are discovered or what happens when no provenance is available, but those are not required for a correct invocation.
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 both parameters are already documented in the input schema. The description only says 'Pass cc (+ optional pathway),' adding no syntax, constraints, or meaning beyond the schema, so the baseline of 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?
The description states a specific resource and mode: CITATION-FIRST provenance for a country's pathway facts, with W3C PROV-O and Schema.org framing. It makes clear this is not a general country-fact tool but a citation/evidence layer, which distinguishes it from siblings like get_country or get_recent_changes.
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 explicitly says to use this when citing Mirabello data with a source and as-of date, and when deciding if re-verification is needed. It does not name a sibling alternative or state when not to use it, so it falls short of the highest tier but gives clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_changesRecent Programme ChangesARead-onlyIdempotentInspect
Recent material changes across investment-migration programmes (launches, closures, threshold/mobility/regulatory changes) + current status counts, PLUS pathway_field_changes (official-source field-level diffs per country x pathway, from->to + cited source) and official_legislation_changes (changes detected directly on official government/gazette sources). The freshest, primary-source-verified record — use for "what changed recently / latest" questions. Pass cc to filter to one country.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. | |
| limit | No | Maximum number of items to return. Responses can be large; use this to keep the answer small. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, non-open-world tool, so the safety profile is covered. The description adds meaningful behavioral context by stating that the record is freshest and primary-source-verified, and by naming official-source and government/gazette detections.
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 front-loaded with the main purpose and then adds useful secondary details. The first sentence is dense and includes internal field names, but it remains readable and does not waste much space.
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 tool with full schema coverage and an output schema, the description covers the key categories of changes and the freshness rationale. The main gap is that it does not explicitly steer agents away from sibling change-tracking or availability tools.
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 both cc and limit are already documented in detail. The description only adds 'Pass cc to filter to one country,' which is helpful but largely repeats the schema, so baseline 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 gives a specific verb-and-resource scope: recent material changes across investment-migration programmes, with status counts plus field-level and legislation diffs. It is much more than a restatement of the name and title, but it does not explicitly distinguish itself from sibling tools such as subscribe_changes or get_availability_updates.
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 clearly says to use this for 'what changed recently / latest' questions and to pass cc to filter to a country. That gives a useful usage condition, but there are no exclusions or named alternatives for cases where another changes-related tool might be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_regulator_registryRegulator RegistryARead-onlyIdempotentInspect
Registry of the regulatory bodies that govern tax, company formation, accounting, treaties and banking per jurisdiction — ranked most-to-least important, with official-source links (tax authority, company registrar, financial/AML regulator, central bank, specialists like FDIC, DFSA, ADGM FSRA, Cayman CIMA) — plus the international layer (FATF, EU Code of Conduct list, OECD, DG TAXUD, FSB). Pass cc for one jurisdiction, or international:true for the supranational bodies.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ISO alpha-2 (or roster key like MY-LABUAN, KZ-AIFC) | |
| international | No | True to include international/offshore structures rather than domestic-only options. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new context: results are ranked most-to-least important, entries carry official-source links, and the coverage includes specific bodies like FATF, OECD, DG TAXUD and FSB. It does not mention limits on how many regulators are returned, a minor gap.
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?
Two sentences, with the resource and its ordering front-loaded and the invocation rule at the end. The long parenthetical listing of specialist regulators (FDIC, DFSA, ADGM FSRA, Cayman CIMA) is informative but borders on padding for an agent that only needs to know coverage exists.
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-value detail is not required, and annotations cover safety and idempotency. The description supplies the domain scope, ranking behavior, source-link nature, and both access modes, leaving nothing an agent needs in order to call it correctly.
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 both parameters are already documented, giving a baseline of 3. The description's closing sentence restates how to use them ('Pass cc for one jurisdiction, or international:true for the supranational bodies'), and notably reframes 'international' as supranational bodies versus the schema's 'international/offshore structures', which adds a small clarification but no new syntax or format detail.
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 resource (a ranked registry of regulatory bodies per jurisdiction) and enumerates the categories covered (tax authority, registrar, AML regulator, central bank, international bodies). An agent can tell this is a reference lookup distinct from data tools like get_country_tax or get_banking_access, though no sibling is named explicitly.
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 final sentence explains how to invoke it (cc for one jurisdiction, international:true for supranational bodies), which is invocation guidance rather than selection guidance. There is no statement of when to prefer this over get_country_tax, get_banking_access, or compliance_checklist, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_structuring_playbookCompany Considerations by MarketARead-onlyIdempotentInspect
General considerations by customer market (USA, EU, Switzerland, Asia, Middle East), what a holding company does and does not do, a checklist of obligations and questions to take to a licensed adviser. Tax follows the owner. No structure is recommended. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | us | eu | ch | asia | mea | |
| holding | No | include holding-layer detail | |
| archetype | No | solo-lean | scaleup | enterprise |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety needs no restating. The description adds real behavioral framing that the annotations do not: the output is deliberately advisory-free ('No structure is recommended'), carries a not-advice disclaimer, and is scoped to general considerations — which tells an agent not to present its content as a recommendation.
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?
It is short and front-loads the resource, but the middle sentence is a comma-spliced run-on inventory ('what a holding company does and does not do, a checklist of obligations and questions to take to a licensed adviser') that reads as a table of contents rather than a statement of purpose. No sentence is wasteful, but the telegraphic list style costs clarity.
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 structure need not be explained, and all three parameters are fully documented in the schema with annotations covering the safety profile. What is missing is routing context — how this differs from get_structuring_roster and when an agent should escalate from this general playbook to plan_global_setup or a consultation.
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 does add a small amount of meaning by expanding the market codes (ch to Switzerland, mea to Middle East) and by linking the holding parameter to the holding-layer discussion. The archetype parameter (solo-lean | scaleup | enterprise) is not addressed at all, so the addition is partial.
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 enumerates what the playbook contains — market-by-market considerations, what a holding company does and does not do, and an obligations checklist — so an agent can tell it is a general-orientation reference rather than a specific computation. It never names or distinguishes itself from the closely named sibling get_structuring_roster or from plan_global_setup, so the boundary remains inferential.
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?
Usage is only implied: the closing 'General information, not advice' plus 'No structure is recommended' signal this is the orientation step before a licensed adviser or a concrete plan. There is no explicit when-to-use statement and no mention of the alternative tools (get_structuring_roster, plan_global_setup, compare_formation) an agent should pick instead for roster detail or an actual recommended structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_structuring_rosterCompany and Trust Coverage ListARead-onlyIdempotentInspect
Coverage list of company vehicles, trust and foundation vehicles and personal tax regimes on which Mirabello holds reference data. Not a ranking or a recommendation. General information, not advice. Pass lane: corporate, trust or personal.
| Name | Required | Description | Default |
|---|---|---|---|
| lane | No | corporate | trust | personal | watchlist (omit for full roster) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds meaningful behavioral context that the roster is not a ranking or recommendation and is general information rather than advice, which shapes how an agent should present results. Return-value details are unnecessary because an output schema exists.
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?
At roughly 40 words, the description is front-loaded with the resource definition and stays concise. The two disclaimer sentences ('Not a ranking...' and 'General information, not advice') overlap somewhat, but the overall structure is efficient.
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 one-parameter, read-only list tool with an output schema and rich annotations, the description covers scope, caveats, and the lane filter adequately. The main missing piece is how the roster relates to sibling planning tools, which is partly a usage-guideline gap.
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 baseline is 3. The description names 'corporate, trust or personal' but omits 'watchlist' from the schema's lane description, adding little meaning beyond the schema and being slightly incomplete.
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 defines a specific resource—'coverage list of company vehicles, trust and foundation vehicles and personal tax regimes'—and scopes it to Mirabello's reference data. It is clear what the tool returns, but it does not explicitly differentiate itself from siblings like `get_structuring_playbook` or `find_trust_jurisdictions`.
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 what the list contains but gives no explicit when-to-use guidance or alternative tools to choose instead. The 'Pass lane' line is parameter guidance, and the disclaimers are caveats rather than usage rules, leaving the agent to infer when this roster is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wealth_atlasWealth AtlasARead-onlyIdempotentInspect
The Mirabello Wealth-Protection Atlas — OBJECTIVE per-pillar sub-indices (0-100) for each jurisdiction: tax efficiency, structure strength, residence clarity, crypto clarity, succession certainty, regulatory transparency (international compliance alignment — NOT a secrecy score) and institutional stability (World Bank WGI, where sourced). No composite ranking — weightings depend on client facts; a client-weighted composite index is available separately. Pass cc for one jurisdiction, omit for all. Includes methodology + a de-risk note. NOT for tax figures or which canton or commune taxes least: use the country tax tool. INFORMATION, NOT ADVICE.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the full safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds real interpretive context the annotations cannot: regulatory transparency is flagged as 'international compliance alignment — NOT a secrecy score,' the payload 'includes methodology + a de-risk note,' and the 'INFORMATION, NOT ADVICE' framing sets expectations about how output may be used.
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 identity and contents, then scope constraints, then exclusions — the ordering matches how an agent reads it. It is dense with long parentheticals and a seven-item pillar list, but nearly every clause carries distinct information; only the 'INFORMATION, NOT ADVICE' tag borders on boilerplate for an advisory-domain tool.
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 no explanation, and the single optional parameter is fully covered. Remaining minor gap: the client-weighted composite is referenced as 'available separately' rather than named as the sibling tool, leaving one routing step to inference.
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 ISO-code/name formats and examples are already documented, giving a baseline of 3. The description adds one thing the schema does not state: the behavioral consequence of omitting cc (returns all jurisdictions), which is genuinely useful for an optional parameter and lifts it above baseline.
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 names the specific resource (Mirabello Wealth-Protection Atlas) and enumerates exactly what it returns: objective 0-100 per-pillar sub-indices across seven named dimensions. It also pre-empts the most likely confusion by stating 'No composite ranking — weightings depend on client facts; a client-weighted composite index is available separately,' which separates it from get_wealth_index without either schema being opened.
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?
Explicit when-to-use ('Pass cc for one jurisdiction, omit for all') and explicit when-not-to-use with a named alternative ('NOT for tax figures or which canton or commune taxes least: use the country tax tool'). The composite-index boundary is also flagged as available separately, so the agent has a routing decision at each fork.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wealth_indexWealth IndexARead-onlyIdempotentInspect
CLIENT-WEIGHTED wealth-protection composite over the Atlas pillars. Pass your own weights (any of tax_efficiency, structure_strength, residence_clarity, crypto_clarity, succession_certainty, regulatory_transparency, institutional_stability) to score jurisdictions for a SPECIFIC client profile — there is no single public "best" ranking because the right weighting depends on the client. Omit weights for an illustrative default composite. Pass cc for one jurisdiction, or limit for the top N. Pure projection over Mirabello-verified data; illustrative comparative score, NOT advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. | |
| limit | No | Maximum number of items to return. Responses can be large; use this to keep the answer small. | |
| weights | No | Optional weighting overrides for the index pillars, as an object of pillar name to weight; omit for the published default weights. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, closed-world behavior, and the description still adds substance: the score is a pure projection over Mirabello-verified data, is illustrative, and is explicitly NOT advice. It also heads off the false expectation of a single authoritative ranking. A note on how large default responses are would complete it.
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 scope-defining sentence comes first, followed by usage modes and then the disclaimers. It is dense but every clause carries information; only the emphasis casing is slightly noisy.
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, return values need not be described, and annotations cover safety. The description supplies the pillar vocabulary, the weighting rationale, and the not-advice caveat, leaving only default composite composition and response size unaddressed.
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, but the description adds meaning the schema lacks: it enumerates every valid pillar key for the nested weights object and explains the omit-for-default behavior, which the schema only states generically.
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+resource: a client-weighted wealth-protection composite over the Atlas pillars that scores jurisdictions. It is clearly not a lookup of a single country (get_country) nor a raw atlas read (get_wealth_atlas), though the sibling distinction is only implicit rather than named.
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?
Gives clear operating modes: pass custom weights for a specific client profile, omit them for the default composite, pass cc for one jurisdiction or limit for the top N. It does not explicitly say when to prefer this over get_index or get_wealth_atlas, so the alternative routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_programmesList ProgrammesARead-onlyIdempotentInspect
List Mirabello-advised citizenship- (CBI) and residency-by-investment (RBI/golden visa) programmes, optionally filtered by type, budget (USD, compared at indicative FX), region, or max processing time. All 98 programmes is a large response — pass limit when you only need a sample. Budget filters exclude programmes with no fixed threshold, which are still listed unfiltered.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Programme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both. | |
| limit | No | Maximum number of items to return. Responses can be large; use this to keep the answer small. | |
| region | No | Region filter, matched case-insensitively (e.g. "Caribbean", "EU", "Middle East", "Pacific", "Africa", "Asia"). | |
| budget_max | No | Maximum headline minimum investment the applicant will consider, in USD. Programmes with no fixed threshold are excluded from budget filtering. | |
| max_processing_months | No | Maximum acceptable processing time in MONTHS, compared against the lower bound of each programme's published range. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful behavioral context beyond the annotations: the full set is 98 programmes, the response is large, limit should be used for samples, and budget filtering excludes unfixed-threshold programmes while still listing them unfiltered.
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 front-loaded sentences with no wasted wording: purpose and filters first, response-size guidance second, and the budget-filter caveat third. Every sentence supplies actionable information.
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 annotations covering safety semantics, an output schema covering return structure, and all five parameters documented at 100% schema coverage, the description provides the remaining operational context an agent needs: filter scope, large-response warning, limit usage, FX comparison, and budget-filter exclusions.
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, but the description adds cross-parameter meaning: budget is compared in USD at indicative FX, limit controls sample size, and budget exclusion behavior leaves no-fixed-threshold programmes visible when unfiltered. It does not need to repeat all schema details, and these additions justify a 4.
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 and resource: listing Mirabello-advised CBI and RBI/golden-visa programmes, with optional filters by type, budget, region, and processing time. It is clear what the tool returns, but it does not explicitly distinguish this listing tool from siblings such as compare_programmes, recommend_programmes, or get_programme.
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 clearly explains usage context: filters are optional, pass limit when only a sample is needed, and budget filters exclude programmes with no fixed threshold. It stops short of naming alternatives, so it lacks the explicit when-to-use-this-vs-sibling guidance that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_visa_free_destinationsVisa-Free Destinations by NationalityARead-onlyIdempotentInspect
ALL destinations for ONE nationality grouped by requirement: visa-free (with maximum stay days where published), visa on arrival, e-visa, electronic travel authorisation, visa required, no admission - plus the counts and a visa-free-plus-on-arrival mobility total. From the open Passport Index dataset (199 passports); general information, verify before travel.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | optional: return only this group | |
| from_nationality | Yes | passport held - ISO alpha-2 code or country name |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only, idempotent tool. The description adds meaningful context beyond them: it names the Passport Index source, notes that maximum stay days are included where published, mentions counts and a mobility total, and warns that this is general information to verify before travel.
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 front-loaded with the core scope and efficiently packs group categories, return contents, and source caveat into a short passage. The dense enumeration is useful, though slightly long for a two-parameter list tool.
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 low-complexity read-only list tool with an output schema and rich annotations, the description is complete. It explains what is returned, how results are grouped, the data source, and the verification caveat.
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 both parameters and the group enum. The description reinforces the grouping categories and the single-nationality scope, but adds little parameter-level meaning beyond what the schema provides.
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 precise scope: ALL destinations for ONE nationality grouped by requirement, and it enumerates the exact groups returned. This distinguishes it from sibling tools like check_visa_free or get_entry_requirements, which are not framed as full grouped destination lists.
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?
Usage is implied by the phrase 'ALL destinations for ONE nationality grouped by requirement', suggesting this is the bulk-list tool rather than a single-requirement check. However, it does not explicitly say when to use it versus check_visa_free, check_visa_requirement, or get_entry_requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
matrimonial_regime_screenMatrimonial Regime ScreenARead-onlyIdempotentInspect
Default matrimonial-property regime for a jurisdiction (e.g. community of acquisitions vs separation of property), whether prenuptial/marital agreements can vary it, and how property splits on divorce or death. Informational — confirm with local counsel. Use ISO alpha-2.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, so the safety profile is covered. The description adds a meaningful non-authoritative disclaimer ('confirm with local counsel') but says nothing about data freshness, jurisdiction-resolution behavior, or what happens when the country is unknown — relevant for a legal-reference lookup.
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?
One dense sentence carries the scope and a short second clause carries the disclaimer and input hint; nothing is redundant. The scope enumeration makes the opening slightly clause-heavy but it is front-loaded and earns its length.
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?
Output schema exists, so return-value explanation is unnecessary, and the single parameter is covered by the schema. The remaining gap is the lack of differentiation from succession/forced-heirship siblings, which matters given the dense family-law tool cluster.
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% and the single parameter is fully documented, so this is baseline 3. The description's 'Use ISO alpha-2' actually narrows the schema, which explicitly also accepts country names in 11 languages — a mild mismatch rather than added meaning.
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?
Names a specific resource (default matrimonial-property regime) and enumerates the concrete facts returned: default regime type, whether prenuptial/marital agreements can vary it, and divorce/death property splits. That is far more specific than a generic 'get family law' tool, though it never names the adjacent siblings (forced_heirship_risk, succession_conflict_map) it could be confused with.
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?
'Informational — confirm with local counsel' is a caveat, not routing guidance; there is no statement of when to pick this over forced_heirship_risk or succession_conflict_map, which cover overlapping estate/succession questions. Usage is only implied by the topic itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_global_setupCompany and Move ChecklistARead-onlyIdempotentInspect
General reference for someone combining a move with a company question: residence and citizenship options, considerations by customer market, example structures in no order, banking access levels, an obligations checklist and questions for a licensed adviser. Tax follows the owner. It does not recommend a structure and does not plan for the person. Stops for sanctions-affected country links. General information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| markets | No | customer markets: us | eu | ch | asia | mea | |
| archetype | No | solo-lean | scaleup | enterprise | |
| budget_usd | No | mobility/investment budget for the residence-citizenship layer | |
| from_citizenship | No | current citizenship(s), ISO alpha-2 | |
| include_mobility | No | include the Freedom Compass mobility layer (default true) | |
| from_tax_residence | No | current tax residence, ISO alpha-2 |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower, and the description still adds real behavior: it discloses that example structures are returned 'in no order' (so the agent must not read ranking into the output), that it 'Stops for sanctions-affected country links' (an input-triggered halt condition), and that output is 'General information, not advice' with named limitations. It does not cover pagination or output shape, but that is handled by 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?
Sentences are short and mostly load-bearing (the exclusions, the sanctions stop, the not-advice disclaimer), but the opening is a choppy comma-run inventory and the phrase 'example structures in no order' is awkwardly placed, so the key scoping fact is not front-loaded. Nothing is pure filler, but the ordering makes the reader assemble the purpose from fragments.
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 six all-optional parameters, an output schema, and full annotation coverage of the safety profile, the description supplies the remaining essentials: scope, what it will not do, a sanctions-related halt condition, output-ordering caveat, and an advice disclaimer. The only meaningful gap is that it never says how varying archetype/markets/budget changes what comes back, which matters for a tool whose inputs are all optional.
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% across all six optional parameters, so the schema carries parameter meaning on its own; that sets the baseline at 3. The description only loosely gestures at inputs ('considerations by customer market' for markets, 'residence and citizenship options' for the mobility layer) and never explains the include_mobility toggle, archetype, budget_usd, or the citizenship/tax-residence inputs. No compensating detail beyond the schema.
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 names a concrete scope: a combined reference for someone mixing a relocation with a company-structuring question, enumerating what it covers (residence/citizenship options, per-market considerations, example structures, banking access levels, obligations checklist, adviser questions). The qualifier 'combining a move with a company question' is what separates it from single-domain siblings such as compliance_checklist or get_structuring_playbook, though those siblings are never named. It stops just short of a crisp action verb by calling itself a 'General reference'.
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 opening clause implies the when (combined move + company question), and 'It does not recommend a structure and does not plan for the person' usefully excludes the recommendation/planning use cases, which implicitly routes to recommend_programmes, compare_formation or plan_path. However, no sibling is named and there is no statement of prerequisites or of what an agent should do instead. The guidance is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_pathPlan Path — Freedom CompassARead-onlyIdempotentInspect
The Mirabello Freedom Compass — ORIGIN-AWARE migration path planner. Given the client's STARTING POINT — current citizenship(s) + tax residence — plus their goal, returns ranked end-to-end options. The origin is the constraint: it sets the MOBILITY DELTA (what a passport actually ADDS over the one they hold — a Caribbean passport adds little to a US/EU citizen, lots to others), eligibility/restrictions, and tax-exit/reporting considerations (e.g. US citizenship-based tax & §877A, German AStG §6 — generic, sourced, CHECK-OFFICIAL-SOURCE). Each path carries fit_score + rationale, mobility_delta, eligibility, min_investment, processing_time. Informational only, not advice. Use for "I am a [nationality], I want [goal] — what should I do?". Pass from_citizenship (ISO alpha-2 array) + goal. Privacy: an anonymised record of the query (citizenships, tax residence, goal, budget band and timeline; no name, contact or exact amount) is kept for 90 days to improve coverage.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | What the applicant is optimising for, in plain words: visa-free travel, tax residence, family relocation. | |
| family | No | Family composition object, e.g. { "adults": 2, "children_under16": 1, "children_16plus": 0 }. | |
| budget_usd | No | Total budget the applicant has available for the investment itself, in USD (fees are additional). | |
| timeline_months | No | Target time to the outcome, in MONTHS. | |
| from_citizenship | Yes | current citizenship(s), ISO alpha-2 e.g. ["US"] | |
| from_tax_residence | No | ISO alpha-2 tax residence (defaults to first citizenship) | |
| physical_presence_tolerance | No | How much time the applicant can spend in-country: "none", "minimal", "flexible", "relocating". |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/idempotent/non-destructive; the description adds substantial context beyond that: the mobility-delta logic, the specific tax-exit regimes referenced (US §877A, German AStG §6) flagged as generic and CHECK-OFFICIAL-SOURCE, an informational-only disclaimer, and an explicit 90-day anonymised data-retention policy. That is exactly the kind of trait disclosure annotations cannot carry.
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 the core purpose and the invocation pattern, and most clauses (origin constraint, mobility delta, disclaimer, privacy) carry real information. It is dense and capitalisation-heavy, with a slightly redundant 'Informational only, not advice' stacked on top of the sourced/generic caveat.
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 planner with a full output schema, the description covers the reasoning model (origin as constraint), the returned fields conceptually, the disclaimer posture, and the privacy implication of calling it. Only minor gaps remain, such as result count or rate limits.
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 every parameter is already documented, and the description only restates 'Pass from_citizenship (ISO alpha-2 array) + goal'. It does add conceptual meaning about why origin (citizenship plus tax residence) matters, but no parameter-level detail the schema lacks.
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 ('ORIGIN-AWARE migration path planner' that 'returns ranked end-to-end options') with a clearly named input axis (origin). The origin-constraint framing distinguishes it from sibling lookups like find_pathways, recommend_programmes and compare_programmes.
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?
Gives a concrete invocation pattern: 'Use for "I am a [nationality], I want [goal] — what should I do?"' plus 'Pass from_citizenship + goal'. It does not explicitly exclude or route away from near-neighbours such as find_pathways or recommend_programmes, so the when-not guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_graphQuery Knowledge GraphARead-onlyIdempotentInspect
RELATIONAL query over the investment-migration KNOWLEDGE GRAPH (programme entities · countries · blocs · investment thresholds · authorities · legal sources). Two modes: (1) pass id to get a single entity + its neighbours (e.g. id:"programme:dominica-cbi" or "country:GR" or "bloc:EU"); (2) pass filters to find PROGRAMMES matching constraints — type (CBI|RBI), cc, status (e.g. operational), leads_to (citizenship|residence), bloc (EU|GCC|CARICOM), max_investment_usd / min_investment_usd (FX-normalised, best-effort) — each returned with its country, options, authority and official legal source. Answers queries the flat tools cannot, e.g. "open CBI programmes leading to citizenship under $200k with their governing source". Investment figures are best-effort USD; cite the programme official_source for the authoritative amount. Information, not advice.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. | |
| id | No | entity id for neighbours mode (programme:<id> | country:<CC> | bloc:<NAME> | authority:<slug> | source:<host>) | |
| bloc | No | Political/economic bloc filter (e.g. "EU", "Schengen", "CARICOM", "GCC"). | |
| type | No | CBI or RBI | |
| limit | No | Maximum number of items to return. Responses can be large; use this to keep the answer small. | |
| status | No | Programme status filter: "operational" (accepting applications), "emerging" (new but operating), "announced" (legislated or proclaimed but NOT in force — no applications), "closed", "paused". | |
| leads_to | No | Desired outcome: "citizenship" (a passport) or "residence" (a permit). | |
| max_investment_usd | No | Upper bound on the headline minimum investment, in USD. | |
| min_investment_usd | No | Lower bound on the headline minimum investment, in USD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful caveats beyond that — investment figures are FX-normalised best-effort and the official_source should be cited for authoritative amounts — plus the "information, not advice" disclaimer and the fields returned per programme.
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 the core purpose and mode split before the detail; the parenthetical entity lists are dense but informative. Some redundancy between the type/bloc/status enumerations in the prose and those already in the schema costs a little tightness.
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 and annotations cover safety, so the remaining burden is mode semantics, filter behaviour and data-quality caveats — all present. Missing only edge-case behaviour (empty filter set, no-match results, how limit interacts with neighbours mode).
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 baseline is 3; the description still adds value by grouping parameters into the two modes and clarifying that id accepts prefixed entity ids like "programme:dominica-cbi" and "country:GR", and that min/max investment bounds are FX-normalised and best-effort. It does not explain how multiple filters combine (AND semantics) or what happens with zero filters.
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?
Names a specific operation (relational query) on a specific artifact (investment-migration knowledge graph) and enumerates the entity types it spans. Explicitly distinguishes its two modes (id lookup vs filter search), which no sibling tool offers in this combined form.
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?
Gives clear mode-selection guidance (pass id for neighbours, pass filters for programmes) and a worked example query ("open CBI programmes leading to citizenship under $200k with their governing source") that shows what this tool uniquely answers versus flat tools. It does not explicitly name which sibling to use instead (e.g. get_programme, list_programmes) or when the flat tools are preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_programmesRecommend ProgrammesARead-onlyIdempotentInspect
Recommend a ranked shortlist of programmes for a client profile (budget, family size, mobility priority, timeline, tax goal) with reasoning. Respects closed/paused programmes.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Programme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both. | |
| tax_goal | No | True when the applicant's main objective is a tax outcome rather than mobility. | |
| budget_max | No | Maximum headline minimum investment the applicant will consider, in USD. Programmes with no fixed threshold are excluded from budget filtering. | |
| family_size | No | TOTAL number of people to be included, the main applicant INCLUDED (so a couple with two children is 4). | |
| mobility_priority | No | True when visa-free travel is the applicant's main objective. | |
| timeline_max_months | No | Maximum acceptable time to the outcome, in MONTHS. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the structured schema and annotations, the description adds two key behavioral traits: it returns a 'ranked shortlist' (indicating prioritization) and includes 'with reasoning' (indicating a justification for the recommendation). These traits are crucial for an agent's output strategy.
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 exceptionally well-structured, front-loading the primary action and required inputs in the first clause. It is concise without sacrificing the necessary detail (e.g., mentioning 'reasoning').
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?
Given the high complexity of the 6-parameter input and the existence of an output schema, the description is highly complete for the agent's selection phase. It defines the quality and operational constraints of the output (ranked, reasoned) effectively.
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?
Since the schema description coverage is 100%, the baseline for parameter semantics is met. The description adds value by grouping the individual parameters into the conceptual framework of a 'client profile,' reinforcing the tool's holistic nature.
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 clearly and immediately states the tool's primary function: recommending a 'ranked shortlist of programmes'. It specifies the essential nature of the input: a 'client profile' defined by several key metrics, distinguishing it from simple listing tools.
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 implies when the tool should be used—when a full, multifaceted client profile is available for a comprehensive suggestion. Furthermore, it provides a specific exclusion criteria: 'Respect[s] closed/paused programmes,' which guides usage where a simple program search might fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
residence_evidence_checklistResidence Evidence ChecklistARead-onlyIdempotentInspect
Tax-residence TESTS + evidence factors for a jurisdiction: day-count thresholds, statutory test (e.g. UK SRT), connecting/ties factors (permanent home, centre of vital interests, habitual abode, family, accommodation, economic links), how residence ceases, and the documentary evidence that proves residence start/cease. Use when someone moves and asks what proves they left their old tax residence or started the new one. Tests and factors only — NOT a residence determination. ISO alpha-2 code or country name.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false. The description adds behavioral context beyond annotations by clarifying that the output is a checklist of tests/evidence, not a determination, which helps prevent misuse. It does not contradict any annotation.
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 front-loaded with the core purpose and content, then usage context, then scope limit and parameter note. It is dense but every sentence carries information, though it could be slightly more structured with line breaks or bullet-like separators.
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?
Given the tool's complexity, the description covers what it returns (tests and factors), when to use it, and a critical scope limit. An output schema exists, so return-value details are covered elsewhere. The only minor gap is lack of explicit alternatives for residence determination tasks.
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 parameter meaning is fully documented in the schema. The description repeats the accepted input format ('ISO alpha-2 code or country name') but adds no new syntax or constraints beyond what the schema already provides.
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+resource: 'Tax-residence TESTS + evidence factors for a jurisdiction' and enumerates the exact content (day-count thresholds, statutory test, connecting factors, cessation, documentary evidence). It distinguishes itself from siblings like get_country_tax and get_document_checklist by focusing narrowly on residence tests and evidence for moves, and explicitly limits scope ('Tests and factors only — NOT a residence determination').
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 gives a clear when-to-use: 'Use when someone moves and asks what proves they left their old tax residence or started the new one.' It also includes an explicit scope exclusion ('NOT a residence determination') but does not name alternative tools (e.g., check_eligibility, get_country_tax) for actual determinations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_propertiesSearch PropertiesARead-onlyIdempotentInspect
Search Mirabello-advised investment real estate that QUALIFIES for a citizenship- or residency-by-investment programme. Filter by country, programme (e.g. "grenada-citizenship-by-investment", "greece-golden-visa"), type (CBI|RBI), budget_max (USD, FX-normalised best-effort), beds_min, listing_type (villa|apartment|residence|plot), sale_status. Returns priced listings with the qualifying programme, availability, and the Mirabello enquiry route. Mirabello Consultancy acts as introducer only (it does not sell or broker property); there is no direct developer contact, and all buyer enquiries are routed through Mirabello. Indicative figures; book a consultation to confirm.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Programme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both. | |
| limit | No | Maximum number of items to return. Responses can be large; use this to keep the answer small. | |
| country | No | Country to filter listings by: a name in any common spelling ("St Kitts", "Saint Kitts and Nevis", "Greece") or an ISO 3166-1 alpha-2 code ("KN"). | |
| beds_min | No | Minimum number of bedrooms. | |
| programme | No | Programme id whose investment rules the property must satisfy (e.g. "greece-gv"). | |
| budget_max | No | max price in USD (best-effort FX) | |
| sale_status | No | Availability filter, for example available, reserved or sold. | |
| listing_type | No | Listing category, for example apartment, villa, townhouse, land or commercial. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses important business behavior: Mirabello acts as introducer only, there is no direct developer contact, all buyer enquiries are routed through Mirabello, figures are indicative, and a consultation is needed to confirm. These are material traits an agent could not infer from annotations or 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?
The description is front-loaded with purpose and filters, then moves to return behavior and the introducer disclaimer. It is efficient but the disclaimer sentences are slightly long and overlap, preventing a 5.
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, and the description still usefully previews what is returned (priced listings, qualifying programme, availability, enquiry route). It is complete enough to call correctly, though it omits any mention of result limiting or pagination—minor since the schema covers limit.
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 schema already documents all 8 parameters, examples, and enums. The description adds minimal parameter meaning and introduces a slight mismatch in listing_type values ('villa|apartment|residence|plot') versus the schema examples ('apartment, villa, townhouse, land or commercial'). Baseline 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: 'Search Mirabello-advised investment real estate that QUALIFIES for a citizenship- or residency-by-investment programme.' It clearly separates this from detail-oriented siblings like get_property and from programme-list tools like list_programmes.
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 gives clear context for use: only qualifying properties, with the listed filters and business routing through Mirabello. It does not explicitly name alternatives or state when not to use it (e.g., for non-qualifying listings), so it falls 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.
subscribe_changesSubscribe to Programme-Change AlertsAInspect
Subscribe to verified programme-change alerts (price changes, launches, corrections — each linked to the official source). Agents: provide webhook_url (HTTPS POST on each change). Humans: provide email (explicit consent required). Optional programme_ids filter. Returns a subscription id + unsubscribe URL. Webhook POSTs carry X-Mirabello-Signature: sha256=. Each call creates a separate subscription, so repeating it duplicates the alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| No | email for change alerts (requires consent:true) | ||
| consent | No | required true when email is given (GDPR) | |
| website | No | leave blank (spam honeypot) | |
| webhook_url | No | HTTPS endpoint to POST change entries to (for agents/systems) | |
| programme_ids | No | optional filter — only these programmes |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: each call creates a separate subscription so repeats duplicate alerts (reinforcing idempotentHint=false), webhook POSTs carry an X-Mirabello-Signature HMAC header for verification, and GDPR consent is enforced for email. This is exactly the kind of side-effect and security detail annotations cannot express.
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-loads purpose and delivery mechanism, then layers channel guidance, return value, signature detail and the duplication warning. Every sentence carries actionable information with no filler.
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?
Covers what an agent needs to call correctly: which parameter to use per actor type, consent requirement, filtering scope, return artifacts, signature verification, and the duplicate-subscription hazard. An output schema exists, yet the description still appropriately previews the returned subscription id and unsubscribe URL.
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 baseline is 3. The description adds value by explaining the agent-vs-human parameter path (webhook_url vs email+consent) and clarifying that programme_ids is a filter rather than required, which the flat schema does not make obvious.
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 (subscribe) and resource (verified programme-change alerts) plus the alert types covered. It is clearly distinct from read-style siblings such as get_recent_changes or get_availability_updates because it establishes a persistent subscription with webhook/email delivery.
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?
Gives explicit channel routing — agents use webhook_url, humans use email with consent — and notes programme_ids is an optional filter. It does not name a sibling alternative (e.g. use get_recent_changes for a one-off read), so a small gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
succession_conflict_mapSuccession Conflict MapARead-onlyIdempotentInspect
Cross-border succession conflict-of-laws position for a jurisdiction: which law governs succession (habitual residence / nationality / situs of assets), EU Succession Regulation 650/2012 (Brussels IV) applicability and whether a professio juris (choice of national law in a will) is available, any clawback of lifetime gifts into reserved shares or renvoi, plus trust/foundation interaction and the headline cross-border planning point. Informational, not advice. Use ISO alpha-2.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | Yes | Country: ISO 3166-1 alpha-2 code (e.g. "PT", "AE", "KN") or its name in any of the 11 site languages ("Portugal", "Schweiz", "UAE"); input_notes shows how it was read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds real value beyond that: it sets the expectation that output is a descriptive legal position rather than advice, and it enumerates the substantive dimensions the response will cover, which primes correct interpretation of the result. It stops short of stating depth, jurisdictional coverage limits, or caveats about stale law.
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 opening clause, and each subsequent clause names a distinct output dimension rather than padding. The result is a long compound sentence, but every clause earns its place by signalling what the agent will receive. Minor readability cost from being a single dense 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?
With one required, fully documented parameter, complete annotations, and an output schema, the description only needs to establish scope and framing, which it does. The informational-not-advice caveat and the content enumeration are the right things to include given the output schema already defines return structure. Left unstated: jurisdictional coverage breadth and how the result should be interpreted downstream.
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% and the parameter description is richer than the tool description, documenting alpha-2 codes, country names in 11 languages, and the input_notes echo. The tool description's 'Use ISO alpha-2' merely nudges the preferred form and slightly understates the accepted inputs, so it adds marginal information over the schema. 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 resource and scope: the cross-border succession conflict-of-laws position for a jurisdiction, enumerating the exact determinations returned (governing law, Brussels IV applicability, professio juris, clawback, renvoi, trust/foundation interaction). This is far more than a restatement of the name. It does not explicitly distinguish itself from overlapping siblings such as forced_heirship_risk, choice_of_law_options, or matrimonial_regime_screen, leaving that boundary to inference.
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 only directives are 'Informational, not advice' and 'Use ISO alpha-2', neither of which tells an agent when to pick this tool over the neighbouring forced_heirship_risk or choice_of_law_options tools. No prerequisites, no exclusions, no alternative routing is given. Usage must be inferred entirely from the content list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withholding_mapWithholding MapCRead-onlyIdempotentInspect
Treaty withholding-tax rates (dividends/interest/royalties) for a from→to corridor.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | End of the date range, ISO date (YYYY-MM-DD). | |
| from | Yes | Start of the date range, ISO date (YYYY-MM-DD). |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| terms | No | |
| source | No | |
| book_url | No | |
| provider | No | |
| disclaimer | No | |
| data_updated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds only the income-type scope (dividends/interest/royalties), which is genuinely useful context about what the result covers, but says nothing about rate vintage, treaty-absence behaviour, or jurisdictional coverage.
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 front-loaded sentence with no filler. It is efficient, though arguably over-terse given the semantic ambiguity it leaves unresolved around the two required parameters.
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 and rich annotations remove the need to explain returns and safety, but the description never resolves the central question of what 'from' and 'to' actually mean, and gives no fallback behaviour for missing treaties. For a two-required-parameter lookup whose schema text points the other way, that gap matters.
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 would be 3, but the description actively conflicts with the schema: it frames 'from→to' as a jurisdiction corridor while the schema describes both parameters as ISO date range bounds with examples 2026-01-01/2026-12-31. That contradiction is more likely to mislead an agent than to help it.
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-less but precise resource: treaty withholding-tax rates for dividends/interest/royalties on a from→to corridor. The domain and the three income categories are concrete. It stops short of differentiating from sibling tools such as compare_treaty_position or get_country_tax, so an agent cannot be fully sure which to pick.
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?
No guidance on when to use this rather than compare_treaty_position (a close sibling) or get_country_tax. There is no statement of prerequisites, no mention of what happens when no treaty exists, and no exclusions. The agent must infer usage purely from the one-line scope.
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.
1 tool update
- Changed
find_low_tax1 field changed- removed
Input schema / properties / non_crsRemoved value: -{ - "description": "True to restrict to jurisdictions outside the CRS automatic-exchange network. Note: Mirabello advises full tax compliance; this is a factual filter, not a concealment tool.", - "type": "boolean" -}
68 tool updates
- Changed
book_consultation8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
build_sow_pack8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
check_eligibility8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
check_maltese_citizenship_eligibility8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
check_visa_free9 fields changed- changed
Input schema / properties / programme_id / descriptionPrevious value: -"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."New value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\") or an unambiguous name (\"St Kitts\"); an ambiguous name returns the candidates." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
check_visa_requirement8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
choice_of_law_options8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
compare_formation8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
compare_programmes8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
compare_scenarios9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
compare_treaty_position8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
compliance_checklist8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
create_enquiry8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
estimate_malta_passport_fee8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
estimate_timeline9 fields changed- changed
Input schema / properties / programme_id / descriptionPrevious value: -"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."New value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\") or an unambiguous name (\"St Kitts\"); an ambiguous name returns the candidates." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
estimate_total_cost9 fields changed- changed
Input schema / properties / programme_id / descriptionPrevious value: -"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."New value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\") or an unambiguous name (\"St Kitts\"); an ambiguous name returns the candidates." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_charity_jurisdictions9 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Maximum results returned (default 20, up to 200). The list is ranked; total_matched gives the full count.", + "examples": [ + 20 + ], + "maximum": 200, + "minimum": 1, + "type": "integer" +} - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_fastest_citizenship8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_formation_jurisdictions9 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Maximum results returned (default 12, up to 100). The list is ranked; total_matched gives the full count.", + "examples": [ + 12 + ], + "maximum": 100, + "minimum": 1, + "type": "integer" +} - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_low_tax8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_pathways8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_retirement_routes9 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Maximum results returned (default 5, up to 62). The list is ranked; total_matched gives the full count.", + "examples": [ + 5 + ], + "maximum": 62, + "minimum": 1, + "type": "integer" +} - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
find_trust_jurisdictions9 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Maximum results returned (default 15, up to 100). The list is ranked; total_matched gives the full count.", + "examples": [ + 15 + ], + "maximum": 100, + "minimum": 1, + "type": "integer" +} - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
flag_cfc_poe_risk9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
forced_heirship_risk9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
generate_briefing8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_about8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_availability_updates9 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Maximum results returned (default 40, up to 500). The list is ranked; total_matched gives the full count.", + "examples": [ + 40 + ], + "maximum": 500, + "minimum": 1, + "type": "integer" +} - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_banking_access8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_capital_controls8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_company_formation8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_country8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_country_tax8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_digital_gov_progress9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_document_checklist9 fields changed- changed
Input schema / properties / programme_id / descriptionPrevious value: -"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."New value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\") or an unambiguous name (\"St Kitts\"); an ambiguous name returns the candidates." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_emigration_flows8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_entry_requirements8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_family_pathway8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_foundation_rules8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_index8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_malta_citizen_service8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_mobility_optionality9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_name_change8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_nonresident_banking8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_passport_renewal8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_processing_times9 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Programme id as returned by list_programmes (e.g. \"dominica-cbi\", \"greece-gv\", \"portugal-gv\"). Not a country name and not a website slug."New value: +"Programme id as returned by list_programmes (e.g. \"dominica-cbi\", \"greece-gv\") or an unambiguous name (\"Dominica\", \"Portugal golden visa\"); an ambiguous name returns the candidates." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_programme9 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Programme id as returned by list_programmes (e.g. \"dominica-cbi\", \"greece-gv\", \"portugal-gv\"). Not a country name and not a website slug."New value: +"Programme id as returned by list_programmes (e.g. \"dominica-cbi\", \"greece-gv\") or an unambiguous name (\"Dominica\", \"Portugal golden visa\"); an ambiguous name returns the candidates." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_property8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_property_law8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_provenance8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_recent_changes9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_regulator_registry8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_structuring_playbook8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_structuring_roster8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_wealth_atlas9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
get_wealth_index9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
list_programmes8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
list_visa_free_destinations8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
matrimonial_regime_screen9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
plan_global_setup8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
plan_path8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
query_graph9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
recommend_programmes8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
residence_evidence_checklist9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
search_properties8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
subscribe_changes8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
succession_conflict_map9 fields changed- changed
Input schema / properties / cc / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."New value: +"Country: ISO 3166-1 alpha-2 code (e.g. \"PT\", \"AE\", \"KN\") or its name in any of the 11 site languages (\"Portugal\", \"Schweiz\", \"UAE\"); input_notes shows how it was read." - changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
- Changed
withholding_map8 fields changed- changed
Output schema / descriptionPrevious value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure." - removed
Output schema / properties / book_url / descriptionRemoved value: -"Link to request a consultation with a Mirabello specialist, for a personal case." - removed
Output schema / properties / data_updated / descriptionRemoved value: -"Date the underlying dataset was last updated." - removed
Output schema / properties / disclaimer / descriptionRemoved value: -"Information, not legal/tax/financial/immigration advice; figures indicative." - removed
Output schema / properties / error / descriptionRemoved value: -"Present only when the request could not be fulfilled." - removed
Output schema / properties / provider / descriptionRemoved value: -"Always \"Mirabello Consultancy\"." - removed
Output schema / properties / source / descriptionRemoved value: -"Attribution for the data, when it is not Mirabello Consultancy itself." - removed
Output schema / properties / terms / descriptionRemoved value: -"Acceptable-use and information-not-advice terms."
1 tool update
- Changed
search_properties1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"Country name to filter listings by (e.g. \"Greece\", \"Portugal\")."New value: +"Country to filter listings by: a name in any common spelling (\"St Kitts\", \"Saint Kitts and Nevis\", \"Greece\") or an ISO 3166-1 alpha-2 code (\"KN\")."
3 tool updates
- Added
check_maltese_citizenship_eligibility - Added
estimate_malta_passport_fee - Added
get_malta_citizen_service
3 tool updates
- Removed
check_maltese_citizenship_eligibility - Removed
estimate_malta_passport_fee - Removed
get_malta_citizen_service
3 tool updates
- Added
check_maltese_citizenship_eligibility - Added
estimate_malta_passport_fee - Added
get_malta_citizen_service
1 tool update
- Changed
find_retirement_routes2 fields changed- added
Input schema / properties / golden_onlyAdded value: +{ + "description": "true = only routes rated Golden by the Mirabello Golden Retirement Index; results are then ordered by score. Default false.", + "type": "boolean" +} - added
Input schema / properties / min_scoreAdded value: +{ + "description": "Only routes with a Golden Retirement score at or above this value (0 to 100); unscored routes are excluded. Results are then ordered by score.", + "type": "number" +}
1 tool update
- Added
get_family_pathway
1 tool update
- Added
find_retirement_routes
63 tool updates
- Changed
book_consultation3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
build_sow_pack3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
check_eligibility3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
check_visa_free3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
check_visa_requirement3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
choice_of_law_options3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
compare_formation3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
compare_programmes3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
compare_scenarios3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
compare_treaty_position3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
compliance_checklist3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
create_enquiry3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
estimate_timeline3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
estimate_total_cost3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
find_charity_jurisdictions3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
find_fastest_citizenship3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
find_formation_jurisdictions3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
find_low_tax3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
find_pathways3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
find_trust_jurisdictions3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
flag_cfc_poe_risk3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
forced_heirship_risk3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
generate_briefing3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_about3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_availability_updates3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_banking_access3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_capital_controls3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_company_formation3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_country3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_country_tax3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_digital_gov_progress3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_document_checklist3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_emigration_flows3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_entry_requirements3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_foundation_rules3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_index3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_mobility_optionality3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_name_change3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_nonresident_banking3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_passport_renewal3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_processing_times3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_programme3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_property3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_property_law3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_provenance3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_recent_changes3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_regulator_registry3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_structuring_playbook3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_structuring_roster3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_wealth_atlas3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
get_wealth_index3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
list_programmes3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
list_visa_free_destinations3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
matrimonial_regime_screen3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
plan_global_setup3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
plan_path3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
query_graph3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
recommend_programmes3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
residence_evidence_checklist3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
search_properties3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
subscribe_changes3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
succession_conflict_map3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
- Changed
withholding_map3 fields changed- removed
Output schema / properties / book_a_consultationRemoved value: -{ - "description": "URL to book a Mirabello consultation.", - "type": "string" -} - added
Output schema / properties / book_urlAdded value: +{ + "description": "Link to request a consultation with a Mirabello specialist, for a personal case.", + "type": "string" +} - changed
Output schema / properties / source / descriptionPrevious value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
Publisher details
- Operator
- Mirabello Consultancy · Publisher source
- Operator website
- https://www.mirabelloconsultancy.com/
- Vendor relationship
- First-party
- Documentation
- https://www.mirabelloconsultancy.com/mcp
- Trust center
- Not available
- Restrictions
- None. Free to use, no account, no API key and no OAuth. Public read-only data; fair-use rate limits apply. Four tools (book_consultation, create_enquiry, generate_briefing, subscribe_changes) send details to Mirabello Consultancy only with the user's explicit consent. · Publisher source
Related MCP Connectors
Residency programmes, golden visas, second passports and citizenship by investment in 80+ countries
Verified residency, citizenship, tax and banking data for Latin America and Latin Europe.
Citizenship, residency & tax-residency data for 190+ countries, with origin-aware route planning
Golden Visa Calculator: the site's own MCP server — calculator, enquiry (enquiry = a human...
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents and onboarding/KYB workflows to validate VAT and EORI numbers, look up companies, screen sanctions lists, and run combined checks through remote MCP tools and a pay-per-call API.MIT
- AlicenseNot gradedqualityCmaintenanceEnables due diligence and KYC by querying PEPs, national and international sanctions, debarment lists, arrest warrants, criminal records, leniency agreements, and forced labor registries via hosted, prepaid read-only MCP tools.MIT
- AlicenseNot gradedqualityDmaintenanceMCP Server that gives AI assistants access to comprehensive country data from 250+ countries.1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to investigate corporate ownership, trace ultimate beneficial owners, screen sanctions, detect offshore exposure, and access fully cited dossiers from 130M+ entities across 31 global registries.2196 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.