Koskamo

Inbox eSIM MCP

This MCP server allows AI agents to interact with the Inbox eSIM service, specifically enabling functions like checking device compatibility for eSIM support. It facilitates the integration of travel data eSIM purchasing and management capabilities directly into agent workflows.

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.

Inbox eSIM MCP logo, by White Cats Software, LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by White Cats Software, LLC
MCP endpoint (Streamable HTTP)
https://inboxesim.com/mcp
Vendor documentation

What you can do with it

  • Check if a user's phone supports eSIM
  • Find travel eSIM plans for specific countries
  • Purchase eSIMs for travel destinations

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
inbox-esim 1.0.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Inbox eSIM sells prepaid, data-only travel eSIMs for 200+ countries and regions. Prices are in USD. Use find_esim_plans with the place the customer travels to, pick a plan with them, then buy_esim with the plan_id and the customer's email. buy_esim returns a payment link: POST to it, answer the HTTP 402 Machine Payments Protocol challenge with a Stripe shared payment token, and retry. The QR code and a one-tap install link are emailed to the customer within about a minute. No app and no account. For a trip to several countries, make_esim_cart turns several plan_ids into one link where the customer pays for all of them at once (3 or more eSIMs: 5% off). Before buying, check_esim_device tells whether the customer's phone is likely to take an eSIM; after buying, get_order_status shows where the order is.

Tools

5 advertised

find_esim_plans — Find travel eSIM plans
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists Inbox eSIM data plans for a destination (country, city, region such as Europe, or 'global'), cheapest first, with plan_id, data in GB, validity in days and price in USD. Data only, no phone number; works on unlocked eSIM phones.

find_esim_plans input schema
{
  "type": "object",
  "required": [
    "destination"
  ],
  "properties": {
    "min_days": {
      "type": "integer",
      "description": "Optional: only plans valid for at least this many days (the trip length)."
    },
    "destination": {
      "type": "string",
      "description": "Where the customer travels, e.g. 'Japan', 'USA', 'Europe', 'Bangkok'."
    },
    "min_data_gb": {
      "type": "number",
      "description": "Optional: only plans with at least this much data."
    }
  },
  "additionalProperties": false
}
find_esim_plans output schema
{
  "type": "object",
  "required": [
    "plans"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "plan_id",
          "place",
          "kind",
          "data_gb",
          "valid_days",
          "price_usd",
          "details",
          "page_url"
        ],
        "properties": {
          "kind": {
            "enum": [
              "country",
              "regional",
              "global"
            ],
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "data_gb": {
            "type": "number"
          },
          "details": {
            "type": "string"
          },
          "plan_id": {
            "type": "string"
          },
          "page_url": {
            "type": "string"
          },
          "countries": {
            "type": "integer",
            "description": "Regional and global plans: how many countries they cover."
          },
          "price_usd": {
            "type": "string",
            "description": "Final price in USD, e.g. \"5.90\"."
          },
          "valid_days": {
            "type": "integer"
          }
        }
      }
    }
  }
}
find_esim_plans annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
buy_esim — Buy a travel eSIM
Advertised by the server during the last successful anonymous check.
Open-world

Starts the purchase of one eSIM plan for the customer and returns a payment link. Pay it with the Machine Payments Protocol (HTTP 402, Stripe shared payment token) to complete the order. Before calling, confirm the plan, the price and the email with the customer, and get their agreement to the terms: By buying, the customer asks for the eSIM to be sent at once and accepts the terms (https://inboxesim.com/terms): the 14-day right to withdraw ends once the eSIM is installed. An eSIM that was never installed or used can be refunded within 30 days from its order page, less the payment fee (no card fee within 14 days in the EU and UK).

buy_esim input schema
{
  "type": "object",
  "required": [
    "plan_id",
    "customer_email",
    "customer_agreed_to_terms"
  ],
  "properties": {
    "plan_id": {
      "type": "string",
      "description": "A plan_id from find_esim_plans, e.g. 'japan-5gb-30d'."
    },
    "customer_email": {
      "type": "string",
      "description": "Where the QR code and install link are sent."
    },
    "customer_agreed_to_terms": {
      "type": "boolean",
      "description": "true only if the customer accepted the terms quoted in this tool's description."
    }
  },
  "additionalProperties": false
}
buy_esim output schema
{
  "type": "object",
  "required": [
    "status",
    "plan"
  ],
  "properties": {
    "plan": {
      "type": "object",
      "required": [
        "plan_id",
        "place",
        "kind",
        "data_gb",
        "valid_days",
        "price_usd",
        "details",
        "page_url"
      ],
      "properties": {
        "kind": {
          "enum": [
            "country",
            "regional",
            "global"
          ],
          "type": "string"
        },
        "place": {
          "type": "string"
        },
        "data_gb": {
          "type": "number"
        },
        "details": {
          "type": "string"
        },
        "plan_id": {
          "type": "string"
        },
        "page_url": {
          "type": "string"
        },
        "countries": {
          "type": "integer",
          "description": "Regional and global plans: how many countries they cover."
        },
        "price_usd": {
          "type": "string",
          "description": "Final price in USD, e.g. \"5.90\"."
        },
        "valid_days": {
          "type": "integer"
        }
      }
    },
    "status": {
      "enum": [
        "payment_required",
        "buy_on_page"
      ],
      "type": "string"
    },
    "message": {
      "type": "string"
    },
    "page_url": {
      "type": "string"
    },
    "amount_usd": {
      "type": "string"
    },
    "how_to_pay": {
      "type": "string"
    },
    "payment_link": {
      "type": "string",
      "description": "POST here and answer the HTTP 402 challenge."
    },
    "browser_fallback": {
      "type": "string"
    }
  }
}
buy_esim annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
make_esim_cart — One payment for several eSIMs
Advertised by the server during the last successful anonymous check.
Advertised read-only

For a trip to several countries (or several phones): turns 2 to 6 plan_ids from find_esim_plans into one cart link. The customer opens it, checks the eSIMs and pays once on Stripe; each eSIM comes in its own QR email and can be refunded on its own if never installed. 3 or more eSIMs in one cart are 5% off. Nothing is bought until the customer pays on the page.

make_esim_cart input schema
{
  "type": "object",
  "required": [
    "plan_ids"
  ],
  "properties": {
    "plan_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 6,
      "minItems": 1,
      "description": "plan_ids from find_esim_plans, one per eSIM, e.g. ['japan-5gb-30d', 'south-korea-3gb-30d']."
    }
  },
  "additionalProperties": false
}
make_esim_cart output schema
{
  "type": "object",
  "required": [
    "cart_url",
    "plans",
    "total_usd"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "plan_id",
          "place",
          "kind",
          "data_gb",
          "valid_days",
          "price_usd",
          "details",
          "page_url"
        ],
        "properties": {
          "kind": {
            "enum": [
              "country",
              "regional",
              "global"
            ],
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "data_gb": {
            "type": "number"
          },
          "details": {
            "type": "string"
          },
          "plan_id": {
            "type": "string"
          },
          "page_url": {
            "type": "string"
          },
          "countries": {
            "type": "integer",
            "description": "Regional and global plans: how many countries they cover."
          },
          "price_usd": {
            "type": "string",
            "description": "Final price in USD, e.g. \"5.90\"."
          },
          "valid_days": {
            "type": "integer"
          }
        }
      }
    },
    "cart_url": {
      "type": "string",
      "description": "Give this link to the customer: they pay for every eSIM in it at once."
    },
    "total_usd": {
      "type": "string",
      "description": "What the cart page charges, with the 5% off that 3+ eSIMs get on most plans. A partner code may lower it on the page."
    }
  }
}
make_esim_cart annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
check_esim_device — Check a phone for eSIM
Advertised by the server during the last successful anonymous check.
Advertised read-only

Says whether a phone model is likely to take an eSIM (likely, unlikely or check), from the model name, with how to be sure on the phone itself. Call it before buy_esim when the customer is unsure.

check_esim_device input schema
{
  "type": "object",
  "required": [
    "device"
  ],
  "properties": {
    "device": {
      "type": "string",
      "description": "The phone or tablet model, e.g. 'iPhone 13', 'Galaxy S23', 'Pixel 7a'."
    }
  },
  "additionalProperties": false
}
check_esim_device output schema
{
  "type": "object",
  "required": [
    "device",
    "verdict",
    "reason",
    "how_to_check"
  ],
  "properties": {
    "device": {
      "type": "string"
    },
    "reason": {
      "type": "string"
    },
    "verdict": {
      "enum": [
        "likely",
        "unlikely",
        "check"
      ],
      "type": "string"
    },
    "how_to_check": {
      "type": "string"
    }
  }
}
check_esim_device annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_order_status — Get an eSIM order's status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Where an Inbox eSIM order is (awaiting_payment, preparing, ready_to_install, installed, in_use, ended, refunded, cancelled, with_support), with data used, the end date and the order page. Needs the order number and the email it was bought with.

get_order_status input schema
{
  "type": "object",
  "required": [
    "order_id",
    "customer_email"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order number, e.g. 'ISJPAH2PXG2C' (in the paid response and the email)."
    },
    "customer_email": {
      "type": "string",
      "description": "The email the order was bought with."
    }
  },
  "additionalProperties": false
}
get_order_status output schema
{
  "type": "object",
  "required": [
    "order_id",
    "status",
    "place",
    "plan",
    "order_url"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "plan": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "status": {
      "enum": [
        "awaiting_payment",
        "preparing",
        "ready_to_install",
        "installed",
        "in_use",
        "ended",
        "refunded",
        "cancelled",
        "with_support"
      ],
      "type": "string"
    },
    "order_id": {
      "type": "string"
    },
    "order_url": {
      "type": "string"
    },
    "top_up_of": {
      "type": "string"
    },
    "valid_until": {
      "type": "string"
    },
    "data_used_gb": {
      "type": "number"
    },
    "data_total_gb": {
      "type": "number"
    }
  }
}
get_order_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
590 ms
95th percentile latency
590 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 590 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http inbox-esim-mcp https://inboxesim.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add inbox-esim-mcp --url https://inboxesim.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable inbox-esim-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "inbox-esim-mcp": {
      "url": "https://inboxesim.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "inbox-esim-mcp": {
      "type": "streamableHttp",
      "url": "https://inboxesim.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start inbox-esim-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "inbox-esim-mcp": {
      "type": "http",
      "url": "https://inboxesim.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http inbox-esim-mcp https://inboxesim.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "inbox-esim-mcp": {
      "url": "https://inboxesim.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "inbox-esim-mcp": {
      "serverUrl": "https://inboxesim.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Inbox eSIM MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Inbox 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.

Claim this listing