Skip to content

Mono eSIM — Travel Connectivity for AI Agents

io.github.Andrii-Tiurin/mono-esimAndrii-Tiurinstreamable-httpv0.1.0Scanned

Search travel eSIM plans, check devices, and create secure customer-paid checkout links.

21 tools: 2 can delete or cancel things, 4 do something that can't be undone, 9 change things and 6 only read.

Tools: 2 delete, 4 irreversible, 9 write, 6 read.
  • Reads private data · 0
  • Reads text others write · 10
  • Can send data out · 0
  • 3 findings

Anlyon alternative

15 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

21 tools

Deletes or cancels 2Claude Code: deny
  • revoke_card_authorizationPrevent new purchases using this permission.Reads text others writeNo findings

    Why it is in this group

    • The name "revoke_card_authorization" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Prevent new purchases using this permission. Previously reserved payments can still settle and require reconciliation.

    Annotations the server declares

    • title: Revoke saved-card permission
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • revoke_machineImmediately disable this machine's key.Reads text others writeNo findings

    Why it is in this group

    • The name "revoke_machine" says "revoke": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Immediately disable this machine's key. Existing ledger is retained. Subsequent requests using this key will fail.

    Annotations the server declares

    • title: Revoke this machine API key
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Can't be undone 4Claude Code: ask
  • card_payment_termsRead the versioned agreement before saving a payment method for future off-session charges.1 finding

    Why it is in this group

    • The name "card_payment_terms" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "card_payment_terms" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "card_payment_terms" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Read the versioned agreement before saving a payment method for future off-session charges.

    Annotations the server declares

    • title: Saved-card authorization terms
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_orderPayment and delivery status of an order.1 finding

    Why it is in this group

    • The name "get_order" says "get": a word for reading.
    • The description's first verb is "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_order" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_order" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Payment and delivery status of an order. After delivery returns the eSIM: activation code (LPA), QR code link, iPhone one-tap install link, install steps and remaining data.

    Annotations the server declares

    • title: Get order / eSIM status
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • payment_capabilitiesActual enabled methods, environments and buyer modes.1 finding

    Why it is in this group

    • The name "payment_capabilities" says "payment": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "payment_capabilities" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "payment_capabilities" says "payment": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Actual enabled methods, environments and buyer modes. Planned adapters cannot accept payments.

    Annotations the server declares

    • title: Available payment methods
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • purchasePurchase from a signed quote using an explicitly selected payment method.Reads text others writeNo findings

    Why it is in this group

    • The name "purchase" says "purchase": a word that usually means money moves, which cannot be taken back.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Purchase from a signed quote using an explicitly selected payment method. Query payment_capabilities first. Autonomous modes never silently fall back to human checkout. Reuse the same idempotency key on retries. Stripe Checkout still requires customer confirmation, terms and email.

    Annotations the server declares

    • title: Universal purchase
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Changes things 9Claude Code: ask
  • check_deviceWhether a phone model supports eSIM (e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Whether a phone model supports eSIM (e.g. "iPhone 12 mini", "Galaxy S21", "Pixel 7").

    Annotations the server declares

    • title: Check device compatibility
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • create_card_authorizationOffline sandbox only.Reads text others writeNo findings

    Why it is in this group

    • The name "create_card_authorization" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Offline sandbox only. Record authorized consent and immutable spending limits; create a SetupIntent for off_session use. Complete setup with Stripe.js. No PAN/CVC or human email is collected by this API.

    Annotations the server declares

    • title: Set up saved-card permission
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • create_checkoutStep 2 of buying — ONLY after the customer explicitly agreed to plan and price.Reads text others writeNo findings

    Why it is in this group

    • The name "create_checkout" says "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Step 2 of buying — ONLY after the customer explicitly agreed to plan and price. Returns a secure Stripe payment link the customer opens and pays themselves; the eSIM is issued automatically after payment. Requires a unique idempotency_key per purchase (reuse it on retries — never creates a second order).

    Annotations the server declares

    • title: Create checkout for the customer
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fund_walletCreate an offline test Stripe Checkout.Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Create an offline test Stripe Checkout. Balance changes only after verified payment, never on redirect. Reuse idempotency_key on retries. No real funds.

    Annotations the server declares

    • title: Fund sandbox wallet through test Checkout
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • prepare_orderStep 1 of buying.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Step 1 of buying. Locks the current price for 30 minutes and returns a quote_id plus what you must confirm with the customer. No payment, no side effects.

    Annotations the server declares

    • title: Prepare order (quote)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • register_machineOffline sandbox only.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Offline sandbox only. Creates a machine key and zero balance without email or human registration. Store the returned key securely; shown once.

    Annotations the server declares

    • title: Create sandbox machine account
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • set_wallet_limitsSet this sandbox machine's per-purchase and daily gross spending limits in integer EUR cents.Reads text others writeNo findings

    Why it is in this group

    • The name "set_wallet_limits" says "set": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Set this sandbox machine's per-purchase and daily gross spending limits in integer EUR cents. Zero blocks spending. These are self-managed sandbox limits, not a delegated owner's authorization policy.

    Annotations the server declares

    • title: Configure sandbox spending limits
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • sync_card_authorizationRetrieve and verify your SetupIntent and customer ownership before enabling this permission.Reads text others writeNo findings

    Why it is in this group

    • The name "sync_card_authorization" says "sync": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Retrieve and verify your SetupIntent and customer ownership before enabling this permission. Cannot activate a foreign, revoked or expired authorization.

    Annotations the server declares

    • title: Verify completed card setup
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • sync_card_paymentVerify your order's PaymentIntent, resume safe idempotent payment creation if needed, and fulfil only after verified success.Reads text others writeNo findings

    Why it is in this group

    • The name "sync_card_payment" says "sync": a word for a change.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Verify your order's PaymentIntent, resume safe idempotent payment creation if needed, and fulfil only after verified success. Returns a Stripe.js action if the bank requires 3-D Secure; never bypass authentication.

    Annotations the server declares

    • title: Reconcile saved-card payment
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 6Show 6 read-only tools
  • compare_plansSide-by-side comparison of 2–10 plans: cheapest, best price per GB, longest validity.No findings

    Why it is in this group

    • The name "compare_plans" says "compare": a word for reading.
    Description, as the server wrote it
    Side-by-side comparison of 2–10 plans: cheapest, best price per GB, longest validity.

    Annotations the server declares

    • title: Compare plans
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_planCurrent price, availability and terms of one plan.No findings

    Why it is in this group

    • The name "get_plan" says "get": a word for reading.
    Description, as the server wrote it
    Current price, availability and terms of one plan.

    Annotations the server declares

    • title: Get plan details
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_termsKey purchase terms (delivery, validity, withdrawal right, payment) and legal links.No findings

    Why it is in this group

    • The name "get_terms" says "get": a word for reading.
    Description, as the server wrote it
    Key purchase terms (delivery, validity, withdrawal right, payment) and legal links. Show these to the customer before buying.

    Annotations the server declares

    • title: Get terms
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_walletRead your own sandbox wallet, limits and paginated ledger.No findings

    Why it is in this group

    • The name "get_wallet" says "get": a word for reading.
    Description, as the server wrote it
    Read your own sandbox wallet, limits and paginated ledger. Requires your sandbox API key.

    Annotations the server declares

    • title: Wallet balance and ledger
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_destinationsAll countries and multi-country regions with an eSIM offer, each with its starting price in EUR.No findings

    Why it is in this group

    • The name "list_destinations" says "list": a word for reading.
    Description, as the server wrote it
    All countries and multi-country regions with an eSIM offer, each with its starting price in EUR.

    Annotations the server declares

    • title: List destinations
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_plansFind eSIM data plans for a trip.No findings

    Why it is in this group

    • The name "search_plans" says "search": a word for reading.
    Description, as the server wrote it
    Find eSIM data plans for a trip. `destination` accepts a country, city, region or ISO code in any language (e.g. "Japan", "Tokio", "Europe", "TR"). Filter by trip length, data need and budget; results are sorted (cheapest first by default) with a recommendation.

    Annotations the server declares

    • title: Search eSIM plans
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

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.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write10
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "card_payment_terms" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "card_payment_terms" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The server marks "payment_capabilities" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "payment_capabilities" says "payment": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The server marks "get_order" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "get_order" says "get": a word for reading.

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http mono-esim https://www.monoesim.app/mcp
claude mcp add --transport http mono-esim https://www.monoesim.app/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__mono-esim__get_wallet",
      "mcp__mono-esim__list_destinations",
      "mcp__mono-esim__search_plans",
      "mcp__mono-esim__get_plan",
      "mcp__mono-esim__compare_plans",
      "mcp__mono-esim__get_terms"
    ],
    "ask": [
      "mcp__mono-esim__card_payment_terms",
      "mcp__mono-esim__create_card_authorization",
      "mcp__mono-esim__sync_card_authorization",
      "mcp__mono-esim__sync_card_payment",
      "mcp__mono-esim__register_machine",
      "mcp__mono-esim__set_wallet_limits",
      "mcp__mono-esim__fund_wallet",
      "mcp__mono-esim__payment_capabilities",
      "mcp__mono-esim__purchase",
      "mcp__mono-esim__check_device",
      "mcp__mono-esim__prepare_order",
      "mcp__mono-esim__create_checkout",
      "mcp__mono-esim__get_order"
    ],
    "deny": [
      "mcp__mono-esim__revoke_card_authorization",
      "mcp__mono-esim__revoke_machine"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as mono-esim. Review it before you use it.

Capability tags behind 10 rules
  • mcp__mono-esim__create_card_authorization untrusted-input
  • mcp__mono-esim__sync_card_authorization untrusted-input
  • mcp__mono-esim__revoke_card_authorization untrusted-input
  • mcp__mono-esim__sync_card_payment untrusted-input
  • mcp__mono-esim__register_machine untrusted-input
  • mcp__mono-esim__set_wallet_limits untrusted-input
  • mcp__mono-esim__fund_wallet untrusted-input
  • mcp__mono-esim__revoke_machine untrusted-input
  • mcp__mono-esim__purchase untrusted-input
  • mcp__mono-esim__create_checkout untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/io.github.Andrii-Tiurin/mono-esim/verify?hash=d8ad64928e19a0b4cb6c596ecb82b5839f72c436841e1d5665c614d377147f8b" | jq -e '.changed == false'

Pinned hash d8ad64928e19, from Nov 2, 2026, 16:18 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/io.github.Andrii-Tiurin/mono-esim/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for io.github.Andrii-Tiurin/mono-esim
[![anlyon.dev](https://anlyon.dev/badge/io.github.Andrii-Tiurin/mono-esim.svg)](https://anlyon.dev/servers/io.github.Andrii-Tiurin/mono-esim)

Source: MCP Registry. Synced Nov 2, 2026, 16:17 UTC.