esimker eSIM store
by esimker.com · remote · no sign-in to list tools · v1.0.0 · published by com.esimker
Prepaid travel data eSIMs: checkout links for people, autonomous purchases from a prepaid wallet.
12 tools: 1 do something that can't be undone, 4 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things4Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http esim https://esimker.com/api/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "get_payment_methods" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "get_payment_methods" says "get": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
12 tools
Can't be undone 1Claude Code: ask
purchase_esimCharge the wallet and issue an eSIM, no checkout.No findings
Why it is in this group
- The name "purchase_esim" says "purchase": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Charge the wallet and issue an eSIM, no checkout. `client_ref` (1–64 chars) is your own reference for this purchase and makes the call idempotent: a retry with the same value returns the existing order without a second charge, so reuse it after a timeout and never invent a new one for the same purchase. `period_num` (1–365, default 7) only for daily_unlimited plans; the charge is price × days. `topup_iccid` with a plan_id from list_topups tops up an eSIM. Returns the order (status paid) with order_url; poll get_order(token) for ready and the activation code. A 402 is a short balance: create_deposit first. A wallet pays for at most 50 orders in 24 hours (429 beyond that; a retry answered from client_ref does not count). Needs the wallet code.
Annotations the server declares
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: false
Changes things 4Claude Code: ask
create_checkoutCreate an order for a person to pay.No findings
Why it is in this group
- The name "create_checkout" says "create": a word for a change.
Description, as the server wrote it Create an order for a person to pay. Returns token, checkout_url (the gateway's page: hand it to the person) and order_url (the order page in `lang`, with the QR code once paid: show it to the buyer only, the token is a secret). Confirm the plan and the price first: every call creates a new unpaid order, so do not retry while a checkout is open. `email` (optional) also gets the eSIM by mail. `period_num` (1–365) only for daily_unlimited plans. `topup_iccid` with a plan_id from list_topups tops up an existing eSIM. A 403 means the caller's jurisdiction is embargoed. To pay from a wallet use purchase_esim.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
create_depositOpen a top-up of the wallet and get what is needed to pay it.No findings
Why it is in this group
- The name "create_deposit" says "create": a word for a change.
Description, as the server wrote it Open a top-up of the wallet and get what is needed to pay it. Floors: $10 for a wallet's first deposit, $1 after that; cap $1000 per deposit. Crypto deposits earn a bonus (+2% from $25, +3% from $50, +5% from $100, capped at $25); every purchase returns 3% cashback. With payment_method "crypto" pass a currency from: BTC, ETH, TRX, USDTTRC, USDTETH, USDTBSC — the answer then carries `pay`: the address, the exact amount in the coin (network fee included) and expires_at (about 15 minutes; after that open a new deposit). Send exactly `pay.amount` to `pay.address` on `pay.network`, then poll get_deposit(token) until status is paid. checkout_url is the hosted pay page for a person; card deposits have only that. Needs the wallet code.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
create_walletMint a prepaid wallet with no account behind it and get its secret ONCE: `code` (32 hex characters) and the same secret as a 12-word `phrase`.No findings
Why it is in this group
- The name "create_wallet" says "create": a word for a change.
Description, as the server wrote it Mint a prepaid wallet with no account behind it and get its secret ONCE: `code` (32 hex characters) and the same secret as a 12-word `phrase`. Save the code before doing anything else and send it as `Authorization: Bearer <code>` on every wallet call; there is no recovery and no identity to prove. The balance is spent on eSIMs (retail price, cashback on every purchase) and never paid back out. accept_terms must be true (https://esimker.com/terms). Then create_deposit to fund it. Rate-limited and geo-blocked like checkout.
Annotations the server declares
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
- readOnlyHint: false
get_payment_methodsCheckout methods open right now: "crypto" (a hosted invoice: BTC, ETH, TRX, USDT), "card", and "wallet" (a prepaid balance, see create_wallet).1 finding
Why it is in this group
- The name "get_payment_methods" says "get": a word for reading.
- The description's first verb is "checkout": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "get_payment_methods" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "get_payment_methods" says "get": a word for reading.
Description, as the server wrote it Checkout methods open right now: "crypto" (a hosted invoice: BTC, ETH, TRX, USDT), "card", and "wallet" (a prepaid balance, see create_wallet). `gateways` names the providers behind each method; a checkout that does not ask for one by name goes to the first, which is what these tools do.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
Only reads 7Claude Code: allow
get_depositOne deposit of the wallet by its token: status pending → paid (credited, bonus included) | underpaid (nothing credited yet, the rest can still arrive) | payment_held (the payment p…No findings
Why it is in this group
- The name "get_deposit" says "get": a word for reading.
Description, as the server wrote it One deposit of the wallet by its token: status pending → paid (credited, bonus included) | underpaid (nothing credited yet, the rest can still arrive) | payment_held (the payment processor's compliance check stopped the payment and holds it: nothing is credited, do not pay again, the person should write to support) | expired. Poll every ~30 s after sending; crypto needs the network's confirmations. Needs the wallet code.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_orderAn order by its token.No findings
Why it is in this group
- The name "get_order" says "get": a word for reading.
Description, as the server wrote it An order by its token. status goes pending (unpaid) → paid → provisioning → ready; also expired, underpaid, failed_provisioning, gift_waiting, and payment_held — the payment processor's compliance check stopped the payment and holds the money: nothing is issued, the person must not pay again and should write to support. When ready, esim.activation_code is the LPA string (render it as a QR code), with iccid, smdp and matching_id. After payment poll every ~10 s; delivery usually takes under a minute.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_plansThe plans of one destination (slug from search_destinations).No findings
Why it is in this group
- The name "get_plans" says "get": a word for reading.
Description, as the server wrote it The plans of one destination (slug from search_destinations). Each plan: id (the plan_id for an order), name, gb, days, retail (USD; per day when daily_unlimited is true), daily_unlimited, location_codes (the countries it covers), networks, speed, supports_topup. Also the published rating.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_usageRemaining data and status of an eSIM we issued.No findings
Why it is in this group
- The name "get_usage" says "get": a word for reading.
Description, as the server wrote it Remaining data and status of an eSIM we issued.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
get_walletThe wallet behind the code: ref (a public handle for support), balance_usd, cashback_percent, the deposit rules that apply to it now (min_usd, max_usd, first, bonus tiers), the las…No findings
Why it is in this group
- The name "get_wallet" says "get": a word for reading.
Description, as the server wrote it The wallet behind the code: ref (a public handle for support), balance_usd, cashback_percent, the deposit rules that apply to it now (min_usd, max_usd, first, bonus tiers), the last 50 transactions, orders (with their tokens — the wallet is where a buyer's order links are kept) and deposits. Needs the wallet code.
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
list_topupsTop-up plans that fit an eSIM we issued: plan_id, name, gb, days, retail.No findings
Why it is in this group
- The name "list_topups" says "list": a word for reading.
Description, as the server wrote it Top-up plans that fit an eSIM we issued: plan_id, name, gb, days, retail. Order one with create_checkout(plan_id, topup_iccid=iccid) or, from a wallet, purchase_esim(plan_id, client_ref, topup_iccid=iccid).
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
search_destinationsDestinations on sale.No findings
Why it is in this group
- The name "search_destinations" says "search": a word for reading.
Description, as the server wrote it Destinations on sale. `query` matches the name in any of 18 languages, the slug or the ISO code; empty lists everything. Each item: dest_code, slug, name, min_retail (USD, the cheapest fixed plan), unlimited_from (USD per day of a Daily Unlimited pass, or null), plan_count. Continue with get_plans(slug).
Annotations the server declares
- idempotentHint: true
- openWorldHint: false
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http esim https://esimker.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__esim__search_destinations",
"mcp__esim__get_plans",
"mcp__esim__get_order",
"mcp__esim__list_topups",
"mcp__esim__get_usage",
"mcp__esim__get_wallet",
"mcp__esim__get_deposit"
],
"ask": [
"mcp__esim__get_payment_methods",
"mcp__esim__create_checkout",
"mcp__esim__create_wallet",
"mcp__esim__create_deposit",
"mcp__esim__purchase_esim"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as esim. Review it before you use it.