worldwide eSIM MCP
An official MCP server by worldwide eSIM that allows AI agents to programmatically check eSIM coverage for 98 countries, get live price quotes for data packages, verify country inclusion, and generate direct purchase links without requiring user authentication or scraping.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://worldwideesim.com/wp-json/worldwideesim/mcpWhat you can do with it
- Check if a specific country is included in eSIM coverage
- Get live price quotes for different data sizes and regions
- Generate direct purchase links for eSIM plans
- Recommend optimal data configuration based on travel countries
Source and maintenance
Protocol and capabilities
- Server
- worldwideesim 3.0.0
- MCP protocol
- 2025-06-18
- Tools
- 7 advertised
- Resources
- 3 advertised
- Resource templates
- 0 advertised
- Prompts
- 3 advertised
{
"tools": {},
"prompts": {},
"resources": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
get_shop_facts — Shop facts
What worldwide eSIM is and how it works, in the shop’s own words: one mobile-data eSIM for the whole world or chosen continents, one data pool, validity (until the data is used up, up to 90 days from the first connection), recharge, delivery, installation, devices, payment, refunds, My eSIM, e-mails, support. Use for any question that is not a price or a country.
{
"type": "object",
"properties": {
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_coverage — List coverage
The five continents with their number of countries and the starting price of each (the smallest data size for that continent alone) plus the whole world. Pass continent to list its countries (continent "world" lists every country); include_networks adds the operator names and a 5G flag per country. Use to show where the eSIM works.
{
"type": "object",
"properties": {
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
},
"continent": {
"enum": [
"eu",
"as",
"am",
"af",
"oc",
"world"
],
"type": "string",
"description": "Optional: list the countries of this continent (eu, as, am, af, oc) or of the whole world (\"world\")."
},
"include_networks": {
"type": "boolean",
"description": "Optional: with continent, add the mobile networks (operator name + 5G flag) of each country."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_country — Is a country included?
Is one country included? Pass its name in any language or its ISO-2 code (map a city to its country first). Returns included true/false, the continent, the mobile networks (operator names + 5G flag) and the cheapest coverage choice that includes it (its continent alone) with the server price and buy_url, plus the whole world at the same size for comparison.
{
"type": "object",
"required": [
"country"
],
"properties": {
"gb": {
"enum": [
3,
5,
10,
20,
30,
50,
100
],
"type": "integer",
"description": "The data pool in GB, ONE pool for every included country: 3, 5, 10 (more: 20, 30, 50, 100). Omit = 3 GB. Not sure? Call recommend_config."
},
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"country": {
"type": "string",
"description": "Country in ANY language or its ISO code, e.g. \"Japan\", \"Japon\", \"jp\"."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}quote_esim — Quote the eSIM
Use while the customer is still deciding — "how much is …?": the exact server price of ONE worldwide eSIM for the chosen continents (default: the whole world) and data size — the amount the customer would pay — with the number of countries, the validity (until the data is used up, up to 90 days), hotspot, the recharge options and prices, and a buy_url for reference. Quote the price as returned; never compute or scale it. When the customer says they want to buy, call start_checkout.
{
"type": "object",
"properties": {
"gb": {
"enum": [
3,
5,
10,
20,
30,
50,
100
],
"type": "integer",
"description": "The data pool in GB, ONE pool for every included country: 3, 5, 10 (more: 20, 30, 50, 100). Omit = 3 GB. Not sure? Call recommend_config."
},
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
},
"continents": {
"type": "array",
"items": {
"enum": [
"eu",
"as",
"am",
"af",
"oc"
],
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Continents to cover: eu (Europe), as (Asia & Middle East), am (Americas), af (Africa), oc (Oceania). Omit = the whole world (all five). Fewer continents can lower the price. A country is not a continent — use check_country or recommend_config for countries.",
"uniqueItems": true
}
}
}{
"type": "object",
"properties": {
"note": {
"type": "string",
"description": "Present when something about the request had to be adjusted — read it to the customer."
},
"price": {
"type": "number",
"description": "FULL price of exactly this choice in currency — the amount paid. Not per GB, per day or per country."
},
"topup": {
"type": "object",
"properties": {
"how": {
"type": "string"
},
"kind": {
"enum": [
"recharge"
],
"type": "string"
},
"prices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"price": {
"type": "number"
},
"data_gb": {
"type": "integer"
}
}
}
},
"options_gb": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"description": "How the customer recharges later (+1, +3 or +10 GB, renews the validity), with the server recharge prices for this coverage when available.",
"additionalProperties": true
},
"buy_url": {
"type": "string",
"description": "The shop page preset to exactly this choice. Use verbatim."
},
"data_gb": {
"type": "integer",
"description": "ONE data pool for every included country (not per day, not per country)."
},
"hotspot": {
"type": "boolean"
},
"coverage": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "\"Whole world\" or the continents joined with +, localized."
},
"continents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"countries": {
"type": "integer"
}
}
}
},
"whole_world": {
"type": "boolean"
}
},
"description": "The chosen continents.",
"additionalProperties": true
},
"currency": {
"type": "string"
},
"validity": {
"type": "string",
"description": "\"until the data is used up, up to 90 days\" — say it this way."
},
"countries": {
"type": "integer",
"description": "Number of countries included."
},
"data_only": {
"type": "boolean",
"description": "true: no phone number, no SMS."
},
"price_basis": {
"enum": [
"total"
],
"type": "string"
},
"coverage_url": {
"type": "string",
"description": "Every included country and network by continent."
},
"price_is_final": {
"type": "boolean"
},
"valid_days_max": {
"type": "integer"
},
"validity_starts": {
"enum": [
"first_connection"
],
"type": "string",
"description": "The days start at the first connection to a network, not at purchase or installation."
},
"continents_unmatched": {
"type": "array",
"items": {
"type": "string"
},
"description": "Requested values that are not a continent (left out of the quote)."
}
},
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}price_grid — Price grid
Every data size (or the sizes asked for) for one coverage choice in one call, each with the server price and its own buy_url; with compare_continents also the whole world against each single continent — to show what a smaller coverage saves. Same server prices as quote_esim.
{
"type": "object",
"properties": {
"gb": {
"type": "array",
"items": {
"enum": [
3,
5,
10,
20,
30,
50,
100
],
"type": "integer"
},
"maxItems": 7,
"description": "Optional: the sizes to price. Omit = every size (3, 5, 10, 20, 30, 50, 100)."
},
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
},
"continents": {
"type": "array",
"items": {
"enum": [
"eu",
"as",
"am",
"af",
"oc"
],
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Continents to cover: eu (Europe), as (Asia & Middle East), am (Americas), af (Africa), oc (Oceania). Omit = the whole world (all five). Fewer continents can lower the price. A country is not a continent — use check_country or recommend_config for countries.",
"uniqueItems": true
},
"compare_continents": {
"type": "boolean",
"description": "Optional: also price the whole world and each continent alone."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}recommend_config — Recommend for a trip
Use when the customer names the countries of a trip instead of continents and a size: returns the smallest set of continents that covers every named country (countries that are not included come back in not_covered), a suggested data size from the days and usage (light ≈ 0.5 GB/day, normal ≈ 1.5, heavy ≈ 4; rounded up to the next size) and server quotes for that size and one size down and up, each with its buy_url, plus the whole world at the suggested size. Same prices as quote_esim.
{
"type": "object",
"required": [
"countries"
],
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Optional: days the customer will use mobile data. Without days the size follows the usage alone (light 3 / normal 5 / heavy 10 GB)."
},
"usage": {
"enum": [
"light",
"normal",
"heavy"
],
"type": "string",
"description": "light ≈ 0.5 GB/day (messaging, maps, mail), normal ≈ 1.5 GB/day (default; social media, music, some video), heavy ≈ 4 GB/day (video streaming, video calls, hotspot for a laptop)."
},
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"budget": {
"type": "number",
"description": "Optional budget in the quoted currency; options above it are marked."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 30,
"minItems": 1,
"description": "The countries of the trip, names in any language or ISO-2 codes, e.g. [\"Japan\", \"Thailand\", \"Australia\"]. Map cities to their countries first."
},
"gb_per_day": {
"type": "number",
"maximum": 50,
"minimum": 0.1,
"description": "Optional: the customer's own estimate in GB per day (wins over usage)."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}start_checkout — Start secure checkout
Use only once the customer has decided to buy ("I'll take it", "how do I buy?"): the checkout handoff for one choice (same input as quote_esim). Returns the buy_url to give the customer, the final price and a ready-to-send checkout block (next_step, payment_methods, delivery) — the shop page opens preset to exactly this coverage and size; the customer presses the buy button (buy_button in the result, e.g. "Get your eSIM" in English) and pays securely. No account needed; the eSIM is delivered on screen and by e-mail right after payment. No in-chat order tracking, no discount codes. For prices while the customer is still comparing, use quote_esim.
{
"type": "object",
"properties": {
"gb": {
"enum": [
3,
5,
10,
20,
30,
50,
100
],
"type": "integer",
"description": "The data pool in GB, ONE pool for every included country: 3, 5, 10 (more: 20, 30, 50, 100). Omit = 3 GB. Not sure? Call recommend_config."
},
"bucket": {
"type": "string",
"description": "Optional language-region bucket the customer shops in, e.g. en-gb, de-de (sets currency and link locale). Defaults from language."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, ja. Localizes country and continent names and sets the language/currency of links and prices."
},
"continents": {
"type": "array",
"items": {
"enum": [
"eu",
"as",
"am",
"af",
"oc"
],
"type": "string"
},
"maxItems": 5,
"minItems": 1,
"description": "Continents to cover: eu (Europe), as (Asia & Middle East), am (Americas), af (Africa), oc (Oceania). Omit = the whole world (all five). Fewer continents can lower the price. A country is not a continent — use check_country or recommend_config for countries.",
"uniqueItems": true
}
}
}{
"type": "object",
"required": [
"buy_url",
"price",
"currency",
"next_step"
],
"properties": {
"note": {
"type": "string",
"description": "Present when something about the request had to be adjusted — read it to the customer."
},
"price": {
"type": "number",
"description": "FULL price of exactly this choice in currency — the amount paid. Not per GB, per day or per country."
},
"topup": {
"type": "object",
"properties": {
"how": {
"type": "string"
},
"kind": {
"enum": [
"recharge"
],
"type": "string"
},
"prices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"price": {
"type": "number"
},
"data_gb": {
"type": "integer"
}
}
}
},
"options_gb": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"description": "How the customer recharges later (+1, +3 or +10 GB, renews the validity), with the server recharge prices for this coverage when available.",
"additionalProperties": true
},
"buy_url": {
"type": "string",
"description": "The shop page preset to exactly this choice. Use verbatim."
},
"data_gb": {
"type": "integer",
"description": "ONE data pool for every included country (not per day, not per country)."
},
"hotspot": {
"type": "boolean"
},
"message": {
"type": "string",
"description": "A ready-to-send line for the customer."
},
"coverage": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "\"Whole world\" or the continents joined with +, localized."
},
"continents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"countries": {
"type": "integer"
}
}
}
},
"whole_world": {
"type": "boolean"
}
},
"description": "The chosen continents.",
"additionalProperties": true
},
"currency": {
"type": "string"
},
"delivery": {
"type": "string",
"description": "How and when the eSIM arrives."
},
"validity": {
"type": "string",
"description": "\"until the data is used up, up to 90 days\" — say it this way."
},
"countries": {
"type": "integer",
"description": "Number of countries included."
},
"data_only": {
"type": "boolean",
"description": "true: no phone number, no SMS."
},
"next_step": {
"type": "string",
"description": "What the customer does now: open buy_url, press \"Get your eSIM\", pay."
},
"buy_button": {
"type": "string",
"description": "The label of the buy button on the page, in the language of the customer: name it exactly so."
},
"price_basis": {
"enum": [
"total"
],
"type": "string"
},
"coverage_url": {
"type": "string",
"description": "Every included country and network by continent."
},
"price_is_final": {
"type": "boolean"
},
"valid_days_max": {
"type": "integer"
},
"payment_methods": {
"type": "array",
"items": {
"type": "string"
}
},
"validity_starts": {
"enum": [
"first_connection"
],
"type": "string",
"description": "The days start at the first connection to a network, not at purchase or installation."
},
"continents_unmatched": {
"type": "array",
"items": {
"type": "string"
},
"description": "Requested values that are not a continent (left out of the quote)."
}
},
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
3 advertised
size_my_trip — Which worldwide eSIM for my trip?
Find the cheapest worldwide eSIM coverage for the countries of a trip and size the data from the days and the usage.
- countries
- Countries of the trip, e.g. "Japan, Thailand, Australia" (required)
- days
- Days with mobile data
- usage
- light, normal or heavy
check_my_country — Does it work in my country?
Check whether a country is included, with its networks and the cheapest coverage that includes it.
- country
- A country, e.g. "Japan" (required)
compare_coverage — Whole world or fewer continents?
Price every data size for the whole world and for each continent alone, so the customer can pick.
Resources
3 advertised
shop-facts — worldwide eSIM shop facts
How the worldwide eSIM works: the continents, one data pool, validity until the data is used up (up to 90 days), the price rule, recharge, delivery, payment, devices, refunds, support, company — the same data get_shop_facts returns.
worldwideesim://shop-factsllms.txt — worldwide eSIM llms.txt
The shop’s guide for AI assistants: the product, recharge, policies, locales, links.
worldwideesim://llms.txtsetup-guide — eSIM installation guide
How a customer installs the worldwide eSIM on iPhone and Android, when the validity starts and how a recharge works.
worldwideesim://setup-guide30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2686 ms
- 95th percentile latency
- 2686 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2686 ms · metadata changed · 7 tool(s), 3 resource(s), 0 resource template(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http worldwide-esim-mcp https://worldwideesim.com/wp-json/worldwideesim/mcpCodex
codex mcp add worldwide-esim-mcp --url https://worldwideesim.com/wp-json/worldwideesim/mcpCursor
{
"mcpServers": {
"worldwide-esim-mcp": {
"url": "https://worldwideesim.com/wp-json/worldwideesim/mcp"
}
}
}Cline
{
"mcpServers": {
"worldwide-esim-mcp": {
"type": "streamableHttp",
"url": "https://worldwideesim.com/wp-json/worldwideesim/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"worldwide-esim-mcp": {
"type": "http",
"url": "https://worldwideesim.com/wp-json/worldwideesim/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http worldwide-esim-mcp https://worldwideesim.com/wp-json/worldwideesim/mcpClaude Desktop
{
"mcpServers": {
"worldwide-esim-mcp": {
"url": "https://worldwideesim.com/wp-json/worldwideesim/mcp"
}
}
}Windsurf
{
"mcpServers": {
"worldwide-esim-mcp": {
"serverUrl": "https://worldwideesim.com/wp-json/worldwideesim/mcp"
}
}
}Let your agent find its tools
Find servers like worldwide eSIM MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run worldwide eSIM MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.