SimFuse eSIM Storefront
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Plan and buy travel eSIMs from your AI assistant. The trip planner prices a multi-country route and recommends one plan or a mix, on live prices for 200+ countries, then opens a checkout at frozen prices. No registration
| Author | Qorinx |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 399 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"SimFuse eSIM Storefront": {
"url": "https://api.simfuse.app/agentic/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (15)
plan-tripread-onlyAnswer "which eSIM should I buy for this trip?". Give it the stops, a country code and the days spent in each, and it compares one plan covering the whole route against one plan per country against a mix of the two, on live prices, then flags the cheapest option that covers everything and explains the choice in a sentence you can quote. It also estimates the data each stop needs, names any country SimFuse cannot cover, and returns package ids that go straight into create-checkout-session. Use it whenever a trip has two or more countries, and for a single country when the traveller wants a recommendation rather than a list. Read-only: nothing is reserved and nothing is charged, and the totals are today's catalog prices, not a quote held for later.
Parameters:
stops(required) — array — The trip, one entry per country, in travel order. 1 to 12 stops, e.g. [{"country":"JP","days":7},{"country":"KR","days":5}].start— string — Optional. Departure date as YYYY-MM-DD, e.g. "2026-04-18". Only used to date the stops in the answer; it does not change prices. Defaults to today.usage— string — Optional. Trip-wide data usage for stops that do not set their own: "light" (about 300 MB a day), "regular" (about 800 MB a day) or "heavy" (about 2 GB a day). Defaults to "regular".currency— string — Optional. ISO 4217 three-letter code every price is quoted in, e.g. "USD", "EUR", "GBP". Defaults to EUR. An unknown code falls back to EUR rather than failing.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list-destinationsread-onlyFind the countries SimFuse sells eSIMs for, with the cheapest plan price ("from" price) for each in the currency you ask for. Start here when someone names a place: it turns "Portugal" into the two-letter country code the other tools take, and shows what that destination starts at. For one destination, follow it with list-plans; for a trip covering two or more countries, use plan-trip instead. Read-only, and it answers from the SimFuse catalog alone.
Parameters:
limit— integer — Optional. Maximum destinations to return, 1 to 300. Defaults to 300, which is the whole list.search— string — Optional. Match destinations by name, ISO 3166-1 alpha-2 or alpha-3 code, case-insensitively. A partial name works: "port" matches Portugal. Omit to list every destination.currency— string — Optional. ISO 4217 three-letter code the "from" prices are quoted in, e.g. "USD", "EUR", "GBP". Defaults to EUR. An unknown code falls back to EUR rather than failing.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list-regionsread-onlyDiscover available eSIM regions, including worldwide scopes, with their canonical slugs, display names, member countries and starting prices. Only published regions with active displayed regional plans are listed. Pass a returned region slug to list-plans as region, not destination. Country membership describes the region, not a promise that every plan covers every member: check get-plan-coverage for a specific plan. Read-only; no account or key is needed.
Parameters:
limit— integer — Optional. Maximum regions to return, 1 to 300. Defaults to 300. total reports the match count before this limit.search— string — Optional. Case-insensitive partial match on the canonical region slug or display name, e.g. "asia". Omit to list all available regions.currency— string — Optional. ISO 4217 code for starting prices, e.g. "EUR" or "USD". Defaults to EUR; unknown codes fall back to the base currency.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get-destination-inforead-onlyDetails for one destination: its name and codes, region, how many eSIM plans are sold there, the cheapest and most expensive, the smallest and largest data bundles, and its storefront page. Takes a country name ("Japan") or two-letter code ("JP"). Use this to describe a destination before pulling its full plan ladder with list-plans. Whether a plan can be topped up varies by plan and is reported by list-plans, not here.
Parameters:
destination(required) — string — The destination: a country name ("Japan") or a two-letter code ("JP").currency— string — Three-letter currency code for the prices (e.g. "USD", "EUR"). Defaults to EUR.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list-plansread-onlyShow the eSIM plans on sale for one country or region, or search the whole catalog, narrowing by data allowance, validity and price. Use destination with a country code from list-destinations, or region with a slug from list-regions; never both. Use it when the traveller wants to compare what is available or find a plan inside a budget. Prices are live retail prices in the currency you ask for. For a trip covering two or more countries, use plan-trip first: it compares one plan for the whole route against one plan per country and picks the cheapest complete answer. Pass a plan id from here to get-plan, get-plan-coverage or create-checkout-session. Read-only, and it answers from the SimFuse catalog alone.
Parameters:
limit— integer — Optional. Maximum plans to return, 1 to 100. Defaults to 25.region— string — Optional. Canonical region slug, e.g. "europe", "southeast-asia" or "global", to search that regional shelf. Cannot be combined with destination. Unknown regions return no plans.currency— string — Optional. ISO 4217 three-letter code prices are quoted and filtered in, e.g. "USD", "EUR", "GBP". Defaults to EUR. An unknown code falls back to EUR rather than failing.destination— string — Optional. ISO 3166-1 alpha-2 destination country code, e.g. "US", "GB", "DE". Look it up with list-destinations rather than guessing. Cannot be combined with region. Omit both destination and region to search the whole catalog.max_price_cents— integer — Optional. Only plans at or below this retail price, in minor units (cents) of `currency`: 2500 is 25.00.min_price_cents— integer — Optional. Only plans at or above this retail price, in minor units (cents) of `currency`: 500 is 5.00.max_validity_days— integer — Optional. Only plans valid for at most this many days.min_validity_days— integer — Optional. Only plans valid for at least this many days, e.g. 14 for a two-week trip.max_data_amount_mb— integer — Optional. Only plans with at most this much data, in megabytes.min_data_amount_mb— integer — Optional. Only plans with at least this much data, in MEGABYTES: 1 GB is 1024, 10 GB is 10240.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get-planread-onlyRead everything about one eSIM plan by its id: data allowance, how long it stays valid, what happens after a fair-use cap, whether hotspot and top-ups are supported, the network it runs on, and the retail price in the currency you ask for. Use it to answer a specific question about a plan already found with list-plans or plan-trip, and before buying, to confirm the plan really matches what the traveller asked for. Ask get-plan-coverage instead when the question is which countries it works in. Read-only: it reserves nothing and charges nothing.
Parameters:
plan_id(required) — string — The plan id: a 26-character ULID as returned by list-plans or plan-trip, e.g. "01JVQ2S6D4X8N0RMB7YQZ5K3TA". Slugs and supplier codes are not accepted, and an id must never be invented.currency— string — Optional. ISO 4217 three-letter code the price is quoted in, e.g. "USD", "EUR", "GBP". Defaults to EUR. An unknown code falls back to EUR rather than failing.
Hints: read-only yes · destructive no · idempotent yes · open-world no
build-planread-onlyBuild an eSIM plan to the traveller's liking for one destination: how much data, for how many days, optionally which network it runs on and whether calls and texts are bundled. Returns the one real plan that matches, with its id and live price, never a made-up combination: a shape nobody sells is snapped to the nearest one that is, one axis at a time, and every change is spelled out in `adjustments` so you can read it back. Use it when the traveller knows what they want ("10 GB on Docomo for two weeks"); use plan-trip when they want a recommendation or the trip has several countries. To buy, pass `plan.id` to get-checkout-link when a person is paying, or to create-checkout-session when you are. Read-only: it reserves nothing and charges nothing.
Parameters:
country_code(required) — string — ISO 3166-1 alpha-2 code of the destination, e.g. "JP". Look it up with list-destinations rather than guessing.data_mb(required) — integer — Data allowance wanted, in megabytes: 1 GB is 1024 MB, so 5 GB is 5120. Pass 0 for an unlimited plan. Snapped to the nearest size sold when no plan has exactly this size.validity_days(required) — integer — How many days the plan should stay valid, 1 to 365. Snapped to the nearest length sold for the chosen size.voice— boolean — Optional. True to require a plan that bundles calls and texts. Defaults to false, data only. If no such plan exists the answer is data only and says so.network— string — Optional. The mobile network the plan should run on, by carrier name as `options.networks` lists them, e.g. "NTT Docomo" or "au". Matching is case-insensitive and a single carrier of a multi-network plan is enough. Omit for the cheapest network.currency— string — Optional. ISO 4217 three-letter code the price is quoted in, e.g. "USD", "EUR", "GBP". Defaults to EUR. An unknown code falls back to EUR rather than failing.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get-plan-coverageread-onlyList every country one eSIM plan works in, plus any country of its own region that it leaves out. Use it to answer "does this plan also cover Austria?" for a regional or worldwide plan, where the plan name says a region and the traveller needs the actual list. For a single-country plan the answer is that one country. Ask get-plan instead for the data allowance, validity or price. Read-only.
Parameters:
plan_id(required) — string — The plan id: a 26-character ULID as returned by list-plans or plan-trip, e.g. "01JVQ2S6D4X8N0RMB7YQZ5K3TA". Slugs and supplier codes are not accepted, and an id must never be invented.
Hints: read-only yes · destructive no · idempotent yes · open-world no
check-coverageread-onlyAnswer "does this eSIM plan work in X?" for one destination, as a yes or no rather than a country list. Takes a plan id and a destination (a country name or two-letter code). Reports whether the destination is covered, and separately whether it is explicitly excluded from an otherwise regional plan. Use get-plan-coverage when you need the full list of countries instead.
Parameters:
plan_id(required) — string — The plan id (a ULID) as returned by list-plans.destination(required) — string — The country to check: a name ("Japan") or a two-letter code ("JP").
Hints: read-only yes · destructive no · idempotent yes · open-world no
get-checkout-linkread-onlyGet the page where a person buys one specific eSIM plan, for an assistant to hand them a link. The page sells exactly this plan with Apple Pay, Google Pay and card, takes the email at payment, and sends the eSIM there. Nothing is charged or reserved by this call and the buyer needs no account. Use this whenever a PERSON is going to pay. Use create-checkout-session instead when the agent is settling the purchase itself, or for more than one plan or unit.
Parameters:
plan_id(required) — string — The plan id (a ULID) as returned by list-plans, get-plan or plan-trip.source— string — The name of the assistant or app sending the buyer, recorded as the campaign source on the link (e.g. "claude"). Optional.currency— string — Three-letter currency code for the price quoted back to you (e.g. "USD", "EUR"). Defaults to EUR. The page itself prices in the buyer's own currency.
Hints: read-only yes · destructive no · idempotent yes · open-world no
create-checkout-sessionOpen a checkout session for one or more eSIM plans at frozen prices, using the plan ids that plan-trip, list-plans or get-plan returned. Use it once the traveller has chosen what to buy. It CHARGES NOTHING and reserves no stock: it prices the basket, freezes those prices until the session's price_locked_until, and hands back the session plus a bearer agent key. Payment, completion and cancellation happen afterwards over the SimFuse agentic HTTP API with that key, as the session's `note` explains, and the eSIM is delivered by email once payment settles. Each call opens a NEW session and mints a NEW key, so call it once per basket rather than retrying it to re-read one.
Parameters:
items(required) — array — What to buy: one entry per plan, 1 to 50 entries. Pass the whole basket in one call, e.g. [{"id":"01JVQ...","quantity":1}].currency— string — Optional. ISO 4217 three-letter code to price the session in, e.g. "USD", "EUR", "GBP". Defaults to EUR. Every amount in the answer is minor units (cents) of this currency.agent_name— string — Optional. Name of the assistant or app opening the session, e.g. "Claude". Recorded on the agent key so we can tell integrations apart. Defaults to "mcp-client".buyer_email— string — Optional but strongly recommended. The traveller's email address, where the eSIM and its installation details are sent once payment settles. Ask for it rather than inventing one.
Hints: read-only no · destructive no · idempotent no · open-world no
get-order-statusread-onlyCheck an eSIM order after payment: whether it completed and whether its eSIMs have been provisioned yet. Identified by the order id together with the email that bought it, both of which are on the buyer's confirmation email. Provisioning usually finishes within a minute of payment, so an order that is paid but lists no eSIMs yet is normal: check again shortly. Once an eSIM is listed, use get-esim-activation to fetch its QR code and install details.
Parameters:
order_id(required) — string — The order id from the buyer's confirmation email or order page.email(required) — string — The email address the order was bought with. Required: the order id alone does not identify a buyer.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get-esim-activationread-onlyFetch the installable eSIM(s) for a paid order: the QR code image, the LPA activation string, the SM-DP+ address and activation code for manual entry, one-tap install links for iPhone and Android, and a hosted install page to send the buyer. Identified by the order id together with the email that bought it. Returns an empty esims list while provisioning is still in flight, which normally clears within a minute of payment.
Parameters:
order_id(required) — string — The order id from the buyer's confirmation email or order page.email(required) — string — The email address the order was bought with. Required: the order id alone does not identify a buyer.
Hints: read-only yes · destructive no · idempotent yes · open-world no
check-esim-usageread-onlyHow much data an eSIM has used and how much is left, for one eSIM on a paid order. Identified by the order id and the email that bought it, plus the ICCID from get-order-status or get-esim-activation. Allowances are in megabytes. Readings are served from a cache refreshed every couple of minutes: checked_at says when the reading was taken. An unlimited plan reports its full-speed allowance for the current period rather than a total.
Parameters:
order_id(required) — string — The order id from the buyer's confirmation email or order page.email(required) — string — The email address the order was bought with.iccid(required) — string — The ICCID of the eSIM to read, as returned by get-order-status.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list-topup-optionsread-onlyData top-ups that can be added to an eSIM the buyer already has, narrowed to what its network will actually accept. Identified by the order id and the email that bought it, plus the ICCID. Read-only: a top-up is bought in the SimFuse app, not through this server, and the response carries the link that opens this eSIM there. Do not pass these package ids to create-checkout-session, which would buy a separate new eSIM rather than add data to this one.
Parameters:
order_id(required) — string — The order id from the buyer's confirmation email or order page.email(required) — string — The email address the order was bought with.iccid(required) — string — The ICCID of the eSIM to top up, as returned by get-order-status.currency— string — Three-letter currency code for the prices (e.g. "USD", "EUR"). Defaults to EUR.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.