Cypher eSIM for AI agents

AI assistants can buy a Cypher eSIM on your behalf. Connect our MCP server, ask for "an eSIM for Japan, 10 GB", and the agent finds the plan, creates a crypto invoice, and hands you the QR code after payment.

No API key, no account, no name, email or phone. The agent goes through the same checkout as a person on the site: same plans, same prices in USD, same 8 coins.

MCP server

Claude Desktop

Settings → Connectors → Add custom connector, and paste the endpoint URL. Or, for older versions, add this to claude_desktop_config.json:

{
    "mcpServers": {
        "cypher-esim": {
            "command": "npx",
            "args": ["-y", "mcp-remote", "https://cypheresim.com/mcp"]
        }
    }
}

Cursor

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
    "mcpServers": {
        "cypher-esim": {
            "url": "https://cypheresim.com/mcp"
        }
    }
}

Claude Code

claude mcp add --transport http cypher-esim https://cypheresim.com/mcp

MCP Inspector

npx @modelcontextprotocol/inspector --cli https://cypheresim.com/mcp --transport http --method tools/list

Tools

What the agent must tell you before payment

REST API

Base URL: https://cypheresim.com/api/public/v1. JSON, no key, CORS open. The MCP tools call the same functions.

Example

curl "https://cypheresim.com/api/public/v1/plans?destination=ES&type=number"

curl -X POST https://cypheresim.com/api/public/v1/orders \
     -H "Content-Type: application/json" \
     -d '{"plan_id":"<plan_id>","coin":"USDT","network":"tron"}'

curl "https://cypheresim.com/api/public/v1/orders/<order_id>?token=<order_token>"

For resellers

Resellers get an API key. Send it in the X-API-Key header on any REST request or on /mcp. An unknown or revoked key returns 401 invalid_api_key.

With a key, price_usd in GET /plans, /plans/{plan_id} and /destinations is your wholesale price. retail_price_usd shows the retail price for comparison.

To get a key, write to us in Telegram: @cypheresim_bot.

Orders

curl -X POST https://cypheresim.com/api/public/v1/orders \
     -H "X-API-Key: rs_live_…" \
     -H "Content-Type: application/json" \
     -d '{"plan_id":"<plan_id>","coin":"USDT","network":"tron","quantity":10,"client_ref":"batch-42"}'

curl -H "X-API-Key: rs_live_…" \
     "https://cypheresim.com/api/public/v1/orders?status=delivered&limit=20"

Limits

Each key has two limits, agreed when we issue it: unpaid orders at the same time, and orders per 24 hours. Over a limit the API returns HTTP 429 with too_many_pending or daily_limit.

Webhooks

const crypto = require('crypto');

// rawBody: the request body exactly as received, before JSON.parse
function isFromCypher(rawBody, headers, secret) {
    const ts = headers['x-cypher-timestamp'];
    const header = headers['x-cypher-signature'] || '';
    const sig = crypto.createHmac('sha256', secret).update(ts + '.' + rawBody).digest('hex');
    const a = Buffer.from('sha256=' + sig);
    const b = Buffer.from(header);
    return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Limits and privacy

Frequently asked questions

Do I need an API key?

No. The MCP server and the REST API are public. Limits are per IP, so normal personal use never hits them.

Can the agent pay by itself?

Only if it controls a crypto wallet. Usually the agent shows you the invoice (amount, coin, network, address) and you pay from your own wallet, then it fetches the QR code.

Are prices different for agents?

No. Agents see the same plans and the same USD prices as the site. The crypto amount is fixed when the invoice is created.

What if the eSIM is not delivered after payment?

Status "paid" means issuing is in progress. If it stays there, contact support in Telegram with the order id.