european eSIM MCP
An official MCP server for european eSIM that allows AI agents to programmatically check country coverage, get live data plan quotes, and retrieve purchase links for travel eSIMs across 33 European countries without requiring user authentication.
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://europeanesim.com/wp-json/europeanesim/mcpWhat its tools do
7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to europeanesim.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Check if a specific country is included in the European eSIM coverage
- Get live price quotes for different data sizes (e.g., 5GB, 10GB)
- Retrieve direct purchase links for eSIM plans
- Recommend data plan size based on trip duration and usage
Source and maintenance
Protocol and capabilities
- Server
- europeanesim 3.1.0
- MCP protocol negotiated in check
- 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 european eSIM is and how it works, in the shop’s own words: one mobile-data eSIM for 33 countries in Europe, one data pool, validity (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, it. Localizes country names and sets the language/currency of links and prices."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_coverage — List coverage
Every country the european eSIM includes (33 in Europe, the UK, Norway, Iceland and Turkey among them), the European countries that are NOT included, and the starting price (the smallest data size). 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, it. Localizes country names and sets the language/currency of links and prices."
},
"include_networks": {
"type": "boolean",
"description": "Optional: add the mobile networks of each country when the shop names them."
}
}
}{
"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; when included, the server price of the european eSIM at the asked (or default) data size and its buy_url. Countries such as Switzerland or Serbia come back included=false.
{
"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, valid 90 days: 3, 5, 10, 20, 30, 50 or 100. Omit = 10 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. \"Italy\", \"Italia\", \"it\"."
},
"currency": {
"type": "string",
"description": "Optional ISO 4217 override for prices."
},
"language": {
"type": "string",
"description": "ISO language of the conversation, e.g. en, de, it. Localizes country 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 european eSIM at a data size — the amount the customer would pay — with the number of countries, the validity (90 days from the first connection), 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, valid 90 days: 3, 5, 10, 20, 30, 50 or 100. Omit = 10 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, it. Localizes country names and sets the language/currency of links and prices."
}
}
}{
"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 (a new 90-day pack of 3, 10 or 20 GB on the same eSIM), with the server recharge prices when available.",
"additionalProperties": true
},
"buy_url": {
"type": "string",
"description": "The shop page preset to exactly this data size. 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": {
"zone": {
"enum": [
"eu"
],
"type": "string"
},
"label": {
"type": "string",
"description": "\"Europe\", localized."
},
"countries": {
"type": "integer"
}
},
"description": "The coverage: Europe (zone eu) and its number of countries.",
"additionalProperties": true
},
"currency": {
"type": "string"
},
"validity": {
"type": "string",
"description": "\"90 days from the first connection to a network\" — 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."
},
"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."
}
},
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}price_grid — Price grid
Every data size (or the sizes asked for) in one call, each with the server price and its own buy_url. 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, it. Localizes country names and sets the language/currency of links and prices."
}
}
}{
"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 a size: returns which countries are included (countries that are not included come back in not_covered), a suggested data size from the days (up to 90) 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. 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 (one eSIM is valid 90 days). Without days the size follows the usage alone (light 5 / normal 10 / heavy 20 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, it. Localizes country 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. [\"France\", \"Italy\", \"Spain\"]. 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 data 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, valid 90 days: 3, 5, 10, 20, 30, 50 or 100. Omit = 10 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, it. Localizes country names and sets the language/currency of links and prices."
}
}
}{
"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 (a new 90-day pack of 3, 10 or 20 GB on the same eSIM), with the server recharge prices when available.",
"additionalProperties": true
},
"buy_url": {
"type": "string",
"description": "The shop page preset to exactly this data size. 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": {
"zone": {
"enum": [
"eu"
],
"type": "string"
},
"label": {
"type": "string",
"description": "\"Europe\", localized."
},
"countries": {
"type": "integer"
}
},
"description": "The coverage: Europe (zone eu) and its number of countries.",
"additionalProperties": true
},
"currency": {
"type": "string"
},
"delivery": {
"type": "string",
"description": "How and when the eSIM arrives."
},
"validity": {
"type": "string",
"description": "\"90 days from the first connection to a network\" — 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."
},
"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."
}
},
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
3 advertised
size_my_trip — Which european eSIM for my trip?
Check the countries of a trip against the european eSIM and size the data from the days and the usage.
- countries
- Countries of the trip, e.g. "France, Italy, Spain" (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 the price of the european eSIM.
- country
- A country, e.g. "Italy" (required)
compare_coverage — Which data size?
Price every data size of the european eSIM, so the customer can pick.
Resources
3 advertised
shop-facts — european eSIM shop facts
How the european eSIM works: the 33 countries, one data pool, 90 days from the first connection, the price rule, recharge, delivery, payment, devices, refunds, support, company — the same data get_shop_facts returns.
europeanesim://shop-factsllms.txt — european eSIM llms.txt
The shop’s guide for AI assistants: the product, recharge, policies, locales, links.
europeanesim://llms.txtsetup-guide — eSIM installation guide
How a customer installs the european eSIM on iPhone and Android, when the validity starts and how a recharge works.
europeanesim://setup-guide90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-09: 1 of 1 checks answered
- 2026-11-10: 2 of 2 checks answered
30-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
- 2895 ms
- 95th percentile latency
- 2895 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2895 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 european-esim-mcp https://europeanesim.com/wp-json/europeanesim/mcpCodex
codex mcp add european-esim-mcp --url https://europeanesim.com/wp-json/europeanesim/mcpCursor
{
"mcpServers": {
"european-esim-mcp": {
"url": "https://europeanesim.com/wp-json/europeanesim/mcp"
}
}
}Cline
{
"mcpServers": {
"european-esim-mcp": {
"type": "streamableHttp",
"url": "https://europeanesim.com/wp-json/europeanesim/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"european-esim-mcp": {
"type": "http",
"url": "https://europeanesim.com/wp-json/europeanesim/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http european-esim-mcp https://europeanesim.com/wp-json/europeanesim/mcpClaude Desktop
https://europeanesim.com/wp-json/europeanesim/mcpWindsurf
{
"mcpServers": {
"european-esim-mcp": {
"serverUrl": "https://europeanesim.com/wp-json/europeanesim/mcp"
}
}
}Let your agent find its tools
Find servers like european 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 european 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.