← 402arcade

GET /x402/lint $0.05/call

Point it at any x402 endpoint and get a scored, fix-annotated report: correct 402 behavior (including the empty-body probe rule that silently fails discovery), envelope shape, v2 amount vs maxAmountRequired, CAIP-2 network naming, canonical USDC asset, payTo validity, CORS for browser agents, bazaar extension spec-compliance (schema-validates-info, body vs bodyFields), description length limits — plus Coinbase's own official /validate verdict, interpreted. $0.05 per run. Built from every failure mode documented in x402 issues #2112, #3045, #2157, #2993.

Parameters

namerequireddescription
urlyespublic URL of the x402 endpoint to lint
methodnoHTTP method to probe with (default GET)

Example

GET /x402/lint?url=https://your-api.com/paid/endpoint

→ {"score":72,"grade":"C","findings":[{"id":"AMOUNT_V2","level":"warn","title":"maxAmountRequired without amount"}],"cdpValidate":{…}}

Payment (x402)

Call without payment to receive HTTP 402 with a base64 envelope in the payment-required header — price, payTo, network (USDC on Base), and I/O schemas. Pay automatically with @x402/fetch:

const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://402arcade.dev/x402/lint?…");

No API keys. No accounts. Machine-readable: openapi.json · llms.txt · catalog