Skip to main content
Glama

Server Details

Verified CBI/RBI data + Mirabello Freedom Compass origin-aware migration planner. 96 programmes.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
44.0% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
mirabello-consultancy/mcp-server
GitHub Stars
0

TDQS

A3.5/5.0

Scored across 68 tools

Disambiguation2/5

Many tools have genuinely overlapping boundaries despite verbose descriptions: get_banking_access vs get_nonresident_banking, get_wealth_atlas vs get_wealth_index vs compare_scenarios vs get_country_tax, and find_trust_jurisdictions vs get_foundation_rules vs get_company_formation vs get_structuring_roster vs find_formation_jurisdictions all cover adjacent wealth-structuring territory. An agent would frequently struggle to pick the right tool for a given question.

Naming Consistency4/5

Almost all names follow a verb_noun snake_case convention (get_, find_, list_, compare_, check_, estimate_, plan_). A few deviate into bare-noun or noun-first forms (query_graph, compliance_checklist, residence_evidence_checklist, withholding_map), but these are minor and still readable.

Tool Count2/5

68 tools is far too many for a coherent set, and many clusters (jurisdiction lookups across tax/banking/succession/structures) exist in overlapping variants. The surface is bloated well beyond what an agent can reliably navigate.

Completeness5/5

The surface is exceptionally thorough, covering immigration pathways, tax, banking, structures, succession, compliance, data provenance and change monitoring across ~195 jurisdictions. Almost no obvious lifecycle gap remains for the domain.

Available Tools

68 tools
book_consultationBook ConsultationA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNowhy / use-case (e.g. second passport, EU residency, tax, mobility, family relocation)
nameNofull name
emailYesContact email address for the enquiry. Only ever send an address the user has explicitly provided for this purpose.
phoneNophone / WhatsApp (with country code)
budgetNoinvestment budget or band (e.g. "$250k", "up to $500k")
sourceNoorigin surface of this lead for attribution, e.g. "plan_path" when booking follows a plan_path result
consentNoUser consents to share details with Mirabello Consultancy (GDPR). Must be true to deliver.
messageNoshort comment / interest description
websiteNoleave blank (spam honeypot)
timelineNodesired timeline (e.g. "ASAP", "6 months", "within a year")
salutationNosalutation / honorific
family_sizeNowho is included (e.g. "single", "couple", "family of 4") — optional summary; prefer number_of_children + childrens_ages
nationalityNocurrent nationality (country name)
childrens_agesNochildren ages, comma-separated (e.g. 5, 12, 17)
marital_statusNomarried? Yes/No
preferred_channelNohow the client prefers to be contacted
residence_countryNocurrent country of residence (if different from nationality)
number_of_childrenNohow many children to include
programme_interestNoprogramme 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

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnly=false, destructive=true and openWorld=false, the description usefully adds the side-effect profile: it delivers an enquiry to Mirabello, returns a tracked booking URL, and sends a separate enquiry per call (idempotency warning). It does not explain why the operation is flagged destructive, but the added behavioral context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose then usage, with requirements and side effects following. No filler; every sentence carries actionable information for the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter mutation tool with an output schema and annotation coverage, the description covers purpose, usage conditions, key requirements, side effects and idempotency adequately. The main remaining gap is explicit disambiguation from the sibling create_enquiry, which would help an agent choose correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 regardless. The description mentions that email, programme interest/message and explicit consent are needed, which lightly highlights key inputs, but it adds no syntax, format, or selection guidance beyond the already-detailed schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Request a consultation with a Mirabello Consultancy specialist') that is clearly distinct from the analytical/research siblings. It does not, however, differentiate itself from the closely named sibling create_enquiry, which an agent might 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-to-use condition ('Use only when the user asks to be contacted or to book') and a when-not-to-repeat rule ('do not repeat a call that succeeded'). It stops short of naming an alternative tool such as create_enquiry, so the routing guidance is good but not exhaustive.

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 PackA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoCountry the applicant is relocating FROM, as a country name.
contextNoFree-text background about the applicant's situation, used to tailor the answer.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds genuinely useful traits beyond them: the grounding in FATF/Wolfsberg standards and the 'INFORMATION ONLY — never asserts a case is compliant' disclaimer. It doesn't discuss output format, but the output schema covers that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single front-loaded paragraph that leads with the tool's purpose and stays dense with useful detail. It is long, but for a multi-part evidence-pack tool most sentences earn their place; only the example lists feel slightly padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex advisory tool with an output schema, the description covers purpose, scope, grounding, and the informational disclaimer well. The main gap is the origin/context parameter mismatch with the schema, which leaves the agent's input semantics ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description actively misdescribes both parameters: it frames 'origin' as a wealth-origin type (business_sale, inheritance, ipo_liquidity_event) while the schema defines it as 'Country the applicant is relocating FROM', and it describes 'context' as a destination/programme while the schema calls it free-text background. This conflicting framing risks the agent passing the wrong kind of value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (build a Source-of-Wealth/Source-of-Funds evidence pack) and enumerates exactly what it returns — core + corroborating documents, context overlay, and red flags. It is clearly distinguishable from generic checklist siblings like get_document_checklist and compliance_checklist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context ('given a wealth-origin type and an optional destination context') and an invocation hint ('call with no args to list available origins and contexts'). However, it never names an alternative sibling or an explicit when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_eligibilityCheck EligibilityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNooptional filter
nationalityYesapplicant nationality (country name, e.g. "Iran", "India")
programme_idNooptional: check one programme in detail

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious behavioral context: results are limited to factual published policies and final acceptance rests with government due diligence, telling the agent the output is advisory and potentially stale. It does not cover freshness/rate-limit behavior, which keeps it from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the screening scope and followed by the disclaimer. The second sentence earns its place as an epistemic caveat rather than filler. Minor density in the colon-list, but no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 carry the safety profile. The description supplies what structured fields cannot: the policy domains screened and the advisory nature of the result. An agent has enough to invoke it correctly without opening another tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the CBI/RBI enum is self-explanatory, so baseline is 3. The description reinforces that nationality drives the screening, but adds nothing about the optional type filter or about what programme_id detail mode returns versus the default list mode.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource (check which programmes a nationality can apply to) and enumerates the screening dimensions: nationality restrictions/suspensions, EU-citizen applicability, minimum age, core requirements. It is clearly distinct from cost/timeline/compare siblings, but it never addresses the near-identical sibling check_maltese_citizenship_eligibility, which an agent could easily confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: this is a pre-application screening step over published policy. There is no explicit when-to-use vs. find_pathways, recommend_programmes, or check_maltese_citizenship_eligibility, and no statement of prerequisites beyond the required nationality input. The 'factual published policies only' caveat hints at scope but does not route the agent.

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 ScreenerA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeYes"birth" to check a child's citizenship by birth/descent, "marriage" to check a foreign spouse's eligibility to register.
separatedNoRoute marriage: true if the spouses are separated (legally or in fact).
birth_dateNoRoute birth: the child's date of birth, ISO YYYY-MM-DD.
born_in_maltaNoRoute birth: true if the child was born in Malta, false if born abroad.
marriage_dateNoRoute marriage: date of the marriage, ISO YYYY-MM-DD (the 5 years run from this date).
maltese_parentNoRoute birth: which parent was a Maltese citizen when the child was born.
living_togetherNoRoute marriage: true if the spouses still live together.
spouse_deceasedNoRoute marriage: true if the Maltese spouse has died.
parent_citizenship_basisNoRoute 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_maltaNoRoute marriage: true if a marriage celebrated abroad has already been registered at the Malta Public Registry.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, non-destructive safety profile, but the description adds rich behavioral context: it enumerates the returned outcome values, mentions reasons, form, next steps and sources, and discloses key decision rules (1 August 1989 rule, father-only rule, 5-year marriage rule). It also states the decision authority, going well beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loads the core purpose and routes before returns and disclaimers. Every sentence carries substantive information, though the heavy parenthetical style makes it slightly dense and less scannable than it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter screening tool with an output schema and annotations, the description covers purpose, route-specific rules, output outcomes, and legal caveats. An agent has everything needed to select and invoke it correctly; return values are additionally summarized but the output schema already handles that burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 legal-rule context that maps to parameters (e.g., how marriage_date drives the 5-year rule, how parent_citizenship_basis interacts with the father-only and registration rules), giving the agent more semantic grounding than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (screen) and resource (Maltese citizenship eligibility) and immediately scopes it to two family routes (birth, marriage). The level of detail distinguishes it from generic siblings like check_eligibility or matrimonial_regime_screen 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames the tool as a 'rules-based first screen' and explicitly warns it is 'not a legal determination', which sets expectations for when to use it. However, it does not name any alternative sibling or state when not to use it (e.g., for non-Maltese citizenship checks).

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 AccessB
Read-only
Inspect

Mobility for a programme passport: visa-free count and access to key destinations (Schengen, UK, USA, China).

ParametersJSON Schema
NameRequiredDescriptionDefault
destinationNooptional: check access to a specific destination (e.g. Schengen, UK, USA, China)
programme_idYesProgramme id as returned by list_programmes (e.g. "st-kitts-cbi"). Not a country name and not a website slug.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so safety is well covered. The description adds only that the result includes a count and access to a few named destinations, which is thin given an output schema exists that already defines 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It is efficient, though the phrasing 'Mobility for a programme passport' is slightly compressed and could more directly lead with the action and its result.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup, most needs are covered: annotations give the safety profile, the output schema explains the return values, and the schema fully documents parameters. The missing piece is sibling disambiguation, but the core operational information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (including the programme_id-is-not-a-country-name warning and the destination examples) are already documented in the schema. The description's mention of Schengen/UK/USA/China merely echoes the destination examples, adding no new meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource and the payload: visa-free count plus access to key destinations for a given programme passport. It is understandable on its own, but it never distinguishes this tool from close siblings like 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. With several overlapping siblings (check_visa_requirement, list_visa_free_destinations, get_mobility_optionality), the absence of routing guidance forces the agent to guess which mobility tool to call.

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 NationalityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
destinationYesdestination - ISO alpha-2 code or country name, e.g. TR, "Turkey", "Schengen" (checked via Germany)
from_nationalityYespassport held - ISO alpha-2 code or country name, e.g. NG, IN, "Nigeria"

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description earns credit for adding provenance and caveats the annotations cannot convey: the Passport Index dataset as source, corroboration and IATA verification links returned with the answer, and that entry rules change without notice with the destination authority final. It does not mention caching, rate limits, or how stale the data can be.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence front-loads the core concept and enumerates outcomes compactly; the second sentence carries data coverage and provenance; the third is a short disclaimer. It is slightly dense with parenthetical asides, but every clause serves a purpose and there is no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter lookup with a full output schema, the description supplies what the schema cannot: outcome taxonomy, dataset breadth, provenance, and a legal-accuracy caveat. It even notes the corroboration and IATA links returned, so the agent knows extra verification data comes back. The only gap is alternative-tool routing, which is marginal for such a simple point lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents both parameters well, including the tricky 'Schengen (checked via Germany)' case. The description adds only the one-per-call scoping ('ONE nationality', 'ONE destination') and no additional format or syntax meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with exact scope: 'VISA REQUIREMENT for ONE nationality travelling to ONE destination', then enumerates every outcome class it can return (visa-free, visa on arrival, e-visa, ETA, visa required, no admission). This implicitly separates it from siblings like check_visa_free (visa-free only) and list_visa_free_destinations (many destinations for one passport), so an agent can route 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'ONE nationality / ONE destination' framing and the '199 passports x 199 destinations' coverage tell the agent clearly when this lookup is the right call, and the disclaimer sets expectations about authority. However, it never names an alternative or an exclusion (e.g. when to prefer get_entry_requirements or check_visa_free), leaving that routing to inference.

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 OptionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
marriedNoWhether the applicant is married — affects family pricing and some eligibility rules.
asset_situsNoISO alpha-2 codes where assets are situated.
nationalitiesNoISO alpha-2 codes of nationalities held.
habitual_residenceNoISO alpha-2 of current habitual residence.
spouse_nationalitiesNoArray of the spouse's citizenships as country names.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far exceeds the annotations' safety profile: it discloses hard timing rules (2016/1103 and Rome III require nationality at agreement time), a voiding condition (Swiss professio juris void if Swiss nationality later acquired), situs overrides, the fixed-share vs discretionary-claim trade-off, the no-useful-election outcome, the declaration requirement, and an explicit information-only disclaimer. No contradiction with readOnlyHint/destructiveHint/openWorldHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and inputs are front-loaded in the opening clauses, and the later clauses carry genuine behavioral detail (timing, voiding, trade-offs, disclaimer). The single dense sentence-chain is information-rich but heavy to parse; a small amount of structural separation would improve scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value explanation is unnecessary, and the description covers the domain scope, timing rules, failure mode, and legal caveats. For a zero-required-parameter analytical tool with 5 well-documented inputs, nothing essential is missing beyond sibling routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter is documented in the schema, so the baseline is 3. The description adds one constraint ('Pass ISO alpha-2 codes only, never personal data'), but that conflicts with the schema's own note that spouse_nationalities is 'as country names' with example ['Brazil'], leaving format ambiguity the description does not resolve.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific analytical task (determine which law governs cross-border succession, matrimonial property and divorce) with named legal instruments and the exact inputs it consumes and outputs it produces. An agent can distinguish it from siblings like succession_conflict_map or matrimonial_regime_screen 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the stated inputs (nationalities, residence, situs, marital status) and the note that it returns 'no-useful-election' when nationality opens nothing. However, it never says when to prefer this over the adjacent siblings (succession_conflict_map, forced_heirship_risk, matrimonial_regime_screen), so routing remains inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_formationCompare Formation StructuresA
Read-only
Inspect

Side-by-side comparison of 2-6 formation structures across tax position, setup/annual costs, timeline, remote feasibility, substance requirements, banking tier, EU/FATF status, ideal client and not-for. Pass structures as an array of profile keys (e.g. ["us-llc-wy","ae-freezone","ee-ou"]). Comparative facts only — the right choice turns on the owner’s residence and goals; information, not advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
structuresYes2-6 profile keys

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds the advisory framing ('comparative facts only — information, not advice'), which is useful expectation-setting, but discloses nothing about limits, key resolution failures, or partial-match behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is compared, then the input format, then the disclaimer — a logical order. The dimension list is long but each entry carries distinct selection value; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 description, and the description covers input shape, cardinality bounds, comparable dimensions, and the advisory caveat. What is missing is guidance on where valid profile keys come from (e.g. find_formation_jurisdictions), a genuine gap for a key-array input.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is a single required parameter, so the baseline would be 3. The description earns an extra point by supplying concrete example keys ("us-llc-wy", "ae-freezone", "ee-ou") that convey the key naming convention, which the schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (side-by-side comparison), resource (formation structures), and bounded scope (2-6), then enumerates the exact dimensions compared (tax position, costs, timeline, substance, banking tier, EU/FATF, ideal client). This clearly distinguishes it from siblings like 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains how to invoke the tool (pass an array of profile keys, with an example), but never states when to reach for this over compare_programmes or compare_scenarios, nor any prerequisite for obtaining valid profile keys. Usage is implied rather than specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_programmesCompare ProgrammesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
aNoprogramme id (use with b) for the canonical two-programme artefact
bNoprogramme id (use with a)
idsNo2-4 programme ids for the classic comparison

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description goes beyond them by disclosing the returned artefacts (rank, composite, dimension scores, per-dimension deltas, per-metric leads, compare page URL) and qualifying the URL with 'where one exists', which signals the field can be absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, and the alternative mode is presented as an explicit 'Or'. The comma-separated output lists are somewhat dense but each item earns its place by describing a distinct result field.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 fully re-explained, and the safety annotations cover the rest. Both invocation modes and their differing artefacts are described, leaving only minor gaps such as which mode takes precedence if both are supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 genuine semantics: it maps the parameter choice to the type of result (a+b yields the versioned artefact; ids yields the classic column set). It does not explain the a-vs-b ordering or ID format, but the mode-mapping is real value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Compare programmes side by side') and then distinguishes two distinct operating modes: the pair (a+b) canonical versioned artefact versus the ids multi-column classic comparison. An agent can tell exactly what output shape each invocation produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit conditional guidance: 'Pass a + b ... for the canonical versioned comparison artefact' and 'Or pass ids (2-4) for the classic multi-column comparison'. It does not, however, differentiate itself from siblings with similar names (compare_formation, compare_scenarios, compare_treaty_position), leaving the agent to infer that this tool is the programme-specific one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_scenariosCompare ScenariosA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).
scenariosNoArray of scenario objects to compare side by side, each naming a programme id and the family composition and options to price.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint true, destructiveHint false, openWorldHint false). The description adds real behavioral context beyond them: the 2-8 jurisdiction bound, the 'informational only, not advice' caveat, and the recommendation to pair with other tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and scope, then the synthesis positioning, then input formats and disclaimers. The dimension enumeration is long but each item earns its place by defining comparison coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 safety. The description fully supplies scope, input formats, limits, the informational disclaimer, and complementary tools, leaving nothing an agent needs missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both cc and scenarios. The description adds the accepted input shape ('array of {cc,pathway} or cc as a comma list'), which slightly extends the schema's single-string cc, but otherwise largely restates what is structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (compare) and resource (2-8 jurisdictions/scenarios) and enumerates the exact dimensions covered. The phrase 'synthesis view over the tax, residence, structure, reporting and succession layers' cleanly distinguishes it from single-layer siblings like compare_programmes, compare_formation 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Positions the tool as the multi-layer synthesis over the other compare tools and advises combining with 'the immigration route and a specific double-tax-treaty corridor for the full picture'. That is clear contextual guidance, but it never states an explicit when-not or names a competing sibling to route away from.

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 PositionB
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd of the date range, ISO date (YYYY-MM-DD).
fromYesStart of the date range, ISO date (YYYY-MM-DD).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/destructive/openWorld, so the bar is lower; the description still adds real value by scoping the analytical dimensions returned and flagging that results are indicative rather than advice. This exceeds mere restatement of the annotation set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the corridor purpose leads, the computed dimensions follow, and the format/caveat notes close. Every clause carries information, though the parenthetical (from→to) becomes ambiguous once the parameter conflict is considered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 sketches the analytical scope adequately for a fairly complex treaty tool. However, the unresolved conflict over what from/to represent leaves the agent without reliable invocation knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, which would normally give a baseline of 3, but the description's instruction 'Use ISO alpha-2 codes' directly conflicts with the schema, which defines from/to as ISO dates ('Start of the date range', example 2026-01-01). Rather than clarifying parameters, it misleads the agent about whether to pass country codes or dates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete analytical output and enumerates its components (DTA in force, residence tie-breaker, dividend/interest/royalty withholding rates, LOB/principal-purpose test), so an agent knows exactly what 'compare' produces. It is clear but does not explicitly differentiate itself from the nearby withholding_map sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of prerequisites, and no routing to alternatives such as withholding_map or check_eligibility, which overlap on tax-treaty content. 'Indicative, not advice' is a disclaimer, not usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compliance_checklistCompliance ChecklistA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pepNoTrue if the client is a politically exposed person, a family member or a known close associate — requires enhanced due diligence.
dac6NoTrue if a reportable cross-border arrangement under EU DAC6 may be involved.
us_personNoTrue 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_applicantNoTrue if the client is applying for citizenship by investment.
crypto_holderNoTrue if the client holds digital assets — relevant to CARF and local crypto reporting.
rbi_applicantNoTrue if the client is applying for residence by investment.
trust_settlorNoTrue if the client settles or controls a trust or foundation.
crs_reportableNoTrue if the client holds financial accounts reportable under the CRS automatic-exchange regime.
large_cash_or_sowNoTrue if large cash movements or a complex source-of-wealth story are involved.
eu_cross_border_arrangementNoTrue if the structure spans two or more EU member states.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real operational context beyond that: STATELESS execution, a hard constraint against passing personal data, and an 'informational only / not exhaustive' scope limit. It stops short of describing return behavior, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by the flag list and caveats in a logical order with no filler sentences. The flag enumeration is somewhat redundant with the 100%-documented schema, which is the only minor inefficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 purpose, inputs, statelessness and scope disclaimers. The one gap is when to prefer this over neighboring checklist/eligibility tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each flag has a precise boolean definition in the schema, so the baseline is 3. The description names 8 of the 10 flags but adds no semantics beyond the schema and omits rbi_applicant and eu_cross_border_arrangement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 a stated profile may trigger') and enumerates the exact regimes covered (FATCA, CRS, CARF/DAC8, DAC6, PEP EDD, etc.). An agent can distinguish this from siblings like get_document_checklist or residence_evidence_checklist 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by describing the input profile (boolean flags) and adding a disclaimer, but it never names an alternative tool or states when-not to use it. With many adjacent siblings (check_eligibility, get_document_checklist, residence_evidence_checklist), the lack of routing guidance leaves the agent to infer selection.

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 EnquiryA
Destructive
Inspect

Route a qualified buyer enquiry about a specific property to Mirabello Consultancy (the broker of record and licensed advisor). 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoEnquirer full name, only as the user has given it. Never invent or infer personal details.
emailYesContact email address for the enquiry. Only ever send an address the user has explicitly provided for this purpose.
phoneNoContact telephone number in international format, only if the user has provided it.
budgetNoBudget the enquirer has stated, in their own words including the currency.
consentYesmust be true (GDPR consent to share details with Mirabello)
messageNoThe enquiry itself in the user’s own words. Do not add commitments or figures the user did not state.
timelineNoWhen the enquirer wants to proceed, in their own words (e.g. "within 3 months").
nationalityNoApplicant's current citizenship, as a country name (for example India, Nigeria, Russia). Drives eligibility restrictions.
property_idYeslisting slug from search_properties/get_property
preferred_channelNoHow the enquirer prefers to be contacted: email, phone or WhatsApp.
residence_countryNoCountry where the enquirer currently lives.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare this is a non-read-only, destructive write, and the description adds real context beyond them: the side effect of delivering the enquiry to Mirabello, the returned next step, the GDPR consent gate, and the no-duplicate-call warning. It does not explain how an enquiry could later be retracted, so a full 5 is unwarranted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the purpose and side effect, then preconditions, then the repeat-call rule. Dense but every sentence carries a constraint; borderline between tight and slightly overloaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation with an output schema, the description covers the essentials: recipient, consent gate, side effect, CBI/RBI constraints, and idempotency guidance. Minor gaps remain around what qualifies an enquiry as 'qualified' and how nationality drives eligibility, but the core invocation path is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters, and the baseline is 3. The description reinforces the key required fields (property_id slug format, email, consent:true) but adds no syntax or semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — routing a buyer enquiry about a specific property to Mirabello — and grounds property_id in search_properties/get_property. It clearly differentiates this write/routing action from the read-oriented property siblings, though it does not name a specific alternative tool for related actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear preconditions (property_id slug, valid email, explicit consent:true for GDPR) and an important operational rule ('do not repeat a call that succeeded'). It also scopes CBI/RBI purchases to approved projects and authorised agents, but stops short of explicitly stating when to prefer book_consultation or other siblings instead.

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 EstimateA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageYesAge in years of the passport holder on the application date.
monthNoMonth of application, 1-12 (adult standard fee is €80 April-August, €70 otherwise). Defaults to the current month.
urgentNoTrue for the official urgent service (4 working hours in Malta; from abroad the urgent fee applies but no 4-hour timeframe).
locationNo"malta" if applying at the Passport Office in Malta, "abroad" if applying through a Maltese embassy, high commission or consulate.
lost_still_validNoTrue 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

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description still adds real behavioral context: it is deterministic, derived from an official fee table with sources, flags unverified mission/courier figures, and is information-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in the first clause, followed by the fee components and then two short qualifier sentences. Dense but each clause carries fee-structure information; the single long sentence is slightly heavy but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 annotations cover the safety profile. The description enumerates every fee component and its conditions, leaving only minor gaps such as how missing optional inputs (month, location) are handled by default.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 goes beyond the schema by attaching concrete fee semantics to the parameters (seasonal €70/€80 adult rates, €160 urgent service with 4-hour window, €15 lost-but-valid supplement), which enriches parameter interpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: an itemised government fee estimate for a Maltese passport, with the authority (Identità) named. It is easy to distinguish from get_passport_renewal or estimate_total_cost by scope, but it never explicitly routes against those sibling estimators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the estimate contains but gives no when-to-use guidance or alternatives. The only directive, 'confirm with the Passport Office or mission before paying,' is a reliability caveat rather than a rule for choosing this tool 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 TimelineB
Read-only
Inspect

Step-by-step expected timeline for a programme: published processing time plus the stage breakdown where available.

ParametersJSON Schema
NameRequiredDescriptionDefault
programme_idYesProgramme id as returned by list_programmes (e.g. "st-kitts-cbi"). Not a country name and not a website slug.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds the useful detail that output is 'published processing time plus the stage breakdown where available,' disclosing both content and a coverage limitation, but says nothing about data freshness, rate limits, or behavior when stages are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no filler, and the core deliverable is front-loaded. It is short to the point of possibly under-specifying, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explanation is not required, and the description adequately conveys what the tool produces. Given the low complexity (one required param, read-only), it is nearly complete; only the missing sibling routing keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 'not a country name' warning). The description adds no parameter-level information beyond that, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('estimate') and resource ('timeline for a programme') and clarifies the scope as published processing time plus stage breakdown. However, it never differentiates itself from the sibling get_processing_times, which an agent could easily 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no named alternative. The phrase 'where available' hints at a coverage caveat but doesn't tell the agent when to prefer this tool over get_processing_times or estimate_total_cost.

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 CostA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNomain + spouse/adult applicants (default 1)
programme_idYesProgramme id as returned by list_programmes (e.g. "st-kitts-cbi"). Not a country name and not a website slug.
children_16plusNoNumber of dependent children aged 16 or over — usually priced higher than under-16s.
children_under16NoNumber of dependent children aged under 16 — priced separately by most Caribbean programmes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a safe, non-destructive, closed-world read. The description adds genuinely useful disclosure beyond that: the result is indicative only and excludes professional, property, and legal fees, which tells the agent the number is not a full quote.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the verb and resource, then layers the inclusions and the exclusion caveat. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and the annotations carry the safety profile. The description covers scope and the indicativeness caveat, leaving only sibling disambiguation unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so programme_id, adults, children_16plus, and children_under16 are already documented with defaults and examples. The description only implies family composition via 'for a given family' and adds no syntax or unit detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (estimate) and resource (total cost of a programme) and enumerates the cost components included: investment, government & due-diligence fees, family add-ons. It does not, however, differentiate itself from the sibling estimate_malta_passport_fee, which an agent would need to disambiguate between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this tool versus list_programmes, compare_programmes, or estimate_malta_passport_fee. The only framing is a caveat about what the figure excludes, which is accuracy guidance rather than usage guidance.

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 JurisdictionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicleNoe.g. foundation, donor-advised fund, charitable trust, waqf
donor_reliefNoonly jurisdictions giving donors a tax deduction/credit

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the characteristics the search surfaces (donor tax relief, entity tax status, cross-border granting, standout vehicle), which is useful, but discloses no pagination, ranking, or result-shaping behavior 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, with the vehicle enumeration and positioning following. It is a single dense sentence plus a positioning clause, slightly burdened by the long example list but with no genuinely wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 return values, and it correctly focuses on scope, vehicle coverage, and domain positioning. For a low-complexity read-only tool with two optional parameters, this is nearly complete; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented (including the 'vehicle' examples and the donor_relief filter meaning) in the schema. The description echoes the same vehicle examples without adding format or semantics beyond what the schema provides, making the 3 baseline appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ('Find') with a tightly scoped resource ('jurisdictions for setting up a CHARITABLE/PHILANTHROPIC structure') and enumerates the vehicle types it searches over. By framing itself as 'the philanthropy/legacy complement to the residence/citizenship + tax + trust layers,' it distinguishes itself from siblings like find_trust_jurisdictions and find_formation_jurisdictions without the agent 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The positioning sentence ('complement to the residence/citizenship + tax + trust layers') implies the domain in which this tool is relevant, but there is no explicit when-to-use/when-not guidance or named alternative to route to. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_fastest_citizenshipFastest Route to Citizenship by NationalityA
Read-only
Inspect

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), a Samoan citizen lawfully resident in New Zealand has an immediate entitlement with no presence test at all (Citizenship (Western Samoa) Act 1982 s 7(1)). 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO-3166 alpha-2 of the destination jurisdiction, e.g. ES, PT, NZ, AU
blocNoLimit 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.
nationalityNoISO-3166 alpha-2 of the passport held, e.g. BR, AR, WS, NZ

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds substantial context beyond that: periods are qualifying residence excluding processing time, coverage is narrow by design with absence meaning 'unverified, never that no fast track exists', and entries are verified against enacted statutes. These are meaningful behavioral and provenance disclosures.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then parameter behavior, then coverage caveats. Dense and largely waste-free, though the parenthetical legal citations make the sentence long; still, each clause carries informational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-param, three-parameter read tool with an output schema present, the description covers everything an agent needs: what each parameter produces, the meaning of the returned periods, and the coverage caveat. Return-value explanation is rightly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 nonetheless adds real meaning: it explains the distinct behavior of each parameter (nationality ranks, cc returns one jurisdiction in full including who gets no reduction, bloc ranks a bloc with presence and requirements plus uncovered members). This goes beyond the schema's format hints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (rank jurisdictions by how soon a given nationality may apply for citizenship) and scopes it with concrete examples (Ibero-American → 2 years in Spain, CPLP → 7 in Portugal, Samoan → immediate in NZ). It is clearly distinguishable from siblings like find_pathways and check_eligibility, which concern eligibility rather than nationality-based fast-track ranking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit parameter-selection guidance: pass nationality to rank, pass cc for one jurisdiction in full including baselines and transitional regimes, pass bloc for a bloc ranking. It also clarifies the coverage policy (absence means unverified). It stops short of naming sibling alternatives or when-not-to-use conditions, so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_formation_jurisdictionsFind Formation JurisdictionsA
Read-only
Inspect

FILTER the Mirabello formation profiles to find company/structure jurisdictions matching constraints: remote_only (fully remote formation), max_setup_usd (setup cost ceiling), banking_tier (good|moderate — minimum), eu_clean (exclude EU Annex I/II and FATF-listed), lane (company|trust). Each match returns key, vehicle, tier, status, headline tax line, cost ranges, timeline, banking tier and ideal-client line, with the full honest per-jurisdiction profile available on request. Rule zero: profit tax follows the OWNER (residence/PoEM/CFC), not the entity. Information, not advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
laneNocompany | trust
eu_cleanNoTrue to require the jurisdiction be absent from EU tax and AML listings.
remote_onlyNoTrue to return only options that can be completed without travelling to the country.
banking_tierNogood | moderate (minimum acceptable)
max_setup_usdNoMaximum acceptable set-up cost in USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile, so the bar is lower. The description adds useful non-schema context: results are 'honest' summary profiles with the full profile 'on request', and an explicit 'Information, not advice' disclaimer, plus the 'Rule zero' PoEM/CFC caveat.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded ('FILTER...'), and the output enumeration stays tight. The trailing 'Rule zero' and advice-disclaimer sentences are somewhat tangential but short and add domain value, so nothing is egregiously wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return details are not strictly required, yet the description still outlines the match fields. With annotations, full schema coverage, and an output schema present, the definition is complete enough, though it lacks explicit sibling routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: banking_tier is explicitly a 'minimum', and eu_clean is spelled out as 'exclude EU Annex I/II and FATF-listed'. It also ties each parameter name to its effect in the filter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (FILTER) plus resource (Mirabello formation profiles for company/structure jurisdictions) and enumerates what a match returns. An agent can distinguish it from find_trust_jurisdictions, find_low_tax, and compare_formation 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The filter semantics (remote_only, eu_clean, banking_tier, lane) imply when the tool is useful, but there is no explicit when-to-use/when-not guidance and no named alternatives despite overlap with siblings like find_trust_jurisdictions and find_low_tax. Usage must be inferred.

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 JurisdictionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
non_crsNoTrue 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.
territorialNoTrue to require a territorial tax system (foreign income untaxed).
no_income_taxNoTrue to require no personal income tax.
no_wealth_taxNoTrue to require no net-wealth tax.
not_eu_listedNoTrue to exclude jurisdictions on the EU list of non-cooperative tax jurisdictions.
crypto_friendlyNoTrue to require a favourable published treatment of digital assets.
no_inheritance_taxNoTrue to require no inheritance or estate tax.
no_capital_gains_taxNoTrue to require no capital-gains tax.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, non-openWorld), so the bar is lower. The description adds meaningful detail beyond that by specifying what is returned (HNWI tax + CRS + EU-list (+ crypto) snapshot) and clarifying non-CRS semantics in prose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the criteria enumeration followed by the return shape and the combination hint. Efficient overall, though the long parenthetical clauses make the first sentence dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-format explanation is not strictly required, and all 8 params are documented in the schema. The description covers purpose, filters, and a next-step combination, leaving little an agent would need in order to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is individually documented with its own clarifying text (including a compliance note on non_crs), so the schema does the heavy lifting. The description's criteria list essentially restates the same filters, adding framing rather than new syntax or edge-case meaning — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Find) and resource (countries) plus the exact filter dimensions, and the criterion list differentiates it from single-country tools like get_country_tax and from sibling finders such as find_formation_jurisdictions or find_charity_jurisdictions. An agent can tell what domain this covers 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing line gives clear forward guidance — 'Combine with a residence or citizenship route for a full tax-plus-pathway view' — which tells the agent how this fits into a workflow. It stops short of naming an explicit alternative tool or a when-not condition, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_pathwaysFind Immigration PathwaysA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoRegion filter, matched case-insensitively (e.g. "Caribbean", "EU", "Middle East", "Pacific", "Africa", "Asia").
pathwayYesPathway id. eu-free-movement = living in another EU/EEA state or Switzerland as an EU/EEA/Swiss citizen.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds meaningful behavioral context beyond that: results are 'screened' countries, each returned with key requirements, income thresholds, cost and path to PR, which tells the agent what a successful call yields and that the dataset is curated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary action and scope, and the EU/EEA caveat placed last where it belongs. Some waste in restating enum values that the schema already carries, but the density is otherwise high.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 enumerate return fields, yet it summarizes the shape usefully and resolves the one genuinely ambiguous enum value. It omits any mention of the region filter or how screening is performed, leaving a small gap for a two-parameter discovery tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already enumerates all pathway ids plus a description of eu-free-movement, so the description's example list (digital-nomad, skilled-work, ancestry-descent, retirement-passive) largely duplicates structured data. The region parameter is never addressed, and no format or matching semantics are added beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 immediately constrains the domain by listing the pathway types it operates on. An agent can distinguish it from siblings such as find_retirement_routes (route discovery) or check_eligibility (per-user assessment) 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a concrete routing rule: EU/EEA/Swiss citizens moving within the EU/EEA or Switzerland should use eu-free-movement rather than a visa pathway. It does not, however, say when to use this tool instead of close siblings like find_retirement_routes or check_eligibility, so the guidance is clear but incomplete.

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 ResidenceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoRegion filter, case-insensitive: e.g. "Latin America", "Caribbean", "Europe", "Asia", "Middle East", "Americas".
min_scoreNoOnly routes with a Golden Retirement score at or above this value (0 to 100); unscored routes are excluded. Results are then ordered by score.
dependantsNoNumber of dependants (spouse, children) to include; routes with a per-dependant income add-on raise the requirement accordingly. Default 0.
golden_onlyNotrue = only routes rated Golden by the Mirabello Golden Retirement Index; results are then ordered by score. Default false.
income_typeNoWhat the income is: pension (state or private retirement pension), passive (rents, dividends, interest), or either/both. Default either.
net_worth_usdNoLiquid savings or investable net worth in USD, for routes that accept a deposit, savings balance or assets instead of income. Optional.
monthly_income_usdNoYour regular monthly income in USD (pension and/or passive income). Optional; without it qualification by income is left open.
max_stay_days_per_yearNoThe 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_onlyNotrue = only routes where foreign income is untaxed for a tax resident (exempt, territorial or remittance basis). Default false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and destructiveHint=false already covering safety, the description adds substantial behavioral context: what each route returns (official requirement in legal currency, stay rule, tax label, Golden score with reasons, permanent-residence path, source), the key caveat that unverified figures are withheld rather than estimated, and the FX-based indicative qualification. It also names the specific jurisdictions that tax foreign pensions, which an agent cannot infer from schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and scope are front-loaded in the first sentence, followed by filter summary and then return/behavior detail. It is dense and long, but nearly every clause carries decision-relevant information; only the long parenthetical listing of return fields edges toward over-stuffing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, all-optional, read-only discovery tool with an output schema, the description is complete: it explains the filters' intent, the meaning of Golden/min_score, the data-quality policy, and the returned fields. An agent has everything needed to invoke it correctly and interpret results, and the safety profile is fully covered by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, setting a baseline of 3, but the description goes further: it defines the 'Golden' rating criterion (score 70+/100, no investment, low foreign-income tax, little presence/renewal) that the schema merely references, and clarifies behavioral nuances like routes with unstated stay rules being kept and flagged, and dependant income add-ons raising requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Find RETIREMENT and PASSIVE-INCOME residence routes') and enumerates the real-world programs (pensionado, rentista, retiree visas). It cleanly scopes itself away from investment-based routes ('qualify on income or savings, not an investment'), which implicitly distinguishes it from the many citizenship/programme siblings, though it never names a specific sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is strongly implied by the scope and the enumerated filters, making it obvious this is for income/savings-based retirement residence. However, it never states when NOT to use it or points to an alternative (e.g. recommend_programmes or find_pathways) for users who can invest or want citizenship, so routing advice 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.

find_trust_jurisdictionsFind Trust JurisdictionsA
Read-only
Inspect

Find trust & foundation jurisdictions for asset protection and succession planning (e.g. Cook Islands, Nevis, Cayman, Jersey, Liechtenstein), ranked by asset-protection strength, each with its statute, CRS status and EU-list status. Filter by vehicle (trust/foundation) or strong_protection. The wealth-structuring complement to the residence/citizenship pathways.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicleNotrust or foundation
strong_protectionNoTrue to require strong asset-protection legislation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description earns credit for going beyond them: it discloses the ranking by asset-protection strength and the per-result fields (statute, CRS status, EU-list status). It does not discuss result volume or pagination, which keeps it short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the purpose, then the filters, then the positioning. The parenthetical jurisdiction examples are the only slightly expendable element, but they aid agent matching rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Only two optional params, 100% schema coverage, an output schema for return shape, and annotations covering safety. The description supplies the domain framing, ranking rationale, and result contents needed to select and call it correctly – nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (vehicle, strong_protection) are already documented in the schema. The description's 'Filter by vehicle (trust/foundation) or strong_protection' merely restates that, adding no syntax, defaults, or interaction semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find) and resource (trust & foundation jurisdictions), names the domain use case (asset protection, succession planning), gives concrete examples, and describes the ranking criterion. It is clearly distinguishable from siblings like find_charity_jurisdictions, find_formation_jurisdictions, and find_low_tax.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says how to narrow results ('Filter by vehicle (trust/foundation) or strong_protection') and positions the tool against a family of alternatives ('the wealth-structuring complement to the residence/citizenship pathways'). It stops short of stating when NOT to use it or naming the sibling to prefer in a borderline case, so it is clear context rather than full routing guidance.

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 RiskA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, covering the safety profile. The description adds a meaningful caveat — 'Indicative, not advice' — warning the agent not to present output as professional advice, which is valuable behavioral context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded paragraph that lists scope efficiently, then adds two short sentences for usage context and disclaimer. The only slight waste is 'Use ISO alpha-2', which duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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. The description covers scope, disclaimer, and parameter format; the only minor gap is that it doesn't state whether coverage is global or limited, but this is not critical for a one-parameter read-only flag tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the cc parameter is fully documented in the schema with examples. The description's 'Use ISO alpha-2' is redundant with the schema, adding no new semantic detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('flag') and resource (anti-avoidance & relocation-tax risks for a jurisdiction) and enumerates the covered flags (CFC, GAAR, POEM, economic substance, exit-tax, step-up-in-basis). The clause 'The depth behind headline rates' distinguishes it from the sibling get_country_tax, so an agent can tell them apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'The depth behind headline rates' implies when to use it (when headline rates are insufficient), but no alternative tool is named and no explicit when-not-to-use guidance is given. Usage context is inferable but not spelled out.

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 RiskA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so safety is covered structurally. The description adds genuine context beyond that: the result is a static statement of default legal rules rather than a case-specific outcome, which is the key behavioral caveat for interpreting the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Scope and the crucial default-rules caveat are front-loaded, and the parenthetical jurisdiction examples (France, Germany, Switzerland) are illustrative rather than filler. The single sentence is dense but every clause carries meaning; only the long enumeration risks mild bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool takes one parameter and has an output schema, so return-shape explanation is unnecessary. The description fully covers scope, the legal sub-topics returned, and the important limitation that these are default rules — nothing an agent needs to invoke or interpret it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema already fully documents 'cc'. The description's 'Use ISO alpha-2' restates the schema's ISO 3166-1 alpha-2 guidance without adding format, normalization, or failure behavior. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (forced-heirship / testamentary-freedom position for a jurisdiction) and enumerates the exact sub-facts returned: reserved shares, freely-disposable portion, disinheritance of spouse/children, and trust/foundation interaction. This clearly separates it from adjacent siblings such as succession_conflict_map and matrimonial_regime_screen.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly bounds the tool's scope: 'States the default legal rules — NOT how any estate will devolve,' which tells the agent when this is and isn't the right call. It does not, however, name an alternative tool for the excluded case (e.g. a fact-specific succession analysis), so routing is only half-complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_briefingGenerate Personalised BriefingA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoprimary goal in own words
typeNocitizenship or residency preference (omit for both)
emailNooptional — to register for specialist follow-up
adultsNoadult applicants incl. spouse (default 1)
consentNorequired true if email given (GDPR)
websiteNoleave blank (spam honeypot)
tax_goalNoTrue when the applicant's main objective is a tax outcome rather than mobility.
budget_maxNomaximum investment budget in USD
nationalityNoclient nationality (country name)
programme_idsNooptional: specific programmes to brief on (max 3) instead of auto-shortlist
children_16plusNoNumber of dependent children aged 16 or over — usually priced higher than under-16s.
children_under16NoNumber of dependent children aged under 16 — priced separately by most Caribbean programmes.
mobility_priorityNoTrue when visa-free travel is the applicant's main objective.
timeline_max_monthsNoMaximum acceptable time to the outcome, in MONTHS.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations set destructiveHint=true and readOnlyHint=false, and the description adds real behavioral value beyond them: it discloses that every call creates a new briefing link, that the URL is valid 90 days, and that repeating the call with email + consent fires another follow-up request (duplicate side effects). It does not explain what the 'destructive' annotation refers to, which keeps it short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and outputs in the first sentence, then uses a second for the optional follow-up and a third for repetition semantics. Dense but efficient; the parenthetical asides are justified rather than filler, though the third sentence is packed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 spelled out, yet the description still names the key outputs. For a 14-parameter, 0-required tool with full schema coverage and annotations, the main missing piece is guidance on tool selection versus sibling recommenders, everything else an agent needs to call it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 relational meaning the schema does not: it groups nationality/budget/family/goals as the client profile and explicitly ties 'email + consent' together as the follow-up registration trigger, clarifying the GDPR coupling beyond the per-field text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate a personalised Mirabello briefing') and immediately enumerates the distinctive outputs: a ranked shortlist with family cost math plus a shareable branded briefing page URL. This is clearly separable from sibling list/compare tools like recommend_programmes or compare_programmes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description frames the input context ('given a client profile') and notes the optional follow-up registration path, so usage is implied. However, it never names an alternative tool or states when NOT to use this one (e.g. versus recommend_programmes or compare_programmes), leaving the agent to infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_aboutAbout MirabelloA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety and scope are covered structurally; an output schema also exists. The description's content inventory is mildly useful orientation but adds no behavioral detail beyond the structured fields — no note on whether this is static marketing copy versus live data, nor freshness/caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler: the first front-loads the content inventory, the second front-loads the usage trigger. Nothing is repeated from the title or schema, and no sentence is disposable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A parameterless, read-only profile tool with an output schema needs only to say what content it yields and when to reach for it — both are present. Return-value detail is legitimately delegated to the output schema, so 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies a parameterless profile fetch by describing only content, with no confusing hints about optional filters that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (Mirabello Consultancy) and enumerates exactly what it returns: track record (cases, approval rate), credentials (IMC, ACAMS), offices, languages, services. This clearly separates it from the topical siblings (get_programme, get_country, estimate_total_cost), though the verb is implicit in the trade name 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the triggering queries: '"who is Mirabello / why use them / are they reputable" questions' — an agent can recognize the intent immediately. It stops short of naming alternatives or exclusions (e.g., 'use get_provenance for source data about specific facts'), so it is clear context without routing.

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 UpdatesB
Read-only
Inspect

Recently re-verified listings (price / availability / sale status), optionally since an ISO date. For agents keeping an inventory view fresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoISO date, e.g. 2026-06-01

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value by defining what an "update" is (re-verification of price/availability/sale status), but says nothing about volume, pagination, or ordering of the returned updates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with what the tool returns before the optional filter and audience note. The closing audience clause is slightly soft but earns its place as usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and the single parameter is fully covered by the schema. However, the tool lives among several change/property siblings and the description does not resolve that overlap, leaving a real routing gap for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single `since` parameter is already documented with an ISO example, so the baseline is 3. The description's "optionally since an ISO date" adds only the optionality framing, no new syntax or semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-adjacent resource ("Recently re-verified listings") and enumerates the changed fields (price / availability / sale status), so an agent knows exactly what it returns. It does not distinguish itself from close siblings like get_recent_changes or subscribe_changes, which is the only gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"For agents keeping an inventory view fresh" implies a polling/refresh use case, and "optionally since an ISO date" hints at incremental sync. However, there is no explicit when-not guidance and no named alternative (e.g. subscribe_changes for push, get_recent_changes for the other change surface), leaving the agent to infer routing.

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 LandscapeA
Read-only
Inspect

NON-RESIDENT banking-access landscape per jurisdiction (US, AE, SG, HK, CH, LI, KY/Caribbean, plus the cross-jurisdiction EMI layer): corporate and personal lanes, fintech vs traditional institutions with indicative timelines/minimums, the common REJECTION causes, and CBI/Golden-Visa synergy facts (e.g. the UAE Golden Visa converts a hard non-resident case into an easy resident one; Caribbean correspondent de-risking realities for CBI clients; Swiss/Liechtenstein private-banking entry points). Honest doctrine: no account is ever guaranteed — file quality and right-institution matching are the real product. Pass cc (or EMI); pass type corporate|personal to focus; omit cc for the coverage list. Information, not advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 (US, AE, SG, HK, CH, LI, KY) or EMI for the e-money layer
typeNocorporate | personal (omit for both)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description usefully adds that output is 'Information, not advice' and that 'no account is ever guaranteed', setting expectations about the tool's limits and non-actionable nature. It does not cover rate limits or output format, but with annotations carrying the safety profile this is clear added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core resource and scope, but the long parenthetical enumerations and 'Honest doctrine' framing add bulk. Most content is informative, yet it could be tightened without losing the key routing and usage facts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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. Still, for a tool with a near-duplicate sibling (get_nonresident_banking), the description omits any differentiation, leaving an agent uncertain when to choose this one. Otherwise coverage of content and caveats is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents cc and type. The description still adds value beyond the schema: it specifies 'omit cc for the coverage list' and clarifies type is passed 'to focus', details absent from the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific resource (non-resident banking-access landscape per jurisdiction) and scope (corporate/personal lanes, timelines, rejection causes, CBI synergy), making the tool's function clear. However, it does not distinguish itself from sibling get_nonresident_banking, which appears to cover similar ground, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides calling instructions ('Pass cc... omit cc for coverage list') and notes 'Information, not advice', but offers no explicit when-to-use vs alternatives and never names the sibling get_nonresident_banking. Usage is implied rather than guided, matching a 3.

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 LimitsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 origin country code (e.g. IN, CN, ZA)
regimeNooptional filter

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false (a closed dataset), so the safety profile is covered. The description goes further by disclosing volatility ('rules change frequently'), the verification obligation (central bank/local counsel), and an explicit 'information, not legal/tax/financial advice' disclaimer — meaningful context beyond 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core question, then the returned fields, then the parameter modes, then the disclaimer — a logical order with no filler. The concrete examples (India LRS, China SAFE) are illustrative rather than padding, though the sentence is dense and long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter read tool with an output schema, the description covers purpose, returned fields, parameter behavior, and the important caveat that exchange-control rules are volatile and not advice. Nothing an agent needs to invoke or interpret this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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, and the description largely restates them: 'pass cc for one jurisdiction; omit for all, or filter by regime.' It confirms the omit-for-all default but adds no syntax or edge-case detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific framing question ('can money legally LEAVE this country, and how much?') and enumerates exactly what is returned: exchange-control regime, annual outbound allowance, cash-declaration threshold, regulator, and implications for funding investment-migration. The verb+resource ('capital controls') is unambiguous and no sibling (get_banking_access, get_emigration_flows, withholding_map) overlaps this scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the framing ('what it means for FUNDING an investment-migration programme'), which tells the agent the context in which to reach for it, and it explains the cc/regime parameter modes. However, it never names an alternative tool or states when NOT to use it (e.g., vs get_banking_access or flag_cfc_poe_risk), so selection guidance 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_company_formationCompany Formation ProfileA
Read-only
Inspect

FULL formation profile for one structure from the Mirabello Global Structuring roster (30 profiles: ae-freezone, ae-adgm-spv, ae-adgm-foundation, us-llc-wy, sg-pte, hk-ltd, ch-company, ch-holdco, cy-ltd, ie-ltd, mt-trading, hu-kft, ee-ou, je-company, li-structures, lu-soparfi, lu-spf, lu-raif, mu-gbc, bb-ltd, sc-ibc, kn-llc, ky-exempt, ge-structures, my-labuan, kz-aifc, vg-bc, bz-ibc, us-trust-sd, nz-foreign-trust): honest tax position (QFZP/ECI/SUTE-style caveats included), setup/annual cost ranges, timeline, remote feasibility, substance requirements, banking tier, EU/FATF list status, who it genuinely fits AND who it does NOT fit, required licensed executor, and provenance. Pass structure (the profile key); omit for the catalogue of available keys. General information, not advice; execution via licensed local partners.

ParametersJSON Schema
NameRequiredDescriptionDefault
structureNoprofile key, e.g. us-llc-wy, ae-freezone, sg-pte (omit for the catalogue)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish a safe, closed-world read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds genuine context beyond that: the profile's contents (honest tax caveats, cost ranges, substance requirements), that it states who it does NOT fit, and the 'general information, not advice; execution via licensed local partners' disclaimer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the opening clause before the dense key list and the attribute inventory. The 30-key parenthetical is heavy but functionally necessary given the missing enum; a few phrases ('required licensed executor', 'and provenance') could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 what the profile contains, the catalogue fallback, and an advisory disclaimer. It stops short of noting provenance/freshness behaviour that siblings like get_provenance and get_recent_changes imply, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the param is documented, so baseline would be 3. The description earns above baseline by enumerating the 30 actual valid key values — the schema has no enum, so this list is the only place an agent can learn admissible values, plus it restates the omit-for-catalogue behaviour.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('FULL formation profile for one structure from the Mirabello Global Structuring roster'), enumerates all 30 valid keys, and distinguishes the single-profile retrieval from the catalogue fallback. An agent can tell exactly what comes back and which structure keys are legal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says 'Pass structure (the profile key); omit for the catalogue of available keys', which gives usage context for the one parameter. But it never names or excludes the obvious siblings (compare_formation, get_structuring_roster, get_structuring_playbook), so an agent still has to guess this tool's position among 60+ neighbours.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_countryCountry IntelligenceA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO alpha-2 country code
pathwayNooptional: one pathway id to return
nationalityNooptional: 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

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the bar is lower. The description adds useful scope context — this is a registry-style lookup returning screened pathways with official sources rather than advice — but discloses no rate limits, coverage caveats, or behaviour when a country has no pathways. Adds some value, not rich behavioural detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the resource and scope, then the calling convention. The mid-sentence em-dash catalogue of pathways is dense but it is the substantive payload; nothing reads as filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 further explanation, and the description already characterises the shape of the payload (per-pathway requirements, cost, processing, rights, official source). For a 3-parameter read-only lookup this is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 detailed EU/EEA free-movement behaviour for nationality. The description only reinforces cc format with examples (CA, GB, DE, PT). With the schema doing the heavy lifting, baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete resource ('country immigration profile') and enumerates exactly what it returns: every screened pathway — skilled-work, digital-nomad, retirement, citizenship-by-descent, naturalisation, study, family — each with requirements, cost, processing, rights, and PR/citizenship path. The parenthetical '(beyond investment migration)' and 'ALL screened pathways' implicitly separate it from get_programme and find_pathways, so the agent can discriminate 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the tool is framed as broader than investment migration, and the ISO alpha-2 calling convention is given, but no sibling is named as the alternative and there is no explicit when-not-to-use guidance (e.g. use get_programme for a single investment programme, or find_pathways to search across countries). Adequate but leaves the routing decision to inference.

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 ProfileA
Read-only
Inspect

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). From official/Tier-A sources. Informational only — not tax advice. Use the ISO alpha-2 code.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO alpha-2 country code

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful context beyond the annotations: provenance ('From official/Tier-A sources') and a scope disclaimer ('Informational only - not tax advice'). It does not discuss freshness or pagination, so it stops short of 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and scope are front-loaded, followed by a dense but purposeful enumeration of covered tax domains; each listed item is informative rather than filler. The stacked parentheticals (worldwide vs territorial, non-dom, lump-sum, NHR/IFICI, flat-tax) make it slightly heavy to scan, keeping it just below 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a dedicated output schema present, return-value details need not be in the description. For a read-only, single-required-parameter lookup tool, the description supplies purpose, content scope, source provenance, and a liability disclaimer - 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is fully documented in the schema. The description's 'Use the ISO alpha-2 code' merely restates the schema's 'ISO alpha-2 country code' without adding format examples or edge-case handling, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise resource ('HNWI tax profile for a country') and enumerates the exact content domains covered (personal income tax worldwide vs territorial, capital gains, inheritance/estate, wealth tax, exit tax, CRS/AEOI, special regimes). The 'wealth-protection view' framing distinguishes it conceptually from pure-rate tools, but no sibling is named explicitly, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the content list — an agent can infer you call this to get a per-country tax profile — but there is no explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as find_low_tax, withholding_map, or compare_treaty_position, which overlap in scope. 'Use the ISO alpha-2 code' is a parameter instruction, not usage guidance.

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 ProgressA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, closed-world profile, so the bar is lower. The description still adds real behavioral context beyond them: each block carries provenance (confidence, verified_date, official sources) and low-confidence detail is deliberately withheld as CHECK-OFFICIAL-SOURCE, which tells the agent to expect gaps rather than treat absence as 'no programme'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the three data blocks come first, then the cc-scoping rule, then the provenance/disclaimer. Every clause carries information, though the enumerated field lists are long and the closing disclaimer slightly restates the provenance point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 still covers what each block contains, the confidence/withholding behavior, and the volatile-data caveat. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself documents the ISO 3166-1 alpha-2 format with examples, so the baseline would be 3. The description adds the omission semantics ('omit for all'), which the schema does not convey since cc is optional, and ties the parameter to the scoping behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (per-country digital-money & identity progress) and enumerates exactly what it returns: CBDC status/type/issuer, stablecoin status and regulatory framework, and national digital ID status. This is clearly distinct from siblings like get_country, get_banking_access, or get_capital_controls, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Pass cc for one jurisdiction, omit for all', which is invocation guidance, and adds a 'verify the cited source' caution. However, it never states when to prefer this tool over adjacent siblings (get_country, get_regulator_registry, get_recent_changes) or when it is not the right source, so 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.

get_document_checklistGet Document ChecklistA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
programme_idYesProgramme id as returned by list_programmes (e.g. "st-kitts-cbi"). Not a country name and not a website slug.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false, destructiveHint=false). The description adds genuinely useful behavioral context beyond that: the list is 'standard' and incomplete, varies by family composition and nationality, and is always subject to specialist confirmation. This sets accurate expectations about data reliability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the core purpose front-loaded and qualifications in parentheses. It is efficient, though the parenthetical and trailing caveat are dense rather than cleanly separated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 100%-covered single-param schema and an output schema present, the description need not explain returns. It supplies the key caveats an agent needs (variability, specialist confirmation) to interpret the output correctly, leaving little missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 well documented in the schema itself (including a format warning and example), so baseline 3 applies. The description adds no additional meaning about the parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('document checklist for a programme application') and clarifies its scope as per-programme-type with programme-specific additions. It differentiates itself from the sibling residence_evidence_checklist only implicitly via 'programme application', so it is clear but not fully sibling-routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — call this when you need the documents required for a programme application — but there is no explicit when-to-use/when-not or named alternative versus residence_evidence_checklist or compliance_checklist. The note that the final list is confirmed by a specialist hints at its advisory-only role without stating it as guidance.

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 DestinationA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNolimit the destination list (default 25)
yearNoe.g. "2025"; defaults to the latest available
destinationNodestination country name in German, e.g. "Schweiz", or a fragment

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/openWorld/destructive hints, but the description adds substantive behaviour: a caveats field, the fact that ~48% of departures name no destination so rankings describe a partial base, that totals are a floor, a definitional break, and licence/attribution obligations. This is exactly the beyond-annotations disclosure the dimension rewards.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the data's identity and scope, and labelled cues (OFFICIAL, CRITICAL) aid scanning. The illustrative 2025 figures are useful colour but make the block longer than strictly necessary, keeping it out of the top band.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Coverage is exhaustive for an agent's needs: source, time span, returned measures, base-population caveat, definitional break and licensing are all present, and an output schema already handles the exact return shape. Nothing needed to call the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 year, destination and top; the description only restates them ('Pass year, destination or top'). Baseline 3 is appropriate since the schema does the heavy lifting and the description adds no format or fallback detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (emigration flows by destination country and year), pins the exact source (Destatis statistic 12711-0008, 2016 onwards) and states the returned measures (departures, arrivals, net migration, destination share). It is unmistakably distinct from the surrounding citizenship/visa/programme siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context ('Pass year, destination or top'), flags the analyst caution 'Popularity is not suitability', and warns against trending across 2015/2016. It never names an alternative sibling or states explicitly when not to use it, so it stops short of the explicit routing that earns a 5.

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 RulesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 destination country code

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: airline enforcement, nationality-dependent variance, volatility ('change without notice'), and an 'information, not advice' disclaimer. Not a full 5 since it doesn't describe output shape or data freshness guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, then the operational stakes, then parameter behavior, then caveats. Dense but each sentence carries information; only the parenthetical examples risk slight bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 rightly focuses on scope, usage, and caveats rather than return values. It is essentially complete for a single optional-parameter lookup tool; the only gap is not positioning itself explicitly against sibling eligibility/visa tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 real semantics the schema does not: passing cc scopes to one destination and omitting it returns all destinations. That optionality behavior is not evident from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('entry requirements for a destination') and enumerates the two rule families it returns: passport-validity rules (6-month rule, Schengen 10-year issuance cap, blank pages) and health/vaccination rules. This clearly separates it from siblings like check_visa_requirement, check_visa_free, and get_passport_renewal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context ('a valid-looking passport is refused BOARDING if it fails these') and parameter usage ('Pass cc for one destination; omit for all'), so the agent knows when the tool matters. It stops short of explicitly naming which sibling to use instead (e.g., check_visa_requirement), so it is clear context without exclusions.

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 & ReunificationA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO-3166 alpha-2 of the country whose family-reunification law you need, e.g. PT, AE, US
typeNoScreen mode: limit to citizenship or residence programmes
limitNoScreen mode: max rows (default 25)
parentsNoScreen mode: parents must be includable
partnerNoScreen mode: include an unmarried partner who is not a spouse
sponsorNoFilter the cc routes by sponsor class: citizen, permanent_resident, temporary_resident, investor_visa_holder, worker, student
programme_idNoA programme id from list_programmes, e.g. antigua-cbi
children_agesNoAges of the children (completed years) for screen mode, e.g. [7,15,24]
together_requiredNoScreen mode: everyone must be includable in the SAME application (no later add-on)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state the read-only/no-side-effect profile; the description adds genuinely non-obvious behavior: every figure carries legal basis, source tier and date, absence means UNVERIFIED rather than no route existing, and it frames output as information not legal advice. That provenance and absence-semantics disclosure materially changes how an agent should interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and scope, then the three modes in a predictable order; the long parenthetical enumerations of relatives and costs are dense but informative rather than padding. Slightly over-packed for a single paragraph, but every clause carries routing or scope information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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; the description instead covers the things structured fields cannot -- the three invocation modes, per-category cost coverage, and interpretation caveats for missing data. Nothing needed to call a zero-required-parameter tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter baseline is 3; the description exceeds it by grouping the nine parameters into three coherent modes and clarifying intent (e.g. together_required = no later add-on, partner = unmarried partner, not spouse). It adds orientation but no syntax beyond the schema's own examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ('FAMILY PATHWAYS: who can come with, or join, the main applicant') and enumerates the exact dependent classes covered (spouse, partner, children, adult dependent children, parents, siblings). A reader can distinguish it from siblings like find_pathways or compare_programmes 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly decomposes usage into three modes and names the parameter that selects each (programme_id, cc, screen), with worked examples (antigua-cbi, PT, children_ages [7,15,24]). It lacks any explicit exclusion or pointer to a sibling tool for the adjacent question (e.g. general pathway discovery vs. family-specific pathways), 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_foundation_rulesFoundation & Trust RulesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 country code, e.g. LI, CH, AE

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful context: establishment is decided by the competent registry/regulator via licensed local partners, tax outcomes follow founder/beneficiary residence, and the output is information not legal/tax advice. Return format is left to 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the resource and then a dense but purposeful inventory of covered content, followed by usage and a disclaimer. The opening is a long noun phrase rather than a verb-first sentence, and the field list is verbose, but each element supports semantic retrieval.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and full annotation coverage, the description is complete: it defines scope, the optional-param behavior, and the advisory limitation. An agent has everything needed to decide whether to call it and with what argument.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 telling the agent what omitting cc does ('omit for the covered list'), which the bare 'ISO alpha-2 country code' description does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (charitable/private foundation and trust rules) and enumerates the exact content returned — legal form existence, regulator, endowment, governance, tax treatment, UBO visibility, trust recognition. The closing line that it 'deepens the charity and trust jurisdiction shortlists to 194-country coverage' distinguishes it from the sibling shortlist tools (find_charity_jurisdictions, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Pass cc for one jurisdiction; omit for the covered list,' giving clear context for both invocation modes. It implies a follow-on to the shortlist tools rather than naming an alternative or stating exclusions, so it stops short of a full when/when-not statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_indexInvestment Migration IndexA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoProgramme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both.
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: the default return is truncated to the top 25, the full table is large, and insufficient-data programmes are flagged provisional and excluded from the headline ranking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource identity, then dimensions and the default/limit behavior. Nearly every clause earns its place, though the parenthetical dimension list is dense and could be trimmed slightly without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 the description still covers default truncation, the limit:0 escape hatch, and provisional-data handling. Only the sibling-routing piece is absent, which is a minor gap for a two-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 semantics the schema does not: the default limit is 25 and limit:0 is a documented sentinel meaning 'every ranked programme.' That sentinel behavior is nowhere in the schema and materially changes how an agent calls the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (the Mirabello Investment Migration Index) and precisely what it is: a composite 0–100 ranking of CBI/RBI programmes across named dimensions. This distinguishes it from siblings like list_programmes (enumeration), compare_programmes (pairwise), and get_wealth_index (a different index). An agent can tell what it gets 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: filter by type, and the default of TOP 25 with limit to enlarge or limit:0 for the full table. What's missing is explicit routing against siblings such as list_programmes or compare_programmes, so an agent must infer when this index beats a plain programme list.

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 ServicesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNoWhich 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_ageNoAge in years of the person the passport is for (passport service only); selects the minors rules and fee band.
residence_countryNoWhere 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

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that: it discloses the return shape (steps, documents, itemised fees with source and verified flag, timelines, authority, missions), states the 'information, not legal advice' limitation, and pre-empts a 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded in the first clause, and each parenthetical enumerates a distinct branch rather than padding. It is dense and long, but nearly every clause carries procedural specifics an agent would otherwise have to guess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations present, the description need not explain returns, and it goes further than required by naming scope, exclusions and verification provenance. The only gap is that the relationship to the sibling get_passport_renewal is never resolved, which matters for a three-parameter lookup tool with an overlapping neighbour.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the enum values and the age/residence semantics already documented in the schema, so this is the baseline case. The description reinforces the residence split ('in Malta and abroad') and the fee-band-by-age logic, but adds no syntax or edge-case detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (Maltese citizen service procedures) and enumerates exactly four covered scenarios with the concrete artifacts each yields (fees, forms, art. references, timelines). It explicitly excludes investment citizenship, which clears it from find_fastest_citizenship/get_programme. It does not, however, explain how it relates to the nearby sibling get_passport_renewal, leaving one overlap unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the scenario list and the instruction 'Omit service for an overview', which tells the agent how to invoke it for a general answer. There is no explicit when-to-use-vs-alternatives routing against check_maltese_citizenship_eligibility, get_passport_renewal or estimate_malta_passport_fee, so an 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.

get_mobility_optionalityMobility OptionalityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/non-destructive/closed-world, so safety is covered. The description adds value beyond them: it flags the output is informational not advice, scopes passport reach as context-only, and instructs combining with a consultation — useful framing not present in structured fields. It says nothing about rate limits or caching, but that is minor given 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then supporting attributes and caveats. The main sentence is dense with em-dashes and parentheticals, but each clause carries signal (attributes, disambiguation, parameter behavior, disclaimer) rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-param, read-only tool with an output schema and full annotations, the description supplies the missing conceptual context: what counts as 'mobility optionality,' how it differs from passport strength, and the informational-not-advice framing. Nothing essential for a correct call is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a well-documented cc parameter, so the baseline of 3 applies. The description adds genuine semantics beyond the schema by explaining the optionality — 'pass cc for one jurisdiction, omit for all' — clarifying the no-argument behavior, which the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it returns the lawful residence/citizenship routes a jurisdiction offers (investment programmes) along with defined attributes (physical presence, family inclusion, path to permanence, processing time, regulator). It explicitly distinguishes itself from passport-strength tools by contrasting the 'planning view' with 'passport strength' and noting visa-free count is context only, so an agent can separate it from check_visa_free/list_visa_free_destinations 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use (jurisdiction-level planning of mobility optionality) and states 'Pass cc for one jurisdiction, omit for all,' plus the caveat to combine with the full immigration profile and a consultation. It does not explicitly name a competing sibling (e.g. check_visa_free or compare_programmes) as the alternative, so routing is inferred rather than spelled out.

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 RulesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 country code, e.g. GB, AE, CH

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/openWorld/destructive, but the description adds meaningful context beyond them: it clarifies the tool only informs and orchestrates ('does not file applications'), states the decision is made by the registry/court, and flags it is 'information, not legal advice'. This is valuable scoping not present in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource name and the returned-field enumeration, then usage context, then parameter semantics. The enumeration is long and dense but each clause conveys distinct scope; only minor trimming is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 explained, yet the description still scopes coverage and disclaims application filing and legal advice. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the cc field is already documented, but the description adds the crucial omission semantics ('omit for the covered list'), which the schema does not convey. That extra meaning lifts it above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (legal name-change rules) and enumerates exactly what is returned: permissibility, grounds, deciding authority, applicants, process, cost, timeline, passport effect, transliteration, and persistence of the former name. This distinguishes it clearly from siblings like get_passport_renewal or get_country.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage context ('commonly needed after marriage, after naturalisation, and when a non-Latin name must be rendered') and explains the cc semantics. However, it names no alternative sibling tools and gives no explicit when-not guidance.

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 AccessA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 country code, e.g. AE, CH, SG

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds real behavioral context beyond them: that statutorily-open and practically-closed positions are never merged, that account opening is at each bank's unilateral discretion with no guarantee, and that CRS/FATCA transparency always applies. That is substantive disclosure the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded: the resource and its two profiles come first, then the content inventory, then the parameter switch, then disclaimers. Dense but every clause carries information; the heavy all-caps styling is noisy and mildly impairs scanning, which keeps it short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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. The description covers scope, the two resident profiles, the statutory/practical split, and the no-guarantee caveat, leaving little an agent needs missing. Only the relationship to the adjacent get_banking_access tool is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents cc. The description nonetheless adds meaning the schema does not: passing cc scopes to one jurisdiction, while omitting it returns the covered-country list. That optional-parameter behavior is useful and not obvious from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('BANK-ACCOUNT ACCESS for FOREIGN NON-RESIDENTS in a jurisdiction') and enumerates the substantive content it returns (statutory vs practical position, KYC set, remote opening, minimums, CRS/FATCA). It is clearly scoped to non-residents, which implicitly distinguishes it from the sibling get_banking_access, though that sibling is never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives operational parameter guidance ('Pass cc for one jurisdiction; omit for the covered list') which is genuinely useful. However, it never states when to prefer this tool over the directly competing sibling get_banking_access, nor any prerequisites, so usage is implied rather than explicit.

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 FactsA
Read-only
Inspect

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. Information, not advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoprogramme id (e.g. st-kitts-cbi, st-lucia-cbi) or country alias; omit for all six

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: 'Information, not advice', data-freshness via 'last_verified', the 'postponed to mid-2026' ECCIRA status, the specific deadline example (St Kitts 31 Jul 2027), and the clarifying note that 'Citizenship is permanent; an expired passport is only a lapsed travel document'. These are substantive disclosures a caller could not infer 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded paragraph with no filler sentences, but it devolves into a dense 130+ word enumeration of returned fields (fees, validity, processing, biometrics, ECCIRA, deadlines, source URLs). Because an output schema exists, much of that field-by-field enumeration is redundant with structured data that the agent can already read, making the description longer than its marginal informational value warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-parameter fact tool, the description covers everything an agent needs: covered jurisdictions, parameter behavior, data provenance ('official source URLs, last_verified', the Mirabello page), caveats ('Information, not advice'), and the key domain nuance that citizenship is permanent while the passport merely lapses. With annotations covering safety and an output schema covering return shape, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds value by enumerating the six valid jurisdictions (St Kitts & Nevis, Antigua & Barbuda, Dominica, Grenada, St Lucia, Vanuatu), letting the agent know the valid domain of the country parameter without opening the schema, and restates the programme-id format and the omit-for-all behavior. It does not, however, map each country name to its programme id (e.g. st-kitts-cbi), so the added value is real but partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+scope: 'CBI passport-RENEWAL facts for a Caribbean/Pacific programme country' and enumerates the six covered jurisdictions. It is clearly distinguishable from sibling tools like get_document_checklist, estimate_timeline, or estimate_malta_passport_fee (a different programme). An agent knows exactly what data domain this returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the parameter instruction ('Pass country ... for one; omit for all six') and the renewal-vs-application framing, but the description never states explicitly when to prefer this tool over adjacent ones such as get_programme, get_document_checklist, or get_provenance, nor any when-not condition. Routing guidance 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_processing_timesGet Processing TimesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoProgramme id as returned by list_programmes (e.g. "dominica-cbi", "greece-gv", "portugal-gv"). Not a country name and not a website slug.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and a closed-world scope, so the safety profile is covered. The description adds genuinely useful behavioral context beyond them: the figures are indicative, vary with the case, and depend on authority workload, which tells the agent to hedge rather than assert a hard number.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is returned, then the usage trigger, then the reliability caveat. Three compact sentences with no padding, though 'the basis of the estimate and its source' is somewhat redundant detail against the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema documentation, annotations and an output schema, this covers what is returned, when to call it, and the data-quality caveat. The only real gap is the lack of explicit routing against the nearby timeline-estimation siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the id parameter carries examples and format warnings ('not a country name and not a website slug'). The description still adds value the schema does not: id selects one programme and its absence returns all programmes, which is not stated anywhere in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('processing-time estimate for one programme or all programmes') and even explains the two modes of operation via the optional id. An agent can tell what it returns, though it never names the close sibling estimate_timeline or find_fastest_citizenship, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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' gives a clear triggering condition. It also implies that omitting id returns all programmes. However there is no when-not guidance and no explicit routing against estimate_timeline, which is the obvious alternative for timeline questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_programmeGet ProgrammeA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesProgramme id as returned by list_programmes (e.g. "dominica-cbi", "greece-gv", "portugal-gv"). Not a country name and not a website slug.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds content-scope context (what fields the detail includes), but says nothing about latency, rate limits, or behavior on an unknown/invalid id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the primary purpose front-loaded before the payload list. The enumeration is long but every item is meaningful content, and there is no filler or restated boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 return values, and the read-only annotations cover safety; the description still helpfully sketches the payload shape. What is missing for full completeness is any statement of the prerequisite (a valid id from list_programmes) or failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already carries the examples and the crucial "Not a country name and not a website slug" caveat, so the description's repeated id examples add nothing new. Baseline 3 applies when the schema does all the parameter work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: "Full detail for one programme by id", and the enumeration of what the detail covers (routes, fees, processing, tax, index score) makes the scope unambiguous. It distinguishes itself from list_programmes only implicitly through "one programme", not by naming the sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the singular "one programme by id" and the parenthetical id examples, which suggest this is a follow-up to list_programmes. There is no explicit statement of when to use this versus compare_programmes, get_country, or the various find_* tools, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_propertyGet PropertyA
Read-only
Inspect

Full detail for one investment property by slug: price, specs, location, qualifying programme + holding period, project/developer (where disclosed), availability and freshness. Mirabello Consultancy is broker of record; brochure, floor plan and due-diligence pack are available from Mirabello on enquiry. Indicative; verify with Mirabello.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesListing slug exactly as returned by search_properties.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds real context beyond that: Mirabello is broker of record, brochure/floor plan/due-diligence pack are obtainable only on enquiry, and the data is 'Indicative; verify with Mirabello' — a useful accuracy/trust caveat.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and returned fields, then appends broker and disclaimer context. Slightly marketing-toned in the second sentence, but nothing is wasted for a brokerage listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still names the key fields and adds freshness plus an 'indicative/verify' caveat that the schema cannot convey. Complete for a read-only single-entity lookup; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage, so the baseline is 3. The description says 'by slug' but adds no format or sourcing detail beyond what the schema already provides (schema itself specifies the slug comes from search_properties).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 returned content (price, specs, location, programme, developer, availability, freshness). The singular 'one ... by slug' scope cleanly distinguishes it from the sibling search_properties, which returns listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the schema notes the slug must come 'exactly as returned by search_properties', which hints this is a follow-up detail call. There is no explicit when-to-use/how-it-differs statement or any exclusion in the description itself.

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 BuyersA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 country code, e.g. CH, AE, PT

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/destructive=false and openWorldHint=false, covering the safety profile. The description adds non-schema behavior: data can go stale ('rules change without notice'), conveyancing requires licensed local professionals, and the output is information, not legal/tax/investment advice — plus the notice that federal-state answers are flagged subnational.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scope is front-loaded in the first clause and the disclaimers are pushed to the end, which is the right ordering. It is dense — a long enumeration of covered law dimensions in one block — but each item describes a distinct returnable topic rather than filler, so it stays justifiable for a tool with this breadth.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format need not be described. Given the tool's complexity, the description covers what an agent needs: scope, jurisdiction handling, the subnational caveat for federal states, staleness, and professional-advice limits. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema coverage (ISO alpha-2 code, examples CH, AE, PT), so the baseline is 3. The description adds genuine semantics beyond the schema by specifying the omit-cc behavior (returns the covered jurisdiction list) and tying cc to a single-jurisdiction query.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 in a given jurisdiction) and enumerates exactly which sub-questions it answers — ownership regimes, restricted zones, approval regimes, ownership vehicles, taxes, repatriation, inheritance. It explicitly draws the boundary against siblings: 'The law behind a purchase, not listings,' separating it from get_property/search_properties.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear invocation context: pass cc for one jurisdiction, omit it for the covered list, and warns that federal states (US, CH, AU, CA, AE) return subnational flags rather than a country-wide answer. It routes away from listing tools but never names an alternative tool or states explicit exclusions (e.g. when another sibling is better).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_provenanceCitation-First ProvenanceA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO alpha-2 country code
pathwayNooptional: one pathway id

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: per-data-class freshness semantics with an explicit status vocabulary (fresh|aging|stale|CHECK-OFFICIAL-SOURCE) and a recheck_by date, plus corroboration and confidence signals, which tell the agent how to interpret and act on the payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the identity and purpose in the opening clause, followed by one dense enumeration. It is efficient overall, though the long list of return fields partially duplicates what the output schema already carries.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not detail return values, yet it supplies the interpretive layer the schema alone would not convey (what freshness statuses mean and the re-verify action). Combined with the clear when-to-use guidance and documented parameters, 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented there (cc as ISO alpha-2, pathway as optional single id). The description's 'Pass cc (+ optional pathway)' merely restates the required/optional split without adding format or scoping detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (a country's pathway facts' provenance records) and a specific stance ('CITATION-FIRST', W3C PROV-O + Schema.org), and the enumerated return contents make it unmistakable that this is source/derivation metadata rather than the facts themselves. An agent can distinguish it from sibling fact-returning tools like get_country or get_recent_changes 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to reach for it: 'Use this to CITE Mirabello data with a source + as-of date and to know when to re-verify.' That is a clear triggering condition tied to the sibling family. It stops short of naming an alternative tool or stating when NOT to use it (e.g. when you only need the fact, not the citation).

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 ChangesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds useful context that records are primary-source-verified and that responses may be large (implying limit use). With annotations carrying the safety burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is dense and front-loaded, but it crams four distinct data categories into one run-on clause. Subsequent sentences are efficient, but the packed enumeration strains readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 not required. The description covers scope, datasets, freshness, and filtering adequately. It could be strengthened by clarifying freshness window or relationship to subscribe_changes, but it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the schema. The description only restates the cc filter role ('Pass cc to filter to one country') without adding format or semantic 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verb+resource: 'Recent material changes across investment-migration programmes' with enumerated change categories, plus three named sub-datasets. This is clear and distinguishes itself from siblings like get_availability_updates and subscribe_changes by describing primary-source-verified diffs, though it doesn't explicitly name a sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit usage context: 'use for "what changed recently / latest" questions' and the cc filter condition. It does not state exclusions (e.g. how it differs from subscribe_changes or get_availability_updates), so it stops just short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_regulator_registryRegulator RegistryA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO alpha-2 (or roster key like MY-LABUAN, KZ-AIFC)
internationalNoTrue to include international/offshore structures rather than domestic-only options.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the description does not contradict it. The description usefully adds that results are ranked most-to-least important and carry official-source links, but says nothing about auth needs, coverage gaps or freshness of the registry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence establishes the resource first, then the invocation modes, with the long parenthetical example lists doing most of the bulk. It is efficient, though the inline examples (FDIC, DFSA, ADGM FSRA, Cayman CIMA) make it denser than needed for an agent's decision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 document return fields, and it still covers both parameters and the content categories. For a two-parameter read-only lookup this is close to complete; only the mismatch between 'supranational bodies' and the schema's 'offshore structures' leaves a small ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 real meaning: it clarifies that 'cc' selects one jurisdiction and that international:true retrieves the supranational bodies (FATF, EU Code of Conduct, OECD, DG TAXUD, FSB). This reframes the boolean's intent beyond the schema's vaguer 'international/offshore structures' wording, though the two phrasings sit slightly at odds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (registry of regulatory bodies) and enumerates its scope precisely: tax, company formation, accounting, treaties, banking, plus the supranational layer. An agent can distinguish this from get_country_tax, get_banking_access or get_country 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says how to invoke the two modes ('Pass cc for one jurisdiction, or international:true for the supranational bodies'), which is invocation guidance rather than when-to-use guidance. It never states when this tool should be preferred over siblings such as get_country or get_banking_access, nor any exclusions, so 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.

get_structuring_playbookGlobal Structuring PlaybookB
Read-only
Inspect

Structuring playbook for online/global businesses: recommended setups by CUSTOMER MARKET (USA, EU, Switzerland, Asia, Middle East income), worldwide archetype stacks (solo, scale-up, multi-region enterprise), and HOLDING-LAYER options by region (Swiss holding, Luxembourg SOPARFI, Cyprus holdco, ADGM SPV, Singapore holdco) with what a holding genuinely delivers. Rule zero: profit tax follows the OWNER (residence/PoEM/CFC), not the customers. Optionally pass a market or archetype to focus.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNous | eu | ch | asia | mea
holdingNoinclude holding-layer detail
archetypeNosolo-lean | scaleup | enterprise

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful framing about scope (a static reference covering markets, archetypes, holding layers) via the 'Rule zero' note, but adds no behavioral context such as output size, freshness, or whether holdings analysis is complete versus illustrative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, but the first is a dense, list-heavy content catalog that buries the core purpose under enumerations. The 'Optionally pass a market or archetype' line is properly placed at the end, but the front-loading of purpose is weakened by the keyword dump.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and annotations cover safety; the description adequately conveys the topical scope and optional focusing parameters. The remaining gap is sibling differentiation, which for a large tool family this crowded is a meaningful omission but not fatal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters are optional, so the schema already carries the definitions. The description loosely maps its prose terms (USA, EU, Switzerland, Asia, Middle East income; solo, scale-up, multi-region enterprise) to the enum-like values, adding marginal meaning but no syntax beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb+resource (a 'structuring playbook' for online/global businesses) is stated concretely, and the description enumerates the three content domains it covers: customer-market setups, worldwide archetype stacks, and holding-layer options. It does not, however, distinguish itself from close siblings like get_structuring_roster or plan_global_setup, so an agent cannot route between them 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is 'Optionally pass a market or archetype to focus', which is parameter usage rather than tool-selection guidance. There is no statement of when to consult this playbook versus plan_global_setup, get_structuring_roster, or find_low_tax, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_structuring_rosterGlobal Structuring RosterA
Read-only
Inspect

Mirabello curated GLOBAL STRUCTURING roster from a full ~195-country screen: A-tier company-formation jurisdictions (UAE free zones/ADGM, US LLC, Switzerland, Singapore, Cyprus, Malta, Hungary, Jersey, Mauritius, Luxembourg, Ireland...), trust situs options, personal-tax-residence regimes, plus the watchlist of pending re-ratings (e.g. Monaco FATF delisting). Governed by the Mirabello Standard (EU/FATF list hygiene, bankability, transparency, executability, reputation). Optionally filter by lane: corporate, trust, personal.

ParametersJSON Schema
NameRequiredDescriptionDefault
laneNocorporate | trust | personal | watchlist (omit for full roster)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, openWorld=false). The description adds genuinely non-structured context: the screen breadth (~195 countries), the curation doctrine (Mirabello Standard: EU/FATF list hygiene, bankability), and the existence of pending re-rating entries. It does not state freshness/refresh cadence for the watchlist, which would be the next useful disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core noun phrase, but the middle is a dense parenthetical jurisdiction dump and the closing sentence duplicates the lane parameter already in the schema. It is informative but padded, with two 'Mirabello' mentions and a trailing filter note that earns little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only catalogue with an output schema present, the description supplies enough framing (domain screen, curation standard, watchlist caveat) for an agent to call it correctly. Return shape is rightfully left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'lane' parameter is fully documented (including the watchlist value), so the schema carries the load. The description repeats the lane menu and omits the watchlist option it actually documents in the schema, adding no syntax or semantic value beyond it; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States concretely what the tool returns: a curated roster of A-tier company-formation jurisdictions, trust situs options, personal-tax-residence regimes, plus a watchlist. This is far more informative than a tautology, though it never names sibling tools (find_formation_jurisdictions, find_trust_jurisdictions, find_low_tax) that appear to cover overlapping territory, so the agent must infer differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the reader can guess this is a browse-the-catalogue tool that can optionally be narrowed by lane. There is no explicit 'use this instead of X when Y' and no mention of how it relates to find_formation_jurisdictions, find_trust_jurisdictions, or get_structuring_playbook, which is the main gap for a roster tool in a dense sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wealth_atlasWealth AtlasA
Read-only
Inspect

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. INFORMATION, NOT ADVICE.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: that there is no composite ranking, that weightings are client-dependent, that methodology and a de-risk note are bundled, and the 'INFORMATION, NOT ADVICE' disclaimer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and scope, then pillars, then the single parameter rule. It is a single dense block with several parentheticals, so it is efficient if slightly overstuffed, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still covers pillar coverage, the deliberate absence of a composite, the parameter scoping rule, methodology inclusion, and a usage caveat. Nothing an agent needs to invoke or interpret this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the cc field is fully documented in the schema, so the baseline is 3. The description adds meaningful semantics anyway by explaining the optional behavior (one jurisdiction vs. all when omitted), which the schema's absence of required fields alone doesn't make obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (fetch the Wealth Atlas sub-indices) and enumerates the six pillars returned, so the agent knows exactly what data comes back. It also distinguishes itself from the sibling composite index by explicitly saying 'No composite ranking' and pointing to 'a client-weighted composite index available separately.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent how to scope the call: 'Pass cc for one jurisdiction, omit for all,' and names the alternative tool for weighted output. It does not, however, say when to prefer this Atlas over adjacent per-country tools like get_country, get_country_tax, or get_index.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wealth_indexWealth IndexA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.
weightsNoOptional weighting overrides for the index pillars, as an object of pillar name to weight; omit for the published default weights.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this is a safe read (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds real context beyond that: it is a 'Pure projection over Mirabello-verified data' and an 'illustrative comparative score, NOT advice' — useful provenance and liability framing. It stops short of describing scoring mechanics or precision limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the composite's nature, followed by parameter guidance and a disclaimer. Dense but every clause carries information; the parenthetical pillar list is the only mild bulk, and it is load-bearing for the weights object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a nested weights object and a real output schema (so return values need not be described), the description covers the composite's meaning, default behavior, single-country mode, top-N mode, data provenance, and scope disclaimer. Nothing needed 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning: it enumerates the seven valid pillar keys (tax_efficiency, structure_strength, residence_clarity, crypto_clarity, succession_certainty, regulatory_transparency, institutional_stability), which the nested weights schema does not list, and clarifies cc/limit behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('score jurisdictions', 'CLIENT-WEIGHTED wealth-protection composite') and enumerates the pillars being weighted. It also distinguishes itself from a generic ranking tool and from siblings like get_index/get_wealth_atlas by insisting the result is profile-dependent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the two operative modes clearly: 'Omit weights for an illustrative default composite' and 'Pass cc for one jurisdiction, or limit for the top N.' It also frames why the tool exists (no single public best ranking), but it doesn't explicitly route the agent away from sibling tools for adjacent questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_programmesList ProgrammesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoProgramme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both.
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.
regionNoRegion filter, matched case-insensitively (e.g. "Caribbean", "EU", "Middle East", "Pacific", "Africa", "Asia").
budget_maxNoMaximum headline minimum investment the applicant will consider, in USD. Programmes with no fixed threshold are excluded from budget filtering.
max_processing_monthsNoMaximum acceptable processing time in MONTHS, compared against the lower bound of each programme's published range.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds genuinely useful behaviour beyond that: the corpus is ~98 items and large, and budget filtering silently excludes programmes with no fixed threshold while still listing them unfiltered. It omits pagination behaviour beyond limit, keeping it from 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, all front-loaded with the resource and its filters first, then scale caveat, then the filter-exclusion edge case. No filler and every clause conveys actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 safety, the description only needs to explain filtering semantics and response scale, which it does. The remaining gap is routing context: no mention of when compare_programmes or recommend_programmes should be preferred over this listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already documents its own semantics, so the baseline is 3. The description adds one real nuance — budget comparison occurs at indicative FX — but the exclusion rule and CBI/RBI definitions merely restate the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (Mirabello-advised CBI/RBI programmes) with scope qualifiers, and distinguishes itself from get_programme (single) and compare_programmes (comparison) by framing itself as a filtered enumeration. An agent can identify the correct tool 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives conditional guidance: pass limit for a sample, and how budget filters interact with programmes lacking a fixed threshold. It does not explicitly route the agent away from siblings such as recommend_programmes or compare_programmes when those are more appropriate, 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.

list_visa_free_destinationsVisa-Free Destinations by NationalityA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNooptional: return only this group
from_nationalityYespassport held - ISO alpha-2 code or country name

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description's added provenance is the real value: it discloses the Passport Index source (199 passports), the 'where published' caveat on maximum stay days, and a verify-before-travel disclaimer. That is meaningful context beyond the annotations, though it stops short of describing inclusion/counting methodology.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scoping and price of the call are front-loaded in a single dense sentence, followed by a short source/disclaimer sentence. The long enumeration of groups is slightly run-on but each clause carries information an agent needs to interpret the output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 does not need to explain return structure, and it still usefully signals the counts and visa-free-plus-on-arrival mobility total. Combined with the source attribution and travel-verification caveat, an agent has enough to call this correctly; only the routing against sibling visa tools is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema (including the ISO alpha-2-or-name alternation and the group enum). The description adds little parameter-level detail beyond confirming the 'one nationality' constraint, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('ALL destinations for ONE nationality grouped by requirement') and enumerates the exact output grouping (visa-free, visa on arrival, e-visa, ETA, visa required, no admission). This distinguishes it from single-pair siblings like check_visa_free and check_visa_requirement 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'ONE nationality' scope and the grouped, whole-list output imply the tool is for bulk mobility breakdowns rather than single-country checks, but no alternative is named and no when-not-to-use condition is stated. Usage must be inferred from scope wording.

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 ScreenA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint:false and openWorldHint:false, so the safety profile is covered. The description adds a genuine behavioral trait beyond that: it is explicitly informational and not authoritative, directing the agent to confirm with local counsel — useful for a legal-advisory lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the substantive scope is front-loaded, the disclaimer follows, and the format hint closes. 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.

Completeness4/5

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 a single required parameter is fully documented. The one remaining gap is the absence of any signal separating this from overlapping property/succession siblings, which slightly weakens completeness for the agent's selection decision.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single, fully documented cc parameter including examples and expansion. The description's 'Use ISO alpha-2' merely reinforces the schema's stated format without adding syntax or edge-case detail, so the baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific legal resource (default matrimonial-property regime) and enumerates the sub-questions it answers: prenuptial variation and property split on divorce/death. This is far more than a restatement of the title. However, it never differentiates itself from adjacent siblings like get_property_law, forced_heirship_risk, or succession_conflict_map, so an agent could still hesitate between them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the topic (a jurisdiction-level family/property law lookup) but there is no explicit when-to-use, when-not-to-use, or named alternative. 'Informational — confirm with local counsel' is a caveat rather than routing guidance, so the agent gets context but no decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

plan_global_setupPlan Global Setup — Entrepreneur BlueprintA
Read-only
Inspect

Composed planner giving one origin-aware answer to the FULL global-setup question — mobility (residence/citizenship options via the Freedom Compass), tax-residence pairing, entity stack by customer market, holding layer, banking access and protection/succession pointers, each layer from Mirabello-verified, provenance-carrying data. Use for questions like: I am an Egyptian founder selling SaaS to the US — what is my full setup? Pass from_citizenship (ISO alpha-2 array) and any of: from_tax_residence, markets (array of us|eu|ch|asia|mea — where the CUSTOMERS are), archetype (solo-lean = freelancer/solo to ~1M; scaleup = 1-10M with team; enterprise = 10M+ multi-region), budget_usd (mobility budget), include_mobility (default true). Rule zero: profit tax follows the OWNER (residence/PoEM/CFC), not the customers. Information only, never advice; ends in a consultation route for real-fit users.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketsNocustomer markets: us | eu | ch | asia | mea
archetypeNosolo-lean | scaleup | enterprise
budget_usdNomobility/investment budget for the residence-citizenship layer
from_citizenshipNocurrent citizenship(s), ISO alpha-2
include_mobilityNoinclude the Freedom Compass mobility layer (default true)
from_tax_residenceNocurrent tax residence, ISO alpha-2

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish it as a safe, read-only, non-open-world call, and the description adds real behavioral context beyond them: data is 'Mirabello-verified, provenance-carrying,' output is 'information only, never advice,' and it 'ends in a consultation route for real-fit users.' The 'rule zero' note further discloses the planner's underlying logic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the body collapses a large amount of guidance into one dense, run-on paragraph. The archetype definitions and markets clarification earn their place, but the packing makes it harder to scan than a structured breakdown would.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter planner with rich annotations and an output schema, the description covers purpose, triggering context, every input's semantics, data provenance, and the disclaimer/consultation funnel. An agent has everything needed to select and invoke it correctly, and return values are covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description genuinely adds meaning: it clarifies markets means where the CUSTOMERS are (not the owner), defines archetype bands (solo-lean ~1M, scaleup 1-10M, enterprise 10M+), and notes include_mobility defaults to true. That is value the schema text alone does not carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource — a 'composed planner' that answers the FULL global-setup question across mobility, tax-residence, entity stack, holding layer, banking and succession. It clearly distinguishes itself from the many single-domain siblings (get_banking_access, get_mobility_optionality, find_low_tax) by being the aggregate, origin-aware answer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete triggering example ('I am an Egyptian founder selling SaaS to the US — what is my full setup?') and enumerates exactly which inputs to pass, including the meaning of archetype and markets. It stops short of stating when NOT to use it (e.g. for a single-layer question, use the dedicated sibling), so it's clear on when-to-use but not on exclusions.

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 CompassA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoWhat the applicant is optimising for, in plain words: visa-free travel, tax residence, family relocation.
familyNoFamily composition object, e.g. { "adults": 2, "children_under16": 1, "children_16plus": 0 }.
budget_usdNoTotal budget the applicant has available for the investment itself, in USD (fees are additional).
timeline_monthsNoTarget time to the outcome, in MONTHS.
from_citizenshipYescurrent citizenship(s), ISO alpha-2 e.g. ["US"]
from_tax_residenceNoISO alpha-2 tax residence (defaults to first citizenship)
physical_presence_toleranceNoHow much time the applicant can spend in-country: "none", "minimal", "flexible", "relocating".

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnlyHint/destructiveHint false), and the description adds substantial behavioral context: it is informational only, not advice; data is generic and sourced and should be CHECK-OFFICIAL-SOURCE; it discloses the tax-exit/reporting logic (US §877A, German AStG §6) it will surface. That is real value beyond structured fields, though no rate/limit behavior is discussed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core identity and the key constraint concept, then the return fields, then the usage cue. Dense but every sentence carries content; the heavy CAPS emphasis and stacked tax references make it slightly noisy rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explanation is not strictly required, yet the description partly covers it. With annotations carrying safety and a rich 7-param schema, the description supplies the remaining context an agent needs — the informational caveat and the origin-constraint framing — leaving little meaningfully missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 semantic weight the schema does not: it frames from_citizenship as 'the constraint' that drives mobility delta and eligibility, and explains why a second passport's value depends on origin. It also re-states the ISO alpha-2 array format for from_citizenship.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — an 'ORIGIN-AWARE migration path planner' — and immediately names the differentiating concept (the origin/mobility delta) that separates it from generic pathway tools like find_pathways or recommend_programmes. An agent can tell what it returns (ranked end-to-end options with fit_score) 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear trigger phrase ("I am a [nationality], I want [goal] — what should I do?") and states exactly what to pass (from_citizenship + goal). It does not explicitly name which sibling to use when origin-awareness is NOT the point (e.g. find_pathways, recommend_programmes), so routing against alternatives is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_graphQuery Knowledge GraphA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).
idNoentity id for neighbours mode (programme:<id> | country:<CC> | bloc:<NAME> | authority:<slug> | source:<host>)
blocNoPolitical/economic bloc filter (e.g. "EU", "Schengen", "CARICOM", "GCC").
typeNoCBI or RBI
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.
statusNoProgramme status filter: "operational" (accepting applications), "emerging" (new but operating), "announced" (legislated or proclaimed but NOT in force — no applications), "closed", "paused".
leads_toNoDesired outcome: "citizenship" (a passport) or "residence" (a permit).
max_investment_usdNoUpper bound on the headline minimum investment, in USD.
min_investment_usdNoLower bound on the headline minimum investment, in USD.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, destructive=false, openWorld=false, so the safety profile is covered. The description adds genuinely useful context beyond that: investment figures are FX-normalised best-effort, the official_source should be cited for authoritative amounts, large responses warrant the limit param, and it is 'information, not advice'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a dense single paragraph but front-loads the resource and the two modes before the filter list, so the critical routing information comes first. The filter enumeration and caveats are long but each earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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. The description covers both modes, the filter vocabulary, the FX caveat and citation guidance, so an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 real value on top by explaining the mode structure (id vs filter parameters) and grouping the filters by intent, which the flat schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (relational query) and resource (investment-migration knowledge graph) and enumerates its exact entity types. It explicitly positions itself against the 'flat tools' siblings, so an agent can tell when this relational query differs from list_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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly separates the two usage modes (pass id for neighbours vs pass filters to find programmes) and gives a concrete example query that this tool answers but flat tools cannot. It stops short of naming specific sibling tools as the alternative, relying on the generic 'flat tools' phrase.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_programmesRecommend ProgrammesA
Read-only
Inspect

Recommend a ranked shortlist of programmes for a client profile (budget, family size, mobility priority, timeline, tax goal) with reasoning. Respects closed/paused programmes.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoProgramme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both.
tax_goalNoTrue when the applicant's main objective is a tax outcome rather than mobility.
budget_maxNoMaximum headline minimum investment the applicant will consider, in USD. Programmes with no fixed threshold are excluded from budget filtering.
family_sizeNoTOTAL number of people to be included, the main applicant INCLUDED (so a couple with two children is 4).
mobility_priorityNoTrue when visa-free travel is the applicant's main objective.
timeline_max_monthsNoMaximum acceptable time to the outcome, in MONTHS.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, closed-world read (readOnlyHint=true, destructiveHint=false, openWorldHint=false), lowering the burden. The description adds real behavioral context beyond them: recommendations are filtered to respect closed/paused programmes, and the output is ranked with reasoning. It stops short of describing the ranking factors or how ties are broken.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and outcome. The parenthetical parameter list is dense but earns its place by signaling the inputs the agent should gather. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explanation is not needed, and all six parameters are documented in the schema. The description covers what the tool produces, the profile dimensions it consumes, and the closed/paused filter. It could say more about ranking behavior, but for a read-only recommendation tool this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 six optional parameters and even their semantics (e.g., family_size inclusive of applicant, budget_max handling of programmes with no fixed threshold). The description merely restates the dimension names, adding no syntax or interpretation beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ("Recommend") plus resource ("programmes") and a clearly bounded output ("ranked shortlist ... with reasoning"). It implicitly separates itself from list_programmes (raw list) and compare_programmes (comparison), but never names those siblings to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. It does not tell the agent how this differs from compare_programmes, find_fastest_citizenship, find_low_tax, or plan_path, all of which overlap on the same recommendation space. Usage is only inferable from the listed profile dimensions.

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 ChecklistA
Read-only
Inspect

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. Tests and factors only — NOT a residence determination. Use ISO alpha-2.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful context beyond that: the output is explanatory reference content rather than a binding determination, and the input must be an ISO alpha-2 code. No permission, rate-limit, or failure-mode detail is given, but none is expected for a static lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content scope is front-loaded in one dense sentence, immediately followed by the scope limitation and the input-format note. Every sentence earns its place, though the opening enumeration is long enough that it reads as a list crammed into prose rather than a structured summary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 structure need not be restated. Between the enumerated content scope, the explicit non-determination boundary, and the input-format constraint, an agent has everything needed to decide whether to call this tool and how to populate the single required argument.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, including examples and a definition of the ISO alpha-2 format, so the schema carries the load. The description's only added parameter value is the redundant 'Use ISO alpha-2' reminder, which matches the baseline 3 for high-coverage schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (tax-residence tests and evidence factors for a jurisdiction) and enumerates the concrete content it returns: day-count thresholds, statutory tests, connecting/ties factors, cessation, and documentary evidence. It also draws an explicit boundary ('NOT a residence determination'), which separates it from siblings like get_document_checklist and compliance_checklist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The exclusion clause ('Tests and factors only — NOT a residence determination') tells the agent when this tool's output is inappropriate, and 'Use ISO alpha-2' states the required input convention. It stops short of naming a sibling tool to use instead for an actual determination, so it is clear context rather than full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_propertiesSearch PropertiesA
Read-only
Inspect

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 is broker of record on every listing — there is no direct developer contact; all buyer enquiries are routed through Mirabello. Indicative figures; book a consultation to confirm.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoProgramme family: "CBI" grants citizenship, "RBI" grants residence (golden visa). Omit for both.
limitNoMaximum number of items to return. Responses can be large; use this to keep the answer small.
countryNoCountry 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_minNoMinimum number of bedrooms.
programmeNoProgramme id whose investment rules the property must satisfy (e.g. "greece-gv").
budget_maxNomax price in USD (best-effort FX)
sale_statusNoAvailability filter, for example available, reserved or sold.
listing_typeNoListing category, for example apartment, villa, townhouse, land or commercial.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/destructive=false, so the safety profile is covered. The description adds genuinely new behavioral context: Mirabello is broker of record on every listing, there is no direct developer contact, and all enquiries route through Mirabello, plus a caveat that figures are indicative. It stops short of detailing pagination or response-shape behavior (return format is left to 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the search verb and scope, then filters, then returns, then the broker constraint and disclaimer. Dense and mostly every sentence earns its place, though the parenthetical example lists and the closing disclaimer make it longer than strictly needed for selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an eight-parameter search with a full schema, output schema, and annotations, the description covers scope, filters, return content, and the non-obvious broker-of-record/enquiry-routing constraint. Nothing an agent needs to invoke it correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 eight parameters, including the FX caveat and code/spelling flexibility for country. The description mirrors the filter list with example programme ids and a budget_max '(USD, FX-normalised best-effort)' note, but adds little beyond what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) plus resource (Mirabello-advised investment real estate) and narrows the scope to listings that qualify for a citizenship/residency-by-investment programme. An agent can distinguish this from siblings like get_property or list_programmes purely from the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when the tool applies (finding qualifying investment property) and enumerates the filter dimensions an agent should use. It also routes buyers to 'book a consultation to confirm', implicitly pointing at the book_consultation sibling, but it never states exclusions or when a different sibling should be used instead.

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. Each call creates a separate subscription, so repeating it duplicates the alerts.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoemail for change alerts (requires consent:true)
consentNorequired true when email is given (GDPR)
websiteNoleave blank (spam honeypot)
webhook_urlNoHTTPS endpoint to POST change entries to (for agents/systems)
programme_idsNooptional filter — only these programmes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description discloses side effects and delivery mechanics: HTTPS POST fires on each change, email requires explicit GDPR consent, each call creates a separate non-idempotent subscription, and a subscription id plus unsubscribe URL are returned. This is exactly the behavioral context an agent needs before mutating state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by audience-specific usage, the optional filter, the return contract, and the duplication caveat. It is dense but every sentence carries distinct information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still names the key return values (subscription id, unsubscribe URL) and covers consent, delivery mechanism, and idempotency risk for all five parameters. Nothing needed 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.

Parameters3/5

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 largely restates schema facts (webhook_url is an HTTPS POST target, email requires consent, programme_ids is an optional filter) and adds only the agents-vs-humans framing, which is useful but not new parameter syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Subscribe to') and resource ('verified programme-change alerts') and enumerates what the alerts cover (price changes, launches, corrections, each linked to the official source). No sibling tool offers subscription functionality, so it is trivially distinguishable from the surrounding lookup/compare tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear per-audience routing ('Agents: provide webhook_url' vs 'Humans: provide email') and a repeat-call warning ('each call creates a separate subscription, so repeating it duplicates the alerts'). It does not state explicit when-not conditions, but there are no competing alternatives among the siblings to steer away from.

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 MapB
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccYesISO 3166-1 alpha-2 country code, uppercase (e.g. "PT" Portugal, "AE" United Arab Emirates, "KN" St Kitts and Nevis).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds a useful liability boundary ('Informational, not advice') and signals that the payload is a multi-factor doctrinal position rather than a single number. It adds no auth, rate-limit, or coverage-limit context beyond that, which is acceptable but not rich given annotations already carry the operation semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the opening clause, and the two trailing sentences are short and useful. But the middle of the description is one sprawling comma-chained sentence enumerating return contents (clawback, renvoi, trust/foundation interaction, planning point) that largely duplicate what the existing output schema already conveys, for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explain return values, and the single parameter is fully specified in the schema; annotations cover read-only safety. The description is complete for invocation and adequately signals doctrinal scope. The remaining gap is routing: no indication of when this tool should be chosen over its closest siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema coverage is 100% — the schema already documents ISO 3166-1 alpha-2 with uppercase requirement and examples (PT, AE, KN). The description's 'Use ISO alpha-2' merely restates that, adding no new semantic value. Baseline 3 is correct 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (cross-border succession conflict-of-laws position for a jurisdiction) and enumerates the exact doctrines covered: governing law connecting factors, EU Regulation 650/2012 applicability, professio juris, clawback, renvoi, trust/foundation interaction. An agent can tell it covers conflict-of-laws, which is conceptually distinct from forced_heirship_risk or choice_of_law_options. However, it never names those siblings or draws the boundary explicitly, so it falls 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is 'Informational, not advice' and 'Use ISO alpha-2' — a disclaimer and a format rule, not usage guidance. There is no statement of when to reach for this tool versus forced_heirship_risk, choice_of_law_options, or matrimonial_regime_screen, and no prerequisites or exclusions. The usage context (cross-border estate planning) is only implied by the subject matter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

withholding_mapWithholding MapC
Read-only
Inspect

Treaty withholding-tax rates (dividends/interest/royalties) for a from→to corridor.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesEnd of the date range, ISO date (YYYY-MM-DD).
fromYesStart of the date range, ISO date (YYYY-MM-DD).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent only when the request could not be fulfilled.
termsNoAcceptable-use and information-not-advice terms.
sourceNoAttribution for the data, when it is not Mirabello Consultancy itself.
book_urlNoLink to request a consultation with a Mirabello specialist, for a personal case.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safe-lookup profile is fully covered by structured data. The description adds no further behavioural context (no source of the rates, no effective-date semantics, no coverage limits), which is acceptable given the annotations but adds little.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or repetition. It is tight, though arguably under-specified rather than optimally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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, but the central ambiguity — are 'from'/'to' dates or countries? — is unresolved and the description does not address it. For a tool whose parameters are the whole input surface, that gap is material.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the schema describes 'from' and 'to' as start/end of a date range (ISO dates), while the description calls them a 'from→to corridor' — i.e. a jurisdiction pair. That is a direct semantic conflict that will mislead the agent about what to pass, so this falls below the baseline-3 that full schema coverage would normally justify.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete resource (treaty withholding-tax rates), the income types covered (dividends/interest/royalties), and the scope (a from→to corridor), so an agent knows what it returns. It does not, however, distinguish itself from near-neighbours such as compare_treaty_position or get_country_tax, which a reader could plausibly mistake for the same lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no named alternative, despite several sibling tools (compare_treaty_position, get_country_tax, flag_cfc_poe_risk) that overlap in topic. The agent is left to infer the routing itself.

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. 1 tool update
    • Changedsearch_properties1 field changed
      • changedInput schema / properties / country / description
        Previous 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\")."
  2. 3 tool updates
    • Addedcheck_maltese_citizenship_eligibility
    • Addedestimate_malta_passport_fee
    • Addedget_malta_citizen_service
  3. 3 tool updates
    • Removedcheck_maltese_citizenship_eligibility
    • Removedestimate_malta_passport_fee
    • Removedget_malta_citizen_service
  4. 3 tool updates
    • Addedcheck_maltese_citizenship_eligibility
    • Addedestimate_malta_passport_fee
    • Addedget_malta_citizen_service
  5. 1 tool update
    • Changedfind_retirement_routes2 fields changed
      • addedInput schema / properties / golden_only
        Added value: +{
        +  "description": "true = only routes rated Golden by the Mirabello Golden Retirement Index; results are then ordered by score. Default false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / min_score
        Added 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"
        +}
  6. 1 tool update
    • Addedget_family_pathway
  7. 1 tool update
    • Addedfind_retirement_routes
  8. 63 tool updates
    • Changedbook_consultation3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedbuild_sow_pack3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcheck_eligibility3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcheck_visa_free3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcheck_visa_requirement3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedchoice_of_law_options3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcompare_formation3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcompare_programmes3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcompare_scenarios3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcompare_treaty_position3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcompliance_checklist3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedcreate_enquiry3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedestimate_timeline3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedestimate_total_cost3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedfind_charity_jurisdictions3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedfind_fastest_citizenship3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedfind_formation_jurisdictions3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedfind_low_tax3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedfind_pathways3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedfind_trust_jurisdictions3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedflag_cfc_poe_risk3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedforced_heirship_risk3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedgenerate_briefing3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_about3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_availability_updates3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_banking_access3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_capital_controls3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_company_formation3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_country3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_country_tax3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_digital_gov_progress3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_document_checklist3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_emigration_flows3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_entry_requirements3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_foundation_rules3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_index3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_mobility_optionality3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_name_change3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_nonresident_banking3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_passport_renewal3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_processing_times3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_programme3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_property3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_property_law3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_provenance3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_recent_changes3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_regulator_registry3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_structuring_playbook3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_structuring_roster3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_wealth_atlas3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedget_wealth_index3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedlist_programmes3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedlist_visa_free_destinations3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedmatrimonial_regime_screen3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedplan_global_setup3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedplan_path3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedquery_graph3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedrecommend_programmes3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedresidence_evidence_checklist3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedsearch_properties3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedsubscribe_changes3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedsuccession_conflict_map3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
    • Changedwithholding_map3 fields changed
      • removedOutput schema / properties / book_a_consultation
        Removed value: -{
        -  "description": "URL to book a Mirabello consultation.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / book_url
        Added value: +{
        +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / source / description
        Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
  9. 1 tool update
    • Changedbook_consultation1 field changed
      • removedInput schema / properties / lead_heat
        Removed value: -{
        -  "description": "optional pre-assessed lead heat (e.g. carry the plan_path conversion.lead_heat through) — escalates routing for qualified HNWIs",
        -  "enum": [
        -    "hot",
        -    "warm",
        -    "info"
        -  ],
        -  "type": "string"
        -}
  10. 3 tool updates
    • Changedfind_fastest_citizenship1 field changed
      • addedInput schema / properties / bloc
        Added value: +{
        +  "description": "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.",
        +  "enum": [
        +    "EU",
        +    "EEA",
        +    "FREE_MOVEMENT"
        +  ],
        +  "type": "string"
        +}
    • Changedfind_pathways3 fields changed
      • changedInput schema / properties / pathway / description
        Previous value: -"Route family to filter on (e.g. \"donation\", \"real_estate\", \"business\", \"bonds\")."New value: +"Pathway id. eu-free-movement = living in another EU/EEA state or Switzerland as an EU/EEA/Swiss citizen."
      • addedInput schema / properties / pathway / enum
        Added value: +[
        +  "eu-free-movement",
        +  "retirement-passive",
        +  "digital-nomad",
        +  "skilled-work",
        +  "general-work",
        +  "startup-entrepreneur",
        +  "talent-exceptional",
        +  "study",
        +  "family-reunification",
        +  "marriage",
        +  "ancestry-descent",
        +  "naturalisation-ordinary",
        +  "invest-residence",
        +  "invest-citizenship"
        +]
      • removedInput schema / properties / pathway / examples
        Removed value: -[
        -  "real_estate"
        -]
    • Changedget_country1 field changed
      • addedInput schema / properties / nationality
        Added value: +{
        +  "description": "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.",
        +  "type": "string"
        +}
  11. 40 tool updates
    • Changedbook_consultation1 field changed
      • addedInput schema / properties / email / description
        Added value: +"Contact email address for the enquiry. Only ever send an address the user has explicitly provided for this purpose."
    • Changedbuild_sow_pack3 fields changed
      • addedInput schema / properties / context / description
        Added value: +"Free-text background about the applicant's situation, used to tailor the answer."
      • addedInput schema / properties / origin / description
        Added value: +"Country the applicant is relocating FROM, as a country name."
      • addedInput schema / properties / origin / examples
        Added value: +[
        +  "South Africa"
        +]
    • Changedcheck_visa_free2 fields changed
      • addedInput schema / properties / programme_id / description
        Added value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."
      • addedInput schema / properties / programme_id / examples
        Added value: +[
        +  "st-kitts-cbi"
        +]
    • Addedcheck_visa_requirement
    • Changedchoice_of_law_options3 fields changed
      • addedInput schema / properties / married / description
        Added value: +"Whether the applicant is married — affects family pricing and some eligibility rules."
      • addedInput schema / properties / spouse_nationalities / description
        Added value: +"Array of the spouse's citizenships as country names."
      • addedInput schema / properties / spouse_nationalities / examples
        Added value: +[
        +  [
        +    "Brazil"
        +  ]
        +]
    • Changedcompare_scenarios3 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
      • addedInput schema / properties / scenarios / description
        Added value: +"Array of scenario objects to compare side by side, each naming a programme id and the family composition and options to price."
    • Changedcompare_treaty_position4 fields changed
      • addedInput schema / properties / from / description
        Added value: +"Start of the date range, ISO date (YYYY-MM-DD)."
      • addedInput schema / properties / from / examples
        Added value: +[
        +  "2026-01-01"
        +]
      • addedInput schema / properties / to / description
        Added value: +"End of the date range, ISO date (YYYY-MM-DD)."
      • addedInput schema / properties / to / examples
        Added value: +[
        +  "2026-12-31"
        +]
    • Changedcompliance_checklist10 fields changed
      • addedInput schema / properties / cbi_applicant / description
        Added value: +"True if the client is applying for citizenship by investment."
      • addedInput schema / properties / crs_reportable / description
        Added value: +"True if the client holds financial accounts reportable under the CRS automatic-exchange regime."
      • addedInput schema / properties / crypto_holder / description
        Added value: +"True if the client holds digital assets — relevant to CARF and local crypto reporting."
      • addedInput schema / properties / dac6 / description
        Added value: +"True if a reportable cross-border arrangement under EU DAC6 may be involved."
      • addedInput schema / properties / eu_cross_border_arrangement / description
        Added value: +"True if the structure spans two or more EU member states."
      • addedInput schema / properties / large_cash_or_sow / description
        Added value: +"True if large cash movements or a complex source-of-wealth story are involved."
      • addedInput schema / properties / pep / description
        Added value: +"True if the client is a politically exposed person, a family member or a known close associate — requires enhanced due diligence."
      • addedInput schema / properties / rbi_applicant / description
        Added value: +"True if the client is applying for residence by investment."
      • addedInput schema / properties / trust_settlor / description
        Added value: +"True if the client settles or controls a trust or foundation."
      • addedInput schema / properties / us_person / description
        Added value: +"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."
    • Changedcreate_enquiry11 fields changed
      • addedInput schema / properties / budget / description
        Added value: +"Budget the enquirer has stated, in their own words including the currency."
      • addedInput schema / properties / email / description
        Added value: +"Contact email address for the enquiry. Only ever send an address the user has explicitly provided for this purpose."
      • addedInput schema / properties / message / description
        Added value: +"The enquiry itself in the user’s own words. Do not add commitments or figures the user did not state."
      • addedInput schema / properties / name / description
        Added value: +"Enquirer full name, only as the user has given it. Never invent or infer personal details."
      • addedInput schema / properties / nationality / description
        Added value: +"Applicant's current citizenship, as a country name (for example India, Nigeria, Russia). Drives eligibility restrictions."
      • addedInput schema / properties / nationality / examples
        Added value: +[
        +  "India"
        +]
      • addedInput schema / properties / phone / description
        Added value: +"Contact telephone number in international format, only if the user has provided it."
      • addedInput schema / properties / preferred_channel / description
        Added value: +"How the enquirer prefers to be contacted: email, phone or WhatsApp."
      • addedInput schema / properties / preferred_channel / examples
        Added value: +[
        +  "email"
        +]
      • addedInput schema / properties / residence_country / description
        Added value: +"Country where the enquirer currently lives."
      • addedInput schema / properties / timeline / description
        Added value: +"When the enquirer wants to proceed, in their own words (e.g. \"within 3 months\")."
    • Changedestimate_timeline2 fields changed
      • addedInput schema / properties / programme_id / description
        Added value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."
      • addedInput schema / properties / programme_id / examples
        Added value: +[
        +  "st-kitts-cbi"
        +]
    • Changedestimate_total_cost6 fields changed
      • addedInput schema / properties / children_16plus / description
        Added value: +"Number of dependent children aged 16 or over — usually priced higher than under-16s."
      • addedInput schema / properties / children_16plus / examples
        Added value: +[
        +  1
        +]
      • addedInput schema / properties / children_under16 / description
        Added value: +"Number of dependent children aged under 16 — priced separately by most Caribbean programmes."
      • addedInput schema / properties / children_under16 / examples
        Added value: +[
        +  1
        +]
      • addedInput schema / properties / programme_id / description
        Added value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."
      • addedInput schema / properties / programme_id / examples
        Added value: +[
        +  "st-kitts-cbi"
        +]
    • Addedfind_fastest_citizenship
    • Changedfind_formation_jurisdictions4 fields changed
      • addedInput schema / properties / eu_clean / description
        Added value: +"True to require the jurisdiction be absent from EU tax and AML listings."
      • addedInput schema / properties / max_setup_usd / description
        Added value: +"Maximum acceptable set-up cost in USD."
      • addedInput schema / properties / max_setup_usd / examples
        Added value: +[
        +  25000
        +]
      • addedInput schema / properties / remote_only / description
        Added value: +"True to return only options that can be completed without travelling to the country."
    • Changedfind_low_tax8 fields changed
      • addedInput schema / properties / crypto_friendly / description
        Added value: +"True to require a favourable published treatment of digital assets."
      • addedInput schema / properties / no_capital_gains_tax / description
        Added value: +"True to require no capital-gains tax."
      • addedInput schema / properties / no_income_tax / description
        Added value: +"True to require no personal income tax."
      • addedInput schema / properties / no_inheritance_tax / description
        Added value: +"True to require no inheritance or estate tax."
      • addedInput schema / properties / no_wealth_tax / description
        Added value: +"True to require no net-wealth tax."
      • addedInput schema / properties / non_crs / description
        Added value: +"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."
      • addedInput schema / properties / not_eu_listed / description
        Added value: +"True to exclude jurisdictions on the EU list of non-cooperative tax jurisdictions."
      • addedInput schema / properties / territorial / description
        Added value: +"True to require a territorial tax system (foreign income untaxed)."
    • Changedfind_pathways4 fields changed
      • addedInput schema / properties / pathway / description
        Added value: +"Route family to filter on (e.g. \"donation\", \"real_estate\", \"business\", \"bonds\")."
      • addedInput schema / properties / pathway / examples
        Added value: +[
        +  "real_estate"
        +]
      • addedInput schema / properties / region / description
        Added value: +"Region filter, matched case-insensitively (e.g. \"Caribbean\", \"EU\", \"Middle East\", \"Pacific\", \"Africa\", \"Asia\")."
      • addedInput schema / properties / region / examples
        Added value: +[
        +  "Caribbean"
        +]
    • Changedfind_trust_jurisdictions1 field changed
      • addedInput schema / properties / strong_protection / description
        Added value: +"True to require strong asset-protection legislation."
    • Changedflag_cfc_poe_risk2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedforced_heirship_risk2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedgenerate_briefing8 fields changed
      • addedInput schema / properties / children_16plus / description
        Added value: +"Number of dependent children aged 16 or over — usually priced higher than under-16s."
      • addedInput schema / properties / children_16plus / examples
        Added value: +[
        +  1
        +]
      • addedInput schema / properties / children_under16 / description
        Added value: +"Number of dependent children aged under 16 — priced separately by most Caribbean programmes."
      • addedInput schema / properties / children_under16 / examples
        Added value: +[
        +  1
        +]
      • addedInput schema / properties / mobility_priority / description
        Added value: +"True when visa-free travel is the applicant's main objective."
      • addedInput schema / properties / tax_goal / description
        Added value: +"True when the applicant's main objective is a tax outcome rather than mobility."
      • addedInput schema / properties / timeline_max_months / description
        Added value: +"Maximum acceptable time to the outcome, in MONTHS."
      • addedInput schema / properties / timeline_max_months / examples
        Added value: +[
        +  12
        +]
    • Changedget_digital_gov_progress2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedget_document_checklist2 fields changed
      • addedInput schema / properties / programme_id / description
        Added value: +"Programme id as returned by list_programmes (e.g. \"st-kitts-cbi\"). Not a country name and not a website slug."
      • addedInput schema / properties / programme_id / examples
        Added value: +[
        +  "st-kitts-cbi"
        +]
    • Changedget_index4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of items to return. Responses can be large; use this to keep the answer small."
      • addedInput schema / properties / limit / examples
        Added value: +[
        +  10
        +]
      • addedInput schema / properties / type / description
        Added value: +"Programme family: \"CBI\" grants citizenship, \"RBI\" grants residence (golden visa). Omit for both."
      • addedInput schema / properties / type / examples
        Added value: +[
        +  "CBI"
        +]
    • Changedget_mobility_optionality2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedget_processing_times2 fields changed
      • addedInput schema / properties / id / description
        Added 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."
      • addedInput schema / properties / id / examples
        Added value: +[
        +  "dominica-cbi",
        +  "greece-gv"
        +]
    • Changedget_programme2 fields changed
      • addedInput schema / properties / id / description
        Added 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."
      • addedInput schema / properties / id / examples
        Added value: +[
        +  "dominica-cbi",
        +  "greece-gv"
        +]
    • Changedget_property1 field changed
      • addedInput schema / properties / slug / description
        Added value: +"Listing slug exactly as returned by search_properties."
    • Changedget_recent_changes4 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of items to return. Responses can be large; use this to keep the answer small."
      • addedInput schema / properties / limit / examples
        Added value: +[
        +  10
        +]
    • Changedget_regulator_registry1 field changed
      • addedInput schema / properties / international / description
        Added value: +"True to include international/offshore structures rather than domestic-only options."
    • Changedget_wealth_atlas2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedget_wealth_index5 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of items to return. Responses can be large; use this to keep the answer small."
      • addedInput schema / properties / limit / examples
        Added value: +[
        +  10
        +]
      • addedInput schema / properties / weights / description
        Added value: +"Optional weighting overrides for the index pillars, as an object of pillar name to weight; omit for the published default weights."
    • Changedlist_programmes9 fields changed
      • addedInput schema / properties / budget_max / description
        Added value: +"Maximum headline minimum investment the applicant will consider, in USD. Programmes with no fixed threshold are excluded from budget filtering."
      • addedInput schema / properties / budget_max / examples
        Added value: +[
        +  250000
        +]
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Maximum number of items to return. Responses can be large; use this to keep the answer small.",
        +  "examples": [
        +    10
        +  ],
        +  "type": "number"
        +}
      • addedInput schema / properties / max_processing_months / description
        Added value: +"Maximum acceptable processing time in MONTHS, compared against the lower bound of each programme's published range."
      • addedInput schema / properties / max_processing_months / examples
        Added value: +[
        +  6
        +]
      • addedInput schema / properties / region / description
        Added value: +"Region filter, matched case-insensitively (e.g. \"Caribbean\", \"EU\", \"Middle East\", \"Pacific\", \"Africa\", \"Asia\")."
      • addedInput schema / properties / region / examples
        Added value: +[
        +  "Caribbean"
        +]
      • addedInput schema / properties / type / description
        Added value: +"Programme family: \"CBI\" grants citizenship, \"RBI\" grants residence (golden visa). Omit for both."
      • addedInput schema / properties / type / examples
        Added value: +[
        +  "CBI"
        +]
    • Addedlist_visa_free_destinations
    • Changedmatrimonial_regime_screen2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedplan_path9 fields changed
      • addedInput schema / properties / budget_usd / description
        Added value: +"Total budget the applicant has available for the investment itself, in USD (fees are additional)."
      • addedInput schema / properties / budget_usd / examples
        Added value: +[
        +  300000
        +]
      • addedInput schema / properties / family / description
        Added value: +"Family composition object, e.g. { \"adults\": 2, \"children_under16\": 1, \"children_16plus\": 0 }."
      • addedInput schema / properties / goal / description
        Added value: +"What the applicant is optimising for, in plain words: visa-free travel, tax residence, family relocation."
      • addedInput schema / properties / goal / examples
        Added value: +[
        +  "visa-free travel"
        +]
      • addedInput schema / properties / physical_presence_tolerance / description
        Added value: +"How much time the applicant can spend in-country: \"none\", \"minimal\", \"flexible\", \"relocating\"."
      • addedInput schema / properties / physical_presence_tolerance / examples
        Added value: +[
        +  "minimal"
        +]
      • addedInput schema / properties / timeline_months / description
        Added value: +"Target time to the outcome, in MONTHS."
      • addedInput schema / properties / timeline_months / examples
        Added value: +[
        +  9
        +]
    • Changedquery_graph14 fields changed
      • addedInput schema / properties / bloc / description
        Added value: +"Political/economic bloc filter (e.g. \"EU\", \"Schengen\", \"CARICOM\", \"GCC\")."
      • addedInput schema / properties / bloc / examples
        Added value: +[
        +  "Schengen"
        +]
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
      • addedInput schema / properties / leads_to / description
        Added value: +"Desired outcome: \"citizenship\" (a passport) or \"residence\" (a permit)."
      • addedInput schema / properties / leads_to / examples
        Added value: +[
        +  "citizenship"
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of items to return. Responses can be large; use this to keep the answer small."
      • addedInput schema / properties / limit / examples
        Added value: +[
        +  10
        +]
      • addedInput schema / properties / max_investment_usd / description
        Added value: +"Upper bound on the headline minimum investment, in USD."
      • addedInput schema / properties / max_investment_usd / examples
        Added value: +[
        +  500000
        +]
      • addedInput schema / properties / min_investment_usd / description
        Added value: +"Lower bound on the headline minimum investment, in USD."
      • addedInput schema / properties / min_investment_usd / examples
        Added value: +[
        +  100000
        +]
      • addedInput schema / properties / status / description
        Added value: +"Programme status filter: \"operational\" (accepting applications), \"emerging\" (new but operating), \"announced\" (legislated or proclaimed but NOT in force — no applications), \"closed\", \"paused\"."
      • addedInput schema / properties / status / examples
        Added value: +[
        +  "operational"
        +]
    • Changedrecommend_programmes10 fields changed
      • addedInput schema / properties / budget_max / description
        Added value: +"Maximum headline minimum investment the applicant will consider, in USD. Programmes with no fixed threshold are excluded from budget filtering."
      • addedInput schema / properties / budget_max / examples
        Added value: +[
        +  250000
        +]
      • addedInput schema / properties / family_size / description
        Added value: +"TOTAL number of people to be included, the main applicant INCLUDED (so a couple with two children is 4)."
      • addedInput schema / properties / family_size / examples
        Added value: +[
        +  4
        +]
      • addedInput schema / properties / mobility_priority / description
        Added value: +"True when visa-free travel is the applicant's main objective."
      • addedInput schema / properties / tax_goal / description
        Added value: +"True when the applicant's main objective is a tax outcome rather than mobility."
      • addedInput schema / properties / timeline_max_months / description
        Added value: +"Maximum acceptable time to the outcome, in MONTHS."
      • addedInput schema / properties / timeline_max_months / examples
        Added value: +[
        +  12
        +]
      • addedInput schema / properties / type / description
        Added value: +"Programme family: \"CBI\" grants citizenship, \"RBI\" grants residence (golden visa). Omit for both."
      • addedInput schema / properties / type / examples
        Added value: +[
        +  "CBI"
        +]
    • Changedresidence_evidence_checklist2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedsearch_properties14 fields changed
      • addedInput schema / properties / beds_min / description
        Added value: +"Minimum number of bedrooms."
      • addedInput schema / properties / beds_min / examples
        Added value: +[
        +  2
        +]
      • addedInput schema / properties / country / description
        Added value: +"Country name to filter listings by (e.g. \"Greece\", \"Portugal\")."
      • addedInput schema / properties / country / examples
        Added value: +[
        +  "Greece"
        +]
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of items to return. Responses can be large; use this to keep the answer small."
      • addedInput schema / properties / limit / examples
        Added value: +[
        +  10
        +]
      • addedInput schema / properties / listing_type / description
        Added value: +"Listing category, for example apartment, villa, townhouse, land or commercial."
      • addedInput schema / properties / listing_type / examples
        Added value: +[
        +  "apartment"
        +]
      • addedInput schema / properties / programme / description
        Added value: +"Programme id whose investment rules the property must satisfy (e.g. \"greece-gv\")."
      • addedInput schema / properties / programme / examples
        Added value: +[
        +  "greece-gv"
        +]
      • addedInput schema / properties / sale_status / description
        Added value: +"Availability filter, for example available, reserved or sold."
      • addedInput schema / properties / sale_status / examples
        Added value: +[
        +  "available"
        +]
      • addedInput schema / properties / type / description
        Added value: +"Programme family: \"CBI\" grants citizenship, \"RBI\" grants residence (golden visa). Omit for both."
      • addedInput schema / properties / type / examples
        Added value: +[
        +  "CBI"
        +]
    • Changedsuccession_conflict_map2 fields changed
      • addedInput schema / properties / cc / description
        Added value: +"ISO 3166-1 alpha-2 country code, uppercase (e.g. \"PT\" Portugal, \"AE\" United Arab Emirates, \"KN\" St Kitts and Nevis)."
      • addedInput schema / properties / cc / examples
        Added value: +[
        +  "PT",
        +  "AE"
        +]
    • Changedwithholding_map4 fields changed
      • addedInput schema / properties / from / description
        Added value: +"Start of the date range, ISO date (YYYY-MM-DD)."
      • addedInput schema / properties / from / examples
        Added value: +[
        +  "2026-01-01"
        +]
      • addedInput schema / properties / to / description
        Added value: +"End of the date range, ISO date (YYYY-MM-DD)."
      • addedInput schema / properties / to / examples
        Added value: +[
        +  "2026-12-31"
        +]
  12. 1 tool update
    • Addedget_emigration_flows
  13. 3 tool updates
    • Addedget_foundation_rules
    • Addedget_nonresident_banking
    • Addedget_property_law
  14. 1 tool update
    • Addedget_name_change

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only lookup and comparison of sourced, dated migration data — 39 countries and 27,000+ cities, visa and residence routes, passport entry rules, cost of living, salaries, crime, air quality and climate. Every fact returned includes its value, unit, geographic grain, observation date, source and grade, with unknown values left explicit rather than estimated.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Travel compliance and trip planning for digital nomads — visa requirements, tax residency analysis, Schengen 90/180-day tracking, and curated accommodation, transport, and experience search across 189 European destinations.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables geographic parity analysis with 26 read-only tools covering purchasing power, salary localization, cost of living, nomad visas, tax residency, FIRE planning, and relocation costs.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.