Discover and buy travel eSIMs with Base USDC
数据分析
IoMarkets Topup
试用Buy real-world things for your principal with USDC on Algorand via x402 — travel eSIMs for 197 destinations, and mobile airtime and data top-ups in 150+ countries delivered to any phone number. Use when the user is travelling and needs data abroad, asks to recharge or top up a phone, buys mobile data, or checks a USDC→local FX rate. No account, no card; signed proof of delivery; automatic on-chain refunds. Prepaid bills and international payouts are built but supplier-gated — GET /v1/catalog is the live answer.
它能做什么
Buy real-world things for your principal with USDC on Algorand via x402 — travel eSIMs for 197 destinations, and mobile airtime and data top-ups in 150+ countries delivered to any phone number. Use when the user is travelling and needs data abroad, asks to recharge or top up a phone, buys mobile data, or checks a USDC→local FX rate. No account, no card; signed proof of delivery; automatic on-chain refunds. Prepaid bills and international payouts are built but supplier-gated — GET /v1/catalog is the live answer.
技能文档
IoMarkets Topup
Real-world checkout for agents. Four HTTP calls, or the iomarkets-topup MCP server (pnpm mcp in the repo).
What is live
Mobile airtime and data top-ups, in 150+ countries. That is the whole product today.
type: "esim", type: "bill" and type: "payout" (international payments) are implemented end to end —
same quote, same settlement, same signed receipt — but each needs a supplier that is not currently wired.
Do not offer them to a human on the strength of this file. GET /v1/catalog?type= is the live
answer and returns an empty list for anything unavailable; /agent.md names the live set in its first
paragraph. A quote for an unavailable type is refused up front rather than accepted and then failed.
When to use
- "Top up / recharge +91…, +234…, +995… with N (local currency)"
- "Buy mobile data for this number"
- "What's the USDC→INR rate?"
- The agent itself needs connectivity it can pay for.
Procedure
- Discover —
GET https://iomarkets.app/v1/lookup?phone=(operator + offers) orGET https://iomarkets.app/v1/catalog?type=esim&country=IN. - Quote —
POST https://iomarkets.app/v1/quotewith{type, offerId, recipient:{phone}, amount}(amount in the recipient's currency for range offers; omit for fixed bundles). You getquoteId,price_usdc,delivers,expires_at. A quote can be refused with 503 when the supplier float cannot cover it; the message says how much is fillable, so re-quote smaller rather than retrying the same amount.GET /v1/limitspublishesfillable_now_usdcif you want to size a basket first. - Confirm with the human — state exactly: what is delivered, to whom (number), and the USDC price. Never skip this for a purchase.
- Pay —
POST https://iomarkets.app/v1/orderswith{ "quoteId" }using your x402 client (Algorand USDC,exactscheme). First response is 402 with the exact amount; retry with the payment signature. 202 → order. - Poll —
GET https://iomarkets.app/v1/orders/every 3 s untilterminal: true. Reportstatus, theconfirmation(operator reference / eSIM LPA + install steps) and thesettlement_url. - If refunded — tell the human the money is back at their address (
refund_url) and offer to retry with another offer.
Rules
- One quote = one payment. Quotes expire in 10 minutes; re-quote instead of retrying an expired one.
- Respect the wallet budget you were given. Server-side caps are $50/order and $200/payer/day — read
GET /v1/limitsrather than trusting these numbers, which change without this file changing. - Confirm the operator with the human before buying.
/v1/lookupdetects it from the number range and is reliably wrong on MVNOs (Tesco Mobile, Giff Gaff, Lebara, Voxi, Sky resolve to the host network). A voucher bought for the wrong network delivers successfully, verifies, and cannot be redeemed or refunded. Useother_brandsto correct it. - Top-ups are irreversible once delivered: read the number back to the human verbatim before
buy. - Keep the receipt (
order.receipt) — it is the proof of delivery, verifiable withGET /v1/pubkey. - Do not retry a
buyon a timeout without first checkingorder_status; the settlement may have succeeded.
Install as MCP (Claude Code / Codex / Cursor / Hermes / OpenClaw)
Hosted — nothing to install, no key given to anyone:
{ "mcpServers": { "iomarkets-topup": { "url": "https://iomarkets.app/mcp" } } }
This server holds no wallet, so buy returns the x402 payment challenge (exact amount, asset, payTo,
facilitator) for you to pay from your own Algorand wallet, then you re-POST the quote with your payment
signature. Everything else — lookup, catalog, quote, order status, receipt verification, FX, ledger — works as-is.
Local — the server pays for you, under a budget:
{ "mcpServers": { "iomarkets-topup": { "command": "pnpm", "args": ["--dir", "/path/to/iomarkets-app", "mcp"],
"env": { "API_URL": "https://iomarkets.app", "AGENT_MNEMONIC_FILE": "/home/you/.secrets/agent.mnemonic", "AGENT_BUDGET_USD": "20" } } } }
Here buy signs and settles itself from the agent wallet, capped by AGENT_BUDGET_USD per session and
AGENT_MAX_ORDER_USD per order. Keep the mnemonic in a file (mode 0400) — never inline in the config.
相关技能
Buy travel eSIM data plans, gift cards, and mobile airtime with crypto (USDC, USDT, BTC, ETH, SOL and 17+ more) through AgentRoam. Use when a user wants an e...
Provides pay-per-call crypto trading signals with entry, stop-loss and take-profit via the x402 standard (USDC on Ethereum). Live DRT/ICT signals for agents and traders.
Autonomously monetize your services with x402 payment collection. Set up an x402 server, define paid endpoints, and accept programmatic payments in stablecoins. Become part of the agent-to-agent economy!
Use this skill when an HTTP request returns 402 Payment Required, when the user wants to call a paid API or x402-protected resource, when they want to discover x402 services, or when they need to fund a wallet across chains.
Track and cap x402 spend across providers — per-endpoint hard_cap/soft_cap, pre-authorized override budgets, cumulative spend tracking, monthly ceilings. Makes x402 the client production-safe by preventing overspend and aborting costly calls before they happen.