eSIMpass
Travel eSIMs for 200+ countries: live prices, phone check, checkout link, one-tap install.
Should I use this
Quality & Safety
Findings (1)
- LOWin fetch
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"esimpass": {
"url": "https://www.esimpass.com/mcp"
}
}
}Remote endpoints
https://www.esimpass.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢search_destinations(query)
Find the eSIMpass travel eSIM for a place: a country ("Japan"), a region ("Europe", "Asia", "Global") or a city ("Tokyo", which is covered by its country's plans). Returns matching destinations with the slug that get_plans and create_checkout_link take.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Place name, in English or the traveller's language."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢get_plans(destination, currency, unlimited)
The plans on sale for one destination right now, with live prices, data, validity and the product page URL. For a regional plan it also lists every country covered; a country missing from that list is not covered. Prices and plans change, so these are the current ones.
Input Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string",
"description": "The destination: a slug from search_destinations (\"esim-japan\", \"esim-europe\", \"esim-tokyo\") or its English name (\"Japan\")."
},
"currency": {
"type": "string",
"description": "ISO 4217 code to price in, e.g. \"EUR\", \"USD\", \"GBP\". Defaults to this site's currency."
},
"unlimited": {
"type": "boolean",
"description": "true for unlimited-data plans only, false for fixed-data plans only; omit for both."
}
},
"required": [
"destination"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string"
},
"slug": {
"type": "string"
},
"product_page": {
"type": "string",
"format": "uri"
},
"currency": {
"type": "string"
},
"plans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Pass this to create_checkout_link."
},
"type": {
"type": "string",
"enum": [
"fixed-data",
"unlimited"
]
},
"data_gb": {
"type": [
"number",
"null"
]
},
"validity_days": {
"type": [
"integer",
"null"
]
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
}
},
"required": [
"plan",
"type",
"data_gb",
"validity_days",
"price",
"currency"
]
}
},
"countries_covered": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"destination",
"slug",
"product_page",
"currency",
"plans"
]
}🟢check_device(device)
Whether a phone model supports eSIM, from the models eSIMpass documents (Apple, Samsung, Google). The phone must also be carrier-unlocked; a model not in the list is not necessarily incompatible.
Input Schema
{
"type": "object",
"properties": {
"device": {
"type": "string",
"description": "Phone model, e.g. \"iPhone 15 Pro\", \"Galaxy S24\", \"Pixel 8\"."
}
},
"required": [
"device"
],
"additionalProperties": false
}🟢create_checkout_link(destination, plan, quantity, currency, travel_start, ...)
A checkout URL on esimpass.com with one plan already selected. It does not pay or place an order: the traveller opens it, enters their email and pays (card, Apple Pay, Google Pay, PayPal or crypto). Minutes later the confirmation page has an Install button (one tap on iPhone and Android), a QR code and a private eSIM link. Takes a plan name as get_plans returns it.
Input Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string",
"description": "The destination: a slug from search_destinations (\"esim-japan\", \"esim-europe\", \"esim-tokyo\") or its English name (\"Japan\")."
},
"plan": {
"type": "string",
"description": "The plan name from get_plans, e.g. \"7 Days - 3GB Data\" or \"Unlimited - 10 Days\"."
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "How many eSIMs (one per traveller). Default 1."
},
"currency": {
"type": "string",
"description": "ISO 4217 code to price in, e.g. \"EUR\", \"USD\", \"GBP\". Defaults to this site's currency."
},
"travel_start": {
"type": "string",
"description": "Unlimited plans only, optional: first travel day, YYYY-MM-DD. For some destinations the plan starts on this date."
},
"travel_end": {
"type": "string",
"description": "Unlimited plans only, optional: last travel day, YYYY-MM-DD."
},
"partner_code": {
"type": "string",
"description": "Optional eSIMpass Partner Program code (letters and digits): the sale is credited to that partner."
}
},
"required": [
"destination",
"plan"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"checkout_url": {
"type": "string",
"format": "uri"
},
"destination": {
"type": "string"
},
"plan": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"unit_price": {
"type": "number"
},
"total": {
"type": "number"
},
"currency": {
"type": "string"
},
"next_step": {
"type": "string"
}
},
"required": [
"checkout_url",
"destination",
"plan",
"quantity",
"unit_price",
"total",
"currency"
]
}🟢get_esim_install(esim_link)
After the traveller has paid: one-tap install links for their eSIM, for iPhone (iOS 17.4+) and Android (10+), plus the manual-entry codes. Takes the private eSIM link from the traveller's order confirmation page (https://www.esimpass.com/…/my-esim/…); any other value is refused. Each install link installs the eSIM when opened on the phone that will use it. The result is that traveller's private eSIM details.
Input Schema
{
"type": "object",
"properties": {
"esim_link": {
"type": "string",
"description": "The private eSIM link from the order confirmation page, or the token at its end."
}
},
"required": [
"esim_link"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"ready": {
"type": "boolean",
"description": "false while the eSIM is still being prepared; try again in a minute."
},
"esims": {
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "integer"
},
"install_on_iphone": {
"type": [
"string",
"null"
],
"format": "uri"
},
"install_on_android": {
"type": [
"string",
"null"
],
"format": "uri"
},
"smdp_address": {
"type": [
"string",
"null"
]
},
"activation_code": {
"type": [
"string",
"null"
]
},
"note": {
"type": "string"
}
},
"required": [
"number",
"install_on_iphone",
"install_on_android"
]
}
},
"esim_page": {
"type": "string",
"format": "uri",
"description": "The traveller's eSIM page: QR code and data usage."
},
"how_to": {
"type": "string"
}
},
"required": [
"ready",
"esims",
"esim_page"
]
}🟢search(query)
Search eSIMpass destinations by place name, in the shape ChatGPT connectors use. Returns ids that fetch takes.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Place name."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢fetch(id)
One destination as a document: plans, live prices and a checkout link per plan. The id comes from search.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A destination id from search, e.g. \"esim-japan\"."
}
},
"required": [
"id"
],
"additionalProperties": false
}Community
Evidence