roamflat eSIM Catalog
Server Details
Flat-rate unlimited travel eSIMs: search plans by destination and get a secure buy link.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 3 tools
Each tool targets a distinct stage of the eSIM purchase funnel: search for plans, get details on one plan, and start checkout. There is no overlap in purpose, and descriptions clearly delineate when to use each.
Two tools follow a verb_noun pattern (get_plan_details, search_esim_plans), but start_checkout uses a verb_noun form without an explicit object, slightly breaking the pattern. Still, all names are readable and snake_case consistent.
Three tools cover the core browse-to-buy flow for a catalog server. It is a bit thin for a full eSIM catalog (no filtering, comparison, or account tools), but it is reasonably scoped for a simple shopfront.
Search, details, and checkout form a complete purchase lifecycle with a redirect to the shop for payment and fulfillment. Minor gaps like no plan comparison or order status are acceptable given the server explicitly hands off post-payment to email.
Available Tools
3 toolsget_plan_detailsGet plan detailsARead-onlyInspect
Full details for one roamflat plan by product id: data allowance, validity, network, throttle behaviour, daily reset, full coverage country list, reviews, description and link.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ISO language of the conversation. Localizes names/labels and sets the landing-page language/currency of the link. | |
| product_id | Yes | WooCommerce product id from search_esim_plans. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fup | No | All You Can Surf fair-use policy in plain words (daily full-speed allowance and the still-unlimited reduced speed afterwards, or no limit at all). Present it as returned; empty for non-AYCS plans. |
| url | No | |
| days | No | Validity in days. |
| name | No | Plan name, localized to the requested language where a translation exists. |
| type | No | Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English. |
| grade | No | All You Can Surf tier qualifier (empty for standard). Present only the returned value. |
| price | No | FULL fixed price in currency; not per-day or per-GB. |
| rating | No | |
| carrier | No | Local network operator, when specified. NEVER invent one if empty. |
| data_gb | No | 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. |
| network | No | Network generation, e.g. 5G/4G. NEVER invent one if empty. |
| coverage | No | Human-readable coverage label (localized). |
| currency | No | |
| family_id | No | Plans sharing a family_id are day-length variants of the same package. |
| data_reset | No | When the daily allowance refreshes (per_day plans only). Empty when unknown. |
| product_id | No | |
| data_period | No | per_day or total — how data_gb applies. |
| description | No | |
| review_count | No | |
| throttle_kbps | No | 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. |
| coverage_countries | No | Localized country names covered (details tool only, multi-country plans). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the payload is broad (coverage country list, reviews, description, link), hinting at a heavy response, but much of that enumeration duplicates the existing output schema and it says nothing about rate limits or failure modes for an unknown product id.
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?
A single front-loaded sentence naming the tool's identity and scope first, then the payload contents. No filler or repetition, and the key constraint (one plan, by product id) leads the sentence.
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 annotations covering safety, a 100%-covered schema and an output schema that defines the return shape, the description only needs to establish identity and scope, which it does. The remaining gap is the absence of explicit sequencing guidance relative to search_esim_plans and start_checkout.
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 both parameters are already documented, including that product_id originates from search_esim_plans and that language localizes names/labels and the link's currency. The description adds no syntax or format detail beyond that, so the 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?
States a specific verb and resource ('Full details for one roamflat plan') and scopes it uniquely ('by product id'), which cleanly separates it from the search_esim_plans sibling that returns a list. The enumeration of plan attributes reinforces exactly what kind of detail is delivered.
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 description mentions 'by product id', and the schema notes the id comes from search_esim_plans, so an agent can infer this is the drill-down step after searching. There is no explicit when-to-use, prerequisite, or exclusion statement (e.g. that start_checkout is the next step once a plan is chosen).
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-onlyInspect
Find roamflat travel eSIM plans for a destination (country or region). Returns the best-value plans with full specifications, prices and a direct link. Use when a user wants mobile data abroad.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Plan type filter. daily_surf = fresh allowance each day; trip_surf = one pool for the trip; all_you_can_surf = unlimited-style. Default any. | |
| currency | No | Optional ISO 4217 override for quoted prices. Normally derived from language. | |
| language | No | ISO language of the conversation, e.g. en, de, ja, th. Localizes names/labels and sets the landing-page language and currency. | |
| destination | Yes | Country or region in ANY language, e.g. "Thailand", "Japon", "Europa". City names are mapped to their country by you first. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | |
| plans | No | |
| covered | No | |
| message | No | |
| currency | No | |
| from_price | No | Lowest full plan price in currency. |
| destination | No | Resolved destination label (localized). |
| all_plans_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds the shape of the result set (best-value plans with specs, prices, link), which is useful, but says nothing about result counts, pagination, ranking logic, or freshness.
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 short sentences, front-loaded with the core action and scope, then the return content, then the usage cue. No filler, though it is not maximally dense.
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 read-only, open-world search tool with a full output schema and 100% parameter documentation, the description supplies the essential action, scope, return nature, and trigger. Minor gaps around result ordering or limits remain but are not critical.
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 enum plan types, currency override, language localization, and any-language destination handling are already documented in the schema. The description only restates that destination is a country or region, adding no syntax or default beyond what the schema provides.
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 (Find) and resource (roamflat travel eSIM plans) scoped to a destination, and even names what is returned (best-value plans with specifications, prices, and a direct link). It does not explicitly distinguish itself from the sibling get_plan_details, so it stops short of a 5.
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?
Provides a clear usage context: 'Use when a user wants mobile data abroad.' It does not, however, state when to prefer the sibling tools (get_plan_details for a single plan, start_checkout to purchase) or any exclusions, so it falls short of explicit when/when-not routing.
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-onlyInspect
Hand the customer to the roamflat shop to buy one plan. Returns buy_url (the product page where they tap Buy now to pay securely — card, Apple Pay, Google Pay) plus the plan name and price. No account needed; the eSIM is emailed right after payment. There is no in-chat order tracking and no discount-code field.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ISO language of the conversation. Sets the language/currency of the payment page. | |
| product_id | Yes | WooCommerce product id to buy. |
Output Schema
| Name | Required | Description |
|---|---|---|
| price | No | Full fixed price in currency; not per-day. |
| buy_url | No | The exact product page to send the customer to. Use verbatim. |
| message | No | |
| product | No | |
| currency | No | |
| app_links | No | Optional links to the free roamflat app (android/ios) for tracking data usage after setup. Mention only when present. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite the readOnlyHint=true annotation, the description clearly explains the behavioral nature: it hands off to an external shop, returns buy_url, no account is needed, the eSIM is emailed after payment. This adds substantial context beyond what the annotations provide, covering the interaction model and post-payment fulfillment.
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?
The description is three sentences, front-loaded with the core action, and each sentence adds distinct value: handoff behavior, return values, and explicit exclusions. Zero waste.
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?
Complete for this tool. It covers what the tool does, what it returns, prerequisites (no account needed), fulfillment (email), and limitations. With an output schema also present, no critical information is missing for an agent to call it correctly.
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 schema already documents both parameters (language and product_id). The description does not add syntax or format details for the parameters, so baseline 3 is appropriate.
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 (hand off to shop), resource (roamflat shop checkout), and scope (buy one plan). This is clearly distinguishable from sibling tools get_plan_details and search_esim_plans, which are for browsing/retrieval rather than initiating a purchase.
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 implies usage context (you use this to complete a purchase after selecting a plan) and explicitly rules out adjacent capabilities, stating there is no in-chat order tracking and no discount-code field. However, it doesn't explicitly name alternatives or state when not to use this tool versus browsing tools.
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.
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 worldwide with live prices, plan details and a buy link.
1Search travel eSIM data plans for 230+ destinations with live prices and purchase links.
Travel eSIMs: unlimited data, pick your days, top up existing eSIMs, card checkout, no API key.
Search prepaid travel eSIM data plans for 200+ countries with live prices and a buy link.
1
Related MCP Servers
- AlicenseAqualityDmaintenanceTravel eSIMs for 193 countries. Stripe + Bitcoin checkout. QR by email in 30s. No API key.482 npmMIT
- AlicenseNot gradedqualityCmaintenanceBrowse, 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 gradedqualityBmaintenanceSearch 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
- AlicenseNot gradedqualityCmaintenanceLets AI agents search travel eSIM plans by destination, get exact current prices, and hand off to a first-party checkout link without the server ever accepting email or payment credentials.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.