# x402 AgentPay - AI payment infrastructure # Updated: 2026-09-30 # Every URL in this file was probed before publication. Status codes are shown as measured. ## What this is x402-agent-pay.com is an x402 facilitator on Base L2. Agents pay for HTTP resources in USDC with an EIP-3009 signature; the facilitator verifies the payment and settles it on-chain, so the buyer spends no gas. We also publish free diagnostics for other x402 sellers. ## Free tools, no signup, no payment - GET /endpoint-report (HTTP 200): Free diagnostic: paste any public x402 endpoint and see what a buying agent experiences. Checks that a facilitator is named where buyers read it, that the named facilitator answers, that the Payment-Required header survives a default 4KB proxy buffer, that the terms are signable, and that the price clears the measured cost of settling it. No signup, and it works on any seller's endpoint. - GET /facilitator/handshake?url=&method=GET&wallet=0x... (HTTP 200): Free: can this wallet complete a payment to that endpoint right now. Reads the endpoint's terms, confirms they are signable, calls the facilitator it names to see whether it answers, prices settlement against live Base gas, and checks the wallet balance against the price. A missing facilitator is a warning, not a blocker, because a buyer can carry its own; gas is only required if you broadcast the settlement yourself. - GET /facilitator/authority/ (HTTP 200): Free: the spend authority on any wallet - owner, budget cap, no-confirm threshold, spent this period, remaining - enforced by the facilitator BEFORE settlement. An owner publishes an EIP-191-signed grant (POST /facilitator/authority/grant: agent, budgetUsdc, noConfirmUsdc, period hour|day|month, validBefore, nonce), revokes instantly (POST /facilitator/authority/revoke), and confirms a single over-threshold purchase (POST /facilitator/authority/confirm: agent, amountUsdc, resource, expires, nonce). Wallets with no grant are unaffected. - GET /facilitator/report?url= (HTTP 200): Free: grade any public x402 endpoint from the buyer side - facilitator named and reachable, header present and under the default proxy buffer, terms signable, price above measured settlement cost. - GET /facilitator/heatmap (HTTP 200): Free: which publicly listed x402 endpoints are payable right now, with price, network, payTo, a buyer-readiness score and the workaround each defect implies. - GET /facilitator/cost?amount=0.01 (HTTP 200): Free: the all-in cost of an x402 payment before signing. Settlement gas measured from real receipts (86,262 units, not the 65,000 usually quoted), live gas price, validated Chainlink ETH/USD, and the break-even below which self-broadcasting costs more than the good. - GET /facilitator/reasons (HTTP 200): Free: every rejection code /verify can return, what each one means, whether it is retryable, and how to fix it. - GET /facilitator/demand (HTTP 200): Free: our own paid endpoints split into earning, asked-but-never-paid, and never-asked, with lifetime settlement totals. Published because a seller deserves to see our conversion rather than a claim about it. - GET /facilitator/supported (HTTP 200): Free: payment kinds this facilitator settles, plus the free tools above. - POST /facilitator/verify (HTTP 200): Free: would this payment clear? No money moves and no gas is spent. ## How the report scores an endpoint Starts at 100, subtracting 25 per high-severity defect, 10 per medium, 4 per low. 90+ reads as buyer ready, 60-89 payable with defects, 30-59 buyers will struggle, under 30 effectively unbuyable. It is probed from outside with no credentials, so it describes the buyer's experience and cannot report a seller's own conversion. ## The defects it looks for, and why each costs money - No facilitator named: clients read accepts[0].extra.facilitator, then accepts[0].facilitator, then the root. Named nowhere, a client falls back to one that cannot settle to the seller. - Facilitator unreachable: an advertised facilitator that does not answer /verify is worse than none, because the buyer trusts the terms and stalls. - Payment-Required header absent: indexers read the terms from that header, not the body, so the endpoint cannot be listed at all. - Header over 4KB: a default nginx proxy buffer drops it, and the buyer sees 502 while the seller's app logs a clean 402. - Terms incomplete: without payTo, asset, network, amount and maxTimeoutSeconds an agent cannot construct a payment even when it wants to. - Price below the settlement floor: when gas costs more than the good, a buyer that broadcasts its own payment loses money by trading with you. ## Products - /getting-started.html: Start here: how an agent pays for an HTTP resource with an EIP-3009 USDC signature on Base, and what the seller returns in the 402. - /docs.html: Reference: the 402 terms we emit, the facilitator verify and settle calls, and the fields buyers read. - /pricing.html: What using the rail costs, and what the free diagnostics cost (nothing). - /voice-rail.html: xRail Voice: push-to-talk voice rail for agents, billed per second. - /personal-agent-app.html: Personal Agent App: mobile app for personal AI companions. - /private-rail.html: Private Rail: whitelabel payment rails for a single operator. ## Facts we will not overstate We are not SOC 2 or ISO 27001 certified; see https://agentpaystore.com/security. Batch reports and scheduled monitoring are in private beta and not yet self-serve. Contact: support@x402-agent-pay.com ## Overload and backoff (measured route) GET /api/agent/{agent_id}/receive-address is an unpaid address-rotation lookup. It is the high-volume route on this facilitator. One client may call it 30 times per 60 seconds for the same agent_id. Over that, the response is HTTP 429 with Retry-After (seconds) plus X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. When you receive 429, stop. Sleep for Retry-After seconds. If you must retry after a transport error on this route only, use full jitter: sleep = random_uniform(0, min(30, 0.5 * 2 ** attempt)), then reset attempt to 0 after a 200. The same guidance is in GET /mcp under rate_limit.backoff. Do not run that loop against settlement. POST /x402/verify, POST /x402/settle, POST /pay, POST /escrow, POST /release, POST /refund, and GET /status/{id} are exempt. A 402 on those routes is an x402 v2 payment challenge (PAYMENT-REQUIRED / PAYMENT-SIGNATURE), not overload. A request that already carries PAYMENT-SIGNATURE, X-Payment-Signature, or X-Payment is not delayed. ## MCP adapter (2026-09-30) - GET /.well-known/mcp.json (HTTP 200): AgentPay convention discovery document. Names the live Streamable HTTP MCP URL and the two facilitator tools. This file is not a live MCP server. - POST /facilitator/mcp (HTTP 200 JSON-RPC): live Streamable HTTP MCP. Tools: x402_facilitator_verify (read-only forward to /facilitator/verify) and x402_facilitator_settle (irreversible forward to /facilitator/settle). Settlement still refuses payloads that are malformed or whose payTo is not the AgentPay treasury. - GET /mcp (HTTP 200): unchanged OpenAPI-generated discovery JSON. Not Streamable HTTP MCP. Not listed here as a human page. - Human docs: https://x402-agent-pay.com/facilitator.html Raw MCP JSON-RPC is omitted from sitemap.xml because it is a protocol endpoint, not a crawlable document.