x402 Universal Payer
io.github.nirholasPublished by GitHub account nirholasv1.0.2Updated Oct 24, 2026
Pay any x402 endpoint on the open web: auto-paying bridge with Bazaar discovery and spend caps.
Overview
Lets an assistant call x402-paid web endpoints, automatically signing and settling USDC payments on EVM chains or Solana within spending caps.
- What you can do
- The bridge exposes call_paid_endpoint, which hits any URL, pays automatically if the server answers 402 Payment Required, and returns the response plus a settlement receipt. It also discovers services listed on the x402 Bazaar and registers one dynamic tool per resource, with list_bazaar_tools and refresh_bazaar to inspect and reload that list. Payments use EVM exact, EVM batch-settlement, or Solana exact schemes, and batch channel state is persisted across restarts.
- When to use it
- Use it when an assistant needs to consume paid APIs or data services that charge per request over x402, and you want automatic payment with per-call and session limits. It is not useful for free endpoints or for tasks that do not involve spending.
- Requirements
- Runs locally over stdio via npx @three-ws/mcp-bridge, so Node.js is needed. At least one of MCP_BRIDGE_EVM_PRIVATE_KEY or MCP_BRIDGE_SVM_PRIVATE_KEY is required, funded with USDC. Optional variables set caps, allowlists, discovery limits, RPC overrides, and channel storage. Network access to the target endpoints and the Bazaar is required.
Installation
In SourceWeft
- Open x402 Universal Payer in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@three-ws/mcp-bridge
One MCP server that can pay any x402-paid endpoint on the open web — the universal x402 payer for AI agents.
[npm] [downloads] [license] [node] [MCP Registry] [three.ws]
Quick start · Security · Tools · Environment · three.ws
A Model Context Protocol server that can pay any x402-paid endpoint on the open web. Point your agent at a URL that answers
402 Payment Required; the bridge signs, pays, retries, and hands back the response plus the settlement receipt — EVM exact, EVM batch-settlement, and Solana exact, all behind hard spending caps. It also pre-loads a tool per service discovered on the Coinbase x402 Bazaar, so the entire paid-API economy shows up in your tool list.
Quick start
Claude Code:
Use -e MCP_BRIDGE_EVM_PRIVATE_KEY=0x... instead (or as well) to pay on Base and other EVM chains. At least one key is required.
Claude Desktop (claude_desktop_config.json) or Cursor (~/.cursor/mcp.json):
Restart the client and ask for something like "pay $0.01 on Base for a weather report" — the model picks a matching Bazaar tool (or call_paid_endpoint), and the bridge auto-pays via x402.
Security and spending controls
This server holds private keys and spends real USDC. Read this section before configuring it.
- Use a dedicated, low-balance wallet.
MCP_BRIDGE_EVM_PRIVATE_KEY/MCP_BRIDGE_SVM_PRIVATE_KEYshould never be a main wallet. Fund it with only what you are willing to let an agent spend. - Per-call cap. Any payment above
MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC(default100000= $0.10 USDC) is refused before a payload is signed, with an error naming the network, asset, and cap. - Session ceiling. Cumulative spend per process is capped by
MCP_BRIDGE_MAX_TOTAL_ATOMIC(default1000000= $1.00 USDC). This bounds the damage of a looping or prompt-injected agent: once the ceiling is reached, every further payment aborts until restart. The accumulator reserves atomically, so concurrent calls cannot jointly overshoot it. - Payee allowlist. Set
MCP_BRIDGE_ALLOWED_PAYTO(comma-separated addresses) to refuse payment to any recipient you have not explicitly trusted. - SSRF guard. Every outbound payable URL — whether supplied by the model or by a Bazaar listing — passes one chokepoint that enforces an https-only scheme policy, resolves the hostname, and rejects the request if any resolved address is private, loopback, link-local (including
169.254.169.254cloud metadata), CGNAT, ULA, or unspecified. Literal-IP hosts are checked directly; redirects are never followed (a public host cannot 3xx the bridge into internal infrastructure).http://is available only behind the explicitMCP_BRIDGE_ALLOW_HTTP=1dev opt-in. - Host allowlist. Set
MCP_BRIDGE_ALLOWED_HOSTS(comma-separated hostnames) for strict mode: only listed hosts can be paid at all. - Deposit caps. Batch-settlement channel deposits are bounded by
MCP_BRIDGE_MAX_DEPOSIT_ATOMIC(default $5.00) regardless of what a server requests. - Honest annotations. Every paying tool is annotated
readOnlyHint: false,idempotentHint: false,openWorldHint: true, so MCP hosts apply their strictest confirmation policy. Retrying a paid call is a new charge.
What it exposes
On startup the bridge registers:
Tools whose prices all exceed the per-call cap are filtered out at discovery time, so the model never sees a tool it cannot afford.
Tool annotations
Every tool carries MCP ToolAnnotations so hosts can apply the right confirmation policy:
call_paid_endpointand every dynamicpaid_*tool:readOnlyHint: false,destructiveHint: false,idempotentHint: false,openWorldHint: true. These spend real USDC — each call settles a payment (capped byMCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC), and retrying is a new charge. They never delete or overwrite caller state, hence not destructive.list_bazaar_tools:readOnlyHint: true,idempotentHint: true,openWorldHint: false. Pure in-process cache read; free, no network.refresh_bazaar:readOnlyHint: false,destructiveHint: false,idempotentHint: false,openWorldHint: true. Free (no payment), but it mutates the registered tool set from the live Bazaar feed, so repeat calls can differ.
Tool results that are plain objects are returned as both a JSON text block (backward compatible) and structuredContent for typed clients.
Payment schemes
Payment paths registered on the buyer client:
eip155:*→BatchSettlementEvmScheme(preferred when the server advertises it; voucher-based, no per-call gas)eip155:*→ExactEvmScheme(used when the server advertisesscheme: "exact")solana:*and the x402 v1 Solana networks (solana,solana-devnet,solana-testnet) →ExactSvmScheme/ExactSvmSchemeV1(USDC SPL transfer co-signed by the advertised fee payer), registered together byregisterExactSvmScheme(). v1 is the wire format most of the open x402 bazaar still speaks; the client always prefers v2 when a seller advertises both. The spending-cap hook reads eitheramount(v2) ormaxAmountRequired(v1) so both are capped the same way.
Batch-settlement channel state is persisted to ~/.x402-mcp-bridge/channels/client/ so client restarts do not re-deposit on the next call.
Environment
MCP_BRIDGE_* key vars also fall back to EVM_PRIVATE_KEY / SVM_PRIVATE_KEY if you already have those set.
Spending cap behavior
The pre-payment hook inspects the selected accepts entry and aborts payload creation if the amount exceeds the per-call cap, the payee is outside the allowlist, or the session ceiling would be crossed. The tool result then carries a clear error message naming the network, asset, and the limit that was hit — useful for the model to decide whether to ask you to raise it.
Inspecting without a client
The inspector connects over stdio and lists the static tools (call_paid_endpoint, list_bazaar_tools, refresh_bazaar) plus one dynamic tool per discovered Bazaar entry.
Programmatic use
Any Node module can consume an x402 endpoint through the same buyer client:
The same spending caps, SSRF guard, and channel-storage rules apply. Idle batch channels can be refunded out-of-band with the @x402 SDK's client.refund(resourceUrl, { amount }).
Tests
The hermetic suite generates throwaway keypairs in-process; no real keys or funds are ever involved.
License
All rights reserved. See LICENSE.
Source: mcp-bridge/README.md at commit 800052e
Tools
0Version history
1- v1.0.2LatestSep 16, 2026
Score
50% 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 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts