Skip to main content
Glama

Mirabello Immigration Intelligence

Plan Path — Freedom Compass

plan_path
Read-onlyIdempotent

The Mirabello Freedom Compass — ORIGIN-AWARE migration path planner. Given the client's STARTING POINT — current citizenship(s) + tax residence — plus their goal, returns ranked end-to-end options. The origin is the constraint: it sets the MOBILITY DELTA (what a passport actually ADDS over the one they hold — a Caribbean passport adds little to a US/EU citizen, lots to others), eligibility/restrictions, and tax-exit/reporting considerations (e.g. US citizenship-based tax & §877A, German AStG §6 — generic, sourced, CHECK-OFFICIAL-SOURCE). Each path carries fit_score + rationale, mobility_delta, eligibility, min_investment, processing_time. Informational only, not advice. Use for "I am a [nationality], I want [goal] — what should I do?". Pass from_citizenship (ISO alpha-2 array) + goal. Privacy: an anonymised record of the query (citizenships, tax residence, goal, budget band and timeline; no name, contact or exact amount) is kept for 90 days to improve coverage.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "from_citizenship": "<from_citizenship>"
    },
    "name": "plan_path"
  }
}

Input 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

NameRequiredDescriptionDefault
errorNo
termsNo
sourceNo
book_urlNo
providerNo
disclaimerNo
data_updatedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedOutput schema / description
      Previous value: -"Mirabello response envelope. Tool-specific fields vary; the provenance/disclaimer envelope is always present."New value: +"Mirabello envelope; tool fields vary; error only on failure."
    • removedOutput schema / properties / book_url / description
      Removed value: -"Link to request a consultation with a Mirabello specialist, for a personal case."
    • removedOutput schema / properties / data_updated / description
      Removed value: -"Date the underlying dataset was last updated."
    • removedOutput schema / properties / disclaimer / description
      Removed value: -"Information, not legal/tax/financial/immigration advice; figures indicative."
    • removedOutput schema / properties / error / description
      Removed value: -"Present only when the request could not be fulfilled."
    • removedOutput schema / properties / provider / description
      Removed value: -"Always \"Mirabello Consultancy\"."
    • removedOutput schema / properties / source / description
      Removed value: -"Attribution for the data, when it is not Mirabello Consultancy itself."
    • removedOutput schema / properties / terms / description
      Removed value: -"Acceptable-use and information-not-advice terms."
  2. Changed3 schema fields changed
    • removedOutput schema / properties / book_a_consultation
      Removed value: -{
      -  "description": "URL to book a Mirabello consultation.",
      -  "type": "string"
      -}
    • addedOutput schema / properties / book_url
      Added value: +{
      +  "description": "Link to request a consultation with a Mirabello specialist, for a personal case.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / source / description
      Previous value: -"Attribution for the data."New value: +"Attribution for the data, when it is not Mirabello Consultancy itself."
  3. Changed9 schema 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
      +]
  4. Changed1 schema 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"
      +}
  5. Added

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/non-destructive; the description adds substantial context beyond that: the mobility-delta logic, the specific tax-exit regimes referenced (US §877A, German AStG §6) flagged as generic and CHECK-OFFICIAL-SOURCE, an informational-only disclaimer, and an explicit 90-day anonymised data-retention policy. That is exactly the kind of trait disclosure annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the core purpose and the invocation pattern, and most clauses (origin constraint, mobility delta, disclaimer, privacy) carry real information. It is dense and capitalisation-heavy, with a slightly redundant 'Informational only, not advice' stacked on top of the sourced/generic caveat.

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

Completeness4/5

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

For a read-only planner with a full output schema, the description covers the reasoning model (origin as constraint), the returned fields conceptually, the disclaimer posture, and the privacy implication of calling it. Only minor gaps remain, such as result count or rate limits.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, and the description only restates 'Pass from_citizenship (ISO alpha-2 array) + goal'. It does add conceptual meaning about why origin (citizenship plus tax residence) matters, but no parameter-level detail the schema lacks.

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

Purpose5/5

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

States a specific verb and resource ('ORIGIN-AWARE migration path planner' that 'returns ranked end-to-end options') with a clearly named input axis (origin). The origin-constraint framing distinguishes it from sibling lookups like find_pathways, recommend_programmes and compare_programmes.

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

Usage Guidelines4/5

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

Gives a concrete invocation pattern: 'Use for "I am a [nationality], I want [goal] — what should I do?"' plus 'Pass from_citizenship + goal'. It does not explicitly exclude or route away from near-neighbours such as find_pathways or recommend_programmes, so the when-not guidance is missing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.