app. iomarkets/ topup
by iomarkets.app · remote · no sign-in to list tools · v0.2.8 · published by app.iomarkets
Travel eSIMs and mobile top-ups paid in USDC via x402. A technology demonstration, limited pilot.
9 tools: 1 do something that can't be undone, 4 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things4Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http topup https://iomarkets.app/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnverify_receipt
The description contains "another server", wording about other tools or servers.
What this check looks forMatched text
description: "...in this format, including one issued by another server."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
9 tools
Can't be undone 1Claude Code: ask
fxIndicative USDC → local-currency rate at our sale price, with an estimate for an amount.No findings
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Indicative USDC → local-currency rate at our sale price, with an estimate for an amount. The quote is the binding price.
Changes things 4Claude Code: ask
create_pay_linkCreate a checkout link a HUMAN pays from their own Algorand wallet (Pera).No findings
Why it is in this group
- The name "create_pay_link" says "create": a word for a change.
Description, as the server wrote it Create a checkout link a HUMAN pays from their own Algorand wallet (Pera). Use this when you have no wallet, or when the person should approve and pay themselves: they open the link, see the exact price, sign in their wallet, and the result (the eSIM QR code, or the top-up confirmation) appears on the page. You never hold a key. A top-up link can be paid by anyone — send it to family as 'top up my phone'. An eSIM link delivers to whoever pays. Free. Add `ref` (your Algorand address) to earn a share of margin on each delivered order.
ledgerPublic delivery ledger: totals, delivered-or-refunded %, volume, countries, recent orders.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Public delivery ledger: totals, delivered-or-refunded %, volume, countries, recent orders.
quoteLock a price (10 minutes) for one purchase.No findings
Why it is in this group
- The description's first verb is "lock": a word for a change.
Description, as the server wrote it 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.
verify_receiptVerify an ed25519-signed receipt: the signature, and — unless you pass onChain:false — both txids against an Algorand indexer.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Warn
The description contains "another server", wording about other tools or servers.
What this check looks forMatched text
description: "...in this format, including one issued by another server."
Description, as the server wrote it 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.
Only reads 4Claude Code: allow
buyGet the x402 payment challenge for a quote.No findings
Why it is in this group
- The description's first verb is "get": a word for reading.
Description, as the server wrote it 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.
list_offersBrowse purchasable offers: mobile top-ups, travel eSIMs, prepaid bills, or international payment corridors (bank / mobile money / UPI) for a country.No findings
Why it is in this group
- The name "list_offers" says "list": a word for reading.
Description, as the server wrote it 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.
lookup_phoneIdentify the country and mobile operator of a phone number and list the top-up offers available for it.No findings
Why it is in this group
- The name "lookup_phone" says "lookup": a word for reading.
Description, as the server wrote it 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.
order_statusCheck an order.No findings
Why it is in this group
- The name "order_status" says "status": a word for reading.
Description, as the server wrote it Check an order. Poll every ~3 s until `terminal` is true: delivered (confirmation + signed receipt), refunded (refund txid + signed receipt) or refund_failed.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.2.8. Values in angle brackets are yours to fill in.
claude mcp add --transport http topup https://iomarkets.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__topup__lookup_phone",
"mcp__topup__list_offers",
"mcp__topup__buy",
"mcp__topup__order_status"
],
"ask": [
"mcp__topup__quote",
"mcp__topup__create_pay_link",
"mcp__topup__verify_receipt",
"mcp__topup__fx",
"mcp__topup__ledger"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as topup. Review it before you use it.