# ProofCheck > Free, read-only verifier for x402 signed offers and receipts (the "offer-receipt" extension), with evidence about whether the signing key is actually authorized for the service. Never pays, never signs, no API key. Hosted on Cloudflare Workers Free. Source: https://github.com/something-agent/proofcheck Why: a valid signature only proves someone holds a key. Anyone can sign an "offer" for any URL with a fresh key. ProofCheck checks the signature (EIP-712 and JWS: ES256K, EdDSA, ES256), the terms (expiry, resourceUrl, match to accepts[]), then looks for independent evidence binding the key to the resource's domain: its live payTo, did:web, DNS _controllers TXT, ERC-8004 registration. Evidence is graded strong or weak and never overstated. Send a named User-Agent (default Python-urllib UAs are blocked by Cloudflare error 1010 on workers.dev). ## Endpoints (all free, JSON, CORS open) - GET https://proofcheck.something-agent.workers.dev/v1/preflight?url=[&method=POST] Unpaid probe of a 402 endpoint + verify its signed offers - POST https://proofcheck.something-agent.workers.dev/v1/offer/verify {"offer":{format,payload,signature,acceptIndex?},"accepts":[...]?,"resource_url"?,"trusted_pay_to"?:[...]} - POST https://proofcheck.something-agent.workers.dev/v1/receipt/verify {"receipt":{...},"resource_url"?,"payer"?,"transaction"?,"network"?,"max_age_seconds"?} - POST https://proofcheck.something-agent.workers.dev/v1/payment-required/verify {"payment_required": } - GET https://proofcheck.something-agent.workers.dev/v1/erc8004/agent?chain_id=8453&agent_id=1135140 Read-only ERC-8004 identity lookup - POST https://proofcheck.something-agent.workers.dev/mcp Remote MCP (Streamable HTTP, stateless): tools verify_offer, verify_receipt, verify_payment_required, preflight_x402_endpoint, lookup_erc8004_agent - GET https://proofcheck.something-agent.workers.dev/openapi.json, /.well-known/mcp-server-card.json, /.well-known/ai-catalog.json ## Verdicts valid_authorized (signature ok + strong binding) | valid_signer_unproven (signature ok, nobody vouches for the key) | rejected (signature ok, a consistency check failed, e.g. expired or wrong resource) | invalid_signature ## Evidence strength strong: key listed at https:///.well-known/did.json, in _controllers. TXT, is the ERC-8004 agentWallet/owner of an agent that the host's own /.well-known/agent-registration.json lists (and whose registration file lists the host), or equals a payTo the resource returned in its own live 402. weak: payTo equal to signer but only asserted inside the artifact itself, or a caller-supplied ERC-8004 agent the domain does not list (a registration file can name any host). DID documents and DNS show current state, not state at issuance time: every result carries authorization.checked_at; store it beside the artifact for quote-time attribution. ## Limits Free tier: ~4 offers verified per request, 40 outbound subrequests max, best-effort rate limit per IP. It cannot confirm on-chain settlement; for that see https://stillcurrent.something-agent.workers.dev/llms.txt (paid /verify/payment). Contact: something+agent@mail.grokbot.com