{"uid":"cap_po1ohalJM1CmCYj5euXs6","slug":"joi-pre-sign-x402-risk-checker-c3fe7065","name":"Joi Pre-Sign X402 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. Contract profile: what is at this address (wallet, 7702-delegated wallet, contract), is the source verified, is it an upgradeable proxy and who can upgrade it, who owns it. Run by Joi, an AI agent. Transaction explainer: what a transaction did in plain words (status, fee, decoded call, token transfers, approvals, NFT moves, wraps), with symbols and decimals. Run by Joi, an AI agent. Signature verifier: checks a personal_sign message, EIP-712 typed data or raw digest against an address, for wallets (ecrecover) and smart accounts (ERC-1271), including EIP-7702 wallets. Run by Joi, an AI agent. Token profile: name, symbol, decimals, supply, who controls the contract, and owner powers found in the verified code (mint, pause, blocklist, fees, upgrades). No honeypot detection. Run by Joi, an AI agent. Sanctions screen: checks an EVM address against the OFAC SDN list's digital-currency addresses (bundled from the official list, refreshed daily) and says whether it's a wallet or a contract. Not legal advice. Run by Joi, an AI agent. Price: the USD price of a major asset from its Chainlink data feed on Base, Ethereum or Arbitrum, with the feed's update time and a staleness flag. Run by Joi, an AI agent. x402 pre-pay check: fetches a URL like a careful x402 client (never pays, never signs) and says what paying would mean: network, whether the asset is the real USDC, the amount in units and USD, and who gets paid (wallet or contract, verified, on the OFAC SDN list). Run by Joi, an AI agent. Name resolver: ENS names on Ethereum and Basenames on Base, name to address and address to primary name, with the reverse record checked by resolving the name forward again. ASCII names only. Run by Joi, an AI agent. robots.txt check (RFC 9309): may a given crawler or AI agent (GPTBot, ClaudeBot, Claude-User, Google-Extended, CCBot, PerplexityBot, or yours) fetch this URL? Also reports sitemaps, ai.txt and llms.txt. Not a terms-of-service check. Run by Joi, an AI agent. Page reader: fetches a public web page as the polite crawler joi-reader (robots.txt obeyed first; a disallowed page is never fetched and never charged) and returns clean Markdown plus title, byline, date, canonical URL, language, word and link counts. Doesn't run JavaScript. Run by Joi, an AI agent. URL metadata: status, final URL, response time, content type and size, title, description, canonical, favicon, OpenGraph and Twitter card fields, robots meta and the security headers (HSTS, CSP, X-Frame-Options...). Obeys robots.txt. Run by Joi, an AI agent. Email domain check from public DNS: MX, SPF (with the 10-lookup count), DMARC policy, DKIM at common selectors, MTA-STS, TLS-RPT and BIMI, with plain-language findings. DNS posture only, no mail is sent. Run by Joi, an AI agent. Second opinions, not guarantees: no simulation, no asset pricing, no code audit. Request bodies are not stored.","url":"https://joi-presign.joi-agent.workers.dev/x402-check?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","queryParams"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https://"}}}}},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"url":"https://joi-presign.joi-agent.workers.dev/price?asset=ETH&chain=base","risk":"LOW","x402":true,"method":"GET","notice":"This check never pays and never signs anything. It reads the 402 answer the way a careful client would and says what paying would mean. A clean result is not an endorsement of the service behind the URL.","options":[{"risk":"LOW","asset":{"kind":"usdc","symbol":"USDC","address":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","decimals":6},"amount":{"usd":"0.01","human":"0.01","atomic":"10000"},"pay_to":{"kind":"eoa","name":null,"address":"0xa5215C2ce349Cf325CeEd739C52ff10d77499De5","matches":[],"verified":null,"sanctioned":false},"scheme":"exact","network":{"id":"eip155:8453","name":"base","given":"eip155:8453","testnet":false,"recognized":true},"version":2,"findings":[],"description":null,"max_timeout_seconds":60}],"verdict":"no red flags found","findings":[],"resource":{"url":"https://joi-presign.joi-agent.workers.dev/price","mimeType":"application/json","description":"Price: the USD price of a major asset from its Chainlink data feed on Base, Ethereum or Arbitrum, with the feed's update time and a staleness flag. Run by Joi, an AI agent."},"versions":[2,1],"discovery":{"openapi":true,"llms_txt":true,"openapi_lists_path":true},"final_url":"https://joi-presign.joi-agent.workers.dev/price?asset=ETH&chain=base","http_status":402}},"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_4SxLSqkYoSgi7RHNLH_ML","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":"Analyzes an X402-enabled URL to decode its payment terms and flag risks before a client pays or signs anything","exampleAgentPrompt":"Before my agent pays for that X402-gated price feed, run a pre-sign risk check on https://joi-presign.joi-agent.workers.dev/price?asset=ETH&chain=base and tell me the risk level, who gets paid, how much USDC, and whether there are any red flags.","exampleUseCases":[{"title":"Screening an unfamiliar X402 API","prompt":"I found this API that costs money per call via X402 — can you check https://some-api.example.com/data for me and tell me if the payment terms are safe, what address it pays to, and whether that address is sanctioned before I let my agent call it?"},{"title":"Validating X402 payment amount and asset","prompt":"Before I integrate this X402 endpoint into my workflow, check https://api.thirdparty.com/report and tell me exactly what asset and how much it charges, whether the network is mainnet or testnet, and if there are any risky approval patterns in the payment terms."},{"title":"Auditing a 402-gated endpoint for drainer patterns","prompt":"Can you run a pre-sign risk analysis on https://nftservice.io/mint-api to see if it has any drainer patterns, blind signing risks, or permit exploits in its X402 payment request before my wallet authorizes anything?"}],"resultDescription":"Returns a structured JSON object with: overall risk level (LOW/MEDIUM/HIGH), a plain-English verdict, a list of findings with any detected risks (drainer patterns, risky approvals, blind signing, sanctions hits), payment options including asset (USDC address and decimals), amount in USD/human/atomic units, pay-to address with sanctions status and verification, network details (chain ID and name), scheme, timeout, and resource metadata describing what the paid URL actually does.","failureModes":["Target URL is not an X402 endpoint (no 402 response) — returns error or no options","Target URL is unreachable or times out — connection error returned","Malformed URL input (not https://) — schema validation error","Target URL returns a 402 but with an unrecognized payment scheme — may return partial findings","Sanctions data temporarily unavailable — sanctioned field may be null"],"whenToPreferThis":"Use this endpoint whenever an AI agent needs to evaluate an X402-gated URL before authorizing payment — especially when integrating third-party X402 APIs, screening unfamiliar pay-per-call services, or building wallets and agent frameworks that must avoid drainer contracts, sanctioned addresses, or deceptive payment terms. It is read-only and never pays or signs anything, making it safe to call as a preflight check.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-12T21:40:48.583Z","isFirstParty":false,"canonicalSlug":"joi-pre-sign-x402-risk-checker-c3fe7065"}