← Back home · Compare
mcp-pay vs L402
Lightning-shaped HTTP 402 with macaroons
L402 and mcp-pay are not substitutes. L402 is a way to charge over Lightning using HTTP 402 plus a macaroon. mcp-pay is a manifest layer that says "this MCP server charges, here are the rails it accepts" — Lightning is one of them, with an LNURL field in the schema.
| Feature | mcp-pay | L402 | Stronger fit |
|---|---|---|---|
| Scope | Discovery + pricing manifest for MCP servers | HTTP 402 authentication scheme | Comparable |
| Rails covered | x402, MPP, Lightning, card, ACH (schema) | Lightning | mcp-pay |
| Status today | v0.1 draft; x402 implemented in ref server | Live, deployed (Aperture, others) | L402 |
| Pricing description | Per tool / resource / prompt with model field | Per-URL invoice in 402 response | mcp-pay |
| Discovery surface | /.well-known/mcp/pay.json (static, cacheable) | Discovered at 402 response time | mcp-pay |
| Credential model | Defers to underlying rail | Macaroon attached to invoice | L402 |
| MCP integration | Designed alongside SEP-2127 (Server Card) | No MCP-specific integration | mcp-pay |
| Composition | Can list an L402 endpoint as a Lightning rail | Stands alone | mcp-pay |
Pick mcp-pay when
- ▸You are building an MCP server and want one manifest that advertises Lightning alongside x402 and card
- ▸You want agents to discover pricing before they call, instead of only at the 402 response
- ▸You want pricing scoped per tool, per resource, or per prompt rather than per URL
- ▸You want a payment SLA field that agents can use to pick a rail
Pick L402 when
- ▸You only ever take Lightning and you only ever serve HTTP, not MCP
- ▸You want the macaroon-based credential model that L402 specifies
- ▸You are already deployed on LSAT/L402 tooling (Aperture, Loop) and the migration cost is real
Sources
Comparison rows describe scope and design intent, not endorsement. mcp-pay and L402 are designed to compose, not replace each other.
Still deciding?
In most real deployments mcp-pay and L402 sit at different layers. Try publishing a pay.json that advertises L402 as one rail, and let agents pick whichever fits their budget.