{"rules":[{"id":"X001","severity":"error","description":"endpoint unreachable"},{"id":"X002","severity":"error/warn","description":"no HTTP 402 for an unpaid request (warn when only one of GET/POST returns it)"},{"id":"X004","severity":"warn","description":"unpaid request is redirected"},{"id":"X005","severity":"warn","description":"plain http endpoint"},{"id":"X006","severity":"warn","description":"JSON 402 body served with a non-JSON content-type"},{"id":"X007","severity":"warn","description":"402 response is cacheable"},{"id":"X008","severity":"warn","description":"challenge slower than 5 s"},{"id":"X009","severity":"info","description":"CORS missing / PAYMENT-REQUIRED not exposed / preflight rejects payment headers"},{"id":"X010","severity":"warn/info","description":"/.well-known/x402 missing or does not mention the live payTo"},{"id":"X011","severity":"info","description":"no /llms.txt"},{"id":"X012","severity":"info","description":"no /openapi.json"},{"id":"X101","severity":"error/warn","description":"PaymentRequired cannot be parsed from header or body"},{"id":"X102","severity":"error/warn","description":"x402Version missing/unknown (warn for v1)"},{"id":"X103","severity":"warn","description":"v2 challenge only in the body, no PAYMENT-REQUIRED header"},{"id":"X110","severity":"error","description":"accepts[] empty or a required field is missing (v2 uses amount, v1 maxAmountRequired)"},{"id":"X111","severity":"error/warn","description":"network is not a CAIP-2 id (v2)"},{"id":"X112","severity":"warn","description":"testnet network"},{"id":"X113","severity":"error","description":"payTo is malformed, zero/burn, or fails the EIP-55 checksum (EVM) / not 32-byte base58 (Solana)"},{"id":"X114","severity":"error","description":"payTo equals the asset contract"},{"id":"X115","severity":"error/warn/info","description":"amount is not a positive integer string; zero price; very high or sub-cent price"},{"id":"X116","severity":"warn/info","description":"asset/network mismatch for a known USDC, or an unrecognised asset"},{"id":"X117","severity":"warn","description":"scheme is not exact/upto"},{"id":"X118","severity":"error/warn","description":"EVM exact: extra.name/extra.version missing or wrong for a known USDC"},{"id":"X119","severity":"warn","description":"maxTimeoutSeconds missing or implausible"},{"id":"X120","severity":"info","description":"several different payTo addresses in accepts[]"},{"id":"X130","severity":"warn/info","description":"v2 resource object missing, resource.url host differs, empty description"},{"id":"X131","severity":"info","description":"no bazaar extension (discovery)"},{"id":"X132","severity":"warn","description":"GET and POST return different payment terms"}]}