{"uid":"cap_feog-UtfknoucQ3_eSI9b","slug":"presign-guard-erc-20-allowance-audit-2c90b722","name":"presign-guard ERC-20 Allowance Audit","description":"Wallet approval audit (green/orange/red, grade, one-line summary): every open ERC-20 allowance of an EVM wallet with who the spender is (flagged, plain wallet, unverified, unlimited) and which ones to revoke","url":"https://presign-guard.onrender.com/v1/approvals?utm_source=zero.xyz","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["chain","address"],"properties":{"chain":{"enum":["base","ethereum","arbitrum","optimism","polygon","bsc"],"type":"string","description":"EVM chain to audit"},"address":{"type":"string","description":"Wallet address (0x...)"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["verdict","grade","one_liner","reasons","approvals"],"properties":{"grade":{"enum":["SAFE","CAUTION","RISKY","AVOID"],"type":"string"},"reasons":{"type":"array","items":{"type":"object","required":["code","severity"],"properties":{"code":{"type":"string"},"details":{},"severity":{"enum":["red","orange","info"],"type":"string"}}}},"receipt":{"type":"object","required":["request_id","route","input_sha256","signed_at","signer","algorithm","signature"],"properties":{"cert":{"type":"object","properties":{"signer":{"type":"string"},"service":{"type":"string"},"authority":{"type":"string"},"signature":{"type":"string"},"valid_from":{"type":"string"}},"description":"The payout wallet's certificate for this signing key: personal_sign by authority over 'fizzl receipt signer\\nservice: <service>\\nsigner: <signer>\\nvalid_from: <date>'. Pin the payout wallet and a rotated key still verifies."},"route":{"type":"string"},"signer":{"type":"string"},"payment":{"type":"object","properties":{"asset":{"type":"string"},"nonce":{"type":"string"},"payer":{"type":"string"},"proof":{"enum":["eip3009","svm-transaction"],"type":"string"},"amount":{"type":"string"},"pay_to":{"type":"string"},"network":{"type":"string"},"transaction_sha256":{"type":"string"}},"description":"The payment behind this answer, from your x402 payment payload. EVM: payer + EIP-3009 nonce; find the settlement as AuthorizationUsed(payer, nonce) on the asset contract. Solana: payer + sha256 of the signed transaction you sent."},"algorithm":{"enum":["eip191-canonical-json-v1"],"type":"string"},"signature":{"type":"string"},"signed_at":{"type":"string"},"request_id":{"type":"string"},"input_sha256":{"type":"string","description":"sha256 of canonical JSON {route, input}: your body (POST) or query parameters (GET)"}},"description":"Signature over this whole answer (without receipt.signature), so the verdict can be verified later: EIP-191 personal_sign over canonical JSON (sorted keys, compact, ASCII-escaped). Signer addresses: /.well-known/presign-guard-signer.json; free check: POST /v1/verify."},"summary":{"type":"object","description":"approvals, tokens, unlimited, toRevoke"},"verdict":{"enum":["green","orange","red"],"type":"string"},"approvals":{"type":"array","items":{"type":"object"},"description":"Per allowance: token, spender (address, name, trusted, contract), amount, approvedAt, severity, codes, revoke"},"checkedAt":{"type":"string"},"one_liner":{"type":"string"},"revokeUrl":{"type":"string"}}}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.02","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.02/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.02","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm__STKZWRnbO4w_OFiLYAGq","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.02","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Audits all open ERC-20 token approvals for an EVM wallet, flagging risky or unlimited allowances with a green/orange/red verdict, grade, and revocation recommendations.","exampleAgentPrompt":"Can you audit all the open ERC-20 token approvals on my Ethereum wallet 0xAbc123...def and tell me which ones are risky or unlimited and which I should revoke?","exampleUseCases":[{"title":"Post-hack wallet exposure check","prompt":"My friend's Base wallet 0x1234...abcd might have been drained through a bad approval — can you scan all their open ERC-20 allowances and tell me which spenders still have access and what the overall risk verdict is?"},{"title":"DeFi spring-clean revocation review","prompt":"I want to clean up my Polygon wallet 0xDead...Beef — show me all my open token approvals, highlight any unlimited ones or flagged contracts, and tell me which ones I should revoke."},{"title":"Pre-sale wallet safety audit","prompt":"Before I use my Arbitrum wallet 0x9999...1111 to participate in a token sale, can you check all its existing ERC-20 approvals and give me a safety grade so I know if there are any risky allowances I should clear first?"}],"resultDescription":"Returns a JSON object with: a top-level verdict (green/orange/red), a grade label (SAFE/CAUTION/RISKY/AVOID), a one-liner plain-language summary, an array of all open approvals (each with token, spender address, spender name if known, trust status, allowance amount, approval timestamp, severity, reason codes, and a revoke flag), an array of reason objects with severity codes, a summary object with counts (approvals, tokens, unlimited, toRevoke), a timestamp, and a revoke URL for easy remediation.","failureModes":["Invalid or malformed wallet address returns an error — ensure 0x-prefixed checksummed address","Unsupported chain value returns error — only base, ethereum, arbitrum, optimism, polygon, bsc are valid","Wallet with no approvals returns empty approvals array with green verdict","Rate limiting or upstream RPC failures may cause timeouts or 5xx responses","Very new wallets or chains with limited indexer coverage may show incomplete approval history"],"whenToPreferThis":"Choose this endpoint when you need a comprehensive, pre-interpreted audit of all ERC-20 token approvals for a specific EVM wallet — especially when you want spender identity resolution, risk grading, and actionable revocation recommendations in a single call. It is preferable over raw on-chain queries when you want human-readable severity labels and aggregated risk verdicts rather than raw event logs.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-11T06:43:12.921Z","isFirstParty":false,"canonicalSlug":"presign-guard-erc-20-allowance-audit-2c90b722"}