Skip to main content
Glama

Travel eSIM plan detail

get_esim_plan
Read-onlyIdempotent

Use this when someone wants the detail of one plan returned by search_esim_plans or get_destination_overview: coverage (number of countries, region), features, validity and price. Needs the planId and the destination it was found under.

Input Schema

NameRequiredDescriptionDefault
planIdYesplanId returned by search_esim_plans.
currencyNoCurrency to show prices in (ISO 4217, e.g. "EUR", "GBP", "USD"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.
languageNoLanguage of the conversation (ISO 639-1). Links open our comparison page in that language when it exists, otherwise in English. Default "en".
destinationYesWhere the traveller is going, as they named it: a country in English or another common language ("Japan", "Japon"), an ISO 3166-1 alpha-2 code ("JP"), a well-known city ("Tokyo"), or one of the regions Europe, Asia, Africa, North America, South America, World, Balkans. Never the traveller's home country.

Output Schema

NameRequiredDescriptionDefault
planYes
currencyYesCurrency of price, pricePerGb and totals (ISO 4217).
languageYes
destinationYes
comparisonUrlYes
currencySymbolYesSymbol the MyBestSim page uses for that currency.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
      +  "enum": [
      +    "USD",
      +    "EUR",
      +    "GBP",
      +    "CAD",
      +    "AUD",
      +    "JPY",
      +    "CNY",
      +    "KRW",
      +    "INR",
      +    "THB",
      +    "IDR",
      +    "MYR",
      +    "SGD",
      +    "PHP",
      +    "VND",
      +    "PKR",
      +    "BDT",
      +    "LKR",
      +    "AED",
      +    "SAR",
      +    "ILS",
      +    "TRY",
      +    "ZAR",
      +    "KES",
      +    "NGN",
      +    "EGP",
      +    "MAD",
      +    "BRL",
      +    "MXN",
      +    "COP",
      +    "CLP",
      +    "PEN",
      +    "NZD",
      +    "CHF",
      +    "SEK",
      +    "NOK",
      +    "DKK",
      +    "PLN",
      +    "CZK",
      +    "HUF",
      +    "RON",
      +    "BGN",
      +    "RUB"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / currency
      Added value: +{
      +  "description": "Currency of price, pricePerGb and totals (ISO 4217).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / currencySymbol
      Added value: +{
      +  "description": "Symbol the MyBestSim page uses for that currency.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / plan / properties / price
      Added value: +{
      +  "description": "Price in the response currency, as the MyBestSim page shows it.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / plan / properties / pricePerGb
      Added value: +{
      +  "description": "Price per GB in the response currency; null when unlimited.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / plan / required
      Previous value: -[
      -  "planId",
      -  "provider",
      -  "providerSlug",
      -  "unlimited",
      -  "dataGb",
      -  "dataLabel",
      -  "durationDays",
      -  "priceUsd",
      -  "priceEur",
      -  "pricePerGbUsd",
      -  "coverage",
      -  "regionName",
      -  "countryCount",
      -  "fiveG",
      -  "hotspot",
      -  "calls",
      -  "sms",
      -  "url"
      -]New value: +[
      +  "planId",
      +  "provider",
      +  "providerSlug",
      +  "unlimited",
      +  "dataGb",
      +  "dataLabel",
      +  "durationDays",
      +  "price",
      +  "pricePerGb",
      +  "priceUsd",
      +  "priceEur",
      +  "pricePerGbUsd",
      +  "coverage",
      +  "regionName",
      +  "countryCount",
      +  "fiveG",
      +  "hotspot",
      +  "calls",
      +  "sms",
      +  "url"
      +]
    • changedOutput schema / required
      Previous value: -[
      -  "destination",
      -  "language",
      -  "comparisonUrl",
      -  "plan"
      -]New value: +[
      +  "destination",
      +  "language",
      +  "comparisonUrl",
      +  "currency",
      +  "currencySymbol",
      +  "plan"
      +]
  2. Changed3 schema fields changed
    • removedOutput schema / properties / plan / properties / listedOnPage
      Removed value: -{
      -  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
      -  "type": "boolean"
      -}
    • changedOutput schema / properties / plan / properties / url / description
      Previous value: -"MyBestSim comparison page for the destination."New value: +"MyBestSim comparison page that lists this plan."
    • changedOutput schema / properties / plan / required
      Previous value: -[
      -  "planId",
      -  "provider",
      -  "providerSlug",
      -  "unlimited",
      -  "dataGb",
      -  "dataLabel",
      -  "durationDays",
      -  "priceUsd",
      -  "priceEur",
      -  "pricePerGbUsd",
      -  "coverage",
      -  "regionName",
      -  "countryCount",
      -  "fiveG",
      -  "hotspot",
      -  "calls",
      -  "sms",
      -  "url",
      -  "listedOnPage"
      -]New value: +[
      +  "planId",
      +  "provider",
      +  "providerSlug",
      +  "unlimited",
      +  "dataGb",
      +  "dataLabel",
      +  "durationDays",
      +  "priceUsd",
      +  "priceEur",
      +  "pricePerGbUsd",
      +  "coverage",
      +  "regionName",
      +  "countryCount",
      +  "fiveG",
      +  "hotspot",
      +  "calls",
      +  "sms",
      +  "url"
      +]
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. Beyond that, the description adds the coupling constraint that the planId must be paired with the destination it was found under, which is non-obvious behavioral context. It does not cover error behavior for a stale/invalid planId, keeping it short of a 5.

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

Conciseness5/5

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

Two sentences, zero waste. The usage trigger is front-loaded and the payload (coverage, features, validity, price) plus required inputs follow compactly.

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 annotations covering the safety profile, a full output schema explaining the return shape, and 100% schema coverage of all four parameters, the description supplies everything else an agent needs: when to call it, what it yields, and the planId/destination dependency.

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 planId, destination, currency and language in detail. The description only restates that planId and destination are needed, adding the nuance that the destination must be the one the plan was found under. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (return the detail of one plan) and enumerates what the detail contains: coverage, features, validity, price. It ties the tool to its origin tools (search_esim_plans, get_destination_overview), so an agent can distinguish it from the sibling search/list tools immediately.

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

Usage Guidelines4/5

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

"Use this when someone wants the detail of one plan returned by search_esim_plans or get_destination_overview" gives a clear trigger condition and implies the prerequisite that the plan must already have been surfaced by a search. No explicit when-not-to-use case (e.g. browsing many plans), but the routing is clear.

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