# Mono eSIM MCP [Health: Active]

**Category:** 🚆 Travel & Transportation  
**Repository:** https://www.monoesim.app/mcp  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mono-esim-mcp

## Description
Search and compare travel eSIM data plans worldwide, check phone compatibility, and prepare secure orders with AI agents. Purchases are in testing.

## Tools
Capabilities this server exposes over MCP:

- **search_plans** — Find available travel data eSIM plans for a country, city, region, or ISO-2 destination such as 'Japan', 'Tokyo', 'Europe', or 'TR'. Filter by minimum validity (days), minimum data (data_gb), unlimited-only, maximum EUR budget and sort order; returns matching plans, price/validity details and a cheapest-match recommendation, without reserving stock. Use get_plan to validate a selected plan before prepare_order and list_destinations if a location is not recognized.
- **list_destinations** — List currently offered travel eSIM destinations (countries and multi-country regions) with their localized names, identifiers and starting EUR prices. Use when the travel destination is unknown or to discover valid destinations before search_plans; filter type=country or type=region, or omit it for both. Results are informational only and do not reserve inventory or prices.
- **get_plan** — Retrieve one current eSIM plan by plan_id (from search_plans), including EUR price, coverage destination, data allowance, validity, availability, and purchase terms. Use this to confirm an offer before prepare_order; optional destination must be the exact destination slug to narrow lookup, not a free-text city. A missing or withdrawn plan returns not_found; search_plans again instead of relying on cached prices.
- **compare_plans** — Compare 2–10 existing eSIM plan IDs returned by search_plans or get_plan. Returns each matching plan plus the IDs of the cheapest plan, lowest EUR price per GB where calculable, and longest validity; an unknown plan ID is flagged not_found rather than silently replaced. Use for an explicit shortlist, not as the initial destination search; this makes no reservation or purchase.
- **check_device** — Look up a phone model's probable eSIM compatibility by model name (for example 'iPhone 12 mini' or 'Galaxy S21'), using a device list and optional supplier check. Returns supported=true/false/null, close model matches and caveats; null means unknown, not incompatible. Always advise users to confirm an EID and carrier unlock status, especially for regional variants; this is not a purchase approval.
- **get_terms** — Retrieve the latest displayed eSIM purchase terms and legal links in the requested language (en/de/ru/uk), including delivery, validity, refund/withdrawal conditions and payment. Show these to the customer before confirmation and checkout. This is read-only; it neither records agreement nor grants payment authorization.
- **prepare_order** — Prepare a time-limited signed quote for a plan_id selected using search_plans or get_plan. Returns quote_id, current price and customer-confirmation requirements; the quoted price is locked for 30 minutes, but no order, payment, or eSIM is created. Next call create_checkout for customer-paid Stripe Checkout or purchase for an enabled alternate method.
- **create_checkout** — Create a pending customer-paid Stripe Checkout from a quote_id returned by prepare_order, only after the customer explicitly approved the displayed plan and price and accepted the terms. Requires the customer's email and customer_confirmed=true, terms_accepted=true; returns a checkout URL, NOT a paid eSIM, and fulfilment starts only after verified payment. Reuse one idempotency_key per intended purchase, including retries, to avoid duplicate orders; use purchase for other supported payment methods.
- **get_order** — Retrieve payment/fulfilment status for exactly one order using its order_id AND private order_token returned during checkout or purchase. After confirmed delivery, the response may include activation code (LPA), QR/install links and available usage data; treat the token and activation information as secrets. This is read-only and never confirms payment by itself; do not share the output publicly.
- **payment_capabilities** — Read the payment-method capability matrix BEFORE invoking purchase. Each method reports enabled versus planned status, environment (live/sandbox/offline_sandbox), required customer interaction, supported buyer modes, and any unavailable reason. This is discovery only: listing a planned method does not mean it can charge, and autonomous payments must not fall back silently to human Stripe Checkout.
- **purchase** — Attempt a purchase for a quote_id from prepare_order using an explicitly selected buyer_mode and payment_method supported by payment_capabilities. stripe_checkout requires human/delegated confirmation, accepted terms, customer email and a customer-paid Stripe link; agent_wallet and stripe_off_session are available only when their offline-sandbox capabilities are enabled and the machine has the necessary authority or balance. This can create an order or start a payment; reuse the SAME idempotency_key on retries and never infer success before verified payment.
- **card_payment_terms** — Read the currently required consent version and conditions before create_card_authorization. Use this to explain future off-session card charges and spending authority; it never creates a card setup or charges money.
- **create_card_authorization** — Create an offline-sandbox Stripe SetupIntent tied to this authenticated machine after explicit saved-card consent. Call card_payment_terms first, then complete the returned client_secret with Stripe.js and call sync_card_authorization; this call stores consent and limits but does not charge the card. Reuse idempotency_key on retries and never send PAN/CVC to this tool.
- **sync_card_authorization** — After completing a Stripe SetupIntent with Stripe.js, reconcile the authenticated machine's saved-card authorization with Stripe. Use the authorization_id returned by create_card_authorization; this may activate the permission only after successful setup and ownership checks, and never charges a card. Do not use it to initiate setup (create_card_authorization) or reconcile an order payment (sync_card_payment).
- **revoke_card_authorization** — Revoke an authenticated machine's own saved-card spending permission by authorization_id. This blocks NEW purchases against that permission, but already reserved or in-flight payments may still settle and need reconciliation. This action does not delete the Stripe customer or refund prior charges.
- **sync_card_payment** — Reconcile a saved-card purchase by the order_id returned from purchase with payment_method=stripe_off_session. For this machine's order, check Stripe PaymentIntent ownership and status; the operation can resume an idempotent pending charge, complete verified fulfilment, or return a required Stripe.js/3-D Secure action. Do not retry with a new order or bypass bank authentication; use get_order to read ordinary delivery status.
- **register_machine** — Create a NEW offline-sandbox machine identity with a zero-EUR test wallet and one-time API key; no email or human account is required. Use before get_wallet, fund_wallet, set_wallet_limits, or sandbox purchases; securely store the returned mak_test_ key, which cannot be retrieved again. This does not create a live payment account.
- **get_wallet** — Read the authenticated sandbox machine's own EUR-cent balance, spending limits, and latest ledger entries. Returns at most 100 ledger entries per call; pass offset=100, 200, ... to paginate when next_offset is present. Use fund_wallet to create a test funding checkout and set_wallet_limits to change limits; this read does neither.
- **set_wallet_limits** — Change this authenticated sandbox machine's gross spending limits in integer EUR cents per purchase and per UTC day. Zero blocks future spending; refunds do not restore the consumed daily limit. Use get_wallet to inspect current limits first; this does not authorize another person's card or make a purchase.
- **fund_wallet** — Create or retrieve an offline-sandbox Stripe TEST Checkout session for funding this authenticated machine's test wallet. amount_cents is integer EUR cents (100 = EUR 1.00); the balance changes only after verified test payment, not after opening the checkout link. Reuse idempotency_key for retries; no real money is accepted.
- **revoke_machine** — Permanently disable the authenticated sandbox machine's current API key, preventing subsequent wallet and purchase requests with that key. The transaction and ledger history remain; this does not cash out, refund, or transfer wallet funds. Use only when decommissioning or securing the machine, not when merely changing spending limits.
- **register_affiliate** — Register this AI agent as a MonoEsim affiliate (call WITHOUT an API key). Pass the email of the human who owns you, your name, where and how you will promote MonoEsim, and accept_program_rules=true after reading the rules. Returns a one-time API key at once; the owner must confirm by email before referral links and commission work. Payouts go only to payout details the owner saves in the partner portal.
- **get_affiliate** — Read your affiliate account with your API key: state (awaiting_owner_confirmation, active, pending_review, blocked), referral link and ?ref= code, QR image, clicks and sales, balance in EUR (available, on hold, processing, paid), and whether your owner completed the payout setup. Read-only; customer data is never included.
- **get_referral_link** — Build your tracked link (requires an active affiliate key): pass plan_id for a plan page with the plan preselected, destination (country, city, region or ISO-2) for a destination page, or nothing for your partner landing page. Share only where advertising is allowed and mark it as an ad; the price returned is current and may change.
- **list_affiliate_sales** — List sales made through your referral link (latest first, 50 per page): date, destination, plan, amount, refunds, your commission and its state (held, available, settled, void). Contains no customer data. Requires an active affiliate key.
- **request_payout** — Ask MonoEsim to pay out your available commission (requires an active affiliate key, available balance at or above the minimum and the owner's completed payout setup). Creates at most one open request; MonoEsim then issues a credit note and transfers the money to the payout details the owner saved. You can never set or change payout details.

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: medium). Install path inferred — verify against the README before running it. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "mono-esim-mcp": {
    "url": "https://www.monoesim.app/mcp"
  }
}
```

## Documentation

## What Mono eSIM MCP does

Mono eSIM MCP gives AI agents an MCP interface for finding and evaluating travel data eSIMs. Agents can list countries and regions, search by destination or city, filter by data allowance, validity, budget, or unlimited-data requirements, and compare a shortlist of two to ten plan IDs. Plan details include price in EUR, coverage, data allowance, validity, availability, and purchase terms.

The server also checks probable eSIM support for phone models and returns matching models and compatibility caveats. It can retrieve purchase terms in English, German, Russian, or Ukrainian, including delivery, validity, refund or withdrawal conditions, and payment information.

## How it works

A typical selection flow starts with `list_destinations` when the location needs discovery, followed by `search_plans`. The agent can validate a candidate with `get_plan`, compare selected plan IDs with `compare_plans`, and check the customer's phone with `check_device`. Compatibility results can be unknown, so customers should confirm the device EID and carrier-unlock status, particularly for regional variants.

Before checkout, `get_terms` retrieves the terms to show the customer. `prepare_order` then creates a signed quote with a 30-minute price lock; it does not create an order, charge a payment method, or issue an eSIM. For a customer-paid flow, `create_checkout` requires explicit confirmation of the displayed plan and price, accepted terms, and the customer's email. It returns a Stripe Checkout URL, and fulfilment starts only after payment is verified.

Alternative payment flows use `payment_capabilities` first. The `purchase` tool requires an explicitly selected buyer mode and payment method. A completed order can be checked with `get_order`, which requires both the order ID and private order token. After delivery, that response may contain an LPA activation code, QR or installation links, and usage data; these values should be handled as secrets.

## Setup and configuration

`register_machine` creates an offline-sandbox machine identity with a zero-EUR test wallet and returns a one-time `mak_test_` API key. The key must be stored securely because it cannot be retrieved again. This identity is used before wallet operations or sandbox purchases and does not create a live payment account.

Sandbox operators can inspect balances and ledger entries with `get_wallet`, set per-purchase and per-UTC-day limits with `set_wallet_limits`, and create a Stripe test Checkout funding session with `fund_wallet`. Funding changes the balance only after a verified test payment. `revoke_machine` permanently disables the machine's current API key while retaining transaction and ledger history.

Saved-card authorization requires reading `card_payment_terms` first. `create_card_authorization` creates an offline-sandbox Stripe SetupIntent after consent; Stripe.js completes it, and `sync_card_authorization` reconciles the result. These tools do not charge a card. `sync_card_payment` handles reconciliation for an eligible saved-card order, including a possible Stripe.js or 3-D Secure action.

## Tools and capabilities

- Discover destinations and search plans by location, data, validity, price, or unlimited-data status.
- Retrieve, validate, and compare current plan offers without reserving inventory.
- Check probable phone eSIM compatibility and expose model-match caveats.
- Present localized terms and prepare time-limited signed quotes.
- Create customer-paid Stripe Checkout sessions or use enabled sandbox payment methods.
- Manage sandbox machines, EUR-cent wallets, spending limits, test funding, and saved-card permissions.
- Inspect order fulfilment and retrieve activation details after verified delivery.

## Limitations and notes

Search results, comparisons, destination listings, and quotes do not reserve inventory. A withdrawn or missing plan should be searched again rather than treated as a cached offer. Payment capability listings can include planned methods, so agents must not assume that a listed method can charge or silently fall back to human Stripe Checkout.

Purchases are in testing, and the sandbox wallet accepts no real money. Reuse the same idempotency key when retrying relevant authorization, funding, checkout, or purchase operations. Never send card PAN or CVC to the server, and do not infer payment success before verification. Revoking a saved-card authorization blocks new purchases but may not stop already reserved or in-flight payments from settling.

_Full upstream README: https://allmcps.com/mcp/mono-esim-mcp/readme_

