{"protocolVersion":"0.3.0","name":"IoMarkets Topup","description":"Real-world checkout for AI agents: a technology demonstration, tested on real data with real money in a limited pilot, and not offered as a commercial service until the required licences, penetration testing and security audits are complete. Buys physical-world goods and services for an agent's principal — currently mobile airtime and data top-ups and travel eSIMs — paid per order in USDC on Algorand (mainnet) over x402. No account, no API key, no card. Money settles on-chain before anything is bought; a failed delivery is refunded to the paying address on-chain automatically; every terminal order carries an ed25519-signed receipt naming both transaction ids, and the full order ledger is public.","provider":{"organization":"IoMarkets","url":"https://iomarkets.app"},"version":"0.2.8","documentationUrl":"https://iomarkets.app/agent.md","iconUrl":"https://iomarkets.app/brand/logo.webp","capabilities":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false,"extensions":[{"uri":"https://x402.org","description":"Ordering is paid per request over x402: POST /v1/orders answers 402 with the exact USDC amount from a quote, and the order is created only once the facilitator settles it on-chain.","required":true,"params":{"network":"mainnet","asset":"USDC","chain":"algorand","payTo":"FVEJDCQFCHVG4Y6M2JVAD4L447E2R2OHJKT5APXV7AZI7XXOQU6RUVSKCA","paidRoutes":["https://iomarkets.app/v1/orders"],"pricing":"per-order, quoted exactly and locked for 10 minutes","limits":"https://iomarkets.app/v1/limits","fundingGuide":"https://iomarkets.app/fund"}}]},"securitySchemes":{},"security":[],"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"buy-airtime","name":"Top up a mobile number","description":"Send mobile airtime or data to a phone number. GET /v1/lookup?phone=+919876543210 detects the country and operator and lists offers; the detected operator is a guess for MVNOs and must be confirmed with the human before buying. Paid per order in USDC on Algorand over x402.","tags":["airtime","topup","mobile","real-world","x402","algorand"],"examples":["Top up +2348012345678 with 1000 naira of airtime","Send my mother in Manila 300 pesos of mobile data"]},{"id":"buy-esim","name":"Buy a travel eSIM","description":"Buy a travel data eSIM and receive the activation QR / LPA string. Paid per order in USDC on Algorand over x402 — no account, no API key, no card. Browse with GET /v1/catalog?type=esim&country=JP, lock a price with POST /v1/quote, pay POST /v1/orders.","tags":["esim","travel","connectivity","real-world","x402","algorand"],"examples":["Buy a 10 GB eSIM for my trip to Japan next week","What data packages can I get for India, under $15?"]},{"id":"create-pay-link","name":"Create a checkout link for a human","description":"For an agent that holds no wallet, or when the principal should approve the spend themselves: POST https://iomarkets.app/v1/links returns a URL the human opens, where they see the exact price and sign it in their own Pera wallet. The key never leaves their wallet and the agent never holds one. The deliverable (an eSIM's activation QR, a top-up confirmation) appears on the same page.","tags":["checkout","human-in-the-loop","pay-link","wallet","algorand"],"examples":["I have no wallet — give my user a link to pay for this eSIM themselves","Send my family a 'top up my phone' link they can pay"]},{"id":"verify-receipt","name":"Verify a delivery receipt","description":"Verify an ed25519-signed proof-of-delivery receipt: the signature, which server signed it, and both the settlement and refund transactions against an Algorand indexer. Free, unauthenticated, and it verifies receipts from ANY server that adopts the format — not only this one. POST https://iomarkets.app/v1/verify with the receipt as the body (add ?online=0 to skip the chain lookup). Format: https://iomarkets.app/receipts.md","tags":["receipts","verification","proof-of-delivery","ed25519","algorand"],"examples":["Check that this receipt is genuine and both transactions are on chain","Did the refund for this failed order actually settle?"]}]}