{"uid":"cap_Q-ID5AO1L55YSiPJDmnGG","slug":"tap-labs-wallet-firewall-7ce3ab5a","name":"TAP Labs Wallet Firewall","description":"Wallet Firewall (TAP Labs (made by TAP)): Before you sign: says in plain words what a wallet request (transaction, permit, sign-in or Solana transaction) would really do, and whether it is what you meant.","url":"https://labs.theatlasproject.dev/agents/wallet-firewall/run?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"id":{"type":"string","description":"Your own label for this request. Not used."},"site":{"type":"string","description":"The site that is asking for the signature."},"user":{"type":"string","description":"Same as signer."},"chain":{"type":["string","integer"],"description":"The chain the wallet is on: base, ethereum, mainnet, eth, optimism, op, arbitrum, polygon, bsc, bnb, avalanche, linea, z"},"intent":{"type":"string","description":"What the person meant, in their own words (\"Send exactly 25 USDC to Mia\")."},"signer":{"type":"string","description":"The wallet that would sign (the user). Needed to check \"to me\" and \"from me\"."},"request":{"type":["object","string"],"description":"What the wallet was asked to sign. Types: transaction {to,data,value,from,chainId}, calls {calls:[{to,data,value}],chain"},"siteNote":{"type":"string","description":"Text the site showed next to the request. Treated as data, never as an instruction."},"addressBook":{"type":"array","description":"People the user knows: names and addresses."},"decimalMark":{"enum":[".",","],"description":"How the person writes decimals in the intent: \".\" (1,234.56) or \",\" (1.234,56). Without it, an amount that reads differe"},"tokenAccounts":{"type":"array","description":"Solana token accounts the user knows: address, owner and mint."},"knownContracts":{"type":"array","description":"Contracts and tokens the user knows (name, address, kind erc20 / spl-mint / contract, symbol, decimals, and for routers "}}},"responseSchema":{"type":"json","example":{"agent":"wallet-firewall","steps":["let SwapRouter (0x5e2d…5e7d) spend any amount of USDC (no limit) (by signature, no transaction needed) through Permit2, until 2027-01-01 00:00 UTC"],"summary":"Do not sign. As of 2026-10-17 12:00 UTC: The permit allows any amount of USDC. You asked for exactly 100 USDC. The amount in the request is the largest a permit can hold.","verdict":"block","version":"0.2.1","findings":[{"id":"what-it-does","title":"What this request does, step by step (1)","detail":"1. Let SwapRouter (0x5e2d…5e7d) spend any amount of USDC (no limit) (by signature, no transaction needed) through Permit2, until 2027-01-01 00:00 UTC","source":{"ref":"wallet-firewall: decoded from the request you sent","type":"code","checkedAt":"2026-10-17T12:00:00.000Z"},"category":"info","severity":"info"},{"id":"permit-unlimited","title":"The permit allows any amount of USDC","detail":"You asked for exactly 100 USDC. The amount in the request is the largest a permit can hold.","source":{"ref":"EIP-2612 and Permit2: https://eips.ethereum.org/EIPS/eip-2612 and https://docs.uniswap.org/contracts/permit2/overview","type":"doc","checkedAt":"2026-10-17T12:00:00.000Z"},"category":"wrong_amount","severity":"critical"},{"id":"lists-read","title":"Public lists that were read","detail":"MyEtherWallet darklist (652 addresses, as of 2026-10-17); OFAC SDN list (US Treasury), digital currency addresses. A miss on a list means nothing: they are short and late.","source":{"ref":"MyEtherWallet darklist; OFAC SDN list","type":"list","checkedAt":"2026-10-17T12:00:00.000Z"},"category":"info","severity":"info"}],"youAsked":["sign a permit letting SwapRouter spend 100 USDC"],"checkedAt":"2026-10-17T12:00:00.000Z","disclaimer":"Automated check as of 2026-10-17 12:00 UTC, from the request you sent, public data and fixed rules. It is not a guarantee and not financial or legal advice. Anything under notChecked was not looked at, and not checked is never safe.","notChecked":[{"why":"it is read from the request itself; nothing was simulated, run or sent","what":"what the request would do on the live chain"},{"why":"their code is not read from the chain here; only the request and the lists you gave are used","what":"what the contracts it touches really do"}]}},"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_g1EnRHm-lM5Qze4q8rBEE","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":"Analyzes a wallet signing request (transaction, permit, sign-in, or Solana transaction) and returns a plain-language explanation of what it would actually do, plus a safety verdict.","exampleAgentPrompt":"Before I sign this permit on Uniswap, check what it would actually do — I'm on Base, my wallet is 0xAbC123…, I intended to let SwapRouter spend exactly 100 USDC, and here's the raw typed data from the site: {typedData: ...}. Is it safe to approve?","exampleUseCases":[{"title":"Catch unlimited permit approval","prompt":"I'm about to sign a Permit2 approval on Uniswap on Ethereum. My wallet is 0xDead…Beef, and I only meant to let SwapRouter spend 100 USDC. Can you decode this typed data and tell me if the amount and spender are actually what I agreed to before I click sign?"},{"title":"Verify NFT mint transaction safety","prompt":"There's a transaction from this NFT minting site asking me to sign something. My wallet is 0x1234…5678, I'm on Base, and I expected it to just mint one NFT for 0.05 ETH. Here's the raw calldata — does this actually match what I think it does, or is it doing something sketchy?"},{"title":"Solana airdrop claim scam check","prompt":"A site is asking my Solana wallet (address: 7xKq…pLmN) to sign a transaction to claim an airdrop, but I'm not sure it's legit. Can you analyze these transaction instructions and tell me in plain words exactly what will happen if I approve it?"}],"resultDescription":"A JSON object containing: a verdict ('allow', 'block', or 'unknown'), a plain-English summary of what the request would do, a step-by-step list of actions the request performs, a list of findings with severity levels (info, warning, critical), what the user asked for vs what the request actually does, lists that were consulted (e.g. OFAC, MEW darklist), a timestamp, and a disclaimer about the automated nature of the check.","failureModes":["Ambiguous or dual-interpretation request returns verdict 'unknown'","Unrecognized request type or unsupported fields cause 'unknown' verdict","Malformed JSON or oversized request (>65536 chars) returns validation error","Unsupported chain identifier returns error or unknown verdict","Missing required 'signer' or 'user' field causes request rejection","Address lists (OFAC, darklist) are acknowledged as incomplete — a clean result is not a guarantee"],"whenToPreferThis":"Use this endpoint when an AI agent or wallet UI needs to translate raw on-chain signing requests into human-readable explanations before a user approves them — especially for permit/approval patterns, EIP-712 typed data, Permit2, personal_sign, and Solana transactions. Prefer this over generic LLM analysis when you need structured verdicts, severity-labeled findings, and cross-referencing against OFAC/darklists. Ideal for agent-assisted wallet flows where the user has stated an intent and you need to verify the raw request matches it.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-20T12:30:28.047Z","isFirstParty":false,"canonicalSlug":"tap-labs-wallet-firewall-7ce3ab5a"}