e-eSIM Catalog
Server Details
Search travel eSIM data plans worldwide with live prices, plan details and a buy link.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 5 tools
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.
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.
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.
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 toolsget_plan_detailsGet plan detailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it. | |
| currency | No | Optional ISO 4217 code. Every price in the result is quoted in it. | |
| language | No | 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. | |
| product_id | Yes | Product id from search_esim_plans or recommend_plan. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fup | No | Same as fair_use (1.0.x name). |
| sku | No | Catalogue SKU. |
| url | No | Product page in pricing_bucket. Use verbatim. |
| data | No | Trip Surf: total data label, e.g. "5GB". |
| days | No | Validity in days. |
| name | No | Short plan name: destination · data · validity · type. |
| type | No | Plan type. Brand names — keep in English. |
| grade | No | 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. |
| price | No | FULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid. |
| title | No | Full product title in the requested language. |
| topup | No | Top-up possibility for this plan. |
| notice | No | Same as plan_note (1.0.x name). |
| rating | No | Average customer rating (1-5). Present only when reviews exist. |
| carrier | No | Local network operator when specified (1.0.x name; also in networks). NEVER invent one when absent. |
| data_gb | No | Data amount in GB. Meaning given by data_period. |
| network | No | Same as network_generation (1.0.x name). |
| summary | No | Short description in the requested language, from the product page. |
| coverage | No | Same as coverage_label (1.0.x name). |
| currency | No | ISO 4217 currency of every price in this object. |
| fair_use | No | All You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned. |
| networks | No | Operator name(s) for the plan, as the shop states them. |
| validity | No | Validity label, e.g. "30 days". |
| family_id | No | Plans sharing a family_id are day-length variants of the same package. |
| plan_note | No | 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. |
| voice_sms | No | Always "none": data only, no telephone number, no SMS. |
| covers_via | No | Present when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name. |
| data_reset | No | Same as daily_reset_time (1.0.x name). |
| expires_on | No | 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. |
| product_id | No | Product id. Use it for get_plan_details and start_checkout. |
| data_period | No | "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_basis | No | Always "total" on e-eSIM. |
| last_updated | No | Date the plan was last updated in the catalogue (YYYY-MM-DD). |
| review_count | No | Number of reviews. Present only when > 0. |
| coverage_note | No | Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong. |
| throttle_kbps | No | The same reduced speed in kbps. 0 = no throttle stated for this plan. |
| always_on_rate | No | 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. |
| coverage_count | No | Number of countries in coverage_countries. |
| coverage_label | No | Human-readable coverage label as the shop shows it (localized). |
| price_is_final | No | Always true: no tax or fee is added at checkout. |
| pricing_bucket | No | language-region bucket the prices and links are quoted in, e.g. "en-us". |
| validity_clock | No | 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. |
| daily_high_speed | No | Daily Surf / All You Can Surf: daily allowance at full speed, e.g. "2GB". |
| daily_reset_time | No | When the daily allowance refreshes (per_day plans only), e.g. "00:00 (UTC+8)" or "every 24 h after activation". |
| coverage_countries | No | Every country the plan works in. |
| network_generation | No | Network generation, e.g. "5G/4G". Never an operator name. |
TDQS
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.
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.
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.
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.
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.
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 factsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 tripARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | Trip length in days. | |
| usage | No | light ≈ 0.5 GB/day (maps, messaging), normal ≈ 1.5 GB/day (social, some video), heavy ≈ 4 GB/day (video, hotspot). Default normal. | |
| bucket | No | Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it. | |
| budget | No | Optional maximum total for the trip, in the result currency. | |
| currency | No | Optional ISO 4217 code. Every price in the result is quoted in it. | |
| language | No | 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. | |
| countries | Yes | Countries or regions of the trip, any language. | |
| gb_per_day | No | Overrides usage with an explicit daily need in GB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| trip | No | |
| message | No | |
| currency | No | |
| all_plans_url | No | |
| pricing_bucket | No | |
| recommendations | No |
TDQS
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.
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.
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.
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.
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.
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 plansARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | value = best price per GB delivered / cheapest All You Can Surf per day first (default); price = cheapest first; data = most data first. | |
| type | No | Plan type. Default any. | |
| limit | No | Plans to return. Default 10; all_plans_url lists everything. | |
| bucket | No | Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it. | |
| currency | No | Optional ISO 4217 code. Every price in the result is quoted in it. | |
| language | No | 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. | |
| min_days | No | Only plans valid for at least this many days. | |
| destination | No | Country or region in any language, e.g. "Thailand", "Japon", "Europa", or a 2-letter ISO code. For a city, pass its country. | |
| destinations | No | Several countries for one trip; only plans covering ALL of them are returned. Overrides destination. |
Output Schema
| Name | Required | Description |
|---|---|---|
| iso | No | Resolved ISO code or region slug of the (first) destination. |
| note | No | Present when part of the request could not be honoured (e.g. more than 5 destinations). |
| plans | No | |
| covered | No | |
| message | No | Present when nothing matched: says why and what to try. |
| currency | No | |
| returned | No | |
| from_price | No | Lowest price in this result set, shop-formatted (per-day plans count with their day price). |
| destination | No | |
| destinations | No | How each requested destination was understood. |
| all_plans_url | No | |
| pricing_bucket | No | |
| total_available | No | Plans matched before limit; the rest are on all_plans_url. |
TDQS
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.
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.
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.
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.
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.
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 checkoutARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it. | |
| currency | No | Optional ISO 4217 code. Every price in the result is quoted in it. | |
| language | No | 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. | |
| product_id | Yes | Product id to buy. |
Output Schema
| Name | Required | Description |
|---|---|---|
| price | No | FULL fixed price of the plan. |
| buy_url | No | The exact product page to send the customer to. Use verbatim. |
| message | No | |
| product | No | |
| currency | No | |
| app_links | No | Optional store links of the free e-eSIM app (android, ios) - the eSIM works without it. |
| product_id | No | |
| price_basis | No | |
| presentation | No | |
| price_is_final | No | |
| pricing_bucket | No |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
- Changed
get_plan_details54 fields changed- added
Input schema / properties / bucketAdded 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" +} - added
Input schema / properties / currencyAdded value: +{ + "description": "Optional ISO 4217 code. Every price in the result is quoted in it.", + "type": "string" +} - changed
Input schema / properties / language / descriptionPrevious 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." - changed
Input schema / properties / product_id / descriptionPrevious value: -"WooCommerce product id from search_esim_plans."New value: +"Product id from search_esim_plans or recommend_plan." - added
Output schema / descriptionAdded value: +"One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\"." - added
Output schema / properties / always_on_rateAdded 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" +} - changed
Output schema / properties / carrier / descriptionPrevious 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." - changed
Output schema / properties / coverage / descriptionPrevious value: -"Human-readable coverage label (localized)."New value: +"Same as coverage_label (1.0.x name)." - added
Output schema / properties / coverage_countAdded value: +{ + "description": "Number of countries in coverage_countries.", + "type": "integer" +} - changed
Output schema / properties / coverage_countries / descriptionPrevious value: -"Localized country names covered (details tool only, multi-country plans)."New value: +"Every country the plan works in." - added
Output schema / properties / coverage_countries / items / additionalPropertiesAdded value: +true - added
Output schema / properties / coverage_countries / items / propertiesAdded value: +{ + "iso": { + "description": "ISO 3166-1 alpha-2, lowercase.", + "type": "string" + }, + "name": { + "description": "Country name in the requested language.", + "type": "string" + } +} - changed
Output schema / properties / coverage_countries / items / typePrevious value: -"string"New value: +"object" - added
Output schema / properties / coverage_labelAdded value: +{ + "description": "Human-readable coverage label as the shop shows it (localized).", + "type": "string" +} - added
Output schema / properties / coverage_noteAdded value: +{ + "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.", + "type": "string" +} - added
Output schema / properties / covers_viaAdded 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" +} - added
Output schema / properties / currency / descriptionAdded value: +"ISO 4217 currency of every price in this object." - added
Output schema / properties / daily_high_speedAdded value: +{ + "description": "Daily Surf / All You Can Surf: daily allowance at full speed, e.g. \"2GB\".", + "type": "string" +} - added
Output schema / properties / daily_reset_timeAdded 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" +} - added
Output schema / properties / dataAdded value: +{ + "description": "Trip Surf: total data label, e.g. \"5GB\".", + "type": "string" +} - changed
Output schema / properties / data_gb / descriptionPrevious 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." - changed
Output schema / properties / data_period / descriptionPrevious 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)." - added
Output schema / properties / data_period / enumAdded value: +[ + "total", + "per_day" +] - changed
Output schema / properties / data_reset / descriptionPrevious value: -"When the daily allowance refreshes (per_day plans only). Empty when unknown."New value: +"Same as daily_reset_time (1.0.x name)." - removed
Output schema / properties / descriptionRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / expires_on / descriptionPrevious 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." - added
Output schema / properties / fair_useAdded 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" +} - changed
Output schema / properties / fup / descriptionPrevious 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)." - changed
Output schema / properties / grade / descriptionPrevious 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." - added
Output schema / properties / last_updatedAdded value: +{ + "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD).", + "type": "string" +} - changed
Output schema / properties / name / descriptionPrevious value: -"Plan name, localized to the requested language where a translation exists."New value: +"Short plan name: destination · data · validity · type." - changed
Output schema / properties / network / descriptionPrevious value: -"Network generation, e.g. 5G/4G. NEVER invent one if empty."New value: +"Same as network_generation (1.0.x name)." - added
Output schema / properties / network_generationAdded value: +{ + "description": "Network generation, e.g. \"5G/4G\". Never an operator name.", + "type": "string" +} - added
Output schema / properties / networksAdded value: +{ + "description": "Operator name(s) for the plan, as the shop states them.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / notice / descriptionPrevious 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)." - added
Output schema / properties / plan_noteAdded 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" +} - changed
Output schema / properties / price / descriptionPrevious 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." - added
Output schema / properties / price_basisAdded value: +{ + "description": "Always \"total\" on e-eSIM.", + "enum": [ + "total" + ], + "type": "string" +} - added
Output schema / properties / price_is_finalAdded value: +{ + "description": "Always true: no tax or fee is added at checkout.", + "type": "boolean" +} - added
Output schema / properties / pricing_bucketAdded value: +{ + "description": "language-region bucket the prices and links are quoted in, e.g. \"en-us\".", + "type": "string" +} - added
Output schema / properties / product_id / descriptionAdded value: +"Product id. Use it for get_plan_details and start_checkout." - added
Output schema / properties / rating / descriptionAdded value: +"Average customer rating (1-5). Present only when reviews exist." - added
Output schema / properties / review_count / descriptionAdded value: +"Number of reviews. Present only when > 0." - added
Output schema / properties / skuAdded value: +{ + "description": "Catalogue SKU.", + "type": "string" +} - added
Output schema / properties / summaryAdded value: +{ + "description": "Short description in the requested language, from the product page.", + "type": "string" +} - changed
Output schema / properties / throttle_kbps / descriptionPrevious 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." - added
Output schema / properties / titleAdded value: +{ + "description": "Full product title in the requested language.", + "type": "string" +} - added
Output schema / properties / topupAdded 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" +} - changed
Output schema / properties / type / descriptionPrevious value: -"Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English."New value: +"Plan type. Brand names — keep in English." - added
Output schema / properties / type / enumAdded value: +[ + "Daily Surf", + "Trip Surf", + "All You Can Surf" +] - added
Output schema / properties / url / descriptionAdded value: +"Product page in pricing_bucket. Use verbatim." - added
Output schema / properties / validityAdded value: +{ + "description": "Validity label, e.g. \"30 days\".", + "type": "string" +} - changed
Output schema / properties / validity_clock / descriptionPrevious 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." - added
Output schema / properties / voice_smsAdded value: +{ + "description": "Always \"none\": data only, no telephone number, no SMS.", + "type": "string" +}
- Added
get_shop_facts - Added
recommend_plan - Changed
search_esim_plans71 fields changed- added
Input schema / properties / bucketAdded 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" +} - changed
Input schema / properties / currency / descriptionPrevious 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." - changed
Input schema / properties / destination / descriptionPrevious 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." - added
Input schema / properties / destinationsAdded value: +{ + "description": "Several countries for one trip; only plans covering ALL of them are returned. Overrides destination.", + "items": { + "type": "string" + }, + "maxItems": 5, + "type": "array" +} - changed
Input schema / properties / language / descriptionPrevious 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." - added
Input schema / properties / limitAdded value: +{ + "description": "Plans to return. Default 10; all_plans_url lists everything.", + "maximum": 50, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / min_daysAdded value: +{ + "description": "Only plans valid for at least this many days.", + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / sortAdded 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" +} - changed
Input schema / properties / type / descriptionPrevious 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." - changed
Input schema / requiredPrevious value: -[ - "destination" -]New value: +[] - removed
Output schema / properties / destination / descriptionRemoved value: -"Resolved destination label (localized)." - added
Output schema / properties / destinationsAdded 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" +} - changed
Output schema / properties / from_price / descriptionPrevious 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)." - changed
Output schema / properties / from_price / typePrevious value: -"number"New value: +"string" - added
Output schema / properties / isoAdded value: +{ + "description": "Resolved ISO code or region slug of the (first) destination.", + "type": "string" +} - added
Output schema / properties / message / descriptionAdded value: +"Present when nothing matched: says why and what to try." - added
Output schema / properties / noteAdded value: +{ + "description": "Present when part of the request could not be honoured (e.g. more than 5 destinations).", + "type": "string" +} - added
Output schema / properties / plans / items / descriptionAdded value: +"One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\"." - added
Output schema / properties / plans / items / properties / always_on_rateAdded 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" +} - changed
Output schema / properties / plans / items / properties / carrier / descriptionPrevious 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." - changed
Output schema / properties / plans / items / properties / coverage / descriptionPrevious value: -"Human-readable coverage label (localized)."New value: +"Same as coverage_label (1.0.x name)." - added
Output schema / properties / plans / items / properties / coverage_countAdded value: +{ + "description": "Number of countries in coverage_countries.", + "type": "integer" +} - changed
Output schema / properties / plans / items / properties / coverage_countries / descriptionPrevious value: -"Localized country names covered (details tool only, multi-country plans)."New value: +"Every country the plan works in." - added
Output schema / properties / plans / items / properties / coverage_countries / items / additionalPropertiesAdded value: +true - added
Output schema / properties / plans / items / properties / coverage_countries / items / propertiesAdded value: +{ + "iso": { + "description": "ISO 3166-1 alpha-2, lowercase.", + "type": "string" + }, + "name": { + "description": "Country name in the requested language.", + "type": "string" + } +} - changed
Output schema / properties / plans / items / properties / coverage_countries / items / typePrevious value: -"string"New value: +"object" - added
Output schema / properties / plans / items / properties / coverage_labelAdded value: +{ + "description": "Human-readable coverage label as the shop shows it (localized).", + "type": "string" +} - added
Output schema / properties / plans / items / properties / coverage_noteAdded value: +{ + "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.", + "type": "string" +} - added
Output schema / properties / plans / items / properties / covers_viaAdded 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" +} - added
Output schema / properties / plans / items / properties / currency / descriptionAdded value: +"ISO 4217 currency of every price in this object." - added
Output schema / properties / plans / items / properties / daily_high_speedAdded value: +{ + "description": "Daily Surf / All You Can Surf: daily allowance at full speed, e.g. \"2GB\".", + "type": "string" +} - added
Output schema / properties / plans / items / properties / daily_reset_timeAdded 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" +} - added
Output schema / properties / plans / items / properties / dataAdded value: +{ + "description": "Trip Surf: total data label, e.g. \"5GB\".", + "type": "string" +} - changed
Output schema / properties / plans / items / properties / data_gb / descriptionPrevious 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." - changed
Output schema / properties / plans / items / properties / data_period / descriptionPrevious 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)." - added
Output schema / properties / plans / items / properties / data_period / enumAdded value: +[ + "total", + "per_day" +] - changed
Output schema / properties / plans / items / properties / data_reset / descriptionPrevious value: -"When the daily allowance refreshes (per_day plans only). Empty when unknown."New value: +"Same as daily_reset_time (1.0.x name)." - removed
Output schema / properties / plans / items / properties / descriptionRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / plans / items / properties / expires_on / descriptionPrevious 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." - added
Output schema / properties / plans / items / properties / fair_useAdded 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" +} - changed
Output schema / properties / plans / items / properties / fup / descriptionPrevious 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)." - changed
Output schema / properties / plans / items / properties / grade / descriptionPrevious 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." - added
Output schema / properties / plans / items / properties / last_updatedAdded value: +{ + "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD).", + "type": "string" +} - changed
Output schema / properties / plans / items / properties / name / descriptionPrevious value: -"Plan name, localized to the requested language where a translation exists."New value: +"Short plan name: destination · data · validity · type." - changed
Output schema / properties / plans / items / properties / network / descriptionPrevious value: -"Network generation, e.g. 5G/4G. NEVER invent one if empty."New value: +"Same as network_generation (1.0.x name)." - added
Output schema / properties / plans / items / properties / network_generationAdded value: +{ + "description": "Network generation, e.g. \"5G/4G\". Never an operator name.", + "type": "string" +} - added
Output schema / properties / plans / items / properties / networksAdded value: +{ + "description": "Operator name(s) for the plan, as the shop states them.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / plans / items / properties / notice / descriptionPrevious 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)." - added
Output schema / properties / plans / items / properties / plan_noteAdded 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" +} - changed
Output schema / properties / plans / items / properties / price / descriptionPrevious 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." - added
Output schema / properties / plans / items / properties / price_basisAdded value: +{ + "description": "Always \"total\" on e-eSIM.", + "enum": [ + "total" + ], + "type": "string" +} - added
Output schema / properties / plans / items / properties / price_is_finalAdded value: +{ + "description": "Always true: no tax or fee is added at checkout.", + "type": "boolean" +} - added
Output schema / properties / plans / items / properties / pricing_bucketAdded value: +{ + "description": "language-region bucket the prices and links are quoted in, e.g. \"en-us\".", + "type": "string" +} - added
Output schema / properties / plans / items / properties / product_id / descriptionAdded value: +"Product id. Use it for get_plan_details and start_checkout." - added
Output schema / properties / plans / items / properties / rating / descriptionAdded value: +"Average customer rating (1-5). Present only when reviews exist." - added
Output schema / properties / plans / items / properties / review_count / descriptionAdded value: +"Number of reviews. Present only when > 0." - added
Output schema / properties / plans / items / properties / skuAdded value: +{ + "description": "Catalogue SKU.", + "type": "string" +} - added
Output schema / properties / plans / items / properties / summaryAdded value: +{ + "description": "Short description in the requested language, from the product page.", + "type": "string" +} - changed
Output schema / properties / plans / items / properties / throttle_kbps / descriptionPrevious 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." - added
Output schema / properties / plans / items / properties / titleAdded value: +{ + "description": "Full product title in the requested language.", + "type": "string" +} - added
Output schema / properties / plans / items / properties / topupAdded 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" +} - changed
Output schema / properties / plans / items / properties / type / descriptionPrevious value: -"Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English."New value: +"Plan type. Brand names — keep in English." - added
Output schema / properties / plans / items / properties / type / enumAdded value: +[ + "Daily Surf", + "Trip Surf", + "All You Can Surf" +] - added
Output schema / properties / plans / items / properties / url / descriptionAdded value: +"Product page in pricing_bucket. Use verbatim." - added
Output schema / properties / plans / items / properties / validityAdded value: +{ + "description": "Validity label, e.g. \"30 days\".", + "type": "string" +} - changed
Output schema / properties / plans / items / properties / validity_clock / descriptionPrevious 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." - added
Output schema / properties / plans / items / properties / voice_smsAdded value: +{ + "description": "Always \"none\": data only, no telephone number, no SMS.", + "type": "string" +} - added
Output schema / properties / pricing_bucketAdded value: +{ + "type": "string" +} - added
Output schema / properties / returnedAdded value: +{ + "type": "integer" +} - removed
Output schema / properties / slugRemoved value: -{ - "type": "string" -} - added
Output schema / properties / total_availableAdded value: +{ + "description": "Plans matched before limit; the rest are on all_plans_url.", + "type": "integer" +}
- Changed
start_checkout12 fields changed- added
Input schema / properties / bucketAdded 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" +} - added
Input schema / properties / currencyAdded value: +{ + "description": "Optional ISO 4217 code. Every price in the result is quoted in it.", + "type": "string" +} - changed
Input schema / properties / language / descriptionPrevious 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." - changed
Input schema / properties / product_id / descriptionPrevious value: -"WooCommerce product id to buy."New value: +"Product id to buy." - added
Output schema / properties / app_links / additionalPropertiesAdded value: +true - changed
Output schema / properties / app_links / descriptionPrevious 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." - added
Output schema / properties / presentationAdded value: +{ + "type": "string" +} - changed
Output schema / properties / price / descriptionPrevious value: -"Full fixed price in currency; not per-day."New value: +"FULL fixed price of the plan." - added
Output schema / properties / price_basisAdded value: +{ + "enum": [ + "total" + ], + "type": "string" +} - added
Output schema / properties / price_is_finalAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / pricing_bucketAdded value: +{ + "type": "string" +} - added
Output schema / properties / product_idAdded value: +{ + "type": "integer" +}
2 tool updates
- Changed
get_plan_details3 fields changed- added
Output schema / properties / expires_onAdded 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" +} - added
Output schema / properties / noticeAdded 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" +} - added
Output schema / properties / validity_clockAdded 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" +}
- Changed
search_esim_plans3 fields changed- added
Output schema / properties / plans / items / properties / expires_onAdded 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" +} - added
Output schema / properties / plans / items / properties / noticeAdded 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" +} - added
Output schema / properties / plans / items / properties / validity_clockAdded 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 tool updates
- First observed
get_plan_details - First observed
search_esim_plans - First observed
start_checkout
Related MCP Connectors
Search travel eSIM data plans for 230+ destinations with live prices and purchase links.
Search prepaid travel eSIM data plans for 200+ countries with live prices and a buy link.
Find prepaid travel eSIM plans for 200+ destinations with live prices, specs and a buy link.
Search, compare & buy prepaid travel eSIM data plans for 190+ countries in 40 currencies, including regional plans and a 12-month Travel Pass.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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.1MIT
- AlicenseNot gradedqualityDmaintenanceBrowse, compare, and purchase eSIMs for 190+ countries via AI agents. 12 tools for searching 2,300+ data plans, checking coverage, and buying eSIMs with crypto or card. No account required for browsing.MIT
- AlicenseNot gradedqualityCmaintenanceSearch 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
- AlicenseAqualityDmaintenanceTravel eSIMs for 193 countries. Stripe + Bitcoin checkout. QR by email in 30s. No API key.458 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.