{"items":[{"resource":"https://api.pennyforge.org/check","accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"10000","payTo":"0x9504A5939AB5be2B2B1F8beA7D7ebeCcd96c485D","maxTimeoutSeconds":60,"description":"Pre-send verification of one EVM address on one chain: EIP-55 checksum status, wallet-vs-contract, outgoing transaction count, native/USDC/USDT balances, and a leveled verdict (ok/caution/warn/danger) with reasons and next action. Run it before your agent sends funds to an address it pulled from an LLM answer, a message, or a scraped page.","mimeType":"application/json","outputSchema":{"type":"http","input":{"method":"POST","body":{"address":"string (0x + 40 hex chars, required)","chain":"base | ethereum | arbitrum | optimism | polygon (optional, default base)"}},"output":{"address":"0x… (normalized EIP-55)","checksum":"{status, message}","chain":"{name, isContract, outgoingTxs, native, usdc, …}","verdict":"{level, headline, next, gas, reasons}","report":"copyable text report"}}}]},{"resource":"https://api.pennyforge.org/deep","accepts":[{"scheme":"exact","network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","amount":"50000","payTo":"0x9504A5939AB5be2B2B1F8beA7D7ebeCcd96c485D","maxTimeoutSeconds":60,"description":"Deep pre-send scan: the same verification across ALL five chains (Base, Ethereum, Arbitrum, Optimism, Polygon) including wrong-network detection (address active elsewhere but not on the chain you are about to send to) and token-mismatch flags.","mimeType":"application/json","outputSchema":{"type":"http","input":{"method":"POST","body":{"address":"string (0x + 40 hex chars, required)","chain":"base | ethereum | arbitrum | optimism | polygon (optional, default base)"}},"output":{"address":"0x… (normalized EIP-55)","checksum":"{status, message}","chain":"{primary chain facts}","others":"[per-chain facts ×4]","verdict":"{level, headline, next, gas, tokenMismatch, reasons}","report":"copyable text report"}}}]}],"lastUpdated":"2026-09-03T06:15:00Z","metadata":{"api":"sendcheck","category":"security","contract":"documented","description":"SendCheck — pre-send verification for EVM addresses. One paid HTTP call (x402, USDC on Base, no account, no API key) tells your agent whether an address is safe to send to: checksum, wallet-vs-contract, activity, balances, verdict. Free checksum-only pre-check at GET /validate so you never pay for a malformed address.","provider":"Pennyforge","home":"https://sendcheck.surge.sh","docsUrl":"https://api.pennyforge.org/","discovery":"https://api.pennyforge.org/.well-known/x402","example":{"method":"POST","url":"https://api.pennyforge.org/check","body":{"address":"0x9504A5939AB5be2B2B1F8beA7D7ebeCcd96c485D","chain":"base"}},"chains":["base","ethereum","arbitrum","optimism","polygon"],"honestLimits":"Reads public on-chain state via public RPCs; a verdict is a pre-send safety check, not a guarantee. No mempool, no contract-audit, no sanctions screening."},"attestation":{"jws":"eyJhbGciOiJFUzI1NiIsImtpZCI6InNlbmRjaGVjay0yMDI2LTA5In0.eyJhc3NldCI6IjB4ODMzNTg5ZkNENmVEYjZFMDhmNGM3QzMyRDRmNzFiNTRiZEEwMjkxMyIsImV4cCI6MTgyMDM5MzQ3MCwiaWF0IjoxNzg4ODU3NDcwLCJuZXR3b3JrIjoiZWlwMTU1Ojg0NTMiLCJwYXlUbyI6IjB4OTUwNEE1OTM5QUI1YmUyQjJCMUY4YmVBN0Q3ZWJlQ2NkOTZjNDg1RCIsInJvdXRlcyI6W3sibWF4UHJpY2UiOiIwLjAxIiwicmVzb3VyY2UiOiIvY2hlY2sifSx7Im1heFByaWNlIjoiMC4wNSIsInJlc291cmNlIjoiL2RlZXAifV0sInNlcnZpY2UiOiJodHRwczovL2FwaS5wZW5ueWZvcmdlLm9yZyIsInYiOjF9.4aZJK5DYXZF3OHbKqFPTzWm8Ei9oSHBcjCkNawB0CAjLpTJHFG97Z8iicAWGms7cc9goKwGdCat_P0xeiOUkqQ","key":{"kty":"EC","x":"byHMSJi37KTtQRTkxSj1dNRUppDNKCMqj_W7dfC45Us","y":"mTV7jNFab5gU3P77chUHrdbnm3pegzrOjWdLXL3WRvs","crv":"P-256","kid":"sendcheck-2026-09","alg":"ES256","use":"sig"},"note":"ES256 JWS over the signed payload (payTo, per-route maxPrice, iat, exp). Pin the public key once; first contact is trust-on-first-use. The 402 challenge carries the same block as extensions[\"x-sendcheck-attestation\"]; verify the challenge's payTo against it before paying."}}