Fiat → USDC Onramp MCP Server
Pricing
Pay per usage
Fiat → USDC Onramp MCP Server
Turn cash in a bank app into USDC on Base via the ZKP2P peer-to-peer onramp — no exchange account, no KYC queue, no custodian holding funds in between.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Jan Turoň
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Fiat → USDC Onramp MCP Server is a hosted MCP server that lets any AI agent convert fiat money (EUR, USD, GBP) into USDC on Base using the ZKP2P peer-to-peer onramp — no exchange account, no KYC queue, and no custodian ever holding the funds. Think of it as a fiat-to-crypto onramp API for AI agents: your agent pays through everyday apps like Wise, Venmo, or Revolut, and USDC lands directly in its own wallet.
It's also one of the cheapest ways to buy USDC: peer-to-peer liquidity means the all-in cost is typically around 1% (competitive LP spread plus a flat 0.35% service fee) — compared to roughly 4–6% on card-based onramps like Coinbase Onramp or MoonPay, with none of their multi-day bank-transfer holds.
What does Fiat → USDC Onramp MCP Server do?
It connects any MCP-compatible client — Claude, Cursor, an awal smart-wallet agent, or your own agent framework — to the ZKP2P onramp network and walks it through a complete fiat → USDC conversion:
- 💱 Quote — find the best live rate from real liquidity providers
- 🔒 Lock — build the unsigned transaction that reserves the deal on-chain
- 💸 Pay — your agent pays the counterparty in their payment app and captures encrypted payment evidence client-side
- ✅ Settle — build the final unsigned transaction that releases USDC to the recipient wallet
The server is a stateless calldata factory: it never holds a private key, never touches your fiat, and never custodies USDC. Every state-changing step returns unsigned calldata that your agent's own wallet signs and broadcasts.
Want to try the same onramp yourself first, without an agent? The protocol also has a human-friendly web app — app.peer.xyz — where you can do a fiat → USDC conversion in the browser before wiring it into your agent.
Why use this onramp for AI agents?
- 🤖 Built for agents, not humans clicking buttons. Every step is one structured MCP tool call, so it drops straight into any agent's tool loop.
- 🏦 Works with money apps people already have. Wise, Venmo, Revolut — no new exchange account, no verification queue.
- 🔐 Non-custodial by design. The server only prepares transactions and relays proofs; your agent's wallet signs everything itself.
- 💰 Very cheap. ZKP2P has no fixed protocol fee — liquidity providers compete on rate, with typical spreads of 0.5–1%, a fraction of the 4–6% card-funded onramps charge, with no multi-day holds.
- ⚡ Serverless and always ready. Runs on Apify Standby infrastructure — a stable HTTPS endpoint that scales with your traffic and bills only for what you use.
- 📈 Monetizable. If you fork or self-host it, bake in your own ZKP2P referrer address and earn a cut of every onramp your deployment facilitates.
What can you build with it?
- Agent wallet top-ups — fund an AI agent's on-chain wallet from a bank account so it can pay for APIs, data, or other agents in USDC (x402, agentic commerce).
- Automated treasury management — keep a fleet of on-chain bots topped up without a human in the loop.
- Fiat last-mile for agentic commerce — any flow that ends with "convert fiat to stablecoins" without a person sitting in a browser tab.
What MCP tools does this Actor provide?
| Tool | What it does |
|---|---|
onramp_quote | Get the best available fiat → USDC rate for a given amount and payment platform (read-only) |
build_signal_intent | Build the unsigned transaction that locks a quote in with a liquidity provider |
decode_intent_hash | Extract the intent confirmation ID from a mined transaction receipt |
build_fulfill_intent | Verify the fiat payment via ZKP2P's secure-enclave (TEE) attestation service and build the final unsigned transaction that releases USDC to the recipient |
How to connect an AI agent to the MCP server
The Actor runs in Standby mode, so it's a plain HTTPS endpoint. You authenticate with your Apify API token (find it in Apify Console → Settings → API & Integrations).
Endpoint: POST https://jan-turon--zkp2p-onramp-mcp.apify.actor/mcp (MCP Streamable HTTP transport)
Auth: Authorization: Bearer <YOUR_APIFY_TOKEN>
Claude Code
claude mcp add zkp2p-onramp \--transport http https://jan-turon--zkp2p-onramp-mcp.apify.actor/mcp \--header "Authorization: Bearer <YOUR_APIFY_TOKEN>"
Claude Desktop, Cursor, or any MCP client
{"mcpServers": {"zkp2p-onramp": {"url": "https://jan-turon--zkp2p-onramp-mcp.apify.actor/mcp","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
Command line (mcpc)
npm install -g @apify/mcpcmcpc connect https://jan-turon--zkp2p-onramp-mcp.apify.actor/mcp \--header "Authorization: Bearer <YOUR_APIFY_TOKEN>" --session zkp2pmcpc tools call onramp_quote --session zkp2p \--arg paymentPlatforms='["wise"]' --arg fiatCurrency=EUR \--arg amount=500000000 --arg recipient=0xYourWallet
Raw HTTP (curl)
curl -X POST "https://jan-turon--zkp2p-onramp-mcp.apify.actor/mcp" \-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-H "Accept: application/json, text/event-stream" \-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
A plain GET / (no MCP handshake) returns a JSON health/discovery document listing the available tools.
How does the onramp flow work end to end?
- Call
onramp_quote— the server queries ZKP2P liquidity providers and returns the best rate plus the deposit details needed for the next step. - Call
build_signal_intent— the server returns unsigned{chainId, to, data, value}calldata; your agent's wallet signs and broadcasts it, locking the provider's USDC in escrow. The response also includes apaymentobject with the payee's handle, the exact fiat amount to send, and a payment deep link where the platform supports one (e.g.revolut.me/<payee>,venmo.com/u/<payee>). - Call
decode_intent_hashwith the mined receipt's logs to get theintentHash. - Your agent pays the counterparty using those payment instructions and captures payment evidence client-side (session material encrypted end-to-end to ZKP2P's attestation enclave — e.g. via the Peer extension tooling).
- Call
build_fulfill_intent— ZKP2P's TEE attestation service verifies the payment inside a secure hardware enclave, and the server returns the final unsigned calldata; once signed and mined, USDC is released from escrow to the recipient wallet.
At no point does the server see a private key, hold fiat, or custody USDC.
Example output
build_signal_intent and build_fulfill_intent return ready-to-sign transaction requests — and build_signal_intent adds payment instructions your agent can act on directly:
{"chainId": 8453,"to": "0x888888359E981B5225CA48fbCdCeff702FC3b888","data": "0xa3b2fc84…","value": "0","payment": {"platform": "revolut","payee": "lp-revtag","payUrl": "https://revolut.me/lp-revtag","fiatAmount": "88.30","fiatCurrency": "EUR","instructions": "Send exactly 88.30 EUR to \"lp-revtag\" via revolut (payment page: https://revolut.me/lp-revtag). …"}}
onramp_quote returns the best liquidity-provider quote including the conversion rate, deposit ID, payment platform details, and payee information your agent needs for the payment step.
Try it without an MCP client
Standby mode is the primary interface, but you can also just press Start in Apify Console: a regular run performs a one-off, read-only demo — it fetches the best onramp quotes for the input you set (platforms, fiat currency, USDC amount) and stores them in the run's dataset, complete with the payment instructions object. No transaction is built or sent, so it's a safe way to check live rates and see the output shape before wiring up an agent.
How much does it cost?
You pay only for the Apify compute the Actor uses while serving your requests — it runs in Standby mode, so there's no idle server to rent and no subscription for the Actor itself. Tool calls are lightweight (quote lookups and calldata encoding), so a full onramp flow costs a fraction of a cent in platform usage. Apify's free plan includes enough credit to run it.
On the conversion itself, ZKP2P charges no fixed protocol fee. Liquidity providers set their own competitive rates — typical spreads are 0.5–1% — and a flat 0.35% service fee is included in every quote, so what you see is what you pay. That puts the all-in cost at roughly 1%, usually far below card-based onramps (~4–6% all-in), and USDC settles as soon as the fulfill transaction confirms, with no multi-day holds.
| This MCP server (ZKP2P) | Card onramps (Coinbase, MoonPay) | |
|---|---|---|
| Typical all-in fee | ~1% (0.5–1% spread + 0.35% service fee) | ~4–6% |
| Settlement | As soon as the fulfill tx confirms | Instant (card) or 7–10 day hold (ACH) |
| Account / KYC | None | Exchange account + KYC |
Is it safe? The security model
- 🔑 Never holds a private key, fiat balance, or USDC balance. Every state-changing step returns unsigned calldata — your agent's own wallet decides whether to sign it.
- 🧾 Payment evidence is captured on the client and end-to-end encrypted to ZKP2P's attestation enclave (TEE) — the server relays it but can never read it.
- 🌐 Stateless by design. Each request spins up a fresh MCP server instance; nothing about your flow is kept in server memory between calls.
- 🔍 Open flow. Contract addresses are resolved from the current ZKP2P deployment via the official
@zkp2p/sdk, and every returned transaction shows its target — your agent can verify it before signing.
FAQ
Which payment apps and currencies are supported?
The full ZKP2P platform set: Wise, Venmo, Revolut, Cash App, Mercado Pago, Zelle, PayPal, Monzo, Chime, Luxon, and N26 — Wise, Venmo, and Revolut are the flagship platforms, covering EUR, USD, and GBP flows. Pass the platforms you want in onramp_quote and the server returns the best available match.
Does my agent need a crypto exchange account or KYC?
No. ZKP2P is peer-to-peer: your agent pays a liquidity provider directly through a regular payment app and proves the payment cryptographically. There's no exchange account, no KYC queue, and no withdrawal hold.
What is ZKP2P?
ZKP2P is a trust-minimized peer-to-peer onramp protocol. Liquidity providers escrow USDC on-chain; buyers pay them in fiat through everyday payment apps, and the payment is cryptographically attested inside a secure hardware enclave (TEE), which releases the escrowed USDC. You can try it manually in the Peer web app — the same flow this MCP server automates for agents.
How is this different from Coinbase Onramp or awal fund?
awal fund uses Coinbase Onramp: card purchases carry a ~3.99% card fee plus a 0.5–2% spread (roughly 4–6% all-in), and ACH purchases are held for 7–10 days before funds can leave Coinbase. Through this server you pay the ZKP2P LP spread (typically 0.5–1%) plus a flat 0.35% service fee — around 1% all-in — and USDC is released as soon as the fulfill step confirms on-chain.
Can I run it against testnet first?
The server targets Base mainnet contracts. Before moving real funds, do a small end-to-end run (e.g. a minimal EUR amount) and have your agent verify the decoded calldata targets the documented Orchestrator address.
Something's not working — where do I report it?
Open an issue on the Issues tab of this Actor in Apify Console. Include the tool name, the (redacted) input you sent, and the error returned.
Disclaimer
This Actor prepares transactions for a decentralized protocol; it does not provide financial services, hold customer funds, or execute trades on anyone's behalf. Cryptocurrency conversions carry market and counterparty risk — verify quotes and calldata before signing, comply with the payment platforms' terms of service, and make sure peer-to-peer crypto purchases are legal in your jurisdiction.


