Skip to main content
Glama

Unified Schengen + tax-residency + tax-cost tracker

check_travel_residency
Read-onlyIdempotent

The comprehensive engine: from one travel itinerary it returns (1) Schengen 90/180 tourist-visa status (days used/remaining, first overstay, longest compliant stay), (2) per-country tax-residency risk on each country's OWN threshold and basis — the 183-day rule, Cyprus's conditional 60-day rule (flagged only when you're not 183+ resident elsewhere), the US Substantial Presence Test and the UK tax-year test — with safe days left, leave-by dates and a safe/warning/triggered rating, and (3) with an optional income, the tax cost of triggering residency at the standard rate vs an expat regime. Supersedes check_schengen / check_residency / check_tax_residency_risk (all still available). Early-warning day math — not tax advice.

Input Schema

NameRequiredDescriptionDefault
staysYes
incomeNoOptional gross annual income (USD) — enables the tax-cost projection for at-risk countries.
referenceDateNoOptional 'as of' date. Defaults to today (UTC).

Output Schema

NameRequiredDescriptionDefault
okNo
summaryNo
schengenNo90/180 status when any Schengen stay exists: daysUsed, daysRemaining, compliant, firstOverstayDate, maxStayFromRef.
countriesNo
referenceDateNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "income": 120000,
      +    "stays": [
      +      {
      +        "country": "ES",
      +        "entry": "2026-01-10",
      +        "exit": "2026-07-28"
      +      }
      +    ]
      +  }
      +]
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive profile, so the bar is lower, yet the description adds real behavioral nuance: the Cyprus conditional 60-day rule is flagged only when you're not 183+ resident elsewhere, ratings are safe/warning/triggered, and it frames the output as early-warning day math rather than tax advice. It does not discuss pagination or limits, but for a computation tool that is minor.

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 comprehensive engine' and organized into three numbered output groups, so the structure is clear. It is dense to the point of reading as one long passage, but nearly every clause carries useful 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?

With an output schema and rich annotations already present, the description completes the picture by stating scope (single itinerary input), the caveat (not tax advice), and the sibling supersession. Nothing an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema coverage is 67% and the description only elaborates on the optional income parameter ('enables the tax-cost projection for at-risk countries'). The stays structure and referenceDate are documented by the schema itself, so the description adds marginal meaning beyond structured fields. Baseline 3 is appropriate here.

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 engine and enumerates exactly the three outputs it produces (Schengen 90/180 status, per-country tax-residency risk, optional tax-cost projection). It explicitly distinguishes itself from check_schengen / check_residency / check_tax_residency_risk by declaring it supersedes them, so an agent can disambiguate without opening the schema.

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

Usage Guidelines4/5

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

It clearly frames this as the comprehensive replacement for three named sibling tools (all still available), which gives strong routing context. It stops short of saying when the narrower siblings are still the better choice, so a full 5 is not warranted.

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.

Resources