# ColdRead > Independent pre-payment check for x402 sellers. Give it a paid endpoint URL; it returns ONE Ed25519-signed report: is the 402 challenge well-formed, are its signed offers valid and is the signer bound to the domain, does the host's ERC-8004 identity match the payTo, and who actually paid that payTo on Base in the last ~28 hours (self-payments, known sweepers and broad payers labelled). Read-only: never pays, never signs payments. Free during M1. No API key. Source (MIT): https://github.com/something-agent/coldread Send a named User-Agent (default Python-urllib UAs are blocked by Cloudflare error 1010 on workers.dev). ## Endpoints (JSON, CORS open) - POST https://coldread.something-agent.workers.dev/v1/check {"url":"https://seller/route","method":"auto|GET|POST"?,"pay_to":"0x..."?,"agent":{"chain_id":8453,"agent_id":"123"}?} - GET https://coldread.something-agent.workers.dev/v1/check?url=... same, query form - GET https://coldread.something-agent.workers.dev/v1/report/{digest} a stored signed report (kept 90 days) - POST https://coldread.something-agent.workers.dev/v1/verify {"envelope":{report,digest,signature}} checks hash + signature + published key - GET https://coldread.something-agent.workers.dev/v1/digests?date=YYYY-MM-DD digests stored that day (anchored daily with OpenTimestamps) - GET https://coldread.something-agent.workers.dev/v1/stats public usage counters (hashed callers only) - GET https://coldread.something-agent.workers.dev/.well-known/coldread-keys.json report signing keys, rotation and revocation - POST https://coldread.something-agent.workers.dev/mcp remote MCP (Streamable HTTP, stateless): coldread_check, coldread_get_report, coldread_verify_report ## Report {report, digest:{alg:sha256, canonicalization:"JCS (RFC 8785)", hex}, signature:{alg:Ed25519, key_id, public_key, value}, stored, anchor} Signed message: "coldread-report-v1:" + digest hex. Only "report" is covered. report.overall: no_red_flags = Nothing ColdRead checks looked wrong. This is not an endorsement and says nothing about settlement or delivery (see cannot_check). | attention = At least one amber signal: read the signals before paying. | red_flags = At least one red signal (malformed or contradictory payment terms, a bad signature, or an identity that does not match). Do not pay without resolving it. | unreachable = The endpoint did not return a parseable x402 402 challenge, so there was nothing to judge. report.signals[]: {id, severity red|amber|info|good, part, text}. report.parts: endpoint (x402lint), live_challenge, signed_offers (ProofCheck), erc8004, payers. Payer labels: self, known_sweeper (documented by ColdRead), broad_payer (20+ different payees in ~11 h), repeat_or_narrow (consistent with a chosen buyer, not proven independent). ## Cannot check - whether a payment settles or the paid response is delivered (ColdRead never pays) - the quality or truth of the paid content - who controls the payTo wallet beyond the published bindings (did:web, DNS, ERC-8004) we can see - payer history older than the stated window, and payments on networks other than Base USDC - whether distinct payer wallets belong to distinct people - anything that changed after checked_at Not a rating agency: reports describe software behaviour and public chain facts, not creditworthiness, and are not financial advice. ## Verify a report yourself node verify.mjs report.json (no dependencies; https://github.com/something-agent/coldread/blob/main/verify.mjs) ## Limits Workers Free: 10 ms CPU and 50 subrequests per call (ColdRead uses up to 45), best-effort rate limit per IP, ~900 stored reports a day (after that the report is still returned and signed, with stored:false). Keyless public RPC allows 50,000-block log queries, hence the ~28 h payer window. Related: x402lint https://x402lint.something-agent.workers.dev, ProofCheck https://proofcheck.something-agent.workers.dev (ColdRead runs both as vendored libraries). Contact: something+coldread@mail.grokbot.com