Skip to main content
Glama

Get eSIM plan details

get-plan
Read-onlyIdempotent

Read everything about one eSIM plan by its id: data allowance, how long it stays valid, what happens after a fair-use cap, whether hotspot and top-ups are supported, the network it runs on, and the retail price in the currency you ask for. Use it to answer a specific question about a plan already found with list-plans or plan-trip, and before buying, to confirm the plan really matches what the traveller asked for. Ask get-plan-coverage instead when the question is which countries it works in. Read-only: it reserves nothing and charges nothing.

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": {
      "plan_id": "<plan_id>"
    },
    "name": "get-plan"
  }
}

Input Schema

NameRequiredDescriptionDefault
plan_idYesThe plan id: a 26-character ULID as returned by list-plans or plan-trip, e.g. "01JVQ2S6D4X8N0RMB7YQZ5K3TA". Slugs and supplier codes are not accepted, and an id must never be invented.
currencyNoOptional. ISO 4217 three-letter code the price is quoted in, e.g. "USD", "EUR", "GBP". Defaults to EUR. An unknown code falls back to EUR rather than failing.

Output Schema

NameRequiredDescriptionDefault
idYesThe plan id (a 26-character ULID). Pass it to get-plan, get-plan-coverage or create-checkout-session. Never invent one.
nameYesPlan name as a traveller sees it, e.g. "Spain 5GB".
typeYesWhat the plan sells: data only, or data plus a bundled voice and SMS allowance.
linksYesWhere a person buys this plan on simfuse.app.
regionYesRaw region value for a regional plan, e.g. "Europe". Null for a country plan.
carrierYesThe mobile network this plan runs on, when we can name it. Null when we cannot.
countryYesThe one country this plan is filed under. Null for a regional or worldwide plan.
networkYesThe network name as plain text, or null when unknown.
currencyYesISO 4217 code retail_price_cents is quoted in, e.g. "EUR".
operatorsYesNetwork operators the plan roams on, as a list. Empty when none are published.
is_worldwideYesTrue when the plan is sold as a worldwide bundle.
network_typeYesDeprecated two-valued form: "5G" for a 5G plan, "LTE" for everything else including plans whose generation was never stated. Read network_generation.
region_labelYesThe region formatted for a person to read. Null for a country plan.
coverage_typeYesScope of the plan: one country, a region, or worldwide.
validity_daysYesHow many days the plan stays valid once it activates.
coverage_countYesHow many countries coverage_countries holds.
data_amount_mbYesData allowance in megabytes (1 GB is 1024 MB). 0 on an unlimited plan, where data_usage_policy carries the real terms.
excluded_countYesHow many countries excluded_countries holds.
supports_topupYesWhether more data can be bought for the same eSIM once it runs low.
data_usage_policyYesWhat the plan really gives you. Null when the supplier has never published its terms, which is different from having no limits.
coverage_countriesYesEvery country the plan works in.
excluded_countriesYesCountries in this plan's own region that it does NOT cover. Always empty for a country plan and for a worldwide one.
network_generationYesThe network generation the plan is sold as, exactly as stated for it. Null means not stated, which is not the same as any generation; say "not stated" rather than assuming.
retail_price_centsYesRetail price in minor units (cents) of `currency`, so 1250 in EUR is 12.50 EUR. This is what a buyer pays for one eSIM.
supports_tetheringYesWhether hotspot or tethering is allowed. Null means no supplier has declared it, which is not the same as "no".
retail_prices_centsNoPrices in other currencies, keyed by ISO 4217 code, in minor units. Only the multi-currency surfaces (the catalog export) carry one, so it is absent here: read retail_price_cents and currency instead.
hotspot_usage_policyYesWhat the plan lets you do with a hotspot. Null when the terms were never established, which is different from being allowed.
data_restriction_typeYesWhether the allowance is capped ("limited") or unmetered ("unlimited").

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/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 the safety profile is covered; the description reinforces this in domain terms ('reserves nothing and charges nothing'), which is meaningful for a travel-purchase flow. It does not add much beyond annotations about failure modes or rate limits, but the purchasing-safety framing adds real value.

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?

Three sentences, front-loaded with the operation and the returned fields, then usage, then the exclusion. The field enumeration is dense but each item earns its place by telling the agent what questions this tool can answer.

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 spelled out; the description still summarizes them, covers the routing decision versus get-plan-coverage, and confirms the operation is side-effect free. Nothing an agent needs in order to call this correctly 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; the description adds a small but real link between the currency parameter and the returned price ('the retail price in the currency you ask for'). The plan_id constraint is fully handled by the schema, so no further compensation is needed.

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 ('read everything about one eSIM plan by its id') and enumerates the exact fields returned: data allowance, validity, fair-use cap behaviour, hotspot/top-up support, network, and price. This is clearly distinguishable from list-plans, plan-trip, and get-plan-coverage without opening any schema.

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?

Gives explicit when-to-use context ('to answer a specific question about a plan already found with list-plans or plan-trip, and before buying') and an explicit exclusion routing to a sibling ('Ask get-plan-coverage instead when the question is which countries it works in'). The alternative and the condition selecting it are both named.

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