Skip to main content
Glama

Entry requirements (pilot)

check_entry_requirements
Read-onlyIdempotent

Visa/entry information for a short tourist stay, for a pilot set of passports, from official government sources, with verbatim quotes, official links and a mandatory advisory. Decision support only: never a go/no-go verdict. Returns status (visa_free, visa_free_with_requirements, visa_on_arrival, eta_required, evisa_required, visa_required, unclear), max_stay_days, additional_requirements[], quotes[] (authoritative), official_links, advisory, sources[], confidence, last_verified. One passport, one destination; for a full trip use get_trip_brief, which embeds this per destination. Coverage: pilot passports (the error for others lists them), tourism only. Based on the passport country's official travel advice; the destination's own rules are covered only as far as the official pages quoted in quotes[]. Transit, other visa types and special cases are not covered: point users to official_links, and always show the advisory. Parameters: passport is the nationality of the passport used (dual nationals: one call each); destination is the country entered, not transit stops. Example: {"passport":"GB","destination":"JP"}. Read-only; free API key or x402 per call (https://citedtravel.com/pricing/); errors RFC 9457.

Input Schema

NameRequiredDescriptionDefault
langNoLanguage for localized names (BCP 47). Supported: en, ja, zh-Hans, zh-Hant; aliases such as zh, zh-CN, zh-TW and zh-HK are mapped, and anything else falls back to English. Only names are localized; verbatim official quotes stay in their original language.en
purposeNoTrip purpose. Only short tourist stays are covered ("tourism"; "tourism_short_stay" is an accepted alias); anything else returns an error.tourism
passportYesPassport (nationality) country as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first.
destinationYesDestination country; must differ from passport as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / purpose / examples
      Added value: +[
      +  "tourism"
      +]
  2. Changed13 schema fields changed
    • changedInput schema / properties / destination / description
      Previous value: -"Country as ISO 3166-1 alpha-2 or alpha-3 code, e.g. JP or JPN. Use resolve_country for names."New value: +"Destination country; must differ from passport as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."
    • addedInput schema / properties / destination / examples
      Added value: +[
      +  "JP",
      +  "GB",
      +  "USA"
      +]
    • addedInput schema / properties / destination / pattern
      Added value: +"^[A-Za-z]{2,3}$"
    • addedInput schema / properties / lang / default
      Added value: +"en"
    • changedInput schema / properties / lang / description
      Previous value: -"Response language (BCP 47). Supported: en, ja, zh-Hans, zh-Hant; falls back to English. Verbatim official quotes always stay in their original language."New value: +"Language for localized names (BCP 47). Supported: en, ja, zh-Hans, zh-Hant; aliases such as zh, zh-CN, zh-TW and zh-HK are mapped, and anything else falls back to English. Only names are localized; verbatim official quotes stay in their original language."
    • addedInput schema / properties / lang / examples
      Added value: +[
      +  "en",
      +  "ja",
      +  "zh-Hans",
      +  "zh-Hant"
      +]
    • changedInput schema / properties / passport / description
      Previous value: -"Country as ISO 3166-1 alpha-2 or alpha-3 code, e.g. JP or JPN. Use resolve_country for names."New value: +"Passport (nationality) country as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."
    • addedInput schema / properties / passport / examples
      Added value: +[
      +  "JP",
      +  "GB",
      +  "USA"
      +]
    • addedInput schema / properties / passport / pattern
      Added value: +"^[A-Za-z]{2,3}$"
    • addedInput schema / properties / purpose / default
      Added value: +"tourism"
    • addedInput schema / properties / purpose / description
      Added value: +"Trip purpose. Only short tourist stays are covered (\"tourism\"; \"tourism_short_stay\" is an accepted alias); anything else returns an error."
    • changedInput schema / properties / purpose / enum
      Previous value: -[
      -  "tourism"
      -]New value: +[
      +  "tourism",
      +  "tourism_short_stay"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "additional_requirements": {
      +          "description": "Other formalities (travel authorisation, pre-arrival registration, arrival or tourist card), each with the verbatim official sentence and certainty \"required\" or \"check_official\".",
      +          "type": "array"
      +        },
      +        "advisory": {
      +          "description": "Mandatory advisory: show it to the user.",
      +          "type": "string"
      +        },
      +        "attribution": {
      +          "description": "Attribution strings required by the source licenses.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "confidence": {
      +          "description": "Deterministic confidence: score from 0 to 1, a level, and the reasons (source kind, cross-checks, staleness...).",
      +          "properties": {
      +            "level": {
      +              "examples": [
      +                "high",
      +                "medium",
      +                "low"
      +              ],
      +              "type": "string"
      +            },
      +            "reasons": {
      +              "description": "Why the score is what it is.",
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "score": {
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "score",
      +            "level"
      +          ],
      +          "type": "object"
      +        },
      +        "coverage_note": {
      +          "type": "string"
      +        },
      +        "cross_checks": {
      +          "description": "Independent datasets the value was checked against, with the result.",
      +          "type": "array"
      +        },
      +        "decision_support_only": {
      +          "const": true
      +        },
      +        "destination": {
      +          "description": "Country (ISO codes and name, localized to lang).",
      +          "properties": {
      +            "iso2": {
      +              "type": "string"
      +            },
      +            "iso3": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "name_lang": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "iso2"
      +          ],
      +          "type": "object"
      +        },
      +        "fact_id": {
      +          "type": "string"
      +        },
      +        "last_verified": {
      +          "description": "Date the value was last verified (YYYY-MM-DD).",
      +          "type": "string"
      +        },
      +        "max_stay_days": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "next_review_due": {
      +          "description": "Date of the next scheduled review (YYYY-MM-DD).",
      +          "type": "string"
      +        },
      +        "not_a_verdict": {
      +          "type": "string"
      +        },
      +        "notes": {
      +          "type": "array"
      +        },
      +        "official_links": {
      +          "description": "Official government pages to show to the user.",
      +          "type": "array"
      +        },
      +        "passport": {
      +          "description": "Country (ISO codes and name, localized to lang).",
      +          "properties": {
      +            "iso2": {
      +              "type": "string"
      +            },
      +            "iso3": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "name_lang": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "iso2"
      +          ],
      +          "type": "object"
      +        },
      +        "passport_validity_statement": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "prior_application_needed": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "purpose": {
      +          "type": "string"
      +        },
      +        "quotes": {
      +          "description": "Verbatim official text, in its original language. Authoritative.",
      +          "items": {
      +            "properties": {
      +              "authoritative": {
      +                "type": "boolean"
      +              },
      +              "language": {
      +                "type": "string"
      +              },
      +              "publisher": {
      +                "type": "string"
      +              },
      +              "text": {
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "text",
      +              "url"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "related": {
      +          "type": "array"
      +        },
      +        "sources": {
      +          "description": "Cited sources for this fact.",
      +          "items": {
      +            "description": "One cited source.",
      +            "properties": {
      +              "license": {
      +                "description": "License of the source, e.g. CC0-1.0, OGL-UK-3.0, MIT.",
      +                "type": "string"
      +              },
      +              "publisher": {
      +                "type": "string"
      +              },
      +              "quote": {
      +                "description": "Verbatim text from the source, when quoted.",
      +                "type": "string"
      +              },
      +              "retrieved_at": {
      +                "description": "When the source was fetched (ISO 8601).",
      +                "type": "string"
      +              },
      +              "source_id": {
      +                "type": "string"
      +              },
      +              "source_value": {
      +                "description": "The raw value as given by the source, when not quoted."
      +              },
      +              "url": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "publisher",
      +              "url",
      +              "license"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "description": "visa_free, visa_free_with_requirements, visa_on_arrival, eta_required, evisa_required, visa_required or unclear (more values may be added).",
      +          "type": "string"
      +        },
      +        "status_by_source": {
      +          "description": "Status according to each source.",
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "passport",
      +        "destination",
      +        "status",
      +        "quotes",
      +        "official_links",
      +        "advisory",
      +        "decision_support_only",
      +        "sources",
      +        "confidence",
      +        "last_verified"
      +      ],
      +      "title": "Result",
      +      "type": "object"
      +    },
      +    {
      +      "description": "Only on error results (isError: true): RFC 9457 problem, e.g. unknown country, no data, key required, rate limited, sanctions block.",
      +      "properties": {
      +        "detail": {
      +          "type": "string"
      +        },
      +        "status": {
      +          "type": "integer"
      +        },
      +        "title": {
      +          "type": "string"
      +        },
      +        "type": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "title",
      +        "status"
      +      ],
      +      "title": "Error (problem details)",
      +      "type": "object"
      +    },
      +    {
      +      "description": "Only on error results (isError: true): x402 v2 payment requirements. Pay and retry with _meta[\"x402/payment\"].",
      +      "properties": {
      +        "accepts": {
      +          "type": "array"
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "extensions": {
      +          "type": "object"
      +        },
      +        "resource": {
      +          "type": "object"
      +        },
      +        "x402Version": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "x402Version",
      +        "accepts"
      +      ],
      +      "title": "Error (x402 payment request)",
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description still adds real context: pilot coverage with an error listing supported passports, RFC 9457 errors, a mandatory advisory that must always be shown, decision-support-only framing, and free API key or x402 per call. It stops short of describing rate limits or latency, but the disclosure is well beyond the annotations.

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

Conciseness4/5

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

Front-loaded with purpose, then scope, then parameters, then operational notes — a sensible order with no filler sentences. It is on the long side, and enumerating the return fields (status, max_stay_days, quotes[], advisory, confidence, last_verified) duplicates the existing output schema, which is the one place a sentence could be cut.

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-required-param lookup with a pilot-coverage limitation, the description covers what an agent needs before calling: coverage boundaries, error behavior, cost/auth model, and the obligation to surface the advisory. Return values are documented by the output schema, so repeating them is redundant rather than necessary, and nothing decision-relevant is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns more by clarifying semantics the schema does not: passport means the nationality of the passport actually used (dual nationals need one call each) and destination is the country entered, not transit stops, plus a concrete {"passport":"GB","destination":"JP"} example. The lang and purpose parameters are left to the schema.

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

Purpose5/5

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

States a specific verb+resource (visa/entry requirements for a short tourist stay) and immediately bounds the scope to a pilot passport set from official government sources. It also names the sibling it is not (get_trip_brief) and the resolver it depends on (resolve_country), so an agent can place it precisely among the eight siblings.

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?

Explicit routing: one passport/one destination here, 'for a full trip use get_trip_brief, which embeds this per destination.' It also states when-not: transit, other visa types and special cases are out of scope, and coverage is tourism only. Nothing about selection is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources