Skip to main content
Glama

Compare travel eSIM plans

search_esim_plans
Read-onlyIdempotent

Use this when someone is choosing a travel eSIM or needs mobile data abroad for a given country or region, e.g. "cheapest eSIM for Japan", "10 GB for two weeks in Europe", "unlimited data in the USA". Returns a shortlist (up to 10, at most 2 per provider) from the MyBestSim comparator: data allowance, validity, price in the traveller's currency (pass currency; also USD and EUR), 5G/hotspot/calls/SMS, and the link to the full comparison page on mybestsim.com where the traveller buys from the provider. Pass durationDays and dataGb (or dataNeed) whenever the traveller mentions trip length or usage, and ask for them when unknown: without them a 7-day trip with standard use (0.7 GB/day) is assumed and reported in "assumptions"; with dataGb but no durationDays, plans valid for fewer than 7 days are excluded. For a trip through several countries or regions, call plan_trip_esim with every stage instead of searching each country. Prepaid travel eSIMs only: not home mobile contracts, physical SIM cards or a carrier's roaming pass.

Input Schema

NameRequiredDescriptionDefault
sortNovalue (default) = the cheapest plan that covers the data need (given, or assumed standard use) for the trip length; with unlimited=true and no figure, the lowest price per GB of fair use; cheapest = lowest total price; data = most data; days = longest validity. The need and trip length filter every sort.
limitNoNumber of plans to return (default 5).
dataGbNoMinimum data in GB, when the traveller gives a figure. Unlimited plans always qualify.
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.
dataNeedNoData appetite when no figure is given: light ≈ 0.3 GB/day (maps, messaging), standard ≈ 0.7 GB/day (social, some video), heavy ≈ 1.5 GB/day (streaming, hotspot). Multiplied by durationDays; without it a 7-day trip is assumed, and plans valid for fewer than 7 days are excluded. Ignored when dataGb is set.
featuresNoFeatures every returned plan must include.
languageNoLanguage of the conversation (ISO 639-1). Links open our comparison page in that language when it exists, otherwise in English. Default "en".
unlimitedNotrue = unlimited plans only; false = fixed-data plans only; omit for both.
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.
maxPriceUsdNoMaximum total price in USD.
durationDaysNoTrip length in days: plans valid for fewer days are excluded. Default 7 (reported in assumptions).

Output Schema

NameRequiredDescriptionDefault
sortYes
plansYes
matchedYesPlans matching the criteria, before the shortlist.
currencyYesCurrency of price, pricePerGb and totals (ISO 4217).
languageYes
minDataGbYes
totalPlansYesPlans listed on the comparison page of the destination.
assumptionsYesWhat was assumed because the traveller did not say it (null = given). Ask for the real value to refine.
destinationYes
comparisonUrlYes
currencySymbolYesSymbol the MyBestSim page uses for that currency.
minDurationDaysYesMinimum validity applied (given, or assumed); null when none.

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 / description
      Added value: +"Currency of price, pricePerGb and totals (ISO 4217)."
    • addedOutput schema / properties / currencySymbol
      Added value: +{
      +  "description": "Symbol the MyBestSim page uses for that currency.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / plans / items / properties / price
      Added value: +{
      +  "description": "Price in the response currency, as the MyBestSim page shows it.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / plans / items / properties / pricePerGb
      Added value: +{
      +  "description": "Price per GB in the response currency; null when unlimited.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / plans / items / 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",
      -  "currency",
      -  "sort",
      -  "minDataGb",
      -  "minDurationDays",
      -  "assumptions",
      -  "matched",
      -  "totalPlans",
      -  "plans"
      -]New value: +[
      +  "destination",
      +  "language",
      +  "comparisonUrl",
      +  "currency",
      +  "currencySymbol",
      +  "sort",
      +  "minDataGb",
      +  "minDurationDays",
      +  "assumptions",
      +  "matched",
      +  "totalPlans",
      +  "plans"
      +]
  2. Changed4 schema fields changed
    • removedOutput schema / properties / plans / items / 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 / plans / items / properties / url / description
      Previous value: -"MyBestSim comparison page for the destination."New value: +"MyBestSim comparison page that lists this plan."
    • changedOutput schema / properties / plans / items / 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"
      +]
    • changedOutput schema / properties / totalPlans / description
      Previous value: -"Plans compared for the destination (all of them, whatever their commercial terms)."New value: +"Plans listed on the comparison page of the destination."
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses return-shape behavior (shortlist up to 10, max 2 per provider, which attributes are returned) and, more importantly, undocumented default behavior: a 7-day trip at 0.7 GB/day is assumed and reported in "assumptions", and with dataGb but no durationDays plans valid for under 7 days are dropped. These filtering and fallback semantics go well past what annotations provide.

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?

It is front-loaded with the usage context and every sentence largely earns its place, but it is dense and a few clauses (currency default behavior, dataNeed rate detail) restate what the schema descriptions already carry. Slightly leaner would be ideal.

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?

An output schema exists, so return values need not be re-explained, yet the description still covers defaults, filtering rules, and the sibling routing needed to call this correctly. Nothing an agent needs to 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?

Schema coverage is already 100%, so the baseline is 3, but the description adds genuine cross-parameter guidance: when to pass durationDays/dataGb vs dataNeed, and the interaction where dataGb without durationDays excludes short-validity plans. It also explains currency is shown in the traveller's currency plus USD/EUR, value beyond the enum list.

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 (search/compare travel eSIM plans) and frames the exact user situation (choosing a travel eSIM for a country or region). It explicitly separates itself from the sibling plan_trip_esim for multi-country trips, so an agent can route correctly 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?

It gives concrete triggering examples ("cheapest eSIM for Japan", "10 GB for two weeks in Europe"), names the condition that selects the alternative tool ("For a trip through several countries or regions, call plan_trip_esim"), and states exclusions (prepaid travel eSIMs only; not home contracts, physical SIMs, or roaming passes).

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