esimker eSIM store

Prepaid travel data eSIMs: checkout links for people, autonomous purchases from a prepaid wallet.

Should I use this

Quality & Safety

B
Description quality
94%
Schema completeness
68%
Naming quality
98%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin create_wallet
  • LOWTool 'get_usage' description lacks action verbin get_usage

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,683Tokens (tool definitions)
~944 BTypical response size
Significant attention impact (2.10% of 128k context)

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": {
    "esim": {
      "url": "https://esimker.com/api/mcp"
    }
  }
}

Remote endpoints

https://esimker.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_destinations(query)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    }
  },
  "title": "search_destinationsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "search_destinationsOutput"
}
🟢get_plans(slug)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "title": "Slug",
      "type": "string"
    }
  },
  "required": [
    "slug"
  ],
  "title": "get_plansArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_plansDictOutput"
}
🟢get_payment_methods

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_payment_methodsArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_payment_methodsDictOutput"
}
🟡create_checkout(plan_id, payment_method, email, lang, period_num, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "plan_id": {
      "maximum": 2147483647,
      "minimum": 1,
      "title": "Plan Id",
      "type": "integer"
    },
    "payment_method": {
      "default": "crypto",
      "enum": [
        "crypto",
        "card"
      ],
      "title": "Payment Method",
      "type": "string"
    },
    "email": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Email"
    },
    "lang": {
      "default": "en",
      "title": "Lang",
      "type": "string"
    },
    "period_num": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Period Num"
    },
    "topup_iccid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Topup Iccid"
    }
  },
  "required": [
    "plan_id"
  ],
  "title": "create_checkoutArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "create_checkoutDictOutput"
}
🟢get_order(token)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "title": "Token",
      "type": "string"
    }
  },
  "required": [
    "token"
  ],
  "title": "get_orderArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_orderDictOutput"
}
🟢list_topups(iccid)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "iccid": {
      "title": "Iccid",
      "type": "string"
    }
  },
  "required": [
    "iccid"
  ],
  "title": "list_topupsArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Result",
      "type": "array"
    }
  },
  "required": [
    "result"
  ],
  "title": "list_topupsOutput"
}
🟢get_usage(iccid)

Remaining data and status of an eSIM we issued.

Input Schema

{
  "type": "object",
  "properties": {
    "iccid": {
      "title": "Iccid",
      "type": "string"
    }
  },
  "required": [
    "iccid"
  ],
  "title": "get_usageArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_usageDictOutput"
}
🟡create_wallet(accept_terms)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "accept_terms": {
      "title": "Accept Terms",
      "type": "boolean"
    }
  },
  "required": [
    "accept_terms"
  ],
  "title": "create_walletArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "create_walletDictOutput"
}
🟢get_wallet

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "title": "get_walletArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_walletDictOutput"
}
🟡create_deposit(amount_usd, currency, payment_method, lang)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "amount_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ],
      "title": "Amount Usd"
    },
    "currency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Currency"
    },
    "payment_method": {
      "default": "crypto",
      "enum": [
        "crypto",
        "card"
      ],
      "title": "Payment Method",
      "type": "string"
    },
    "lang": {
      "default": "en",
      "title": "Lang",
      "type": "string"
    }
  },
  "required": [
    "amount_usd"
  ],
  "title": "create_depositArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "create_depositDictOutput"
}
🟢get_deposit(token)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "title": "Token",
      "type": "string"
    }
  },
  "required": [
    "token"
  ],
  "title": "get_depositArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "get_depositDictOutput"
}
🟡purchase_esim(plan_id, client_ref, period_num, topup_iccid, email, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "plan_id": {
      "maximum": 2147483647,
      "minimum": 1,
      "title": "Plan Id",
      "type": "integer"
    },
    "client_ref": {
      "title": "Client Ref",
      "type": "string"
    },
    "period_num": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Period Num"
    },
    "topup_iccid": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Topup Iccid"
    },
    "email": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Email"
    },
    "lang": {
      "default": "en",
      "title": "Lang",
      "type": "string"
    }
  },
  "required": [
    "plan_id",
    "client_ref"
  ],
  "title": "purchase_esimArguments"
}

Output Schema

{
  "type": "object",
  "additionalProperties": true,
  "title": "purchase_esimDictOutput"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools