Skip to content
mcp-pay View on GitHub

← 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.