{"enabled":true,"version":1,"alg":"eip191-personal_sign","signer":"0xE33E91Fb39CD0Dc62C33f3933068c0dc2A5b70d0","signers":[{"address":"0xE33E91Fb39CD0Dc62C33f3933068c0dc2A5b70d0","validFrom":"2026-10-12T00:00:00.000Z","validUntil":null,"role":"response","note":"Current response signer. Not payTo; holds no funds."}],"notAWallet":"This address only signs responses. It is not our payTo and holds no funds. Never send money to it.","payTo":"0x509E55c4F898B43C856Fb0E51048B1b7bFBC9eDE","origin":"https://www.kertivo.com","messagePrefix":"x402-paycheck signed response v1","signedRoutes":["POST /check","POST /check/deep","POST /demo","POST /address/check","POST /address/check/full","POST /trust/lookup","GET /claim/:id"],"statements":{"POST /check":"This is what our check saw on Base at issuedAt for the given request. Funding verdicts describe the payer's funding inside the stated scan window only. Not a guarantee of delivery, identity, or future behavior.","POST /check/deep":"This is what our deep check saw on Base at issuedAt for the given request, with the stated indexer coverage. Funding verdicts describe the payer's funding only. Not a guarantee of delivery, identity, or future behavior.","POST /demo":"Demo response for a fixed fixture transaction. This is what our check saw on Base at issuedAt. Not a guarantee of anything.","POST /address/check":"This is what our address-poisoning check saw at issuedAt within the stated coverage window (often partial). Risk 'low' means no lookalike was found in what was scanned, not that the address is safe.","POST /address/check/full":"This is what our full-history address-poisoning check saw at issuedAt with the stated indexer coverage. Risk 'low' means no lookalike was found in what was scanned, not that the address is safe.","POST /trust/lookup":"This is the Kertivo Index grade and paid-test evidence we returned at issuedAt for the given URL. The grade comes only from our own paid test calls; the claims tally is buyer-filed and kept separate. Not a guarantee the endpoint will behave the same next time, and not arbitration.","GET /claim/:id":"This is the claim record we served at issuedAt. Payment settlement is checked on-chain; delivery and dispute fields are the buyer's report unless noted, and any seller response is the seller's own signed statement. We do not arbitrate. Not a guarantee of future seller behavior."},"what":"Every 200 JSON response from these routes carries `attestation`: an EIP-191 signature over the body's sha256, the route, issuedAt, our origin, and a fixed statement of what the result does and does not mean. Keep the whole body; anyone can later prove what we served. Not signed: errors (4xx/5xx), HTML pages (e.g. a claim opened in a browser), free GET /trust/lookup, POST /claim filing replies and GET /claims lists.","howToVerify":["1. body2 = response body without the `attestation` key","2. sha256(canonical(body2)) must equal attestation.sha256 (canonical = JSON with object keys sorted recursively, no whitespace; hex with 0x prefix)","3. attestation.message must equal lines joined by \\n: messagePrefix, 'origin: <origin>', 'route: <route>', 'issuedAt: <issuedAt>', 'sha256: <sha256>', 'statement: <statement>'","4. viem: await recoverMessageAddress({ message: attestation.message, signature: attestation.signature }) must equal signer above"],"tryFree":"curl -s -X POST https://www.kertivo.com/demo","example":"https://www.kertivo.com/examples (section 6: copy-paste JS verifier, viem + node:crypto)","agentRegistration":"https://www.kertivo.com/.well-known/agent.json"}