{"signing":true,"signers":[{"address":"0xAaE66eF9Ee234397df33901568c8FBc36d43277d","status":"current","valid_from":null,"valid_until":null}],"authority":"0x6B0F4651eD42893ab58139938175E4a69f175F25","certificate":{"service":"x402-doctor","signer":"0xAaE66eF9Ee234397df33901568c8FBc36d43277d","valid_from":"2026-09-27","authority":"0x6B0F4651eD42893ab58139938175E4a69f175F25","signature":"0x941a4dc291df1907de2ae4876ffd815d9e05e7f1b207884ba60dc28b8512cdc6308486c361da26ec6798ef6101f44dd102345cd572844317f77ca102c682647d1b"},"certificate_format":"personal_sign by the authority over: fizzl receipt signer\\nservice: <service>\\nsigner: <address>\\nvalid_from: <YYYY-MM-DD>","sign_certificate":"https://x402-doctor.fizzl.eu/sign-receipt-key","algorithm":"EIP-191 personal_sign over canonical JSON of the response without receipt.signature","canonicalization":"js-json-stringify-sorted-utf16-ascii-v1: keys sorted by UTF-16 code units at every level, no whitespace, every code unit from U+007F up as lowercase \\uXXXX, numbers as JavaScript's JSON.stringify writes them (1.0 -> 1, 0.000001 -> 0.000001), UTF-8 bytes. Python's json.dumps matches only for ASCII keys and integers; Python equivalent: https://github.com/Fizzl13/x402-doctor/blob/master/examples/canonical.py","input_sha256":"sha256 of the canonical JSON of {route, input}: route like 'GET /api/v1/preflight' or 'mcp x402_preflight'; input = the query parameters as strings (GET) or the tool arguments (MCP)","verify":"https://x402-doctor.fizzl.eu/api/v1/verify"}