Get the App 100% anonymous, no signup or email required

MCP Server Documentation

Reference for the PikaSim MCP server. New here? Start at Agentic eSIM Ordering.

New to MCP? The Model Context Protocol lets AI agents use tools hosted by external services. PikaSim's MCP server gives your AI agent real-time access to data eSIM and phone-number eSIM plans, coverage, and purchasing.

Quick Start

Get started in under a minute. Add PikaSim to your AI agent's MCP config:

{
  "mcpServers": {
    "pikasim": {
      "type": "streamable-http",
      "url": "https://pikasim.com/mcp"
    }
  }
}

That's it. Your AI agent can now search data eSIM and phone-number eSIM plans, check country coverage, and get pricing for 190+ countries. No API key needed for browsing.

Want to purchase eSIMs too? Create a free agent wallet (a prepaid, crypto-funded balance at retail pricing) and add its ak_live_ key to unlock purchase, balance, and order management tools.

Endpoint

POST https://pikasim.com/mcp

Stateless MCP endpoint using the Streamable HTTP transport. Each request creates a fresh server instance. No session management required.

Protocol

  • Transport: Streamable HTTP (JSON-RPC over HTTP POST)
  • Protocol Version: 2025-03-26
  • Content-Type: application/json
  • Accept: application/json, text/event-stream

GET and DELETE requests return 405 (this is a stateless server with no SSE sessions to manage).

Setup Guides

PikaSim is a remote MCP server (Streamable HTTP) with two URLs: https://pikasim.com/mcp for keyless browsing, and https://pikasim.com/mcp/wallet for purchasing (it connects a prepaid agent wallet via OAuth, or a Bearer key on CLI clients). Steps differ per client; use the matching one below.

Claude Desktop

Remote servers are added as connectors, not via claude_desktop_config.json (that file is for local stdio servers). Go to Settings → Connectors → Add custom connector and paste the URL.

To purchase (recommended): add https://pikasim.com/mcp/wallet, then click Connect. Claude opens a PikaSim consent page; paste your 32-character wallet code (from your agent wallet) and authorize. Claude receives a revocable access token bound to that wallet (no key pasted into a URL, no account, no email). After connecting, enable the connector for your chat from the tools menu.

https://pikasim.com/mcp/wallet   ← Connect → paste wallet code

To browse only (no wallet), add the keyless URL instead:

https://pikasim.com/mcp

Claude Code

One command (the flag value is http for Streamable HTTP):

# browse only
claude mcp add --transport http pikasim https://pikasim.com/mcp

# with purchasing (agent-wallet key)
claude mcp add --transport http pikasim https://pikasim.com/mcp \
  --header "Authorization: Bearer ak_live_your_api_key_here"

ChatGPT

On a paid plan (Plus, Pro, Business, Enterprise, or Edu): Settings → Apps → Advanced settings → enable Developer mode, then Create app and enter the URL. Use https://pikasim.com/mcp to browse, or https://pikasim.com/mcp/wallet to purchase — the wallet URL triggers OAuth, so you authorize by pasting your wallet code on the PikaSim consent page (no key in the URL). Open the app to enable individual tools.

Grok (xAI)

On a paid plan: grok.com/connectors → New Connector → Custom, then paste the URL: https://pikasim.com/mcp to browse, or https://pikasim.com/mcp/ak_live_your_api_key_here to also purchase.

Gemini CLI

Edit ~/.gemini/settings.json. Gemini CLI uses the httpUrl key for Streamable HTTP and passes the key as a header. (The consumer Gemini app has no custom-connector option; use the CLI.)

{
  "mcpServers": {
    "pikasim": {
      "httpUrl": "https://pikasim.com/mcp",
      "headers": { "Authorization": "Bearer ak_live_your_api_key_here" }
    }
  }
}

Cursor

Settings → Tools & MCP → New MCP Server, or add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pikasim": {
      "type": "streamableHttp",
      "url": "https://pikasim.com/mcp"
    }
  }
}

VS Code (GitHub Copilot)

Add to .vscode/mcp.json (note the top-level key is servers and the type is http):

{
  "servers": {
    "pikasim": {
      "type": "http",
      "url": "https://pikasim.com/mcp"
    }
  }
}

Windsurf / Cline / Zed

  • Windsurf (~/.codeium/windsurf/mcp_config.json): mcpServers with "serverUrl": "https://pikasim.com/mcp"
  • Cline: mcpServers with "type": "streamableHttp", "url": "https://pikasim.com/mcp"
  • Zed: context_servers, or bridge with npx -y mcp-remote https://pikasim.com/mcp

Any MCP Client

Any agent or tool that supports MCP Streamable HTTP transport can connect to https://pikasim.com/mcp. Send JSON-RPC messages via POST with Accept: application/json, text/event-stream. For authenticated tools pass Authorization: Bearer ak_live_… or X-API-Key: ak_live_….

Public Tools (No Auth Required)

These tools are available to any AI agent with no API key. Use them to help users find the right data eSIM or phone-number eSIM plan.

Two product lines. PikaSim sells data eSIMs (data-only, eSIM Access) and phone-number eSIMs (a real carrier number with voice + SMS + data). The search and coverage tools return both by default. Each result shows its packageCode in [brackets]; pass it to purchase_esim (data) or purchase_phone_plan (phone).

search_esim_packages

Search plans by country, region, or keyword. Returns both product lines in separate buckets (DATA eSIMs and PHONE-NUMBER eSIMs), sorted by price. Use type to narrow to one line.

Parameters

NameTypeRequiredDescription
country string No ISO 3166-1 alpha-2 country code (e.g., JP, US, DE, TH)
region string No Region name (e.g., Europe, Asia, Global, Caribbean)
query string No Free-text search (e.g., "Japan 10GB", "Europe 30 days")
type string No Product line: data, phone, or all (default)

At least one parameter should be provided. If only query is set (no country/region), a text search is performed.

Example Response

DATA eSIMs (35):
  United States 100MB 7Days [P3YTYXBRV] | 100MB | 7 days | $0.75
  United States 1GB 7Days [PHAJHEAYP] | 1GB | 7 days | $2.25
  ...showing 10 of 35

PHONE-NUMBER eSIMs (15): real carrier number, voice + SMS + data:
  Phone-number plan [change-plus-7days-1gb]: 10 min + 10 SMS + 1GB data | 7 days | $5.10 | real carrier number
  ...showing 10 of 15

The code in [brackets] is the packageCode: pass it to purchase_esim (data) or purchase_phone_plan (phone).

search_phone_plans

Search phone-number eSIMs only: plans with a real carrier phone number (not VoIP), voice, SMS, and data. US plans give a real +1 number on AT&T and T-Mobile; global plans cover 157 countries. Use this when a user wants to call or text, not just data.

Parameters

NameTypeRequiredDescription
country string No ISO 3166-1 alpha-2 country code (e.g., US for a real +1 number)
region string No Region name (e.g., Global)
query string No Free-text search (e.g., "US 5GB")

Example Response

Phone-number eSIMs: a real carrier number with voice + SMS + data (not VoIP):
  Phone-number plan [change-plus-7days-1gb]: 10 min + 10 SMS + 1GB data | 7 days | $5.10 | real carrier number
  Phone-number plan [change-plus-15days-2gb]: 20 min + 20 SMS + 2GB data | 15 days | $9.90 | real carrier number
  ...showing 10 of 15

The code in [brackets] is the packageCode: pass it to purchase_phone_plan.

get_package_details

Get full details for a specific package including coverage map, network operators, speed, top-up support, and purchase URL.

Parameters

NameTypeRequiredDescription
packageCode string Yes Package code from search results (e.g., CKH001, PZN25QW0P)

Example Response

Package: Japan 3GB 15Days
Code: CKH123
Data: 3GB
Duration: 15 days
Price: $4.25 USD
Coverage: Japan (JP)
Speed: 3G/4G
Top-up: Supported

Networks:
  Japan: NTT Docomo (LTE), SoftBank (LTE)

Purchase: https://pikasim.com/esim/japan-3gb-15days

check_country_coverage

Check all available plans for a country, returned as two buckets: data eSIMs (count, price range, data amounts) and phone-number eSIMs (count, price range; a real carrier number with voice + SMS).

Parameters

NameTypeRequiredDescription
country string Yes ISO 3166-1 alpha-2 country code

Example Response

US (US) eSIM Coverage

DATA eSIMs (50): price range $0.75 - $224.20
  Available data amounts:
    100MB: from $0.75 (7 days)
    1GB: from $2.07 (7 days)
    5GB: from $8.28 (30 days)
    ...

PHONE-NUMBER eSIMs (15): a real +1 number on AT&T / T-Mobile, voice + SMS + data, price range $5.10 - $81.00
  Cheapest: 1 GB - 10 SMS - 10 Mins - 7 days [change-plus-7days-1gb] from $5.10
  Use search_phone_plans for the full list, then purchase_phone_plan.

Browse data plans: https://pikasim.com/esim/us
Browse phone plans: https://pikasim.com/usa-data-sms-call-plans

get_pricing

Get the price and accepted payment methods for a specific package.

Parameters

NameTypeRequiredDescription
packageCode string Yes Package code
currency string No Currency code (currently only USD supported)

Example Response

Japan 3GB 15Days [CKH123]
Price: $4.25 USD
Type: Data eSIM
Data: 3GB
Payment: Card (Visa/MC/Amex/Apple Pay/Google Pay) or Crypto

Purchase: https://pikasim.com/esim/japan-3gb-15days

get_phone_plan_pricing

Get the USD price and voice/SMS/data allowance for a specific phone-number eSIM. Accepts a packageCode from search_phone_plans.

Parameters

NameTypeRequiredDescription
packageCode string Yes Phone-plan code from search_phone_plans (e.g., change-plus-7days-1gb)
currency string No Currency code (currently only USD supported)

Example Response

1 GB - 10 SMS - 10 Mins - 7 days [change-plus-7days-1gb]
Price: $5.10 USD
Type: Phone-number plan, real carrier number + voice + SMS + data
Voice: 10 minutes
SMS: 10
Data: 1GB
Phone Number: Included (assigned by the carrier on activation)
Payment: Card (Visa/MC/Amex/Apple Pay/Google Pay) or Crypto

Purchase: https://pikasim.com/esim/us-change-plus-7days-1gb

Authenticated Tools (Agent Wallet API Key)

These tools require a free PikaSim agent wallet. Pass your ak_live_ API key via the Authorization header. If no key is provided, these tools return a signup prompt instead of an error.

Agent wallets are free. Create one at pikasim.com/agent-wallet (terms-of-service only, no account or KYC), fund it with crypto, and generate an ak_live_ key. Pricing is retail. (Running a B2B reseller business instead? The reseller program is a separate track with its own pk_live_ key and 10% wholesale discount, and its keys also work here.)

check_balance

View your wallet balance, credit limit, and total available funds.

Parameters

None.

Example Response

Wallet Balance: $47.50 USD
Credit Limit: $0.00 USD
Available: $47.50 USD

Fund your wallet: https://pikasim.com/reseller/dashboard

purchase_esim

Purchase a data eSIM. Deducts from your wallet balance and returns the eSIM activation details (ICCID, QR code, SM-DP+ address). For phone-number eSIMs use purchase_phone_plan instead.

Parameters

NameTypeRequiredDescription
packageCode string Yes Data eSIM package code (use search_esim_packages to find codes)

Example Response

Order placed successfully!
Order ID: ord_abc123def456
Package: CKH123
Status: completed
Cost: $3.83

eSIM Details:
  ICCID: 8901234567890123456
  SM-DP+: smdp.example.com
  Activation: LPA:1$smdp.example.com$ACTIVATION_CODE

Use get_esim_status to check activation status.
Real money. Each purchase deducts from your wallet. Make sure you have sufficient balance before calling this tool. Use check_balance first.

purchase_phone_plan

Purchase a phone-number eSIM: a plan with a real carrier phone number, voice, SMS, and data. Deducts from your wallet balance and returns the activation details. The real phone number is assigned by the carrier when the eSIM registers on the network and appears in the device settings after activation (not in the response).

Parameters

NameTypeRequiredDescription
packageCode string Yes Phone-plan package code (use search_phone_plans to find codes, e.g., change-plus-7days-1gb)

Example Response

Phone-number eSIM ordered successfully!
Order ID: ord_xyz789
Plan: change-plus-7days-1gb
Status: completed
Cost: $4.59

eSIM Details:
  ICCID: 8901234567890999888
  SM-DP+: smdp.example.com
  Activation: LPA:1$smdp.example.com$ACTIVATION_CODE

The phone number is assigned by the carrier when the eSIM registers on the network; it appears in the device settings after activation.
Use get_esim_status to check activation status.
Real money. Each purchase deducts from your wallet. Use check_balance first.

get_esim_status

Check the live status, data usage, and expiration of a purchased eSIM.

Parameters

NameTypeRequiredDescription
iccid string Yes ICCID of the eSIM (returned by purchase_esim)

Example Response

eSIM Status: 8901234567890123456
Status: IN_USE
Package: CKH123
Data Used: 0.45GB / 3.00GB
Remaining: 2.55GB
Expires: 2026-06-15T00:00:00Z

topup_esim

Add more data to an existing eSIM. Use get_topup_options first to find valid top-up package codes for the eSIM.

Parameters

NameTypeRequiredDescription
iccid string Yes ICCID of the eSIM to top up
packageCode string Yes Top-up package code

Example Response

Top-up successful!
ICCID: 8901234567890123456
Package: CKH123
Cost: $3.83

Use get_esim_status to verify the top-up was applied.

list_orders

List your recent eSIM orders with status and cost.

Parameters

NameTypeRequiredDescription
page number No Page number (default: 1)
limit number No Results per page (default: 20, max: 50)

Example Response

Orders (3):

ord_abc123 | CKH123 | completed | $3.83 | 2026-05-13
ord_def456 | PZN25QW0P | completed | $7.50 | 2026-05-12
ord_ghi789 | CKH456 | completed | $12.50 | 2026-05-10

Page 1 of 1

create_deposit

Generate a crypto payment invoice to fund your prepaid agent wallet. Supports Bitcoin (on-chain + Lightning), Monero, USDT (Tron), and 50+ altcoins via Trocador.

Parameters

NameTypeRequiredDescription
amount number Yes Deposit amount in USD (must be positive, e.g., 50)

Example Response

Deposit invoice created!
Amount: $50.00 USD
Pay here: https://btcpay.pikasim.com/i/abc123def456
Invoice ID: abc123def456

Accepted: Bitcoin (on-chain + Lightning), Monero, USDT (Tron), and 50+ altcoins via Trocador.
Balance updates automatically after payment confirms.

get_topup_options

List available top-up packages for an existing eSIM, including data amount, duration, price, and voice/SMS where applicable. Use this before topup_esim to find valid package codes.

Parameters

NameTypeRequiredDescription
iccid string Yes ICCID of the eSIM to get top-up options for

Example Response

Top-up options for 8901234567890123456 (4 packages):

CKH123 | Japan 1GB 7 Days | 1GB | 7 days | $1.58
CKH456 | Japan 3GB 15 Days | 3GB | 15 days | $3.83
CKH789 | Japan 5GB 30 Days | 5GB | 30 days | $6.75
CKH012 | Japan 10GB 30 Days | 10GB | 30 days | $11.25

Use topup_esim with the packageCode to apply a top-up.

cancel_esim

Cancel an unused eSIM and receive a refund to your wallet balance. Only works if the eSIM has not been installed or activated (status: GOT_RESOURCE with zero usage).

Parameters

NameTypeRequiredDescription
iccid string Yes ICCID of the eSIM to cancel

Example Response

eSIM 8901234567890123456 cancelled.
Refund: $3.83
New Balance: $51.33
eSIM cancelled successfully. Refund added to your balance.
Irreversible. Once cancelled, the eSIM cannot be reactivated. Only cancel eSIMs that have not been installed on any device.

Authentication

Public tools

No authentication needed. The public browsing tools (search, phone search, details, coverage, pricing) work for any AI agent with no API key, and always show retail prices.

OAuth (recommended for app clients)

PikaSim's MCP server supports OAuth 2.1 with Dynamic Client Registration and PKCE. There are two URLs:

  • Browse (no auth): https://pikasim.com/mcp — search, coverage, pricing. Connect with no key.
  • Purchase (OAuth): https://pikasim.com/mcp/wallet — connect this to buy. Clients that speak MCP OAuth (Claude and ChatGPT connectors) detect the OAuth requirement automatically and send you to a PikaSim consent page, where you paste your wallet code (the 32-character code from your agent wallet) to authorize. Your client then holds a revocable access token bound to that wallet.

The wallet code and your ak_live_ key never leave PikaSim, and no account, email, or KYC is involved. This is the cleanest way to connect for purchasing: no secret pasted into a URL, and you can disconnect at any time from your MCP client.

Authenticated tools (manual key)

For CLI clients or power users who prefer to manage the key directly, the purchasing/management tools also accept a PikaSim agent wallet API key (ak_live_). Pass it in one of these ways:

// Option 1: Authorization header (recommended for CLI configs)
Authorization: Bearer ak_live_your_api_key_here

// Option 2: X-API-Key header
X-API-Key: ak_live_your_api_key_here

// Option 3: key in the URL path (for connector UIs that only take a URL,
//            e.g. Claude Desktop, ChatGPT)
https://pikasim.com/mcp/ak_live_your_api_key_here

Treat the key URL like a password: anyone with it can spend the wallet balance. It is kept in your client's connector config and is never written to our server logs.

Getting an API key

  1. Create an agent wallet at pikasim.com/agent-wallet (accept the terms of service, no account or KYC)
  2. Fund it with crypto (minimum $10) via the dashboard or the create_deposit tool
  3. Generate your ak_live_ API key from the dashboard

Agent-wallet keys start with ak_live_. Keep your key secret; if compromised, rotate it from the dashboard. Existing reseller pk_live_ keys also work here and bill at the reseller's wholesale pricing.

No key? No problem. If an authenticated tool is called without an API key, it returns a friendly message directing to signup instead of an error. Your AI agent can use the public tools freely and only prompt for a key when the user wants to purchase.

Examples

Test with cURL

Initialize the MCP connection:

curl -X POST https://pikasim.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": {
        "name": "test-client",
        "version": "1.0"
      }
    }
  }'

List available tools

curl -X POST https://pikasim.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list",
    "params": {}
  }'

Search packages for Japan

curl -X POST https://pikasim.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "search_esim_packages",
      "arguments": { "country": "JP" }
    }
  }'

Check balance (authenticated)

curl -X POST https://pikasim.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer ak_live_your_api_key_here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 4,
    "method": "tools/call",
    "params": {
      "name": "check_balance",
      "arguments": {}
    }
  }'

Purchase an eSIM (authenticated)

curl -X POST https://pikasim.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer ak_live_your_api_key_here" \
  -d '{
    "jsonrpc": "2.0",
    "id": 5,
    "method": "tools/call",
    "params": {
      "name": "purchase_esim",
      "arguments": { "packageCode": "CKH123" }
    }
  }'

Python MCP Client

from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

async def main():
    async with streamablehttp_client("https://pikasim.com/mcp") as (
        read_stream, write_stream, _
    ):
        async with ClientSession(read_stream, write_stream) as session:
            await session.initialize()

            # List tools
            tools = await session.list_tools()
            print(f"Available: {[t.name for t in tools.tools]}")

            # Search packages
            result = await session.call_tool(
                "search_esim_packages",
                arguments={"country": "JP"}
            )
            print(result.content[0].text)

import asyncio
asyncio.run(main())

Node.js MCP Client

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport }
  from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://pikasim.com/mcp")
);

const client = new Client(
  { name: "my-agent", version: "1.0" },
  { capabilities: {} }
);

await client.connect(transport);

// Search for Japan eSIMs
const result = await client.callTool(
  "search_esim_packages",
  { country: "JP" }
);
console.log(result.content[0].text);

await client.close();

Rate Limits

ScopeLimitWindow
MCP endpoint (per IP) 60 requests 1 minute
Reseller API (per key) 60 requests (default) 1 minute
Order limit (per key) 100 orders (default) 1 day (UTC)

The MCP endpoint rate limit applies to all requests (including initialize and tools/list). Authenticated tool calls additionally count against your wallet rate limit.

Rate limit headers are included in responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Error Handling

Errors follow standard JSON-RPC error codes:

CodeMeaningWhen
-32600 Invalid Request Malformed JSON-RPC message
-32601 Method Not Found Unknown method name
-32602 Invalid Params Missing or invalid tool arguments
-32603 Internal Error Server-side error
-32000 Server Error Rate limited, method not allowed, etc.

Tool-level errors (e.g., invalid package code, insufficient balance) are returned as successful tool responses with descriptive error text, not as JSON-RPC errors. This lets the AI agent understand and explain the issue to the user.

FAQ

Can my AI agent purchase eSIMs automatically?

Yes, with an agent-wallet API key. The purchase_esim and purchase_phone_plan tools deduct from your prepaid wallet, so purchases are instant. Fund your wallet first with create_deposit or via the agent wallet dashboard.

Is there a sandbox or test mode?

Not currently. All purchases use real money. Use check_balance before purchasing and start with small packages to verify your integration.

What countries are covered?

190+ countries. Use check_country_coverage with any ISO country code to see what's available. Global packages cover 120+ countries in a single plan.

Can the AI agent install the eSIM on my device?

No. The AI agent can purchase and retrieve the QR code / activation details, but the user must scan the QR code or enter the activation details on their device. Purchase responses include all necessary installation info.

What's the difference between this and the REST API?

The REST API is read-only (browsing packages). The MCP server adds tool-call semantics that AI agents understand natively, plus authenticated tools for purchasing and account management. Use the REST API for traditional integrations; use MCP for AI agent integrations.

Does the endpoint support SSE / long-lived sessions?

No. This is a stateless endpoint. Each POST creates a fresh server instance, processes the request, and responds. No session IDs, no SSE reconnection. This is the simplest and most reliable setup for remote MCP servers.

My agent gets "Not Acceptable" errors

You must include both content types in the Accept header: Accept: application/json, text/event-stream. This is required by the MCP Streamable HTTP transport specification. Most MCP client libraries handle this automatically.

Support

Questions about the MCP integration? Submit a support ticket or chat with us at pikasim.com/help.

Related Resources

Help