| Rail | Job | Not | Hub |
|---|---|---|---|
| x402 pay-per-request | Charge per HTTP request (APIs, data). | Not a cart or delegated checkout. | /en/x402/ |
| AP2 authorization | Authorize a purchase with signed mandates. | Not a 402 pay-per-call endpoint. | /en/ap2/ |
| ACP authorization / checkout | Agentic checkout / cart / delegated payment. | Not a per-API micropayment. | /en/acp/ |
| MPP pay-per-request | Charge per request (APIs, tools, content). | Not AP2 or ACP authorization. | /en/mpp/ |
| PAP identity / session | Identity / session (OAuth, discovery, guest→auth, read vs write). | Not a settle rail. Complements before money; does not replace the four payment rails. | /en/pap/ |
x402
A server quotes a price with HTTP 402; the client pays and retries the same request. No cart, no checkout page.
Who maintains it. Coinbase (CDP) publishes the protocol and a reference facilitator. Open governance via the x402 Foundation / Linux Foundation.
Versus the others. Closest to MPP (both charge per request). Distinct from AP2 and ACP, which authorize purchases.
Evidence file: research/x402.md
(333 rows, snapshot 2026-10-03).
Sample entries
- Apify · production · 2026-10-15
- Exa · production · 2026-10-15
- Browserbase · production · 2026-10-15
AP2
Signed Intent / Cart / Payment Mandates let an agent complete a purchase without holding the payment credential.
Who maintains it. Created by Google; governance donated to the FIDO Alliance (Agentic Authentication and Payments working groups).
Versus the others. Not a per-request API charge. A press-release partner is not an x402 endpoint.
Evidence file: research/ap2.md
(127 rows, snapshot 2026-10-03).
Sample entries
- Google Cloud · production · 2026-10-09
- FIDO Alliance · production · 2026-10-09
- Shopify · pilot · 2026-10-09
ACP
Composable checkout, cart, and delegated-payment blocks for agents. Used by Instant Checkout / Buy in ChatGPT and Checkout for Facebook.
Who maintains it. Open standard maintained by OpenAI and Stripe (Meta collaborates). Spec lives at agenticcommerce.dev.
Versus the others. A checkout/authorization protocol, not a per-API micropayment. Distinct from x402 and MPP.
Evidence file: research/acp.md
(87 rows, snapshot 2026-10-03).
Sample entries
MPP
HTTP 402 for machine-to-machine payments on APIs, tool calls, and content. No checkout UI.
Who maintains it. Co-authored by Stripe and Tempo. Docs and service directory at mpp.dev.
Versus the others. Stripe’s closest rail to x402. Not AP2 or ACP.
Evidence file: research/mpp.md
(150 rows, snapshot 2026-10-03).
Sample entries
- Anthropic · production · 2026-10-11
- OpenAI · production · 2026-10-11
- Browserbase · production · 2026-10-15
PAP
Personal Agent Protocol (“Poppy”): customers decide what access to give their personal agents, and companies set parameters for what those agents can do. The draft defines discovery (/.well-known/poppy.json), a session on the customer's behalf (it can start as a guest), OAuth sign-in on the company's own page, and one session across the company's website, APIs (OpenAPI, MCP), and agent. Built on OAuth, JWTs, HTTPS, OpenAPI, and MCP.
Who maintains it. Open standard developed by Sierra and Meta; Sierra's 2026-10-06 announcement puts it as: “an open standard Meta and Sierra are developing”. Announced 2026-10-06 with Genesys, Instinct, Rocket, Shopify, Stripe, and Walmart (the 2026-10-09 post also lists NiCE); draft 0.1 published 2026-10-09 with 35 new design partners. Apache 2.0 license.
Versus the others. Not a settle rail. Payment rails stay four: x402 · AP2 · ACP · MPP. PAP does not replace checkout or pay-per-request.
Evidence file: research/pap.md
(announced 2026-10-06; draft 0.1 published 2026-10-09; not in
the payment snapshot).
- Spec · Personal Agent Protocol, Draft 0.1 (2026-10-09)
- Sierra · Sharing a draft of Personal Agent Protocol (2026-10-09)
- Sierra · Introducing Personal Agent Protocol (2026-10-06)
- English hub · /en/pap/
- Spanish directory · /pap/
Sample entries
- Personal Agent Protocol · announced · 2026-10-15
Try it: pay per call
Three real x402 endpoints. Call without payment and you get an HTTP 402
with the price and the accepts list. Pay and retry to get the JSON.
- $0.01 USDC · Base Ranked search of x402 APIs listed in Plaza, filtered by rail, chain and max price.
GET https://lupaplaza.com/api/discover?rail=x402&chain=base&max_price=0.05 - $0.01 USDC · Base One-shot check: does this URL answer HTTP 402, and what does it charge. Pass the target URL percent-encoded in
GET https://lupaplaza.com/api/probe?url=https%3A%2F%2Flupapago.com%2Fapi%2Ffee%3Fpsp%3Dmobbexurl=(for example withencodeURIComponent). - $0.01 USDC · Base Compact index of mainnet x402 resources with a verified live 402.
GET https://lupaplaza.com/api/webmcp/snapshot
1. See the 402 (free)
curl -i https://lupaplaza.com/api/webmcp/snapshot
# HTTP/2 402
# {"error":"payment_required","price":"$0.01","network":"eip155:8453",
# "accepts":[{"scheme":"exact","amount":"10000","asset":"0x8335…2913", ...}]}2. Pay and get the JSON (x402 client)
Node 18+ with ESM: the example uses top-level await, so save it as .mjs or set "type": "module" in package.json.
// npm i @x402/fetch @x402/core @x402/evm viem
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.PRIVATE_KEY);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(account));
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://lupaplaza.com/api/discover?rail=x402&chain=base");
console.log(await res.json()); // pays $0.01 USDC on BaseUse a wallet with a small USDC balance on Base. Bad parameters with a payment header return 400 with no charge.
English hubs live at /en/x402/, /en/ap2/, /en/acp/, /en/mpp/, and /en/pap/ (identity/session). Payment directories stay on the Spanish hubs. This page is the EN comparison pillar, not a second index of every entry.