Skip to main content
Glama

Server Details

Search travel eSIM data plans worldwide with live prices, plan details and a buy link.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a crisply bounded role: search_esim_plans for destination lookups, recommend_plan for whole-trip descriptions, get_plan_details for one product id, get_shop_facts for how/when/what-if questions, and start_checkout for purchase handoff. The descriptions even include explicit routing hints (e.g. 'use recommend_plan when they describe a whole trip'), leaving little room for misselection.

Naming Consistency5/5

All five names follow a strict verb_noun snake_case pattern: get_plan_details, get_shop_facts, recommend_plan, search_esim_plans, start_checkout. No mixed conventions or vague verbs.

Tool Count5/5

Five tools neatly cover the pre-purchase lifecycle (discover, recommend, detail, FAQ, buy) with no redundancy or filler. This is a well-scoped surface for a focused eSIM storefront.

Completeness4/5

Discovery, recommendation, plan detail, shop FAQ, and checkout are all present, matching the stated domain well. The main gaps are post-purchase concerns (order status, top-ups), though the descriptions note these are deliberately out of scope for the shop.

Available Tools

5 tools
get_plan_detailsGet plan detailsA
Read-onlyIdempotent
Inspect

Full facts for one e-eSIM plan by product id: coverage list, data and speed rules (daily allowance, reduced speed, fair use), validity clock, expiry date, notice, carrier, price, reviews and link — quoted in the customer's bucket or currency when given.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketNoOptional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.
currencyNoOptional ISO 4217 code. Every price in the result is quoted in it.
languageNoISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.
product_idYesProduct id from search_esim_plans or recommend_plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fupNoSame as fair_use (1.0.x name).
skuNoCatalogue SKU.
urlNoProduct page in pricing_bucket. Use verbatim.
dataNoTrip Surf: total data label, e.g. "5GB".
daysNoValidity in days.
nameNoShort plan name: destination · data · validity · type.
typeNoPlan type. Brand names — keep in English.
gradeNoAll You Can Surf tier (standard, premium, titanium). Present only the returned value; every grade has a daily full-speed allowance then a reduced speed.
priceNoFULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid.
titleNoFull product title in the requested language.
topupNoTop-up possibility for this plan.
noticeNoSame as plan_note (1.0.x name).
ratingNoAverage customer rating (1-5). Present only when reviews exist.
carrierNoLocal network operator when specified (1.0.x name; also in networks). NEVER invent one when absent.
data_gbNoData amount in GB. Meaning given by data_period.
networkNoSame as network_generation (1.0.x name).
summaryNoShort description in the requested language, from the product page.
coverageNoSame as coverage_label (1.0.x name).
currencyNoISO 4217 currency of every price in this object.
fair_useNoAll You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned.
networksNoOperator name(s) for the plan, as the shop states them.
validityNoValidity label, e.g. "30 days".
family_idNoPlans sharing a family_id are day-length variants of the same package.
plan_noteNoCustomer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever present.
voice_smsNoAlways "none": data only, no telephone number, no SMS.
covers_viaNoPresent when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name.
data_resetNoSame as daily_reset_time (1.0.x name).
expires_onNoHard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present.
product_idNoProduct id. Use it for get_plan_details and start_checkout.
data_periodNo"total": data_gb is the whole plan (Trip Surf). "per_day": data_gb is the daily full-speed allowance (Daily Surf, All You Can Surf).
price_basisNoAlways "total" on e-eSIM.
last_updatedNoDate the plan was last updated in the catalogue (YYYY-MM-DD).
review_countNoNumber of reviews. Present only when > 0.
coverage_noteNoCoverage caveat to present verbatim, e.g. traffic routed via Hong Kong.
throttle_kbpsNoThe same reduced speed in kbps. 0 = no throttle stated for this plan.
always_on_rateNoReduced speed after the allowance, e.g. "5 Mbps" / "128 kbps" (for the rest of that day on per_day plans; for the rest of the trip on Trip Surf). All You Can Surf stays unlimited in volume at this speed.
coverage_countNoNumber of countries in coverage_countries.
coverage_labelNoHuman-readable coverage label as the shop shows it (localized).
price_is_finalNoAlways true: no tax or fee is added at checkout.
pricing_bucketNolanguage-region bucket the prices and links are quoted in, e.g. "en-us".
validity_clockNoWhat the days count means for THIS plan: 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. "ends 23:59 (UTC+8)"). State it; a 1-day calendar plan activated in the evening lasts only hours.
daily_high_speedNoDaily Surf / All You Can Surf: daily allowance at full speed, e.g. "2GB".
daily_reset_timeNoWhen the daily allowance refreshes (per_day plans only), e.g. "00:00 (UTC+8)" or "every 24 h after activation".
coverage_countriesNoEvery country the plan works in.
network_generationNoNetwork generation, e.g. "5G/4G". Never an operator name.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, lowering the burden. The description adds real context beyond them: it is a per-product lookup, and quoting is governed by bucket/currency when supplied, which tells the agent how localization affects the result.

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?

One dense, front-loaded sentence that leads with the purpose and then the payload, with no filler sentences. It is long but every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/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 explained, yet the description usefully summarizes them. Combined with full schema coverage and safety annotations, an agent has what it needs, though the absence of any routing guidance to siblings is a minor gap.

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 baseline is 3. The clause 'quoted in the customer's bucket or currency when given' restates and slightly reinforces the bucket/currency precedence already documented in the schema, but adds no new syntax or format detail.

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

Purpose4/5

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

States a specific verb and resource ('Full facts for one e-eSIM plan by product id') and enumerates the returned facts, so the agent knows exactly what this retrieves. It does not explicitly name a sibling or say how it differs from get_shop_facts, though the product_id framing implicitly positions it after search/recommend.

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

Usage Guidelines3/5

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

Usage is only implied: the workflow (search → recommend → fetch details) is inferable from the product_id source noted in the schema, but the description itself gives no when-to-use or when-not-to-use guidance and names no alternative sibling.

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

get_shop_factsShop factsA
Read-onlyIdempotent
Inspect

How e-eSIM works, in the shop's own words: delivery and installation, device requirements, payment methods, refund policy, no top-ups, hotspot, Usage Dashboard and apps, support and company details. Use for any "how / when / what if" question that is not about one specific plan.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered, and an output schema exists to explain returns. The description adds only the content scope and the note that answers are 'in the shop's own words' (authoritative, verbatim), which is modest added value rather than rich behavioral disclosure.

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 two sentences, front-loaded with the subject matter and ending on the routing rule. The topic list is dense but each item earns its place by signalling coverage. Minor cost: the enumeration reads as a run-on rather than a structured list.

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 no parameters, a full output schema, and annotations covering safety, the description only needs to convey scope and when to call it - both are present and unambiguous. Nothing an agent needs to invoke 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?

The tool takes zero parameters and the schema is trivially covered, so there is nothing for the description to disambiguate. Baseline of 4 applies for a no-parameter tool.

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

Purpose4/5

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

The description enumerates the concrete content the tool returns (delivery/installation, device requirements, payment methods, refund policy, hotspot, support/company details), which makes the resource unmistakable. It also distinguishes itself from the plan-oriented siblings with 'not about one specific plan.' The only weakness is that the retrieval verb is implied rather than stated directly.

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 an explicit routing rule: use for any 'how / when / what if' question, plus the exclusion that bounds it away from plan-specific queries. That is enough to separate it from get_plan_details and search_esim_plans without opening any schema.

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

recommend_planRecommend a plan for a tripA
Read-onlyIdempotent
Inspect

Turn a trip into up to three plan recommendations: countries (1-5, any language), number of days and how much data the traveller uses. Each fit carries the full plan facts, the total price for the whole trip and a one-sentence reason built only from catalogue facts. Use this first whenever the user describes a trip rather than asks for a list.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysYesTrip length in days.
usageNolight ≈ 0.5 GB/day (maps, messaging), normal ≈ 1.5 GB/day (social, some video), heavy ≈ 4 GB/day (video, hotspot). Default normal.
bucketNoOptional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.
budgetNoOptional maximum total for the trip, in the result currency.
currencyNoOptional ISO 4217 code. Every price in the result is quoted in it.
languageNoISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.
countriesYesCountries or regions of the trip, any language.
gb_per_dayNoOverrides usage with an explicit daily need in GB.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tripNo
messageNo
currencyNo
all_plans_urlNo
pricing_bucketNo
recommendationsNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered structurally. The description adds that each fit carries full plan facts, total price and a one-sentence reason 'built only from catalogue facts' — useful grounding context — but does not disclose latency, result caps beyond 'up to three', or how budget/currency affect filtering behavior.

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?

Two sentences, front-loaded with the transformation and what comes back, with no filler. The second sentence is dense but every clause (facts, total price, grounded reason) carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema and annotation coverage, the description only needs to convey purpose and routing, which it does. The remaining gap is minimal — it doesn't mention what happens when budget/currency/language conflict with bucket, but the schema handles precedence.

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 100%, so every parameter including the usage enum, bucket, currency and gb_per_day override is fully documented inline. The description restates countries/days/usage at a high level with no added syntax or precedence detail, so it neither adds nor detracts; baseline 3 applies.

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 gives a specific verb+resource ('Turn a trip into up to three plan recommendations') and enumerates the inputs that drive the recommendation (countries, days, data usage). It also distinguishes itself from the list-oriented sibling search_esim_plans by framing itself as the trip-description entry point.

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 gives an explicit routing rule: 'Use this first whenever the user describes a trip rather than asks for a list,' which implicitly contrasts with search_esim_plans. However, it does not name the sibling tools (get_plan_details, search_esim_plans) or state what to do once a recommendation is returned, so the routing is clear but not exhaustive.

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

search_esim_plansFind eSIM plansA
Read-onlyIdempotent
Inspect

Find e-eSIM eSIM plans for one destination or several (countries or regions, any language). Returns the best-value plans first with full facts, coverage lists and a direct link; multi-country plans that include the destination are returned too and marked covers_via. Use when a user wants mobile data abroad; use recommend_plan when they describe a whole trip.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNovalue = best price per GB delivered / cheapest All You Can Surf per day first (default); price = cheapest first; data = most data first.
typeNoPlan type. Default any.
limitNoPlans to return. Default 10; all_plans_url lists everything.
bucketNoOptional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.
currencyNoOptional ISO 4217 code. Every price in the result is quoted in it.
languageNoISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.
min_daysNoOnly plans valid for at least this many days.
destinationNoCountry or region in any language, e.g. "Thailand", "Japon", "Europa", or a 2-letter ISO code. For a city, pass its country.
destinationsNoSeveral countries for one trip; only plans covering ALL of them are returned. Overrides destination.

Output Schema

ParametersJSON Schema
NameRequiredDescription
isoNoResolved ISO code or region slug of the (first) destination.
noteNoPresent when part of the request could not be honoured (e.g. more than 5 destinations).
plansNo
coveredNo
messageNoPresent when nothing matched: says why and what to try.
currencyNo
returnedNo
from_priceNoLowest price in this result set, shop-formatted (per-day plans count with their day price).
destinationNo
destinationsNoHow each requested destination was understood.
all_plans_urlNo
pricing_bucketNo
total_availableNoPlans matched before limit; the rest are on all_plans_url.

TDQS

A4.5/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, open-world), so the bar is lower. The description still adds useful behavior beyond them: ranking is best-value first, results include coverage lists and a direct link, and multi-country plans covering the destination appear and are flagged covers_via.

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 well-packed sentences: scope first, then return/ranking behavior, then usage routing. Every clause carries information an agent needs; there is no filler or restatement of the name.

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 9-parameter, 0-required search tool with a full output schema and complete annotation coverage, the description covers scope, ranking, result contents, multi-country handling, and sibling routing. Nothing an agent needs to call it 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 100%, so baseline is 3. The description adds semantic context the schema does not fully carry: destinations accepts multiple countries for one trip, plans must cover all of them, and the multi-country inclusion/flagging behavior of covers_via. Marginal but genuine added value.

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 (find eSIM plans) and precisely defines the search scope: one destination or several, countries or regions, any language. It also distinguishes itself from recommend_plan, so an agent can route correctly without opening either 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?

Gives an explicit trigger ('when a user wants mobile data abroad') and names the alternative with its selecting condition ('use recommend_plan when they describe a whole trip'). It stops short of stating when *not* to use it relative to the other siblings (get_plan_details, start_checkout), but the routing guidance is clear.

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

start_checkoutStart secure checkoutA
Read-onlyIdempotent
Inspect

Hand the customer to the e-eSIM shop to buy one plan. Returns buy_url (the product page where they tap Buy now and pay securely — card, Apple Pay, Google Pay, PayPal; there is no discount-code field) plus the plan name and price in the customer's bucket or currency. No account needed; the eSIM is emailed right after payment. There is no in-chat order tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketNoOptional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.
currencyNoOptional ISO 4217 code. Every price in the result is quoted in it.
languageNoISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.
product_idYesProduct id to buy.

Output Schema

ParametersJSON Schema
NameRequiredDescription
priceNoFULL fixed price of the plan.
buy_urlNoThe exact product page to send the customer to. Use verbatim.
messageNo
productNo
currencyNo
app_linksNoOptional store links of the free e-eSIM app (android, ios) - the eSIM works without it.
product_idNo
price_basisNo
presentationNo
price_is_finalNo
pricing_bucketNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description is consistent with them since it only produces a URL rather than mutating anything. It adds genuinely useful behavior: no account required, eSIM emailed post-payment, accepted payment methods, and the notable absence of any discount-code field.

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?

Three sentences, purpose front-loaded, with delivery and payment details following. Dense but nearly every clause carries actionable information; only the payment-method enumeration is arguably expendable.

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, yet the description still tells the agent what the call yields (buy_url, plan name, price) and covers the customer-facing prerequisites and delivery path. Nothing needed 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 100%, so all four parameters are already documented, including the bucket-wins-over-language precedence and currency quoting. The description reinforces the bucket/currency effect on returned prices but adds no syntax or format information beyond the schema, matching the baseline 3.

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 action and resource: hand the customer to the e-eSIM shop to buy one plan. It also names the return artifact (buy_url) and what it contains, which separates it cleanly from search_esim_plans, recommend_plan, and get_plan_details.

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?

The description makes the triggering context clear ('buy one plan', hands off to shop) and sets expectation boundaries ('no in-chat order tracking'), but it never names a sibling alternative or an explicit when-not-to-use condition, so routing is inferred rather than stated.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedget_plan_details54 fields changed
      • addedInput schema / properties / bucket
        Added value: +{
        +  "description": "Optional language-region bucket the customer shops in, e.g. \"en-gb\", \"de-de\". Wins over language; prices and links are quoted in it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Optional ISO 4217 code. Every price in the result is quoted in it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / language / description
        Previous value: -"ISO language of the conversation. Localizes names/labels and sets the landing-page language/currency of the link."New value: +"ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare \"en\" is quoted in en-us / USD."
      • changedInput schema / properties / product_id / description
        Previous value: -"WooCommerce product id from search_esim_plans."New value: +"Product id from search_esim_plans or recommend_plan."
      • addedOutput schema / description
        Added value: +"One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\"."
      • addedOutput schema / properties / always_on_rate
        Added value: +{
        +  "description": "Reduced speed after the allowance, e.g. \"5 Mbps\" / \"128 kbps\" (for the rest of that day on per_day plans; for the rest of the trip on Trip Surf). All You Can Surf stays unlimited in volume at this speed.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / carrier / description
        Previous value: -"Local network operator, when specified. NEVER invent one if empty."New value: +"Local network operator when specified (1.0.x name; also in networks). NEVER invent one when absent."
      • changedOutput schema / properties / coverage / description
        Previous value: -"Human-readable coverage label (localized)."New value: +"Same as coverage_label (1.0.x name)."
      • addedOutput schema / properties / coverage_count
        Added value: +{
        +  "description": "Number of countries in coverage_countries.",
        +  "type": "integer"
        +}
      • changedOutput schema / properties / coverage_countries / description
        Previous value: -"Localized country names covered (details tool only, multi-country plans)."New value: +"Every country the plan works in."
      • addedOutput schema / properties / coverage_countries / items / additionalProperties
        Added value: +true
      • addedOutput schema / properties / coverage_countries / items / properties
        Added value: +{
        +  "iso": {
        +    "description": "ISO 3166-1 alpha-2, lowercase.",
        +    "type": "string"
        +  },
        +  "name": {
        +    "description": "Country name in the requested language.",
        +    "type": "string"
        +  }
        +}
      • changedOutput schema / properties / coverage_countries / items / type
        Previous value: -"string"New value: +"object"
      • addedOutput schema / properties / coverage_label
        Added value: +{
        +  "description": "Human-readable coverage label as the shop shows it (localized).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / coverage_note
        Added value: +{
        +  "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / covers_via
        Added value: +{
        +  "description": "Present when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / currency / description
        Added value: +"ISO 4217 currency of every price in this object."
      • addedOutput schema / properties / daily_high_speed
        Added value: +{
        +  "description": "Daily Surf / All You Can Surf: daily allowance at full speed, e.g. \"2GB\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / daily_reset_time
        Added value: +{
        +  "description": "When the daily allowance refreshes (per_day plans only), e.g. \"00:00 (UTC+8)\" or \"every 24 h after activation\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / data
        Added value: +{
        +  "description": "Trip Surf: total data label, e.g. \"5GB\".",
        +  "type": "string"
        +}
      • changedOutput schema / properties / data_gb / description
        Previous value: -"High-speed data in GB. PER DAY when data_period is per_day (Daily Surf); TOTAL for the whole validity when data_period is total (Trip Surf). 0 = no fixed high-speed cap stated."New value: +"Data amount in GB. Meaning given by data_period."
      • changedOutput schema / properties / data_period / description
        Previous value: -"per_day or total — how data_gb applies."New value: +"\"total\": data_gb is the whole plan (Trip Surf). \"per_day\": data_gb is the daily full-speed allowance (Daily Surf, All You Can Surf)."
      • addedOutput schema / properties / data_period / enum
        Added value: +[
        +  "total",
        +  "per_day"
        +]
      • changedOutput schema / properties / data_reset / description
        Previous value: -"When the daily allowance refreshes (per_day plans only). Empty when unknown."New value: +"Same as daily_reset_time (1.0.x name)."
      • removedOutput schema / properties / description
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / expires_on / description
        Previous value: -"Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present, and do not recommend a day count that cannot finish before it. Empty for the vast majority of plans."New value: +"Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present."
      • addedOutput schema / properties / fair_use
        Added value: +{
        +  "description": "All You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / fup / description
        Previous value: -"All You Can Surf fair-use policy in plain words (daily full-speed allowance and the still-unlimited reduced speed afterwards). Present it as returned — every AYCS grade has such an allowance; empty for non-AYCS plans."New value: +"Same as fair_use (1.0.x name)."
      • changedOutput schema / properties / grade / description
        Previous value: -"All You Can Surf tier qualifier (empty for standard). Present only the returned value."New value: +"All You Can Surf tier (standard, premium, titanium). Present only the returned value; every grade has a daily full-speed allowance then a reduced speed."
      • addedOutput schema / properties / last_updated
        Added value: +{
        +  "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD).",
        +  "type": "string"
        +}
      • changedOutput schema / properties / name / description
        Previous value: -"Plan name, localized to the requested language where a translation exists."New value: +"Short plan name: destination · data · validity · type."
      • changedOutput schema / properties / network / description
        Previous value: -"Network generation, e.g. 5G/4G. NEVER invent one if empty."New value: +"Same as network_generation (1.0.x name)."
      • addedOutput schema / properties / network_generation
        Added value: +{
        +  "description": "Network generation, e.g. \"5G/4G\". Never an operator name.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / networks
        Added value: +{
        +  "description": "Operator name(s) for the plan, as the shop states them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever it is non-empty — never omit or soften it. Empty when the plan has no caveat."New value: +"Same as plan_note (1.0.x name)."
      • addedOutput schema / properties / plan_note
        Added value: +{
        +  "description": "Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever present.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / price / description
        Previous value: -"FULL fixed price in currency; not per-day or per-GB."New value: +"FULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid."
      • addedOutput schema / properties / price_basis
        Added value: +{
        +  "description": "Always \"total\" on e-eSIM.",
        +  "enum": [
        +    "total"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / price_is_final
        Added value: +{
        +  "description": "Always true: no tax or fee is added at checkout.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / pricing_bucket
        Added value: +{
        +  "description": "language-region bucket the prices and links are quoted in, e.g. \"en-us\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / product_id / description
        Added value: +"Product id. Use it for get_plan_details and start_checkout."
      • addedOutput schema / properties / rating / description
        Added value: +"Average customer rating (1-5). Present only when reviews exist."
      • addedOutput schema / properties / review_count / description
        Added value: +"Number of reviews. Present only when > 0."
      • addedOutput schema / properties / sku
        Added value: +{
        +  "description": "Catalogue SKU.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / summary
        Added value: +{
        +  "description": "Short description in the requested language, from the product page.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / throttle_kbps / description
        Previous value: -"Speed in kbps after the high-speed allowance is used (for that day on per_day plans; for the rest of the trip on total plans). 0 = no throttle stated in this plan's specification."New value: +"The same reduced speed in kbps. 0 = no throttle stated for this plan."
      • addedOutput schema / properties / title
        Added value: +{
        +  "description": "Full product title in the requested language.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / topup
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Top-up possibility for this plan.",
        +  "properties": {
        +    "how": {
        +      "description": "How the customer tops up.",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "description": "Always \"none\" on e-eSIM: no top-ups or recharges exist; each plan is a self-contained eSIM.",
        +      "enum": [
        +        "data",
        +        "days",
        +        "none"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedOutput schema / properties / type / description
        Previous value: -"Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English."New value: +"Plan type. Brand names — keep in English."
      • addedOutput schema / properties / type / enum
        Added value: +[
        +  "Daily Surf",
        +  "Trip Surf",
        +  "All You Can Surf"
        +]
      • addedOutput schema / properties / url / description
        Added value: +"Product page in pricing_bucket. Use verbatim."
      • addedOutput schema / properties / validity
        Added value: +{
        +  "description": "Validity label, e.g. \"30 days\".",
        +  "type": "string"
        +}
      • changedOutput schema / properties / validity_clock / description
        Previous value: -"What the days count means for THIS plan: either 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it whenever it is present — a calendar-day plan bought in the evening loses most of its first day. Empty when unknown."New value: +"What the days count means for THIS plan: 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it; a 1-day calendar plan activated in the evening lasts only hours."
      • addedOutput schema / properties / voice_sms
        Added value: +{
        +  "description": "Always \"none\": data only, no telephone number, no SMS.",
        +  "type": "string"
        +}
    • Addedget_shop_facts
    • Addedrecommend_plan
    • Changedsearch_esim_plans71 fields changed
      • addedInput schema / properties / bucket
        Added value: +{
        +  "description": "Optional language-region bucket the customer shops in, e.g. \"en-gb\", \"de-de\". Wins over language; prices and links are quoted in it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / currency / description
        Previous value: -"Optional ISO 4217 override for quoted prices. Normally derived from language."New value: +"Optional ISO 4217 code. Every price in the result is quoted in it."
      • changedInput schema / properties / destination / description
        Previous value: -"Country or region in ANY language, e.g. \"Thailand\", \"Japon\", \"Europa\". City names are mapped to their country by you first."New value: +"Country or region in any language, e.g. \"Thailand\", \"Japon\", \"Europa\", or a 2-letter ISO code. For a city, pass its country."
      • addedInput schema / properties / destinations
        Added value: +{
        +  "description": "Several countries for one trip; only plans covering ALL of them are returned. Overrides destination.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
      • changedInput schema / properties / language / description
        Previous value: -"ISO language of the conversation, e.g. en, de, ja, th. Localizes names/labels and sets the landing-page language and currency."New value: +"ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare \"en\" is quoted in en-us / USD."
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Plans to return. Default 10; all_plans_url lists everything.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / min_days
        Added value: +{
        +  "description": "Only plans valid for at least this many days.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "value = best price per GB delivered / cheapest All You Can Surf per day first (default); price = cheapest first; data = most data first.",
        +  "enum": [
        +    "value",
        +    "price",
        +    "data"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / type / description
        Previous value: -"Plan type filter. daily_surf = fresh allowance each day; trip_surf = one pool for the trip; all_you_can_surf = unlimited-style. Default any."New value: +"Plan type. Default any."
      • changedInput schema / required
        Previous value: -[
        -  "destination"
        -]New value: +[]
      • removedOutput schema / properties / destination / description
        Removed value: -"Resolved destination label (localized)."
      • addedOutput schema / properties / destinations
        Added value: +{
        +  "description": "How each requested destination was understood.",
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "iso": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "query": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / from_price / description
        Previous value: -"Lowest full plan price in currency."New value: +"Lowest price in this result set, shop-formatted (per-day plans count with their day price)."
      • changedOutput schema / properties / from_price / type
        Previous value: -"number"New value: +"string"
      • addedOutput schema / properties / iso
        Added value: +{
        +  "description": "Resolved ISO code or region slug of the (first) destination.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / message / description
        Added value: +"Present when nothing matched: says why and what to try."
      • addedOutput schema / properties / note
        Added value: +{
        +  "description": "Present when part of the request could not be honoured (e.g. more than 5 destinations).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / description
        Added value: +"One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\"."
      • addedOutput schema / properties / plans / items / properties / always_on_rate
        Added value: +{
        +  "description": "Reduced speed after the allowance, e.g. \"5 Mbps\" / \"128 kbps\" (for the rest of that day on per_day plans; for the rest of the trip on Trip Surf). All You Can Surf stays unlimited in volume at this speed.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / carrier / description
        Previous value: -"Local network operator, when specified. NEVER invent one if empty."New value: +"Local network operator when specified (1.0.x name; also in networks). NEVER invent one when absent."
      • changedOutput schema / properties / plans / items / properties / coverage / description
        Previous value: -"Human-readable coverage label (localized)."New value: +"Same as coverage_label (1.0.x name)."
      • addedOutput schema / properties / plans / items / properties / coverage_count
        Added value: +{
        +  "description": "Number of countries in coverage_countries.",
        +  "type": "integer"
        +}
      • changedOutput schema / properties / plans / items / properties / coverage_countries / description
        Previous value: -"Localized country names covered (details tool only, multi-country plans)."New value: +"Every country the plan works in."
      • addedOutput schema / properties / plans / items / properties / coverage_countries / items / additionalProperties
        Added value: +true
      • addedOutput schema / properties / plans / items / properties / coverage_countries / items / properties
        Added value: +{
        +  "iso": {
        +    "description": "ISO 3166-1 alpha-2, lowercase.",
        +    "type": "string"
        +  },
        +  "name": {
        +    "description": "Country name in the requested language.",
        +    "type": "string"
        +  }
        +}
      • changedOutput schema / properties / plans / items / properties / coverage_countries / items / type
        Previous value: -"string"New value: +"object"
      • addedOutput schema / properties / plans / items / properties / coverage_label
        Added value: +{
        +  "description": "Human-readable coverage label as the shop shows it (localized).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / coverage_note
        Added value: +{
        +  "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / covers_via
        Added value: +{
        +  "description": "Present when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / currency / description
        Added value: +"ISO 4217 currency of every price in this object."
      • addedOutput schema / properties / plans / items / properties / daily_high_speed
        Added value: +{
        +  "description": "Daily Surf / All You Can Surf: daily allowance at full speed, e.g. \"2GB\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / daily_reset_time
        Added value: +{
        +  "description": "When the daily allowance refreshes (per_day plans only), e.g. \"00:00 (UTC+8)\" or \"every 24 h after activation\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / data
        Added value: +{
        +  "description": "Trip Surf: total data label, e.g. \"5GB\".",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / data_gb / description
        Previous value: -"High-speed data in GB. PER DAY when data_period is per_day (Daily Surf); TOTAL for the whole validity when data_period is total (Trip Surf). 0 = no fixed high-speed cap stated."New value: +"Data amount in GB. Meaning given by data_period."
      • changedOutput schema / properties / plans / items / properties / data_period / description
        Previous value: -"per_day or total — how data_gb applies."New value: +"\"total\": data_gb is the whole plan (Trip Surf). \"per_day\": data_gb is the daily full-speed allowance (Daily Surf, All You Can Surf)."
      • addedOutput schema / properties / plans / items / properties / data_period / enum
        Added value: +[
        +  "total",
        +  "per_day"
        +]
      • changedOutput schema / properties / plans / items / properties / data_reset / description
        Previous value: -"When the daily allowance refreshes (per_day plans only). Empty when unknown."New value: +"Same as daily_reset_time (1.0.x name)."
      • removedOutput schema / properties / plans / items / properties / description
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / plans / items / properties / expires_on / description
        Previous value: -"Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present, and do not recommend a day count that cannot finish before it. Empty for the vast majority of plans."New value: +"Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present."
      • addedOutput schema / properties / plans / items / properties / fair_use
        Added value: +{
        +  "description": "All You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / fup / description
        Previous value: -"All You Can Surf fair-use policy in plain words (daily full-speed allowance and the still-unlimited reduced speed afterwards). Present it as returned — every AYCS grade has such an allowance; empty for non-AYCS plans."New value: +"Same as fair_use (1.0.x name)."
      • changedOutput schema / properties / plans / items / properties / grade / description
        Previous value: -"All You Can Surf tier qualifier (empty for standard). Present only the returned value."New value: +"All You Can Surf tier (standard, premium, titanium). Present only the returned value; every grade has a daily full-speed allowance then a reduced speed."
      • addedOutput schema / properties / plans / items / properties / last_updated
        Added value: +{
        +  "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD).",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / name / description
        Previous value: -"Plan name, localized to the requested language where a translation exists."New value: +"Short plan name: destination · data · validity · type."
      • changedOutput schema / properties / plans / items / properties / network / description
        Previous value: -"Network generation, e.g. 5G/4G. NEVER invent one if empty."New value: +"Same as network_generation (1.0.x name)."
      • addedOutput schema / properties / plans / items / properties / network_generation
        Added value: +{
        +  "description": "Network generation, e.g. \"5G/4G\". Never an operator name.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / networks
        Added value: +{
        +  "description": "Operator name(s) for the plan, as the shop states them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / plans / items / properties / notice / description
        Previous value: -"Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever it is non-empty — never omit or soften it. Empty when the plan has no caveat."New value: +"Same as plan_note (1.0.x name)."
      • addedOutput schema / properties / plans / items / properties / plan_note
        Added value: +{
        +  "description": "Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever present.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / price / description
        Previous value: -"FULL fixed price in currency; not per-day or per-GB."New value: +"FULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid."
      • addedOutput schema / properties / plans / items / properties / price_basis
        Added value: +{
        +  "description": "Always \"total\" on e-eSIM.",
        +  "enum": [
        +    "total"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / price_is_final
        Added value: +{
        +  "description": "Always true: no tax or fee is added at checkout.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / plans / items / properties / pricing_bucket
        Added value: +{
        +  "description": "language-region bucket the prices and links are quoted in, e.g. \"en-us\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / product_id / description
        Added value: +"Product id. Use it for get_plan_details and start_checkout."
      • addedOutput schema / properties / plans / items / properties / rating / description
        Added value: +"Average customer rating (1-5). Present only when reviews exist."
      • addedOutput schema / properties / plans / items / properties / review_count / description
        Added value: +"Number of reviews. Present only when > 0."
      • addedOutput schema / properties / plans / items / properties / sku
        Added value: +{
        +  "description": "Catalogue SKU.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / summary
        Added value: +{
        +  "description": "Short description in the requested language, from the product page.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / throttle_kbps / description
        Previous value: -"Speed in kbps after the high-speed allowance is used (for that day on per_day plans; for the rest of the trip on total plans). 0 = no throttle stated in this plan's specification."New value: +"The same reduced speed in kbps. 0 = no throttle stated for this plan."
      • addedOutput schema / properties / plans / items / properties / title
        Added value: +{
        +  "description": "Full product title in the requested language.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / topup
        Added value: +{
        +  "additionalProperties": true,
        +  "description": "Top-up possibility for this plan.",
        +  "properties": {
        +    "how": {
        +      "description": "How the customer tops up.",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "description": "Always \"none\" on e-eSIM: no top-ups or recharges exist; each plan is a self-contained eSIM.",
        +      "enum": [
        +        "data",
        +        "days",
        +        "none"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • changedOutput schema / properties / plans / items / properties / type / description
        Previous value: -"Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English."New value: +"Plan type. Brand names — keep in English."
      • addedOutput schema / properties / plans / items / properties / type / enum
        Added value: +[
        +  "Daily Surf",
        +  "Trip Surf",
        +  "All You Can Surf"
        +]
      • addedOutput schema / properties / plans / items / properties / url / description
        Added value: +"Product page in pricing_bucket. Use verbatim."
      • addedOutput schema / properties / plans / items / properties / validity
        Added value: +{
        +  "description": "Validity label, e.g. \"30 days\".",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plans / items / properties / validity_clock / description
        Previous value: -"What the days count means for THIS plan: either 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it whenever it is present — a calendar-day plan bought in the evening loses most of its first day. Empty when unknown."New value: +"What the days count means for THIS plan: 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it; a 1-day calendar plan activated in the evening lasts only hours."
      • addedOutput schema / properties / plans / items / properties / voice_sms
        Added value: +{
        +  "description": "Always \"none\": data only, no telephone number, no SMS.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pricing_bucket
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / returned
        Added value: +{
        +  "type": "integer"
        +}
      • removedOutput schema / properties / slug
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / total_available
        Added value: +{
        +  "description": "Plans matched before limit; the rest are on all_plans_url.",
        +  "type": "integer"
        +}
    • Changedstart_checkout12 fields changed
      • addedInput schema / properties / bucket
        Added value: +{
        +  "description": "Optional language-region bucket the customer shops in, e.g. \"en-gb\", \"de-de\". Wins over language; prices and links are quoted in it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Optional ISO 4217 code. Every price in the result is quoted in it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / language / description
        Previous value: -"ISO language of the conversation. Sets the language/currency of the payment page."New value: +"ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare \"en\" is quoted in en-us / USD."
      • changedInput schema / properties / product_id / description
        Previous value: -"WooCommerce product id to buy."New value: +"Product id to buy."
      • addedOutput schema / properties / app_links / additionalProperties
        Added value: +true
      • changedOutput schema / properties / app_links / description
        Previous value: -"Optional links to the free e-eSIM app (android/ios) for tracking data usage after setup. Mention only when present."New value: +"Optional store links of the free e-eSIM app (android, ios) - the eSIM works without it."
      • addedOutput schema / properties / presentation
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / price / description
        Previous value: -"Full fixed price in currency; not per-day."New value: +"FULL fixed price of the plan."
      • addedOutput schema / properties / price_basis
        Added value: +{
        +  "enum": [
        +    "total"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / price_is_final
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / pricing_bucket
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / product_id
        Added value: +{
        +  "type": "integer"
        +}
  2. 2 tool updates
    • Changedget_plan_details3 fields changed
      • addedOutput schema / properties / expires_on
        Added value: +{
        +  "description": "Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present, and do not recommend a day count that cannot finish before it. Empty for the vast majority of plans.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever it is non-empty — never omit or soften it. Empty when the plan has no caveat.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / validity_clock
        Added value: +{
        +  "description": "What the days count means for THIS plan: either 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it whenever it is present — a calendar-day plan bought in the evening loses most of its first day. Empty when unknown.",
        +  "type": "string"
        +}
    • Changedsearch_esim_plans3 fields changed
      • addedOutput schema / properties / plans / items / properties / expires_on
        Added value: +{
        +  "description": "Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present, and do not recommend a day count that cannot finish before it. Empty for the vast majority of plans.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / notice
        Added value: +{
        +  "description": "Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever it is non-empty — never omit or soften it. Empty when the plan has no caveat.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / validity_clock
        Added value: +{
        +  "description": "What the days count means for THIS plan: either 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it whenever it is present — a calendar-day plan bought in the evening loses most of its first day. Empty when unknown.",
        +  "type": "string"
        +}
  3. 3 tool updates
    • First observedget_plan_details
    • First observedsearch_esim_plans
    • First observedstart_checkout

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to search and compare travel eSIM data plans by destination, trip length, data amount, unlimited/daily type, local phone number, local or roaming network, multi-country coverage, budget, hotspot and 5G, returning plan details plus a link to buy. Read-only with no sign-in or API key required.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Search and buy travel eSIMs for 200+ countries, with specialized China plans that deliver uncensored internet without a VPN. Exposes five read-only tools to search plans, check device eSIM compatibility, get plan details, get help, and generate a secure on-site checkout link.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources