← Back home · Compare
mcp-pay vs x402 (Coinbase)
EVM/USDC-shaped HTTP 402 with facilitators
x402 is not a competitor — it is the first payment rail mcp-pay ships against. The relevant comparison is scope: x402 specifies how a payment happens once both sides have agreed to use it; mcp-pay specifies how an MCP server advertises that it accepts x402 (plus other rails) in the first place.
| Feature | mcp-pay | x402 (Coinbase) | Stronger fit |
|---|---|---|---|
| Scope | Manifest + discovery for MCP payment | Payment-verification protocol over HTTP 402 | Comparable |
| Rails covered | x402, MPP, Lightning, card, ACH (schema) | x402 (EVM USDC + Solana per recent versions) | mcp-pay |
| Relationship | Lists x402 as a first-class rail in pay.json | A rail mcp-pay points at | Comparable |
| Discovery surface | /.well-known/mcp/pay.json (static) | 402 response (per-URL) | mcp-pay |
| MCP integration | Drafted alongside SEP-2127 | None specified | mcp-pay |
| Facilitator dependency | Inherits whatever the chosen rail needs | Facilitator HTTP service required | Comparable |
| Status today | v0.1 draft; reference server live | Live, with Coinbase facilitator and growing ecosystem | x402 (Coinbase) |
| Composition | Designed to wrap x402 endpoints | Stands alone | mcp-pay |
Pick mcp-pay when
- ▸You build an MCP server and want a single manifest agents can read before calling
- ▸You want to accept more than one rail without writing a separate discovery path for each
- ▸You want pricing scoped per MCP primitive (tool, resource, prompt), not per URL
- ▸You want a documented payment-SLA field that agents can use to choose rails
Pick x402 (Coinbase) when
- ▸You only ever take x402 on Base, with no plans for Lightning or card
- ▸You are not building an MCP server — x402 stands fine on its own for plain HTTP endpoints
- ▸You need facilitator infrastructure today and have no need for an MCP-shaped manifest
Sources
Comparison rows describe scope and design intent, not endorsement. mcp-pay and x402 (Coinbase) are designed to compose, not replace each other.
Still deciding?
In most real deployments mcp-pay and x402 (Coinbase) sit at different layers. Try publishing a pay.json that advertises x402 (Coinbase) as one rail, and let agents pick whichever fits their budget.