Topup

app.iomarketsPublished by iomarkets.appOfficial publisherv0.2.10Updated Oct 29, 2026

Travel eSIMs and mobile top-ups paid in USDC via x402.

VerifiedStreamable HTTPWeb executableLocation & LifestyleFinanceBusiness & Commerce

Overview

AI-generated overview

Lets an assistant look up phone numbers, price and buy mobile top-ups or travel eSIMs, and pay in USDC over x402 from the user's own Algorand wallet.

What you can do
  • Look up a phone number's country and detected operator, and list available top-up offers
  • Browse offers for mobile top-ups, travel eSIMs, prepaid bills and international payment corridors, and get indicative FX rates
  • Lock a price with a 10-minute quote, or quote a batch of eSIMs as individual claim links
  • Create a checkout link a person pays from their own Pera wallet, or get the x402 payment challenge to pay from a wallet
  • Check order status, inspect a paid voucher batch, and verify ed25519-signed receipts against an Algorand indexer
  • Read the public delivery ledger of totals, volume and recent orders
When to use it
Useful when someone wants to top up a prepaid mobile number or buy a travel eSIM and is willing to pay in USDC on Algorand, including group batches of eSIMs handed out as claim links. Also handy for checking an order, verifying a receipt, or reading the service's public delivery ledger.
Requirements
A remote streamable HTTP endpoint; no package or local runtime. No authentication, environment variables or headers are declared. Buying requires an Algorand wallet holding USDC (for example Pera) to sign the x402 payment, or a human to pay through a generated checkout link. Network access to the service and an Algorand indexer for receipt checks.
Before you install
Purchases spend real USDC; the server holds no wallet but returns a payTo address and amount for the user to pay, so confirm price and recipient before paying. Quotes expire after 10 minutes and listed prices are indicative until quoted. Voucher batch links are bearer handles: whoever opens a link first gets that eSIM, so share each privately and keep the batchId. Phone lookups guess the operator from the number range and can be wrong for MVNOs. Receipt verification sends order IDs and txids…

Installation

In SourceWeft

  1. Open Topup in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/app.iomarkets%2Ftopup/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "topup": {
      "type": "http",
      "url": "https://iomarkets.app/mcp"
    }
  }
}

Tools

11

lookup_phone

Identify the country and mobile operator of a phone number and list the top-up offers available for it. Free. The operator is DETECTED from the number range and is a guess: MVNOs (Tesco Mobile, Giff Gaff, Lebara, Voxi, Sky…) resolve to the host network they ride on. Read the detected brand back to the human and have them confirm it before buying, and use `other_brands` to correct it — a voucher bought for the wrong network delivers successfully and cannot be redeemed or refunded.

Parametersphonerequired

list_offers

Browse purchasable offers: mobile top-ups, travel eSIMs, prepaid bills, or international payment corridors (bank / mobile money / UPI) for a country. Free. Prices shown are indicative; the quote fixes them.

Parameterstyperequiredbrandlimitoffsetcountry

quote

Lock a price (10 minutes) for one purchase. Returns quoteId, exact USDC price and what will be delivered. Free. ALWAYS show the human the price and the recipient before buying.

ParametersreftyperequirediccidpayerphoneamountfieldssenderofferIdrequired

buy

Get the x402 payment challenge for a quote. This hosted server holds no wallet, so it does NOT spend your money: it returns the exact amount, asset, payTo address and facilitator for you to pay from your own Algorand wallet, then you POST the quote again with your payment signature. Requires prior human confirmation of the quote. Works the same for a quote from quote_vouchers; the paid response is the batch (batchId and claim links) rather than an order.

ParametersquoteIdrequired

quote_vouchers

Lock a price (10 minutes) for a BATCH of travel eSIMs paid in one payment: N claim links, one per person, for a group trip, a conference delegation or event giveaways. Each eSIM is bought when its link is claimed (the person opens it on their phone and installs the QR), and links nobody claims within 30 days are refunded to the paying wallet. Free. Pay the returned quoteId with `buy`, or send the human to this service's /pay/?mode=vouchers page to buy it with their own wallet. Limits: 2–50 eSIMs, each within the per-order limit, the batch within its own limit ($100 by default). ALWAYS show the human the total and the count before buying.

ParametersnotecountrequiredpayerofferIdrequired

voucher_batch

A paid voucher batch: every claim link, which have been claimed and delivered, the expiry, and any refund for unclaimed links. The batchId is the only handle on the links — keep it, and hand each person their own link privately (whoever opens a link first gets that eSIM).

ParametersbatchIdrequired

order_status

Check an order. Poll every ~3 s until `terminal` is true: delivered (confirmation + signed receipt), refunded (refund txid + signed receipt) or refund_failed.

ParametersorderIdrequired

verify_receipt

Verify an ed25519-signed receipt: the signature, and — unless you pass onChain:false — both txids against an Algorand indexer. Give it an orderId to check one of this service's own orders, or a receipt object to check ANY receipt in this format, including one issued by another server.

ParametersonChainorderIdreceipt

fx

Indicative USDC → local-currency rate at our sale price, with an estimate for an amount. The quote is the binding price.

Parameterstorequiredtypeamount

ledger

Public delivery ledger: totals, delivered-or-refunded %, volume, countries, recent orders.

Takes no parameters.

Version history

4
  1. v0.2.10LatestOct 29, 2026
  2. v0.2.8Oct 1, 2026
  3. v0.2.7Sep 16, 2026
  4. v0.2.5Sep 16, 2026

Score

72% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts

    Publish an icon in the registry entry.

  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.

Other Iomarkets integrations