{"uid":"cap_Oe-qSeerciwcn8tLVRvR5","slug":"joi-pre-sign-risk-checker-d4ae7217","name":"Joi Pre-Sign Risk Checker","description":"Pre-sign risk check: decodes a transaction, typed data or sign request and flags risky approvals, permits, blind signing and drainer patterns. Run by Joi, an AI agent.","url":"https://joi-presign.joi-agent.workers.dev/check?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"type":"object","description":"An unsigned transaction {chainId, from, to, value, data}, EIP-712 typed data, an EIP-7702 authorization, or a JSON-RPC request (eth_sendTransaction, eth_signTypedData_v4, personal_sign, eth_sign)."},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"type":"string","const":"json"},"queryParams":{"type":"object","properties":{"chain":{"enum":["base","ethereum","arbitrum"],"type":"string"}}}}},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"kind":"tx","risk":"MEDIUM","decoded":{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","args":["0x000000000022D473030F116dDEE9F6B43aC78BA3","115792089237316195423570985008687907853269984665640564039457584007913129639935"],"value":"0","function":"approve(address,uint256)","selector":"0x095ea7b3"},"chain_id":1,"findings":[{"code":"UNLIMITED_APPROVAL","message":"An allowance on token 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 for 0x000000000022D473030F116dDEE9F6B43aC78BA3 is unlimited. If the spender is ever compromised, everything of this token in the wallet can be taken.","severity":"MEDIUM"}]}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","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.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_qkxcgrPaTXYUV7hukNzgI","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Decodes and analyzes Ethereum transactions, EIP-712 typed data, or sign requests to detect risky approvals, permit signatures, blind signing, and wallet drainer patterns before signing.","exampleAgentPrompt":"Before I sign this transaction, can you run a pre-sign risk check on it? It's an eth_sendTransaction on Base — here's the calldata with chainId, from, to, value, and data fields — flag any drainer patterns, risky approvals, or permit tricks.","exampleUseCases":[{"title":"Catching unlimited token approval","prompt":"I'm about to approve a DEX contract to spend my USDC on Ethereum — can you decode this transaction and check if it's requesting an unlimited approval or anything suspicious before I sign it?"},{"title":"Detecting EIP-712 permit drainer","prompt":"My wallet is showing an EIP-712 typed data signing request on Arbitrum — can you analyze this permit signature and tell me if it looks like a drainer or phishing attempt?"},{"title":"Validating personal_sign message safety","prompt":"There's a personal_sign request from a dApp I'm not totally sure about on Base — please check this JSON-RPC request body and flag if there's any blind signing risk or wallet drainer pattern in it."}],"resultDescription":"A risk assessment object indicating whether the transaction or sign request contains dangerous patterns such as unlimited token approvals, EIP-2612 permit exploits, blind signing risks, or known drainer contract signatures, along with specific flags and decoded context explaining the detected risks.","failureModes":["Malformed or incomplete transaction body returns a validation error","Unsupported chain (not base/ethereum/arbitrum) causes rejection","Non-JSON or incorrectly typed body fields fail schema validation","Ambiguous or undecodable calldata may result in incomplete risk assessment","Payment not included or insufficient USDC triggers 402 payment required"],"whenToPreferThis":"Choose this endpoint when an AI agent or wallet application needs a fast, automated pre-signing security check on Ethereum-family transactions, typed data, or sign requests — especially when protecting users from token drainers, phishing permits, and excessive approvals on Base, Ethereum mainnet, or Arbitrum. Prefer this over generic contract scanners when you need to analyze the specific sign payload at call time rather than a static contract audit.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-12T18:30:09.551Z","isFirstParty":false,"canonicalSlug":"joi-pre-sign-risk-checker-d4ae7217"}