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 with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
12.1% over 40 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
mirabello-consultancy/mcp-server
GitHub Stars
0

TDQS

B3.4/5.0

Scored across 63 tools

Disambiguation2/5

Many tools occupy overlapping territory: compare_formation, compare_programmes, compare_scenarios, and compare_treaty_position all begin with 'compare' but target different data; get_banking_access and get_nonresident_banking both cover banking access; find_trust_jurisdictions, find_charity_jurisdictions, and get_foundation_rules all handle trust/foundation matters. With 63 tools, an agent will struggle to reliably select the right one without deep per-description reading.

Naming Consistency2/5

The naming is mostly verb_noun but the verb set is far from uniform: get_ is dominant but check_, find_, compare_, plan_, build_, estimate_, list_, search_, query_, recommend_, and subscribe_ all appear. Some names are nouns instead of verbs (residence_evidence_checklist, succession_conflict_map), and there is no clear family pattern — e.g., list_programmes vs get_programme vs query_graph vs recommend_programmes all relate to programmes in different forms.

Tool Count1/5

63 tools is far beyond the 3-15 well-scoped range and even above the 25+ 'too many' calibration anchor. The domain is broad (citizenship, residency, tax, structuring, property, succession, banking), but this count suggests an attempt to expose every internal data lookup as a separate tool, making the surface noisy and hard for agents to navigate.

Completeness4/5

For an investment-migration and wealth-structuring information service, the surface is remarkably comprehensive: it covers programme discovery and comparison, eligibility, cost/timeline, tax, structuring, banking, property, succession, compliance, and provenance. Minor gaps exist (e.g., no dedicated tool for direct tax-treaty text lookup beyond withholding rates), but core workflows like 'find a programme, check costs, generate a briefing, enquire' are fully supported.

Available Tools

63 tools
book_consultationBook ConsultationAInspect

Book a free consultation with Mirabello Consultancy. Requires email + programme interest/message and explicit consent. Delivers the enquiry to Mirabello and returns a tracked booking URL.

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")
lead_heatNooptional pre-assessed lead heat (e.g. carry the plan_path conversion.lead_heat through) — escalates routing for qualified HNWIs
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate a write operation (readOnlyHint=false) and non-destructive nature. The description adds that the enquiry is delivered to Mirabello (external data sharing) and requires explicit consent, plus it returns a tracked booking URL. These are meaningful behavioral traits 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.

Conciseness5/5

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

Three short sentences with zero redundancy. The core action is front-loaded, and the requirements and outcome are stated efficiently. No fluff.

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?

Given the tool's complexity (20 parameters) and the presence of a detailed output schema, the description is adequate but not exhaustive. It does not guide the agent on which optional parameters matter most or provide any edge-case handling, but the schema's rich descriptions largely compensate. It could be more helpful for a tool this complex.

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 all 20 parameters are already documented in detail. The description adds that email, programme interest/message, and consent are required together, which is not explicit in the schema (only email is required). This is a useful but minor addition 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 ('Book') and resource ('free consultation with Mirabello Consultancy'), and adds key requirements and output. It clearly distinguishes itself from sibling tools like create_enquiry by focusing on booking a consultation rather than a generic enquiry.

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 lists prerequisites (email, programme interest/message, consent) but gives no guidance on when to use this tool vs alternatives such as create_enquiry or plan_path. No exclusions or alternative routing are mentioned, leaving the agent to infer the appropriate context.

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 PackB
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive; the description adds meaningful behavioral context by stating 'INFORMATION ONLY', that it never asserts compliance, and that output is grounded in FATF/Wolfsberg and programme rules. No contradiction with 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 dense paragraph but front-loads the purpose and packs useful examples into the flow. Some repetition and length could be trimmed, but overall every sentence contributes.

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?

The description covers outputs, standards grounding, no-args behavior, and info-only status, and an output schema exists. However, the unresolved conflict between the described 'wealth-origin type' and the schema's 'origin = country' leaves a critical gap for successful invocation, so it is not complete enough for an agent to call correctly.

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

Parameters1/5

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

The schema documents origin as the applicant's relocating-from country, but the description treats origin as a wealth-origin type (business_sale, inheritance, etc.) and context as destination context. This is a direct contradiction in the tool's core input semantics, so an agent cannot reliably fill the parameters from the description. High schema coverage only makes the mismatch more glaring.

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 deliverable (documentary evidence pack) and the inputs that drive it, and the output is clear: core/corroborating documents, context overlay, red flags. It does not explicitly compare against siblings like get_document_checklist or compliance_checklist, so differentiation is implicit rather than explicit.

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

Usage Guidelines3/5

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

It gives a concrete usage tip ('Call with no args to list available origins and contexts') and states the information-only caveat. It never says when to prefer this tool over sibling evidence/checklist tools, so the when-to-use-vs-alternatives guidance is missing.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, it discloses that only factual published policies are used and that final acceptance rests with government due diligence. This sets accurate expectations about the data source and the non-guaranteed nature of results.

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 with no filler: the first front-loads the core function and criteria, and the second adds a necessary caveat. Every sentence 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, fully described parameters, and read-only annotations, the description is sufficient for an agent to call the tool correctly. It communicates what the tool checks and its limitation without requiring additional inference.

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?

The schema already documents all parameters (nationality, type, programme_id) with clear descriptions, so the baseline is 3. The description adds general context about eligibility factors but does not provide new per-parameter meaning 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?

The description names the verb 'Check' and the resource 'which programmes a given nationality can realistically apply to', listing concrete factors such as published nationality restrictions, EU-citizen applicability, minimum age, and core requirements. This clearly distinguishes it from sibling tools like check_visa_requirement or recommend_programmes.

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 states the primary use case directly: determining realistic programme options for a given nationality. It does not explicitly name alternatives or exclusions, but the context is clear enough to guide an agent toward this tool for eligibility checks rather than visa checks or programme comparison.

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 AccessA
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the read-only safety profile is covered. The description adds that the tool returns a visa-free count and per-destination access, but discloses nothing about how the count is aggregated, data freshness, or behavior when no destination is given. This is useful context above annotations but not rich.

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

Conciseness4/5

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

A single sentence with no filler; the destination list is concrete and useful. The opening phrase 'Mobility for a programme passport' is slightly abstract, but the description earns its length.

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; annotations cover the safety profile; and the two-parameter schema is fully documented. The only meaningful gap is lack of disambiguation from closely related visa siblings (check_visa_requirement, list_visa_free_destinations), which is not fatal for correct invocation given the clear 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%, including strong guidance that programme_id is a list_programmes ID, 'not a country name and not a website slug,' so the schema carries the parameter meaning. The description's destination examples (Schengen, UK, USA, China) duplicate what the schema already says, adding no new parameter semantics.

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 resource (programme passport) and outputs (visa-free count and access to key destinations, naming Schengen, UK, USA, China). The verb 'check' is only carried by the name/title, and the description does not explicitly distinguish itself from the sibling check_visa_requirement, but the resource and output are concrete enough for an agent to grasp the core function.

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?

There is no explicit when-to-use or when-not-to-use guidance, and closely related siblings like check_visa_requirement and list_visa_free_destinations are never mentioned. The 'Mobility for a programme passport' framing only weakly implies a mobility-assessment scenario, so an agent must infer when this tool is the right choice.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior5/5

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

The annotations already mark the tool read-only and non-destructive, and openWorldHint=false aligns with the fixed dataset claim. The description adds substantial behavioral detail: exact outcome types, dataset coverage, corroboration/verification links, and an explicit caveat that rules change and the destination authority is final.

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?

The description is two focused sentences: the first front-loads the core scope and outcome categories, the second adds source and authority caveats. Every clause is informative, with no filler or repetition of schema details.

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 two-parameter read-only lookup with an output schema present, the description is complete: it defines the query scope, enumerates possible results, states dataset coverage, names the returned supporting links, and warns about authority. Nothing essential 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 already have descriptive text, examples, and the special 'Schengen' case. The description reinforces the one-to-one pairing but adds no new parameter-level semantics, so it meets the baseline without exceeding it.

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 states the operation: checking the visa requirement for exactly one nationality to exactly one destination, and it enumerates the possible outcome categories. It distinguishes itself from list-style siblings by emphasizing the single-pair scope, though it does not explicitly name alternatives like get_entry_requirements or check_visa_free.

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 description gives clear usage context: single nationality/single destination lookups, backed by a fixed 199x199 dataset, with results returned alongside Wikipedia and IATA references. It does not explicitly state when not to use this tool or name preferred sibling tools, leaving the routing partly implied.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior5/5

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

Annotations already mark the tool read-only and non-destructive, and the description adds substantial behavioral context: it returns no-useful-election when nationality opens nothing, warns that Swiss professio juris is VOID if Swiss nationality is later acquired, flags hard timing rules, and states that every election needs a properly executed declaration. It also adds input-format and data-privacy constraints plus an information-only 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?

The description is dense but information-rich, with the core question front-loaded and no filler or marketing language. It is one long paragraph and could benefit from bullet structure, but each legal detail materially helps the agent understand the analysis.

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 legal-analysis tool with an output schema, the description covers the essential behavior: instruments, elections, timing, situs overrides, no-useful-election handling, and execution requirements. The main gaps are that spouse_nationalities is not integrated into the narrative and sibling-selection guidance is only implicit.

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%, so the baseline is 3, but the description creates a real conflict: it says 'Pass ISO alpha-2 codes only,' while the spouse_nationalities schema explicitly expects country names (example 'Brazil'). It does add useful timing nuance around nationality at the time of the agreement, but the overgeneralized coding instruction could mislead an agent into passing the wrong format.

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 concrete question and then names exactly what the tool returns: default applicable law, instruments in scope, elections available, timing rules, situs overrides, and the trade-off involved. This is a specific verb-plus-resource definition with enough detail to distinguish it from sibling tools like succession_conflict_map or 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 Guidelines3/5

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

The domain framing ('cross-border family succession, matrimonial property and divorce') implies when the tool is relevant, and it lists the inputs used. However, it never explicitly states when to prefer this tool over alternatives like succession_conflict_map or matrimonial_regime_screen, and it gives no exclusionary guidance.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish read-only and non-destructive behavior. The description adds meaningful context beyond that by stating the tool provides 'comparative facts only' and is 'information, not advice', which sets expectations that it will not recommend a structure. No contradiction exists.

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?

The description is compact and front-loaded: it immediately names the action and scope, then lists the comparison dimensions, then gives the input format, then adds an important caveat. Every sentence earns its place and there is no redundant 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?

For a single-parameter, read-only tool with a rich output schema and safety annotations, the description is complete. It covers the input range and format, the fields being compared, the informational boundary, and the decision-relevant context about the owner's residence and goals.

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 describes the 'structures' parameter as '2-6 profile keys'. The description adds value by providing concrete examples of valid keys and emphasizing that input must be an array of profile keys, reinforcing the schema without repeating it verbatim.

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 specific verb ('compare'), a clear resource ('formation structures'), and enumerates the exact comparison dimensions. This distinguishes it from sibling tools like compare_programmes and compare_scenarios without needing to open any 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?

The description provides clear context for when to use the tool by defining its scope ('formation structures') and specifying the comparison dimensions. It also frames the output as comparative facts rather than advice, though it does not explicitly name alternative tools or state when not to use it.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, covering safety. The description adds meaningful behavioral context by detailing what the output contains (rank, composite, dimension scores, deltas, leads, URL) and clarifies that the URL is conditional ('where one exists'). It also distinguishes the two artefacts (canonical versioned vs classic) which helps set expectations. This goes beyond annotations and provides useful transparency.

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?

The description is two sentences with zero filler. It front-loads the core purpose, then efficiently explains the two invocation modes and their outputs. Every piece of information earns its place; no redundancies. The structure is easy to scan and digest.

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?

Given the tool has an output schema (so return details are covered elsewhere) and annotations (safety covered), the description covers all decision-relevant aspects: choosing between the two modes, what parameters to pass, and what outputs to expect. It is complete enough for an agent to invoke correctly. A minor enhancement could explicitly note that a and b should not be combined with ids, but the phrasing 'Or pass ids' makes this sufficiently clear.

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% (each parameter has a description). The description adds extra semantic value by explaining that 'a' and 'b' are used together for the two-programme canonical artefact, and that 'ids' is used for the 2-4 programme classic comparison. This clarifies the mutually exclusive usage and the relationship between parameters, 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?

The description clearly states the tool's function: compare programmes side by side. It names two distinct invocation modes (a+b for the canonical artefact, ids for the classic multi-column comparison) and enumerates the specific outputs of each (rank, composite, dimension scores, deltas, leads, URL; cost, processing, mobility, etc.). It differentiates from sibling tools like compare_formation or compare_scenarios by specifying the programme context and the Mirabello Index.

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 description explicitly tells the agent when to use each parameter set: 'Pass a + b... Or pass ids (2-4)'. This is clear usage guidance for the two modes. However, it does not explicitly state when to prefer this tool over sibling comparison tools (e.g., compare_scenarios, compare_formation), though the object of comparison (programmes) is implied. It provides good guidance within the tool but not exclusions across siblings.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive. The description adds useful behavioral context beyond those flags: it is 'informational only, not advice', limited to 2-8 jurisdictions, and positioned as a synthesis view that should be combined with other tools for a complete picture.

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 description is front-loaded and information-dense, but the second sentence, 'The synthesis view over the tax, residence, structure, reporting and succession layers,' largely repeats the dimension list from the first sentence. It is useful but slightly redundant, so it does not quite achieve maximal conciseness.

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?

Given an output schema exists and the annotations cover safety, the description provides enough operational context: jurisdictional scope, covered dimensions, input formats, limitations, and next steps. It is complete for practical use, though it leaves the semantics of 'pathway' mostly to the 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 adds value by explaining that cc can be supplied as a comma-separated list (e.g. 'AE,PT,SG') and by summarizing the scenario shape as {cc,pathway}, which is not fully explicit in 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?

The description opens with a specific action and resource: 'Side-by-side comparison of 2-8 jurisdictions across every wealth-protection dimension at once.' It then enumerates the exact covered layers, which clearly separates this synthesis tool from single-dimension siblings like get_country_tax or compare_formation.

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 description gives clear input conventions ('Pass scenarios as an array of {cc,pathway} or cc as a comma list') and contextual guidance ('Informational only, not advice; combine with the immigration route and a specific double-tax-treaty corridor for the full picture'). It does not explicitly name alternatives or exclusions, but the intended use case is clear.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive, so the bar is lower. The description adds useful behavioral context by specifying what aspects are evaluated and adding the caveat 'Indicative, not advice,' which clarifies reliability expectations. No contradiction with annotations is present.

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 concise, front-loads the core purpose, and avoids redundancy with the schema and annotations. It earns a high score for efficiency, though the conflicting parameter instructions prevent full marks.

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?

The description covers output themes and the non-advice caveat, and the presence of an output schema reduces the need to explain return values. However, the parameter confusion is a substantial completeness gap: an agent cannot reliably call this tool without resolving whether inputs are country codes or dates.

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

Parameters1/5

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

Schema coverage is 100%, but the description introduces a serious mismatch: it says 'Use ISO alpha-2 codes' while the schema clearly defines 'from' and 'to' as ISO dates representing a date range. This conflicts with the schema's examples and descriptions, actively misleading an agent about what the parameters mean.

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 tool's function: assessing double-tax-treaty position for a relocation from one jurisdiction to another, including DTA status, tie-breaker rules, withholding rates, and limitation-of-benefits tests. It is specific enough to distinguish from other tax-related siblings, though it does not explicitly name an alternative.

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 the intended use case through 'relocation corridor' and provides the operational instruction 'Use ISO alpha-2 codes.' It does not, however, state when to prefer this tool over siblings like withholding_map or get_country_tax, and no exclusion criteria are given.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so no safety concern is hidden. The description adds valuable behavioral context beyond annotations: statelessness, the prohibition on passing personal data, and the non-exhaustive/informational nature of the output.

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

Conciseness4/5

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

The description is dense, front-loaded with the substantive obligation list, and includes only high-value guardrails afterwards. It earns most of its length, but the parenthetical flag list partially duplicates the schema and is incomplete, so it is not perfectly economical.

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?

Given the output schema, full schema parameter coverage, readOnlyHint=true, and zero required parameters, the description is largely sufficient: purpose, privacy behavior, and caveats are all covered. It only lacks an explicit pointer to sibling alternatives and the flag list omits two schema parameters.

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 fully documents all ten boolean flags and the description adds little semantic value beyond relisting some of them as 'boolean flags'. In fact, the parenthetical list omits rbi_applicant and eu_cross_border_arrangement, making the flag list slightly incomplete, but this is not a contradiction.

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 uses the specific verb 'Lists' with the resource 'reporting/compliance obligations a stated profile may trigger' and enumerates the regimes (FATCA, CRS, CARF/DAC8, DAC6, PEP, etc.), which clearly distinguishes it from sibling checklist and eligibility tools even though no sibling is named.

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 operational guidance on how to invoke the tool ('Pass boolean flags...') and clear boundary conditions ('STATELESS — pass only non-identifying flags, never personal data' and 'Informational only, not legal/tax advice'), so an agent knows when a first-pass compliance screening is intended. It does not explicitly name alternatives or when-not-to-use conditions, 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.

create_enquiryCreate Real-Estate EnquiryAInspect

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). Delivers the enquiry to Mirabello and returns the next step. This is the correct hand-off: CBI/RBI purchases must go through a licensed advisor and a government-approved project — Mirabello manages the property purchase AND the citizenship/residency application end to end.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is a side-effecting, non-read-only tool (readOnlyHint=false, openWorldHint=true). The description adds important context beyond that: the enquiry is delivered to an external licensed broker, requires explicit GDPR consent, and returns the next step. There is no contradiction with 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.

Conciseness5/5

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

Three sentences with no wasted content: the core action is front-loaded, requirements and result are stated compactly, and the final sentence gives the strategic rationale. Every sentence earns its place.

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 tool with 11 parameters, an output schema, annotations, and many siblings, the description communicates the essential context: what is being routed, to whom, under what consent requirement, and what the caller gets back. It could have more explicitly excluded pure consultation requests, but no critical invocation detail 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 all 11 parameters. The description highlights the required trio (property_id, email, consent) and frames consent as GDPR-related, but it largely restates what the schema already conveys. It does not materially enrich individual parameter meaning.

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 clearly states the action ('Route a qualified buyer enquiry about a specific property to Mirabello Consultancy'), identifies the resource (property) and recipient, and separates this tool from read-only siblings like get_property or search_properties. It also specifies the key preconditions in the first sentence.

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 description gives strong contextual guidance: it is the correct hand-off for CBI/RBI purchases and explains why Mirabello must be involved. It does not explicitly name alternatives such as book_consultation or get_property, so the when-not-to-use guidance is only implicit rather than fully exclusionary.

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

estimate_timelineEstimate TimelineA
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already carry readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds a useful behavioral nuance: the stage breakdown is only included 'where available', implying possible partial output. Beyond that, no deep behavioral detail is given, but the bar is lower due to annotations.

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 with no filler. 'Step-by-step' conveys the format, 'expected timeline for a programme' conveys the scope, and 'where available' conveys a caveat. Every clause earns its place.

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 tool with an output schema and annotations, the description is largely complete: it explains the output nature and the data availability caveat. It does not address choice relative to close siblings, but that gap is already scored under usage guidelines.

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 programme_id with an example and a clarification that it is not a country name or website slug. The description adds no parameter-level meaning, 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?

Description states a specific verb 'estimate' and resource 'timeline for a programme', and details the content: published processing time plus stage breakdown. The 'step-by-step' phrasing clarifies output format, and the content clearly distinguishes this from the close sibling get_processing_times, which likely returns only raw processing times.

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 explicit guidance on when to use this tool versus alternatives such as get_processing_times or estimate_total_cost. Usage is implied through the purpose, but the description does not state exclusions, prerequisites, or conditions that would route an agent to a different tool.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the agent knows this is a safe read operation. The description adds valuable behavioral context: the estimate is 'indicative' and excludes certain fee categories, which sets expectations about accuracy and scope. It doesn't describe the output format, but the output schema exists and 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.

Conciseness5/5

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

Two sentences with zero waste. The core action and scope are front-loaded, and the exclusions are stated in a compact second sentence. Every word earns its place.

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 read-only estimation tool with a full output schema and 100% parameter coverage, the description is nearly complete. The only minor gap is that it doesn't explicitly state that programme_id must come from list_programmes, but the schema already covers that. The description's exclusions and 'indicative' qualifier add the necessary context beyond structured fields.

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 four parameters. The description adds the high-level context that the estimate is for a 'family' and includes 'family add-ons', which maps to the children/adults parameters, but it doesn't add detail beyond what the schema provides. 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?

The description states a specific verb ('Estimate'), a specific resource ('total cost of a programme for a given family'), and the exact components included ('investment + government & due-diligence fees + family add-ons'). It also explicitly excludes professional/property/legal fees, which distinguishes it from other cost-related tools and clarifies its scope.

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 description clearly implies when to use this tool: when an indicative total cost estimate for a family is needed. It does not explicitly name alternatives or exclusions, but the explicit exclusion of professional/property/legal fees and the 'indicative' qualifier provide clear context. It could be improved by naming a sibling like compare_programmes or estimate_timeline as an alternative for different needs.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds transparency about what results are selected or emphasized: 'donor tax relief, the entity tax status, cross-border granting and the standout vehicle.' No contradiction with annotations was found.

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 two sentences and every part contributes: the main purpose, illustrative vehicle examples, output emphases, and the positioning relative to other advisory layers. It is somewhat dense but appropriately sized for a multi-faceted search tool.

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 search tool with two optional parameters, an output schema, and strong annotation coverage, the description is complete enough. It conveys scope, selection emphasis, and how it fits into the broader tool family, leaving no critical gap for an agent deciding whether or how to invoke it.

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%: the schema already defines vehicle with examples and donor_relief as a boolean for tax deduction/credit. The description reinforces these ideas but does not add meaningful semantics beyond the schema, so the high-coverage baseline of 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?

The description opens with a specific verb and resource: 'Find jurisdictions for setting up a CHARITABLE/PHILANTHROPIC structure.' It further distances itself from sibling tools by naming concrete vehicle types and positioning itself as 'the philanthropy/legacy complement' to residence, tax, and trust layers. An agent can clearly distinguish this from find_trust_jurisdictions and find_formation_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?

The phrase 'The philanthropy/legacy complement to the residence/citizenship + tax + trust layers' gives clear contextual guidance about when this tool is relevant versus the trust and formation siblings. It does not explicitly list when-not-to-use cases or name alternative tools, so it falls just short of a 5.

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

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds substantial context beyond those: qualifying residence excludes processing time, only fully verified statutes are covered, absence means unverified rather than no fast track, and transitional regimes are disclosed. This is exactly the kind of behavioral nuance that helps an agent trust and 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?

The description is long but front-loaded with purpose and usage, and each legal example earns its place by illustrating fast-track categories. The statutory citations add precision but make it denser than strictly necessary; still, nothing is purely 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?

Because an output schema exists, the description does not need to explain return shapes. It covers both call modes, exclusions, coverage semantics, and transitional regimes. Minor open questions remain about no-argument calls and combining nationality with cc, but the schema and output schema mitigate those gaps.

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 nationality, cc, and bloc. The description adds useful examples for nationality and cc, but it does not mention the bloc parameter at all and does not clarify behavior when multiple parameters are combined. This is an adequate but not exceptional contribution 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?

The description opens with a specific verb and resource: ranking citizenship routes by nationality-based fast tracks. It clearly distinguishes the two call modes — rank covered jurisdictions by nationality or inspect one jurisdiction via cc — and provides concrete legal examples that leave no ambiguity about what the tool computes.

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 description explicitly instructs when to pass nationality versus cc, and the schema documents the optional bloc filter. It does not explicitly compare this tool to sibling tools like check_eligibility or get_processing_times, but the in-tool mode guidance is unambiguous and actionable.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A3.6/5.0
Behavior4/5

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

With readOnlyHint=true and destructiveHint=false already in annotations, the description adds valuable context: it discloses the shape of the returned matches, notes that full profiles are not returned inline but are 'available on request', and flags a domain rule about profit tax following the owner. It also adds the 'Information, not advice' disclaimer. It does not mention auth or rate limits, but for a read-only filter tool this is reasonable.

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 front-loaded with 'FILTER' and the main purpose, then packs the constraints, return fields, and caveats. It is dense but reasonably organized, with each sentence adding some value. It is slightly longer than necessary because it lists return fields that are likely covered by the output schema.

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?

For a tool with 5 optional parameters and an output schema, the description covers filtering semantics, returned fields, and a domain caveat. However, it never states what happens when no constraints are provided (e.g., returns all jurisdictions or requires at least one filter), which is a notable gap given all parameters are optional.

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 parameters are already documented well. The description mostly restates the schema, with slight expansions like 'eu_clean' meaning 'exclude EU Annex I/II and FATF-listed' and 'remote_only' meaning 'fully remote formation.' This adds marginal clarity but does not materially go beyond the schema's 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?

The description clearly states a specific verb ('FILTER'), a resource ('Mirabello formation profiles'), and the purpose (find jurisdictions matching constraints). It enumerates the constraint dimensions, making the tool's function concrete. However, it does not explicitly distinguish itself from overlapping siblings like find_trust_jurisdictions or find_charity_jurisdictions.

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 'find company/structure jurisdictions matching constraints' implies when to use the tool, and the constraint list tells the agent what kind of selection it can perform. But there is no explicit guidance about when NOT to use this tool or which sibling tool to choose for related but different searches, so the guidance is only implied, not explicit.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the tool read-only and non-destructive; the description adds that it 'returns matching countries with their HNWI tax + CRS + EU-list (+ crypto) snapshot' and clarifies that non-CRS means 'no automatic financial-account exchange.' No contradictions with annotations.

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 front-load the purpose and filter list, and the final sentence adds useful combination guidance without padding. Every sentence earns its place for an 8-filter 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?

Given full schema coverage, read-only annotations, and an output schema, the description covers what the tool finds and what it returns. The only notable omission is explicit AND/OR behavior across multiple filters, which is a minor gap for a boolean-filter 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%, so the baseline is 3; the description groups the boolean criteria and paraphrases a few terms, but it does not add substantial meaning beyond the schema. It also leaves combination semantics (whether multiple true booleans are ANDed) implicit.

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 'Find countries by wealth-protection tax criteria' and enumerates eight concrete filters, making the action, resource, and scope unmistakable. It is clearly distinguished from sibling search tools like find_trust_jurisdictions or find_formation_jurisdictions by centering on tax/wealth-protection criteria rather than entity type or pathway.

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 context: this tool is for tax-criteria screening and returns a tax-plus-CRS/EU snapshot, and it explicitly recommends combining with a residence or citizenship route for a full tax-plus-pathway view. It does not, however, spell out when-not-to-use it or directly name sibling alternatives, so exclusions are left implicit.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description adds meaningful behavioral detail: it returns screened countries with key requirements, income thresholds, cost, and path to PR. This tells the agent what kind of output content to expect without relying on schema alone.

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 tight sentences with no filler: the main action is front-loaded, the return contents are summarized, and the important eu-free-movement caveat is placed at the end. Every sentence earns its place.

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 complete input schema and an output schema present, the description does not need to explain return formats. It covers the purpose, the scope of results, and the key special case, making it sufficiently complete for an agent to call the tool 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% for both parameters, so the baseline is 3. The description repeats some pathway examples already present in the enum and adds the eu-free-movement definition, but does not add substantial new parameter semantics 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?

The description uses a specific verb and resource: it finds countries offering a given immigration pathway. It names example pathway types and clarifies the special eu-free-movement case, which helps distinguish this pathway-query tool from sibling tools like check_visa_requirement or list_programmes.

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 description gives clear context for when to use the tool: when the agent needs to find countries for a particular pathway. It also provides a concrete usage rule about EU/EEA/Swiss citizens using eu-free-movement rather than a visa, though it does not explicitly name or exclude sibling tools.

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

find_trust_jurisdictionsFind Trust 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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already convey readOnlyHint=true and destructiveHint=false; the description adds valuable behavioral context beyond that: results are ranked by asset-protection strength and include statute, CRS status, and EU-list status. It also discloses filtering by vehicle or strong_protection, so an agent understands what the tool returns and how it behaves.

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 dense sentences with no filler: purpose and examples are front-loaded, the ranking and output fields follow, then filter behavior and positioning relative to other tools. Every clause 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 only two optional parameters, a full schema, an output schema, and safe read-only annotations, the description covers all an agent needs to invoke and interpret results. It even adds helpful domain positioning among a large sibling set.

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. The description reinforces that filtering is by vehicle or strong_protection, but adds no new format, constraints, or edge-case semantics 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 ('find') and resource ('trust & foundation jurisdictions'), with clear domain purpose (asset protection and succession planning). Concrete examples and the ranked-by-strength behavior make its scope unmistakable, and the closing complement clause distinguishes it from residence/citizenship 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?

Provides clear context for when this is relevant: trust/foundation wealth structuring, asset protection, succession planning, with a positional hint that it complements residence/citizenship pathways. It does not explicitly name sibling alternatives or when not to use it, but the scenario context is strong enough to guide selection.

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, POEM/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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safe-read profile is covered. The description adds meaningful behavioral context: it states the output is 'indicative, not advice' (disclaiming reliability), and it scopes the content to jurisdictional tax-risk flags. This goes beyond the structured annotations by clarifying the tool's advisory nature.

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?

The description is tightly packed: three short sentences plus a caveat. It front-loads the core purpose ('Anti-avoidance & relocation-tax flags'), then enumerates key included items, contrasts with headline rates, and closes with a format reminder and disclaimer. No wasted words; every segment 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?

For a single-parameter, read-only tool with an output schema present, the description is complete: it defines the resource, gives the input format, scopes the content, and warns about applicability. An agent has everything needed to invoke it correctly without reading 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?

The schema already provides full coverage of the single parameter 'cc' with examples and explicit format ('uppercase'). The description repeats the ISO alpha-2 requirement, which adds marginal value but does not introduce new semantics. Baseline 3 is appropriate given full schema coverage.

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 specific verb-resource combination: it flags anti-avoidance and relocation-tax risks for a jurisdiction, listing concrete components (CFC, GAAR, POEM, economic substance, exit tax, step-up). It explicitly contrasts with 'headline rates', which distinguishes it from siblings like get_country_tax. An agent can immediately tell what this tool does and why it exists.

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 description provides clear context for when to use the tool: when depth beyond headline rates is needed. The phrase 'depth behind headline rates' implies a contrast with rate-only tools, and the caveat 'Indicative, not advice' sets expectations. It does not explicitly name alternatives or state when not to use it, but the context is unambiguous enough for an agent to route correctly.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior4/5

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

Annotations already supply readOnlyHint=true and destructiveHint=false, so the description's burden is lighter. It adds value by disclosing that the output states default legal rules rather than predicting actual estate devolution, and by listing the specific questions the tool addresses. This is honest, useful behavioral context beyond the structured annotations.

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

Conciseness4/5

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

The description is a single dense, front-loaded passage with no filler; the jurisdiction-level concept comes first, followed by concrete legal aspects and a crucial caveat. The illustrative country examples earn their place, though the long list makes it slightly harder to parse at a glance.

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 one-parameter tool with an output schema and read-only annotations, the description covers purpose, scope, key legal dimensions, and a critical exclusion. Nothing an agent needs to select and invoke the tool correctly appears to be 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 baseline 3 applies. The description only reiterates 'Use ISO alpha-2', which the schema already states with examples and uppercase guidance. It adds no new meaning beyond the parameter 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?

The description specifies a jurisdiction-level forced-heirship and testamentary-freedom position and enumerates the exact legal aspects covered: reserved shares, freely-disposable portion, disinheritance, and trust/foundation interaction. It also scope-limits itself to default legal rules, which distinguishes it from estate-devolution and conflict-of-laws siblings.

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 'for a jurisdiction' and 'NOT how any estate will devolve' language provides a clear context and one exclusion, but the description never names an alternative sibling or explicit when-not condition. An agent must infer when to choose this over succession_conflict_map or matrimonial_regime_screen from sibling names alone.

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

generate_briefingGenerate Personalised BriefingAInspect

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

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, and the description adds complementary behavioral context: the generated URL expires after 90 days, and the tool can register the client for specialist follow-up contingent on email and consent (GDPR). These are genuine side-effect disclosures beyond the annotation flags. Minor gaps remain (e.g., what data is stored on registration, whether an email is dispatched), but nothing contradicts 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.

Conciseness5/5

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

Two sentences and roughly 50 words with the core function and inputs front-loaded in the first sentence and the optional side effect in the second. Every clause carries information and nothing repeats schema or annotation content.

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?

Given an output schema, safety annotations, and 100% parameter coverage, the description only needs to carry behavioral and selection essentials, which it does: inputs, outputs, URL validity, and optional registration. The notable gap is that all 14 parameters are optional and the description never states which combination yields a valid briefing. The absence of sibling-differentiation guidance also keeps this 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%, so the baseline is 3 even without parameter detail in the description. The description adds modest value by grouping parameters into a 'client profile' and hinting that family composition drives the cost math (children under/over 16 are priced separately in the schema). It does not, however, explain any parameter beyond what the schema already documents.

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 ('Generate a personalised Mirabello briefing') and enumerates distinct outputs — a ranked shortlist, full family cost math, and a branded shareable URL valid 90 days — that clearly separate it from siblings like recommend_programmes or estimate_total_cost. Inputs (nationality, budget, family, goals) are named, so an agent understands both function and scope 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?

Usage context is implied by the listed inputs (a client profile with nationality, budget, family, goals), and the prerequisite for the optional registration (email + consent) is stated. However, in a sibling set of 60+ tools, no exclusions or alternatives are named — an agent is not told to prefer estimate_total_cost or recommend_programmes for narrower requests. This leaves the when-not-to-use 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_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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/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, and the description does not contradict them. The description adds a useful content inventory but no additional behavioral context such as data freshness, response shape, or closed-world limitations; for a no-side-effect About tool, that is acceptable but not a distinctive disclosure.

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?

The description is one dense, well-structured sentence that front-loads the subject and then packs content categories and example use cases into a compact list. Every clause adds distinct value and there is no 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?

For a zero-parameter, read-only informational tool with an output schema present, the description sufficiently covers what the tool is about, what content it returns, and when to call it. Nothing needed to select or invoke it 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 accepts zero parameters and the schema coverage is 100%, so there are no parameter details for the description to clarify. The baseline of 4 applies because no parameter confusion is possible.

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 clearly identifies the resource as 'Mirabello Consultancy' and enumerates concrete content facets: track record, credentials, offices, languages, and services. The 'Use for' clause states the exact questions the tool answers, distinguishing it from sibling tools about countries, programmes, and structuring.

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 description provides explicit trigger examples: 'who is Mirabello / why use them / are they reputable' questions. It does not name sibling alternatives or say when not to use it, so it falls just short of a 5, but the intended context is unmistakable.

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 UpdatesA
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, covering the safety profile. The description adds that the listings are 're-verified,' which gives a hint about data freshness but doesn't go beyond that. It doesn't mention pagination, ordering, or what happens when no updates exist, but with annotations covering safety and a simple read operation, this is adequate.

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?

The description is a single, efficient sentence that front-loads the core function ('Recently re-verified listings') and then states the optional filter. There is no fluff or redundant information; every word contributes to the meaning. This is a model of concise tool descriptions.

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 read-only tool with one optional parameter and an output schema, the description covers the essential points: what is returned (listings with price/availability/sale status) and how to filter (since date). Since the output schema exists, the return format is not required in the description. The only minor gap is not mentioning that the result is a list, but that's implied. Overall, it is complete for the tool's simplicity.

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% since the only parameter 'since' is described as 'ISO date, e.g. 2026-06-01'. The description also mentions 'optionally since an ISO date,' reinforcing the parameter but adding no new semantics. Given high schema coverage, the baseline of 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?

The description clearly states the tool returns recently re-verified listings with price/availability/sale status, optionally filtered by a date. It uses a specific verb ('get') and resource ('availability updates'), making the purpose unambiguous. However, it does not explicitly differentiate from the sibling tool get_recent_changes, which could overlap in function, so it misses a point for sibling distinction.

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 'For agents keeping an inventory view fresh' gives a general usage context, implying this tool is useful when maintaining up-to-date inventory data. However, it provides no explicit guidance on when not to use it or how it compares to alternatives like get_recent_changes or subscribe_changes. The guidance is implied rather than direct.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the agent knows it's a safe read. The description adds valuable behavioral context beyond that: the 'Honest doctrine' about no guarantee and the 'Information, not advice' disclaimer, which inform the agent about the nature and limitations of the response. This goes beyond the annotation basics.

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 dense single paragraph but front-loads the core purpose ('NON-RESIDENT banking-access landscape per jurisdiction') before listing specifics. Every sentence contributes substantive content, though it is lengthy and could be broken into more digestible bullets. It is appropriately sized for the complexity of the tool.

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 tool with an output schema and read-only annotations, the description is highly complete. It covers the jurisdictions, the type distinction, the fintech vs traditional comparison, timelines, rejection causes, CBI synergy facts, and the honest caveat. The agent has enough information to decide when to call it and what to expect, without needing to open the 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 both parameters are documented in the schema. The description adds meaning beyond the schema by explaining that cc can be a jurisdiction code or 'EMI', that type filters to corporate/personal, and that omitting cc returns the coverage list. This clarifies the intended usage and edge cases beyond the schema's simple string descriptions.

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 explicitly states the resource (non-resident banking-access landscape) and the verb (get), and enumerates the specific coverage: jurisdictions, corporate/personal lanes, fintech vs traditional institutions, timelines, minimums, rejection causes, and CBI/Golden-Visa synergy facts. This clearly distinguishes it from generic banking tools and even mentions the EMI layer, making its scope unambiguous.

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 gives clear parameter-usage instructions (pass cc, type, omit cc for coverage list) but does not explicitly compare against sibling tools like get_nonresident_banking or state when to choose this over others. It implies usage by detailing what it covers, but lacks explicit when-to-use/when-not-to-use guidance or alternatives.

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 — uniquely — what it means for FUNDING an investment-migration programme. This is the constraint that decides whether a client can actually pay for a CBI/RBI programme, and it is missed by every mobility-only analysis. 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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it returns regulatory data, includes a disclaimer ('Information, not legal/tax/financial advice'), and warns that exchange-control rules change frequently, advising verification. This goes beyond the annotations without contradicting them, enriching the agent's understanding of the tool's operational 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?

The description is informative but somewhat verbose. It opens with a rhetorical question and includes marketing-like phrasing ('uniquely', 'missed by every mobility-only analysis') that adds length without essential operational detail. While the key usage and output information is present and front-loaded, the extra flourishes could be trimmed for conciseness. It remains structured and readable, but not maximally efficient.

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 the tool's moderate complexity (2 optional params, no required fields) and the presence of an output schema, the description is complete. It specifies the exact data returned (regime, allowance, threshold, regulator, funding implications), explains invocation patterns, and adds a disclaimer about regulatory changes. The output schema covers return structure, so nothing critical is missing for an agent to call this tool 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 description coverage is 100%, so parameters are already documented. The description adds the usage semantics that both parameters are optional and explains the effect of omitting cc ('omit for all') and using the regime filter, which the schema does not convey. It also clarifies that cc is an ISO alpha-2 code, though the schema already states that. This extra guidance justifies a score above the baseline of 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?

The description clearly states the tool's function: returning exchange-control regime, outbound allowance, cash-declaration threshold, regulator, and implications for funding investment-migration. It uses specific verbs and resource references, and distinguishes itself from siblings by noting it is 'missed by every mobility-only analysis.' The purpose is unambiguous and differentiates this tool from get_mobility_optionality and other related 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?

The description provides explicit usage patterns: 'Pass cc for one jurisdiction; omit for all, or filter by regime.' It explains optional parameter usage and offers context for when to apply (deciding whether a client can pay for a CBI/RBI programme). However, it does not name specific alternative tools or explicitly state when not to use it, so it falls short of a full 5.

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

get_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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the tool read-only and non-destructive. The description adds meaningful context: the output is general information, not advice, and execution happens via licensed local partners. It also discloses the caveated tax-position content, which sets expectations beyond the 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?

Dense but purposeful, with the core function front-loaded before the profile contents and usage instruction. The long roster list is verbose but useful as a de facto enum; nothing in the description is filler, though the single-paragraph structure could be more scannable.

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 one-optional-parameter, read-only tool with an output schema, the description provides the full accepted key set, the omit-for-catalogue fallback, and a liability caveat. An agent has everything needed to invoke it correctly, and the return shape is already 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% and already documents the optional structure key with examples. The description adds value by enumerating all 30 valid profile keys, materially reducing the risk of an agent passing an invalid or hallucinated structure identifier.

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 that it returns the full formation profile for one structure from a named 30-profile roster and enumerates exactly which structures are covered. This clearly distinguishes it from catalogue-style or comparison siblings by framing it as a single-structure deep dive.

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 input contract clearly: pass a structure key for a profile, or omit it for the catalogue of available keys. It gives an agent a concrete selection rule, though it does not explicitly name alternatives like compare_formation or get_structuring_roster.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false. The description adds meaningful behavioral context by specifying what the returned profile includes: requirements, cost, processing, rights, path to PR/citizenship, and the official source, and by emphasizing exhaustiveness ('ALL screened pathways'). No contradiction with annotations.

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 with no filler: the core resource and scope are front-loaded, the parameter format is given with concrete examples, and every clause adds 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?

For a read-only lookup with one required parameter, a rich output schema, and full schema parameter descriptions, the description provides everything an agent needs to select and invoke the tool. 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 the schema already documents the cc, pathway, and nationality parameters, including the free-movement special case. The description only reinforces the ISO alpha-2 format, adding no meaning 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 identifies the resource ('Country immigration profile') and scope ('ALL screened pathways'), enumerating pathway types and explicitly noting 'beyond investment migration'. This distinguishes it from investment-migration siblings, though it lacks an explicit verb like 'get' or 'retrieve' and does not name alternative tools.

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 defines when the tool applies: all screened immigration pathways beyond investment migration, and it instructs the caller to use an ISO-3166 alpha-2 code. However, it does not explicitly state when to prefer this over sibling tools such as get_programme, list_programmes, or find_pathways, leaving routing largely implied.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations set readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the description doesn't need to repeat safety. The description adds context beyond annotations: it specifies scope ('wealth-protection view'), sources ('official/Tier-A'), and caution ('not tax advice'). It also lists the specific covered tax areas. This enriches behavioral understanding without contradiction.

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?

The description is a single, dense paragraph that front-loads the key scope, lists all major tax categories, and ends with actionable usage instructions. Every sentence earns its place; there is no filler or redundancy.

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?

Given the tool has an output schema (has_output_schema=true) and high schema coverage, the description need not detail every return field. It covers purpose, scope, source, usage, and a safety caveat. The only minor gap is lack of explicit sibling differentiation, but the detailed scope already implies its unique role. Thus, it is near complete.

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

Parameters5/5

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

Schema description coverage is 100% (the 'cc' parameter is described as ISO alpha-2 country code), so baseline is 3. However, the description's instruction to 'Use the ISO alpha-2 code' directly reinforces and operationalizes the parameter meaning, ensuring the agent knows the exact format. This added clarification justifies above baseline.

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 clearly states 'get_country_tax' returns 'HNWI tax profile for a country', enumerating specific tax components (income, capital gains, inheritance, wealth, exit tax, CRS/AEOI status, special regimes). This verb+resource+scope is specific and distinguishes it from siblings like get_capital_controls or withholding_map. It also notes the source (official/Tier-A) and informational nature.

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 description explicitly indicates 'Use the ISO alpha-2 code', providing essential usage guidance for the parameter. It also states 'not tax advice' which qualifies use. However, it doesn't explicitly mention when to prefer this over siblings like get_country, get_capital_controls, or withholding_map, though the detailed scope implicitly differentiates. Without exclusions, it falls short of a 5.

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

get_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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and destructiveHint, so the description carries the burden of explaining behavior. It goes beyond that by disclosing provenance fields, the CHECK-OFFICIAL-SOURCE withholding behavior for low-confidence details, and the advisory nature with 'INFORMATION, NOT ADVICE.' This is exactly the kind of behavioral context an agent needs.

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

Conciseness4/5

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

The description is longer than average, but it earns its length by packing three distinct content categories into a clear numbered structure. The lead sentence front-loads the purpose before diving into details, and the caveats at the end are concise.

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 data tool with a single optional parameter and an output schema, the description covers everything needed to select and invoke it: scope, parameter behavior, provenance, confidence handling, and verification expectations. Nothing critical 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 100% schema description coverage, the schema already fully documents the optional cc parameter, including format, examples, and case sensitivity. The description adds one useful nuance—omitting cc returns all jurisdictions—but it does not add substantial new semantic detail 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?

The description names a specific verb and resource: 'Per-country digital-money & identity progress relevant to wealth planning.' It then enumerates three concrete content areas (CBDC status, stablecoin status, digital ID status), which clearly distinguishes it from sibling getters like get_country or get_recent_changes.

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

Usage Guidelines4/5

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

The description states the scope and the cardinality rule: 'Pass cc for one jurisdiction, omit for all.' It also warns that statuses change and to verify sources, giving the agent a clear sense of when the tool is appropriate. It does not explicitly compare against alternatives, but the purpose is specific enough to make the intended use obvious.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is already known. The description adds context about the checklist varying by family composition and nationality, and that the final list is always confirmed by a specialist—this is useful behavioral information beyond the annotations. No contradiction; the added variability and confirmation details justify a 4.

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?

The description is two sentences with zero filler. It front-loads the core purpose in the first sentence and adds necessary variability context in the second. Every sentence earns its place, and it is highly scannable.

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?

This is a simple tool with one parameter, an output schema exists, and no nested objects. The description covers the tool's role, the specialist confirmation, and variability factors. Nothing critical is missing for an agent to call it correctly given the surrounding schema and annotations.

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 fully describes programme_id with an example and explicit instruction that it is not a country name or slug. The description does not add any additional parameter semantics beyond what the schema already provides, 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?

The description clearly states the tool retrieves a 'standard document checklist for a programme application' with details about per-programme type and programme-specific items. It is specific about the resource and scope, but it does not explicitly differentiate from sibling tools like compliance_checklist or residence_evidence_checklist, which might also relate to checklists. This prevents 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 Guidelines3/5

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

The description implies usage when a programme application's document checklist is needed, but it provides no explicit guidance on when not to use this tool or how it differs from alternatives such as compliance_checklist. No alternatives are named, and there is no when-not guidance, so it does not meet the bar for a 4.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description goes well beyond annotations by disclosing the caveats field, that 48% of departures state no destination, that totals are a floor, and that a 2015/2016 definitional break exists. This is exactly the kind of behavioral nuance an agent needs.

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

Conciseness4/5

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

The description is dense but well-structured: it front-loads the data source, then the return fields, then critical caveats, then usage instructions. It could be slightly trimmed, but the statistical context and caveats are valuable enough to justify the length.

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 description is complete for an agent to call this tool correctly: it identifies the data source, year range, return dimensions, critical caveats, and licensing requirements. With a full input schema, output schema, and read-only annotations, no essential operational context 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 all three parameters. The description's 'Pass year, destination or top' adds minimal extra meaning beyond what the schema provides, but it confirms the expected call pattern without conflicting with 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 clearly states the tool's function: returning departures, arrivals, net migration, and destination share from official German emigration statistics. It identifies the specific data source (Destatis statistic 12711-0008) and scopes it by destination and year, making it unambiguously distinct from the broad set of migration-related 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?

The description gives concrete usage context: pass year, destination, or top, and explicitly warns not to trend across 2015/2016 due to a definitional break. It also frames the tool as revealing preference rather than suitability. However, it does not name alternative tools or explicitly state when to prefer one sibling over another.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the Schengen 10-year issuance cap invalidates passports whose printed expiry is still in the future, and rules vary by nationality and change without notice. It also discloses the 'Information, not advice' limitation. This goes beyond the annotations without contradicting them.

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 dense but well-organized: it front-loads the core purpose, then details the specific rules, then gives the operational warning and usage instruction. Every sentence earns its place. It's slightly long but the density of useful information justifies the length.

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 read-only lookup tool with one optional parameter and an output schema, the description is nearly complete. It covers what the tool returns (entry requirements), how to invoke it (cc optional), and important caveats (enforcement varies, changes without notice). The only minor gap is not describing the output schema's structure, but the output schema exists and the description needn't explain return values per the rubric.

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% for the single 'cc' parameter, so the schema already documents it. The description adds meaning by explaining the parameter's role ('Pass cc for one destination; omit for all') and its semantics (ISO alpha-2 destination country code is in the schema, but the description clarifies the omission behavior). This is a meaningful addition 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?

The description states a specific verb ('get') and resource ('entry requirements') with a clear scope: passport-validity rules and health/vaccination entry rules for a destination. It distinguishes itself from siblings like check_visa_requirement and get_document_checklist by naming the specific rule types (6-month rule, Schengen 10-year cap, blank pages, yellow-fever certificate).

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

Usage Guidelines5/5

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

The description explicitly says 'Pass cc for one destination; omit for all' — a clear usage instruction. It also provides operational context ('a valid-looking passport is refused BOARDING if it fails these') that tells the agent when this tool matters. While it doesn't name sibling alternatives, the specificity of the rule types makes the use case unambiguous.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and destructiveHint, but the description adds meaningful behavioral context beyond those: establishment is decided by the registry/regulator and executed via licensed local partners, tax outcomes follow residence, and the output is explicitly information, not legal or tax advice. No contradiction with 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 dense and front-loaded with the core topic, and every clause adds substantive coverage detail. However, it is a single very long sentence with a heavy enumeration, which would be easier to parse if structured into bullets; the content is earned but the format taxes readability.

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 reference tool with one optional parameter and an output schema, the description covers scope, invocation mode, jurisdictional coverage, establishment caveats, and tax-residence nuance. Nothing an agent needs to decide whether to call it, and how 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.

Parameters5/5

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

The schema describes cc as an ISO alpha-2 code, and the description adds the essential behavioral semantics: passing cc targets one jurisdiction, while omitting it returns the covered list. This goes beyond the schema's field description and resolves the key ambiguity of an optional parameter.

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 identifies a specific resource—foundation and trust rules—and enumerates the exact topics covered, from legal form existence to UBO visibility. It also distinguishes itself from shortlist siblings by framing this as the deep-dive layer ('Deepens the charity and trust jurisdiction shortlists...'), so an agent can tell it apart from find_trust_jurisdictions or find_charity_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?

The description gives clear invocation guidance: 'Pass cc for one jurisdiction; omit for the covered list.' It also positions the tool contextually as the deep-dive successor to shortlist tools. However, it does not explicitly name alternative tools or state when not to use it, so the guidance is strong but not fully exclusionary.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior4/5

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

The description goes beyond the readOnlyHint annotation by disclosing the default TOP 25 behavior, the effect of limit:0, and that provisional programmes are excluded from the headline ranking. This gives the agent useful behavioral context without contradicting annotations.

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?

The description is three sentences with no fluff. Key behavioral facts are front-loaded, and each sentence adds a distinct piece of information: what the index is, how to filter, and how provisional entries are handled.

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 tool with two optional parametersebschemas covering both and an output schema present, the description covers everything an agent needs: the default return size, how to get more or all results, and how data quality is flagged. No critical information 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 already 100%, but the description adds meaning on top: it explains the default limit of 25, the special limit:0 semantics, and the type filtering purpose. This is genuinely helpful 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 clear verb and resource: it returns a composite 0–100 ranking of CBI/RBI programmes, and covers the major dimensions assessed. It is specific enough to be understood, though it does not explicitly differentiate itself from sibling tools like get_wealth_index 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 explains how to filter and limit results, including the default TOP 25 behavior and the special limit:0 option. However, it does not provide explicit guidance on when to use this tool versus alternative ranking/comparison tools among the many siblings.

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

get_mobility_optionalityMobility 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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnlyHint and destructiveHint, so the safety profile is established. The description adds value by disclosing the planning-only perspective, that passport reach is contextual, and that the content is information rather than advice.

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?

Every sentence earns its place: the first defines scope and content, the second clarifies the passport-context caveat, and the third gives invocation and advisory boundaries. The core definition is front-loaded and no filler appears.

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 the single optional parameter, the presence of an output schema, and read-only annotations, the description is complete. The agent knows what the tool returns, how to scope it, when to omit the parameter, and how to use the result within a broader workflow.

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 input schema already documents cc as an ISO 3166-1 alpha-2 code with examples at 100% coverage. The description adds the important semantic that omitting cc scopes the result to all jurisdictions, which is not stated in 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?

The description clearly defines the resource: strategic mobility optionality for a jurisdiction, listing the exact attributes returned (minimum physical presence, family inclusion, path to permanence, processing time, regulator). It explicitly differentiates from passport-strength tools by saying 'not passport strength' and treating visa-free count as context only.

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?

Direct invocation guidance is present: 'Pass cc for one jurisdiction, omit for all.' It also gives a clear 'not passport strength' boundary and advises combining with the immigration profile and consultation. It does not name alternative sibling tools explicitly, but the exclusions are still usable.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context beyond that: 'Mirabello informs and orchestrates but does not file applications', 'Decided solely by the competent registry or court', and 'Information, not legal advice'. These caveats set correct expectations for an agent and the user.

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?

The description is dense but every sentence earns its place: scope, coverage areas, typical use cases, parameter behavior, and limitation/disclaimer. It is front-loaded with the core purpose and avoids redundant restatements of the schema or annotations.

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 the single optional parameter, rich output schema, and annotations, the description fully equips an agent to invoke the tool correctly. It explains what will be returned, when to use it, how to pass the parameter, and what the tool does not do, leaving no critical operational 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?

The schema already documents cc as an ISO alpha-2 country code with examples, so baseline is 3. The description adds meaning by clarifying that cc is optional ('Pass cc for one jurisdiction; omit for the covered list'), which is not explicit in the schema and helps an agent decide how to invoke 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?

The description opens with the specific resource 'LEGAL NAME CHANGE rules for a jurisdiction' and enumerates exactly what aspects it covers: permission grounds, deciding authority, applicants, process, cost, timeline, passport effects, transliteration, and foreign record persistence. This makes the tool's purpose unmistakable and distinguishes it from sibling get_* 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?

The description gives clear usage triggers ('needed after marriage, after naturalisation, and when a non-Latin name must be rendered consistently') and precise input instructions ('Pass cc for one jurisdiction; omit for the covered list'). It does not explicitly reference an alternative sibling for exclusion, but the usage context is strong enough to guide selection.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already signal read-only and non-destructive behavior, but the description adds significant interpretive context: statutory and practical bank appetite are kept separate, minimums are bank policy not law, no account opening is ever guaranteed, and CRS/FATCA transparency is always present. These caveats materially shape how an agent should interpret the tool's output.

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 longer and uses heavy capitalization, but it is front-loaded and information-dense. Most clauses carry operational meaning, and the length is justified by the tool's complexity, though it could be more formally structured.

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 the simple optional parameter and the presence of an output schema, the description covers scope, profiles, parameter behavior, the distinction between law and policy, and critical limitations. Nothing essential is missing for correct invocation.

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 schema already documents cc as an ISO alpha-2 country code with examples at 100% coverage. The description additionally explains the optionality behavior—pass cc for one jurisdiction, omit for the covered list—which is not present in the schema and controls the returned scope.

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 clearly states the tool provides bank-account access for foreign non-residents in a jurisdiction, and enumerates two specific profiles: non-resident individual and foreign entity. It names its scope and key distinction—statutory position versus practical bank appetite—which separates it from related banking 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?

The description gives clear invocation guidance: pass cc for one jurisdiction, or omit it for the covered list. It clearly frames when the tool is relevant, though it does not explicitly name alternatives or state when not to use it relative to the sibling get_banking_access tool.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.2/5.0
Behavior4/5

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

With readOnlyHint and destructiveHint already covering the safety profile, the description adds non-obvious context: citizenship is permanent even if a passport lapses, results are information rather than advice, and figures include official sources and last_verified dates. It also scopes approximations and exceptions like Vanuatu in-person biometrics. No contradiction with 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 dense but efficient: every clause covers a fact category, an exception, or a caveat, and the target resource is front-loaded. It is a single long run-on paragraph, which slightly hurts scanability, so it does not receive a 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?

Given an output schema exists and annotations characterize safety, the description covers country selection, six-country scope, current rule changes, processing and biometric details, ECCIRA deadlines, source URLs, last_verified, and the information-not-advice disclaimer. Nothing essential for selecting or calling the tool 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?

The input schema already fully documents the country parameter as 'programme id or country alias; omit for all six', and the description essentially restates this with examples. Since schema coverage is 100%, the description adds no new parameter-level 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?

The first clause names a specific resource—CBI passport-renewal facts—and immediately delimits the six covered countries and the fact categories included. This goes beyond the tool name and title, and clearly separates it from sibling get_* 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?

The description makes the call context clear: use this tool when passport-renewal facts for these CBI countries are needed, and 'omit for all six' to get broad results. It does not explicitly name alternatives or exclusions, but the resource is specific enough that an agent can route to it safely.

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.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, so the tool is safe. The description adds the distinction of 'estimate' (not exact) and the scope option (one or all), which adds behavioral context. It doesn't explicitly state that it's read-only, but the annotation covers that. The description doesn't mention potential rate limits or data freshness, but for a simple read tool, this is adequate. No contradiction with annotations.

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?

The description is one sentence, front-loaded with the core purpose, and efficiently conveys the two usage modes. Every word earns its place. It is concise without being under-specified.

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?

The tool is simple (one optional parameter), has an output schema (so return format is covered), and annotations handle safety. The description clarifies the scope (one or all) which is important for optionality. It doesn't mention error cases or what happens if the id is invalid, but given the simplicity, this is acceptable. A 4 is appropriate; it could be a 5 if it mentioned that omitting id returns all programmes, but the description already implies that with 'or all'.

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 schema covers 100% of the parameter, including examples and a clear note that it's a programme id, not a country name or website slug. The description reinforces the parameter by saying 'by id or all', which clarifies that id is optional. Since schema coverage is high, the description adds value by explaining the 'all' behavior, but the schema already has examples. Baseline is 3, and the description's clarification of the optionality and the 'or all' case earns a 4.

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 clearly states the tool returns processing-time estimates, for either a single programme (by id) or all programmes. The verb 'get' and the resource 'processing times' are specific, and it differentiates from siblings like estimate_timeline and get_programme which likely cover different aspects. The phrase 'or all' clarifies the optional id parameter.

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 description implicitly indicates when to use it: when processing-time estimates are needed, for one programme or all. It doesn't explicitly name alternatives or when not to use, but given the sibling list includes estimate_timeline and get_programme, the description could be clearer. However, the context of a single id from list_programmes provides enough guidance for most cases. I would have liked an explicit note about using estimate_timeline for broader timeline estimation.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive, so the description does not need to restate safety. It adds useful behavioral context by specifying the exact substance of the lookup and the identifier format. No error behavior is discussed, but with an output schema and read-only annotation, the disclosure is adequate.

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?

The description is one dense, front-loaded sentence that immediately identifies the tool's purpose before listing the contained data. Every phrase adds information, and the examples are useful without being verbose.

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 one well-documented parameter, a read-only annotation, and an output schema present, the description covers everything an agent needs to select and invoke the tool correctly. It explains what will be retrieved and how to supply the id.

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%: the schema already documents the id parameter with examples and an explanatory note that it is not a country name or website slug. The main description repeats the examples but adds little meaning beyond what the schema provides, so the baseline of 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?

The description states a specific verb and resource: 'Full detail for one programme by id', immediately distinguishing it from list_programmes and compare_programmes. It also enumerates what 'full detail' includes (routes, fees, processing, mobility, tax, path to citizenship, Mirabello score), so the agent knows exactly what this tool returns.

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 description clearly implies when to use it: when a known programme id exists and full detail for that single programme is needed. The input schema reinforces this by saying the id is 'as returned by list_programmes', which gives a helpful prerequisite. It does not explicitly name alternatives or exclusions, but the single-programme-by-id framing provides clear context.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint, so the read-only safety profile is covered. The description adds valuable context beyond annotations: data is 'indicative' and must be verified with Mirabello, and documents such as brochure and due-diligence pack are not returned by the tool but must be requested separately.

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 with no filler: the first front-loads the core purpose and content fields, and the second adds the broker-of-record and verification caveat. Every clause contributes meaningful information for invoking the tool correctly.

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 lookup with a full output schema, this description is complete. It covers what data is included, acknowledges missing-data cases ('where disclosed'), and warns that values are indicative and require verification with the broker.

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 required parameter slug is already well documented in the schema. The description only repeats that lookup is by slug and adds no new meaning or constraints 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 and resource: 'Full detail for one investment property by slug', and enumerates the exact data domains returned (price, specs, location, programme, developer, availability, freshness). This clearly distinguishes it from sibling get_* tools like get_property_law or get_programme, and from search_properties which returns listings rather than one property.

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 slug parameter is defined as 'exactly as returned by search_properties', which strongly implies the tool is meant to be used after a search to retrieve full detail for a chosen listing. There is no explicit mention of alternatives or exclusions, but the 'one investment property by slug' scoping gives clear usage context.

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

get_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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses useful behavioral nuances: federal states are flagged subnational, no country-wide answer is inferred, rules change without notice, conveyancing runs through licensed local professionals, and the output is information rather than legal/tax/investment advice. This significantly enriches what the annotations alone convey.

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 dense and long, but nearly every clause adds a distinct legal dimension, usage caveat, or scope clarification. Scope is front-loaded in the first line, and the final disclaimers earn their place given the legal nature of the tool.

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 one-parameter, read-only tool with an output schema, the description is comprehensive: it names the legal areas covered, explains jurisdiction-level invocation, notes federal-state nuances, warns about changing rules, and sets expectations with disclaimers. An agent has enough context to select and call 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?

The schema already documents cc as an ISO alpha-2 country code with 100% coverage, so the baseline is 3. The description adds optionality semantics not present in the schema: pass cc for one jurisdiction, omit it for the covered list. This is meaningful extra guidance, though the 'covered list' itself is not enumerated.

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 identifies a specific resource—real-estate law for foreign buyers in a jurisdiction—and enumerates concrete legal topics such as freehold restrictions, approval regimes, taxes, and inheritance. It also differentiates itself from listing-oriented siblings with 'The law behind a purchase, not listings,' making the tool's purpose unmistakable.

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 description gives clear invocation guidance: 'Pass cc for one jurisdiction; omit for the covered list,' and explains how federal states are treated subnational rather than as a single country-wide answer. It includes an exclusion ('not listings'), but does not explicitly name an alternative sibling tool to use when listings are needed.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint true and destructiveHint false, so the description does not need to cover safety. It adds behavioral context by describing the freshness statuses (fresh|aging|stale|CHECK-OFFICIAL-SOURCE) and the recheck_by field, which informs the agent about the dynamic nature of the data. No contradiction.

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 description is long, enumerating many return fields. While informative, it could be tightened by moving field details to the output schema. The opening sentence is clear, but the list is somewhat verbose for a tool with only two parameters.

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?

Given the output schema exists, the description need not explain return values in full. It covers purpose, usage, and key behavioral aspects like freshness statuses. It is complete enough for an agent to decide when to call it and what to expect.

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 both cc and pathway described. The description reiterates 'Pass cc (+ optional pathway)' but adds no new semantic detail beyond the schema, so a 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?

The description clearly states the tool returns citation-first provenance for a country's pathway facts, enumerating the evidence, derivation, confidence, and freshness components. It distinguishes from sibling get_* tools by focusing on provenance rather than the underlying data.

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 explicitly states 'Use this to CITE Mirabello data with a source + as-of date and to know when to re-verify,' providing clear when-to-use guidance. It does not explicitly exclude alternatives, but the purpose is distinct enough that an agent would understand when to choose it over get_country or get_programme.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it highlights primary-source verification, freshness, and the structure (field-level diffs from->to + cited source). Annotations already declare readOnlyHint=true, so no contradiction. However, it does not mention pagination or default limits, which is a minor gap.

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

Conciseness5/5

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

The description is a single dense paragraph with no wasted words. It front-loads the core purpose, lists specifics, and ends with actionable usage guidance. It is long but justified given the tool's scope.

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 that an output schema exists and annotations cover read-only safety, the description covers all necessary aspects: what data is returned, the source quality, use case, and filtering. Nothing critical is missing for an agent to select and invoke 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 covers 100% of parameters with descriptive text, but description adds value by explaining that 'cc' filters to a single country and 'limit' keeps the answer small. This reinforces usage intent beyond raw schema definitions, allowing a baseline 3 to be raised.

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 clearly states the tool reports recent changes across investment-migration programmes, and explicitly lists the types of changes covered. It differentiates from siblings by emphasizing primary-source verification and the inclusion of field-level diffs and official legislation changes.

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 description explicitly states when to use it ('use for what changed recently / latest questions') and provides a clear filtering instruction. However, it does not mention when not to use it or what alternative to consider (e.g., subscribe_changes for monitoring or get_programme for static details).

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds context about output structure (ranked list, official-source links, types of regulators) and the international layer, which goes beyond the schema and is useful. It does not contradict 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 dense paragraph, but every sentence adds information: purpose, ranking, links, international layer, and usage. It is not overly verbose, though it could be split into clearer sentences. It is front-loaded with the primary purpose.

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?

Given an output schema exists (per context signals), the description does not need to explain return values. It covers purpose, invocation, parameter semantics, and content scope. It lacks edge-case guidance (e.g., invalid cc, conflicting parameters), but for a read-only registry with two optional parameters, it is sufficiently complete.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds critical semantics: it clarifies that cc and international are mutually exclusive ways to query ('Pass cc for one jurisdiction, or international:true'), and provides example formats for cc (ISO alpha-2 or roster keys). This goes well beyond the schema descriptions, which only say 'ISO alpha-2 (or roster key like MY-LABUAN, KZ-AIFC)' and 'True to include international/offshore structures'. The description makes the parameter relationship explicit.

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 clearly states the tool returns a registry of regulatory bodies per jurisdiction, with ranking and links, and includes an international layer. It is specific about the content and scope (tax, company formation, etc.), distinguishing it from sibling tools that cover narrower topics like get_country_tax or get_company_formation.

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 explains how to invoke the tool ('Pass cc for one jurisdiction, or international:true'), but does not explicitly contrast it with alternatives or state when to prefer this over other registry-type tools. The guidance is implicit rather than explicit, so an agent must infer the use case.

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 PlaybookA
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds a useful 'rule zero' caveat that profit tax follows the owner rather than customers, and clarifies what holding-layer options genuinely deliver, which helps the agent set expectations and avoid overstating benefits.

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 dense but each clause contributes distinct information: market focus, archetypes, holding options, the tax caveat, and optional filtering. It is longer than minimal but remains scannable and front-loaded with the resource name and purpose.

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 zero required parameters, full schema coverage, and an output schema present, the description provides enough orientation for an agent to invoke the tool and interpret likely results. It lacks explicit sibling routing, but the level of detail about markets, archetypes, and holdings makes the tool's role clear within the broader context.

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 input schema documents all three parameters at 100% coverage, so the baseline is 3. The description adds concrete allowed values for market (USA, EU, Switzerland, Asia, Middle East) and archetype (solo, scale-up, enterprise), and explains how the optional parameters narrow the playbook, going beyond the schema's brief property 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?

The description clearly identifies the tool as a structuring playbook for online/global businesses and enumerates its three content dimensions: customer-market setups, archetype stacks, and holding-layer options. It is specific about the resource and scope, though it does not explicitly differentiate from siblings like get_structuring_roster; the detail provided makes the distinction inferable.

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 notes that you can optionally pass a market or archetype 'to focus', which gives a clear usage direction for varying the query. However, it does not explicitly state when to use this tool over alternatives such as get_structuring_roster or plan_global_setup, nor does it list any exclusions.

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 RosterB
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 the agent knows it is a safe read. The description adds useful context about the curation criteria (Mirabello Standard, EU/FATF hygiene) and the scope (195-country screen). It does not describe output format or pagination, but that is covered by the output schema. The description adds value beyond annotations without contradicting them.

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 reasonably concise, front-loaded with the core purpose, and includes a useful list of jurisdictions and standards. It is not overly verbose, and every sentence contributes to understanding the tool's scope. The structure flows well from purpose to content to optional filtering.

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?

Given the tool has one optional parameter and an output schema, the description is fairly complete. It explains what the roster contains, the curation standard, and the optional filter. The only minor gap is the omission of the 'watchlist' lane in the filter options, but this is mentioned in the roster description itself. Overall, an agent can correctly invoke the tool with confidence.

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?

The schema covers 100% of the parameters (the single 'lane' parameter is documented with its allowed values). The description adds that the filter is optional and lists the lanes as 'corporate, trust, personal', but omits 'watchlist' which is present in the schema. This is a minor discrepancy, but overall the description reinforces the parameter meaning without adding substantial new information.

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 states that this tool provides a curated global structuring roster covering company-formation jurisdictions, trust situs, personal-tax-residence regimes, and a watchlist. It uses specific verbs ('curated', 'filter') and describes the resource. However, it does not differentiate itself from siblings like get_structuring_playbook or get_wealth_atlas, so it misses the top score.

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 explicit guidance on when to use this tool versus alternatives. The description implies it is for obtaining a roster, but it does not mention when to prefer it over similar tools (e.g., find_formation_jurisdictions, get_structuring_playbook). It also does not state conditions where it should not be used.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: the output is INFORMATION, NOT ADVICE; it includes methodology and a de-risk note; and it clarifies that the index is NOT a secrecy score. This goes beyond the annotations and helps set expectations.

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 dense but well-structured, front-loading the core purpose and then adding usage and caveats. Every sentence earns its place, though the long list of pillar names makes it slightly heavy. It is appropriately sized for a tool with this much domain-specific nuance.

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?

Given the output schema exists and the single optional parameter is well documented, the description is nearly complete. It covers what the tool returns, how to scope it, and important caveats (not advice, not a secrecy score, no composite ranking). A minor gap is that it doesn't explicitly state the output format beyond mentioning sub-indices, but the output schema likely covers that.

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 schema already documents the cc parameter with examples and format. The description adds the key semantic detail that omitting cc returns all jurisdictions, which is not in the schema. This is a meaningful addition beyond the structured data.

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 clearly states the tool's purpose: it provides objective per-pillar sub-indices (0-100) for jurisdictions across seven named dimensions. It explicitly distinguishes itself from a secrecy score and from a composite ranking, and the sibling list includes get_wealth_index and get_index, so this differentiation is valuable.

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 description gives explicit usage guidance: pass cc for one jurisdiction, omit for all. It also explains that no composite ranking is provided and that a client-weighted composite index is available separately, which helps an agent decide when to use this tool versus alternatives. It does not explicitly name sibling tools as alternatives, but the context is clear enough.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: it is a pure projection over Mirabello-verified data, produces an illustrative comparative score, and is expressly not advice. It also notes that results depend on client-specific weighting, which is useful for agent expectations.

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?

The description is dense but every clause earns its place: it states the core concept, lists the pillars, explains when to pass versus omit weights, describes cc/limit behavior, and adds an important disclaimer. Information is front-loaded with 'CLIENT-WEIGHTED' and the overall structure is efficient.

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 the tool has an output schema, annotations covering safety, and a 100% documented input schema, the description covers the remaining essential context: purpose, weighting philosophy, scoping options, and caveats. An agent has enough information to call the tool correctly for both default and client-specific scenarios.

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 meaning beyond the schema by listing the exact accepted pillar names and explaining the semantics of weights, cc, and limit. It clarifies that weights are optional and that omitting them yields a default composite, 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?

The description clearly identifies the resource: a client-weighted wealth-protection composite scoring jurisdictions across the Atlas pillars. It distinguishes itself from siblings by emphasizing that there is no single public 'best' ranking and that weights must reflect the client profile. The specific pillar list and the cc/limit behavior make its function concrete.

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 description gives clear context for when to use the tool: pass weights for a specific client profile, omit them for an illustrative default, and use cc/limit to scope results. It does not explicitly name alternative sibling tools or state when not to use this one, but the context is strong enough for an agent to choose correctly.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds useful behavioral context: the response size warning (98 programmes) and the budget-filter edge case (programmes without fixed thresholds are excluded from filtering but still appear unfiltered). No contradictions.

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, front-loaded with the core purpose and filters, followed by a practical warning and an edge case. No redundancy or fluff; every sentence 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 and annotations covering safety, the description covers scope, filters, size warning, and a subtle filtering behavior. An agent has everything needed to call the tool 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 each parameter is already documented. The description adds extra meaning by clarifying that budget is in USD and compared at indicative FX, and reiterates the size concern for limit. This goes beyond the schema's baseline.

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 specific action (list) on a specific resource (Mirabello-advised CBI/RBI programmes) and enumerates optional filters. It clearly differentiates from sibling tools like get_programme (single) and compare_programmes (comparison) by its verb and scope.

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 description implies its use for listing programmes and provides practical guidance on the limit parameter for large responses. It does not explicitly name alternatives or exclusions, but the purpose is clear enough that an agent can infer when to choose this over siblings.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly and non-destructive behavior Mendation. The description adds meaningful behavioral context beyond that: it cites the Passport Index dataset, the 199-passport coverage, the 'where published' caveat on stay days, and the 'verify before travel' warning. This is useful and non-contradictory.

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 front-loaded with the core purpose and then enumerates the returning groupings plus the source and caveat. It is longer than strictly minimal, but every included detail serves the invoking agent, and nothing is redundant 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?

Given the presence of an output schema and annotations, the description sufficiently covers the tool's scope, data provenance, grouping behavior, and caution about verification. It does not explain pagination or error behavior, but those are not materially needed for this simple list operation.

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 both from_nationality and group. The description reinforces that destinations are per one nationality and grouped, but it adds no new semantic details over the parameter descriptions.

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 uses a specific verb ('list') and a precise resource: all destinations for a single nationality, grouped by requirement. It also enumerates the exact groupings and includes counts and a mobility total, making it clearly distinct from sibling tools like check_visa_free or check_visa_requirement.

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 the use case: a comprehensive overview for one nationality, rather than a specific single-country check. However, it never explicitly contrasts itself with alternatives such as check_visa_free, check_visa_requirement, or get_entry_requirements, nor gives when-not-to-use guidance.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark it as readOnly, non-destructive, and not open-world. The description adds that it is informational and cautions to confirm with local counsel, which provides practical context about the reliability of the output. It aligns with annotations without contradiction.

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?

The description is compact, front-loads the core purpose, and includes the caveat and usage hint in a few clear sentences. Every sentence earns its place without 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?

For a single-parameter informational tool with an output schema, the description covers the key content, the legal disclaimer, and the parameter format. Nothing essential is missing for an agent 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?

The sole parameter 'cc' is fully described in the schema with examples and an explanation. The description repeats the ISO alpha-2 instruction but adds no new semantic nuance. Given the schema coverage is 100%, the baseline of 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?

The description states a specific purpose: retrieving the default matrimonial-property regime for a jurisdiction, including whether agreements can vary it and how property splits on divorce or death. It is precise and distinct from sibling tools, which cover other legal or financial topics.

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 explicitly advises 'Informational — confirm with local counsel,' indicating when to rely on it and the need for professional verification. It also instructs to use ISO alpha-2, which directly guides parameter input. However, it does not mention when not to use it or name specific alternatives, though the tool's niche makes this less critical.

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

THE COMPOSED TOOL: one origin-aware answer for 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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false. The description adds useful behavioral context beyond that: it is 'information only, never advice', uses Mirabello-verified provenance-carrying data, and ends in a consultation route. No contradiction with 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?

The description is dense and substantively valuable, but it is one long ALL-CAPS-heavy run-on block that mixes purpose, parameter guide, tax principle, and consultation routing. The content earns its place, but the structure is harder to scan than it should be; bullet-like separation would help.

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 complex 6-parameter composed tool, the description covers the trigger question, parameter semantics, the governing tax rule, data provenance, and the post-answer consultation handoff. Since an output schema exists, the description does not need to explain return values. No material gap remains.

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 adds real business semantics: markets means where the CUSTOMERS are, archetype is mapped to revenue/team ranges, budget_usd is scoped to mobility, and include_mobility's default is stated. This goes beyond the bare schema descriptions.

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 clearly identifies this as the composed/aggregate tool that answers the FULL global-setup question, enumerating the layers it covers: mobility, tax-residence pairing, entity stack, holding layer, banking, and protection/succession. This distinguishes it from the many single-layer get_* and find_* siblings. The concrete example question further anchors the resource.

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 trigger ('Use for questions like: I am an Egyptian founder selling SaaS to the US') and specifies which parameters to pass. It does not name alternatives or state when not to use it, but the composed-tool framing and the example make the selection clear.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it is origin-aware, returns ranked end-to-end options, includes a mobility delta concept, and explicitly warns to check official sources for tax-exit rules. It also discloses that it is informational only, not advice. It does not detail pagination or exact response structure, but the output schema exists and the description covers the key behavioral traits.

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 dense but well-structured: it front-loads the tool's identity and core constraint, then lists outputs, then gives usage guidance. It is longer than ideal, but every sentence adds information (origin-aware, mobility delta, tax-exit examples, output fields, informational disclaimer). The use of caps for key concepts is slightly noisy but aids scanning.

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?

Given the tool's complexity (7 params, nested objects, enums, output schema), the description covers the essential context: what the tool does, what the origin constraint means, what outputs to expect, and how to invoke it. It does not explain the meaning of each output field (fit_score, mobility_delta) in detail, but the output schema likely covers that. The description is complete enough for an agent to select and call the tool 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 description coverage is 100%, so the schema already documents all 7 parameters. The description adds meaning by explaining the core constraint (from_citizenship as the origin that sets the mobility delta) and by giving a concrete usage pattern ('Pass from_citizenship (ISO alpha-2 array) + goal'). It also clarifies that from_tax_residence defaults to first citizenship, which is not in the schema. This goes beyond the schema's baseline.

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 specific verb ('planner'), resource ('migration path'), and the origin-aware constraint that distinguishes it from generic pathway tools. It explicitly names the input (from_citizenship + goal) and output (ranked options with fit_score, mobility_delta, etc.), making it easy for an agent to know what this tool does and how it differs from siblings like find_pathways or recommend_programmes.

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

Usage Guidelines5/5

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

The description gives an explicit use case ('I am a [nationality], I want [goal] — what should I do?') and tells the agent what to pass. It also states what the tool is not ('Informational only, not advice') and implies it is the right choice when the origin is the key constraint, which differentiates it from sibling tools like check_eligibility or find_pathways.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: investment figures are FX-normalised and best-effort, the official_source is authoritative, and the tool returns entities with their neighbours. It also warns that responses can be large and that limit should be used. This goes beyond the annotations without contradicting them.

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 dense but well-structured: it opens with the resource, then the two modes, then the example, then the caveat. Every sentence earns its place. It is slightly long, but the length is justified by the tool's complexity (two modes, 9 parameters, relational semantics). The front-loading of the resource and modes is effective.

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 the tool's complexity (9 params, two modes, relational graph), the description is complete: it explains both modes, the filter semantics, the best-effort nature of investment figures, the authoritative source, and the size warning. The output schema exists, so return values need not be described. An agent has everything needed to select and invoke this tool 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 the baseline is 3. The description adds meaning by grouping parameters into two modes (id vs filters) and explaining the semantics of max_investment_usd/min_investment_usd as 'FX-normalised, best-effort' and 'headline minimum investment'. It also clarifies that filters find PROGRAMMES, which is not obvious from the schema alone. This is a meaningful addition over 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?

The description states a specific verb ('query') and resource (the investment-migration knowledge graph), and explicitly distinguishes two modes: id-based neighbour lookup and filter-based programme search. It also names the sibling tools it complements ('flat tools'), so an agent can tell it apart from get_programme, list_programmes, and recommend_programmes 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 Guidelines5/5

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

The description gives explicit when-to-use guidance: it answers relational queries the flat tools cannot, and provides a concrete example query ('open CBI programmes leading to citizenship under $200k with their governing source'). It also tells the agent to cite the official_source for authoritative amounts, which is a clear usage directive. It does not explicitly name alternatives, but the sibling list and 'flat tools' reference make the intended use clear.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it respects closed/paused programmes, meaning the tool filters out unavailable options. It also implies the output includes reasoning, which is a behavioral trait beyond a simple list. It doesn't mention pagination or output size, but the output schema likely 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.

Conciseness5/5

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

Two sentences with zero waste. The first sentence states the core function and inputs; the second adds a critical filtering behavior. Front-loaded and efficient.

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?

The tool has an output schema, so return values are documented elsewhere. The description covers the input context, the ranking behavior, and the closed/paused filter. It doesn't explicitly state what 'reasoning' looks like or how many programmes are returned, but the output schema likely covers that. For a recommendation tool with rich schema and annotations, 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 description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds a high-level summary of the input criteria but doesn't add new meaning beyond the schema. Baseline 3 is appropriate because the schema does the heavy lifting.

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 specific verb ('Recommend'), a resource ('a ranked shortlist of programmes'), and the input context ('client profile') with explicit criteria. It also distinguishes itself from siblings like compare_programmes and list_programmes by emphasizing ranking and reasoning for a client profile.

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 description implies when to use this tool: when a client profile with budget, family size, mobility priority, timeline, and tax goal is provided. It doesn't explicitly name alternatives or exclusions, but the context signals and sibling names (e.g., compare_programmes, list_programmes) make the use case clear. It could be improved by explicitly saying 'use compare_programmes for side-by-side comparison' or 'use list_programmes for unfiltered lists'.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive, non-open-world behavior. The description adds meaningful context beyond those annotations by specifying that the result is a factual checklist of tests and evidence, not a determination, and by enumerating the categories of content returned. It does not describe data sourcing or edge cases, but the output schema covers return structure.

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 dense sentences with no filler: the first front-loads the core purpose and enumerates the substantive content, the second states the crucial limitation, and the third gives the input format. The parenthetical details are useful rather than decorative. Every sentence earns its place.

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-parameter read-only tool with an output schema, the description covers the essential context: what content is included, what is excluded, and how to pass the country code. It does not mention jurisdiction coverage or behavior for unsupported codes, but that is a minor gap given the tool's simplicity. Overall, an agent has enough to decide whether to invoke it.

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?

The schema already documents the 'cc' parameter fully, including ISO alpha-2 format, uppercase requirement, and examples, so schema coverage is 100%. The description's 'Use ISO alpha-2' line reinforces but does not add meaningful semantic detail beyond the schema. This matches the baseline 3 for a fully documented single parameter.

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 tool's output: tax-residence tests and evidence factors for a jurisdiction, with a detailed list of included content. It distinguishes itself by explicitly stating what it is NOT ('NOT a residence determination'), which helps avoid confusion with analysis tools. It lacks an explicit action verb, but the resource and scope are unambiguous.

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 description gives a clear usage boundary: tests and factors only, not a residence determination, and instructs the caller to use ISO alpha-2 country codes. It does not name specific alternative tools for when a determination is actually needed, so it falls short of fully explicit when/when-not guidance. The exclusion it does provide is useful and directly actionable.

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 name to filter listings by (e.g. "Greece", "Portugal").
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

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 and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it discloses the broker-of-record arrangement (no direct developer contact, all enquiries routed through Mirabello), the indicative nature of figures, and the FX-normalisation caveat for budget_max. These details set expectations about data accuracy and the enquiry flow without contradicting 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 structured with a clear lead sentence, a filter list, a returns statement, and then two caveats. It is slightly verbose—the broker-of-record and indicative-figures sentences could be trimmed—but every sentence contributes either to scope, filters, or expectations. No fluff; it earns a 4 for being informative yet reasonably compact.

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?

Given the 8 parameters and existing output schema, the description covers the essential aspects: what is searched, available filters, return content, and two important caveats (broker route, indicative figures). It does not describe default ordering, pagination, or the behavior of the 'limit' parameter, but those are likely covered by the schema or are minor. Overall, the description is sufficiently complete for an agent to call the tool 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 the input schema already documents every parameter with descriptions and examples. The description repeats some of these (type, programme, budget_max, etc.) but adds little beyond the schema. The only marginal addition is the clarification that budget_max is 'USD, FX-normalised best-effort,' which is already in the schema ('max price in USD (best-effort FX)'). Since the schema carries the full burden, this is a 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?

The description opens with a specific verb ('Search') and a clearly bounded resource ('Mirabello-advised investment real estate that QUALIFIES for a citizenship- or residency-by-investment programme'). It explicitly differentiates from siblings like get_property (specific property lookup) and list_programmes (programme catalog) by focusing on qualifying listings. The filter list and return content make the tool's role unambiguous.

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 description explains the tool's purpose and what it returns, making it clear when to use it: when the agent needs to find qualifying real estate. However, it does not explicitly state when NOT to use it or name alternatives (e.g., 'use get_property for a specific listing' or 'use check_eligibility for personal eligibility'). The context is implied but not stated as exclusions, so it earns a 4 rather than a 5.

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

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.

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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false, and the description adds valuable behavioral context: webhook_url will receive an HTTPS POST on each change, email requires explicit consent, and the call returns a subscription id plus unsubscribe URL. This clarifies the ongoing side-effect nature of the subscription beyond what annotations alone convey.

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?

The description is three sentences with no filler. It front-loads the purpose, then gives the channel-specific usage, the optional filter, and the return value. Every sentence contributes to successful invocation.

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 the output schema exists and the parameters are fully described in the schema, the description provides the missing operational context: when to choose email vs webhook, that consent is required for email, the optional filter, and the subscription artifact returned. An agent has enough information to invoke this tool 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. The description adds some selection guidance (agents use webhook_url, humans use email, programme_ids is optional), but most of this is already present in the schema descriptions. It does not introduce significant new meaning for individual parameters.

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 specific verb and resource: 'Subscribe to verified programme-change alerts', and details what kinds of changes are included (price changes, launches, corrections) with a link to official sources. This distinguishes it clearly from sibling tools like get_recent_changes, which focus on retrieving current changes rather than creating ongoing subscriptions.

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 description gives clear usage context by dividing the audience: agents should provide webhook_url, humans should provide email with explicit consent, and programme_ids is an optional filter. It does not explicitly name alternatives or state when not to use this tool, but the subscription-focused phrasing makes the intended scenario evident.

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 MapA
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive, and the description adds useful behavioral context by stating it is informational rather than advice and by summarizing what the output includes, including a headline cross-border planning point. It does not discuss authentication, rate limits, or caveats about legal authority, but for a read-only lookup these are less critical.

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 dense but purposeful, front-loading the core purpose before listing specific legal topics. Every clause covers a distinct aspect of the tool's scope, and the closing instructions are short. It is a long single sentence, which slightly reduces scannability, but there is no fluff.

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 the output schema exists and the single parameter is fully documented, the description covers everything needed: jurisdiction scope, the specific legal areas addressed, the professio juris and clawback nuances, trust/foundation interaction, and the planning-point output. It also explicitly frames the tool as informational, which is important for legal content. No critical calling context 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?

The input schema fully defines the single parameter cc with examples and format guidance, giving 100% schema description coverage. The description only repeats 'Use ISO alpha-2' without adding semantic nuance beyond the schema, so the schema carries the burden and the description neither requires compensation nor adds extra value.

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 tool as providing a cross-border succession conflict-of-laws position for a jurisdiction ozilist and enumerates the specific legal topics covered (governing law, EU Regulation 650/2012, professio juris, clawback, renvoi, trust/foundation interaction). It is unambiguous and distinct in subject matter, though it does not explicitly name or contrast sibling tools like forced_heirship_risk or choice_of_law_options.

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 description gives clear context: this is for jurisdiction-specific, cross-border succession conflict-of-laws questionsóand adds the operational instruction to supply an ISO alpha-2 code. It does not explicitly state when to use this tool over alternatives or mention 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.

withholding_mapWithholding MapB
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.
providerNoAlways "Mirabello Consultancy".
disclaimerNoInformation, not legal/tax/financial/immigration advice; figures indicative.
data_updatedNoDate the underlying dataset was last updated.
book_a_consultationNoURL to book a Mirabello consultation.

TDQS

B3.3/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 the safety profile is covered. The description adds the corridor scoping but no further behavioral detail such as coverage limits or how the from→to corridor is interpreted; this is acceptable but not rich.

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

Conciseness5/5

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

A single sentence with no filler; the core resource and scope are front-loaded. Every word adds domain information.

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?

The output schema, read-only annotations, and complete parameter descriptions handle much of the load, but the central 'from→to corridor' concept is under-specified relative to a schema that only contains dates. An agent cannot tell from the description whether the corridor is a time range or a country pair.

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 date-range semantics of from and to are fully documented and the description doesn't need to compensate. The phrase 'from→to corridor' adds no parameter-level meaning and could be read as a country pair, creating slight ambiguity, but it doesn't contradict 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 identifies the resource (treaty withholding-tax rates), the covered income types (dividends/interest/royalties), and the corridor scoping. It lacks an explicit verb, but the tool name and noun phrase make the retrieval action clear. It doesn't explicitly distinguish itself from close siblings like compare_treaty_position, but the specific tax-rate resource is unambiguous.

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 alternatives, no exclusions, and no prerequisites. The description merely says what the tool returns, so an agent must infer applicability from the resource type alone, especially given close siblings such as compare_treaty_position and get_country_tax.

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. 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"
        +}
  2. 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"
        +]
  3. 1 tool update
    • Addedget_emigration_flows
  4. 3 tool updates
    • Addedget_foundation_rules
    • Addedget_nonresident_banking
    • Addedget_property_law
  5. 1 tool update
    • Addedget_name_change
  6. 1 tool update
    • Changedbook_consultation2 fields changed
      • removedInput schema / properties / conversation_summary
        Removed value: -{
        -  "description": "a short specialist-ready qualification summary of the chat so far (what the person wants, key facts they shared, budget/timeline/nationality signals, objections, open questions). The Mira layer injects this automatically; not for LLM-invented content.",
        -  "type": "string"
        -}
      • removedInput schema / properties / transcript
        Removed value: -{
        -  "description": "the full user↔Mira conversation transcript for the specialist to review. Injected automatically by the Mira layer.",
        -  "type": "string"
        -}
  7. 2 tool updates
    • Addedget_capital_controls
    • Addedget_entry_requirements
  8. 53 tool updates
    • Changedbook_consultation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedbuild_sow_pack1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcheck_eligibility1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcheck_visa_free1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedchoice_of_law_options1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_formation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_programmes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_scenarios1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_treaty_position1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompliance_checklist1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcreate_enquiry1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedestimate_timeline1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedestimate_total_cost1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_charity_jurisdictions1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_formation_jurisdictions1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_low_tax1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_pathways1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfind_trust_jurisdictions1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedflag_cfc_poe_risk1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedforced_heirship_risk1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgenerate_briefing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_about1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_availability_updates1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_banking_access1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_company_formation1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_country1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_country_tax1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_digital_gov_progress1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_document_checklist1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_mobility_optionality1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_passport_renewal1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_processing_times1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_programme1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_property1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_provenance1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_recent_changes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_regulator_registry1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_structuring_playbook1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_structuring_roster1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_wealth_atlas1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_wealth_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_programmes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedmatrimonial_regime_screen1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedplan_global_setup1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedplan_path1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedquery_graph1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedrecommend_programmes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedresidence_evidence_checklist1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_properties1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsubscribe_changes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsuccession_conflict_map1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedwithholding_map1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present.",
        +  "properties": {
        +    "book_a_consultation": {
        +      "description": "URL to book a Mirabello consultation.",
        +      "type": "string"
        +    },
        +    "data_updated": {
        +      "description": "Date the underlying dataset was last updated.",
        +      "type": "string"
        +    },
        +    "disclaimer": {
        +      "description": "Information, not legal/tax/financial/immigration advice; figures indicative.",
        +      "type": "string"
        +    },
        +    "error": {
        +      "description": "Present only when the request could not be fulfilled.",
        +      "type": "string"
        +    },
        +    "provider": {
        +      "description": "Always \"Mirabello Consultancy\".",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Attribution for the data.",
        +      "type": "string"
        +    },
        +    "terms": {
        +      "description": "Acceptable-use and information-not-advice terms.",
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  9. 1 tool update
    • Addedchoice_of_law_options
  10. 1 tool update
    • Addedplan_global_setup
  11. 4 tool updates
    • Addedcompare_formation
    • Addedfind_formation_jurisdictions
    • Addedget_banking_access
    • Addedget_company_formation
  12. 3 tool updates
    • Addedget_regulator_registry
    • Addedget_structuring_playbook
    • Addedget_structuring_roster
  13. 1 tool update
    • Changedbook_consultation2 fields changed
      • addedInput schema / properties / conversation_summary
        Added value: +{
        +  "description": "a short specialist-ready qualification summary of the chat so far (what the person wants, key facts they shared, budget/timeline/nationality signals, objections, open questions). The Mira layer injects this automatically; not for LLM-invented content.",
        +  "type": "string"
        +}
      • addedInput schema / properties / transcript
        Added value: +{
        +  "description": "the full user↔Mira conversation transcript for the specialist to review. Injected automatically by the Mira layer.",
        +  "type": "string"
        +}
  14. 1 tool update
    • Addedget_passport_renewal
  15. 1 tool update
    • Changedcompare_programmes4 fields changed
      • addedInput schema / properties / a
        Added value: +{
        +  "description": "programme id (use with b) for the canonical two-programme artefact",
        +  "type": "string"
        +}
      • addedInput schema / properties / b
        Added value: +{
        +  "description": "programme id (use with a)",
        +  "type": "string"
        +}
      • addedInput schema / properties / ids / description
        Added value: +"2-4 programme ids for the classic comparison"
      • removedInput schema / required
        Removed value: -[
        -  "ids"
        -]

Related MCP Connectors

Related MCP Servers

  • 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
  • A
    license
    A
    quality
    A
    maintenance
    Unmodified government company data from 27 registries, live. Cross-border UBO chain walker for AI agents. 60+ tools covering GB, IE, NO, FR, DE, NL, PL, BE, CH, LI, MC, IM, IS, CY, AU, NZ, CA, TW, HK, MY, FI, CZ, ES, IT, KR, US — raw upstream fields preserved, no LLM extraction.
    10
    18
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.