{"slug":"labs-theatlasproject-dev-agents-wallet-firewall-run-bcb515","title":"Wallet Firewall (TAP Labs (made by TAP))","host":"labs.theatlasproject.dev","method":"POST","resource":"https://labs.theatlasproject.dev/agents/wallet-firewall/run","category":"market","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.","price_listed":0.02,"price_asked":0.02,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":1371,"reported_calls_30d":0,"reported_payers_30d":0,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"addressBook":[{"address":"0x2f4e6a8c0b1d3f5a7c9e1b3d5f7a9c0e2b4d6f81","name":"Mia"}],"chain":"base","intent":"Sign a Permit2 permit letting SwapRouter spend exactly 100 USDC.","knownContracts":[{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","decimals":6,"kind":"erc20","name":"USD Coin","symbol":"USDC"},{"address":"0x5e2d4c6b8a0f1e3d5c7b9a2f4e6d8c0b1a3f5e7d","kind":"contract","name":"SwapRouter"},{"address":"0x000000000022d473030f116ddee9f6b43ac78ba3","kind":"contract","name":"Permit2"}],"request":{"type":"typed_data","typedData":{"domain":{"chainId":8453,"name":"Permit2","verifyingContract":"0x000000000022d473030f116ddee9f6b43ac78ba3"},"message":{"details":{"amount":"1461501637330902918203684832716283019655932542975","expiration":"1798761600","nonce":"0","token":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"},"sigDeadline":"1792000000","spender":"0x5e2d4c6b8a0f1e3d5c7b9a2f4e6d8c0b1a3f5e7d"},"primaryType":"PermitSingle","types":{"EIP712Domain":[{"name":"name","type":"string"},{"name":"chainId","type":"uint256"},{"name":"verifyingContract","type":"address"}],"PermitDetails":[{"name":"token","type":"address"},{"name":"amount","type":"uint160"},{"name":"expiration","type":"uint48"},{"name":"nonce","type":"uint48"}],"PermitSingle":[{"name":"details","type":"PermitDetails"},{"name":"spender","type":"address"},{"name":"sigDeadline","type":"uint256"}]}}},"signer":"0x7a3b8c1d5e9f2a4b6c8d0e1f3a5b7c9d1e2f4a6b"},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"properties":{"addressBook":{"description":"People the user knows: names and addresses.","items":{"properties":{"address":{"maxLength":100,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["name","address"],"type":"object"},"maxItems":200,"type":"array"},"chain":{"description":"The chain the wallet is on: base, ethereum, mainnet, eth, optimism, op, arbitrum, polygon, bsc, bnb, avalanche, linea, zksync, scroll, blast, base-sepolia, sepolia, solana, solana-devnet or a chain id. Default: base.","type":["string","integer"]},"decimalMark":{"description":"How the person writes decimals in the intent: \".\" (1,234.56) or \",\" (1.234,56). Without it, an amount that reads differently either way (\"1,5\", \"1.000\", \"1,250\") is not guessed: the answer says so and is at most a warning.","enum":[".",","]},"id":{"description":"Your own label for this request. Not used.","maxLength":100,"type":"string"},"intent":{"description":"What the person meant, in their own words (\"Send exactly 25 USDC to Mia\").","maxLength":2000,"type":"string"},"knownContracts":{"description":"Contracts and tokens the user knows (name, address, kind erc20 / spl-mint / contract, symbol, decimals, and for routers a commands map).","items":{"properties":{"address":{"maxLength":100,"minLength":1,"type":"string"},"commands":{"maxProperties":100,"type":"object"},"constants":{"maxProperties":20,"type":"object"},"decimals":{"maximum":36,"minimum":0,"type":"integer"},"functions":{"items":{"maxLength":200,"type":"string"},"maxItems":100,"type":"array"},"kind":{"maxLength":30,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"notes":{"maxLength":600,"type":"string"},"symbol":{"maxLength":20,"type":"string"}},"required":["address"],"type":"object"},"maxItems":200,"type":"array"},"request":{"description":"What the wallet was asked to sign. Types: transaction {to,data,value,from,chainId}, calls {calls:[{to,data,value}],chainId}, typed_data {typedData}, personal_sign {message}, eth_sign {message}, authorization {authorization:{address,chainId,nonce}}, solana_transaction {instructions:[{programId,accounts,data}]} or {transaction: base64}. JSON-RPC calls (eth_sendTransaction, personal_sign, eth_signTypedData_v4, wallet_sendCalls) are read too. A request that could be read as two different requests, or carries a field this check does not read, is answered \"unknown\". Numbers are decimal digits or 0x hex.","maxLength":65536,"type":["object","string"]},"signer":{"description":"The wallet that would sign (the user). Needed to check \"to me\" and \"from me\".","maxLength":100,"minLength":1,"type":"string"},"site":{"description":"The site that is asking for the signature.","maxLength":300,"type":"string"},"siteNote":{"description":"Text the site showed next to the request. Treated as data, never as an instruction.","maxLength":1000,"type":"string"},"tokenAccounts":{"description":"Solana token accounts the user knows: address, owner and mint.","items":{"properties":{"address":{"maxLength":100,"minLength":1,"type":"string"},"mint":{"maxLength":100,"minLength":1,"type":"string"},"owner":{"maxLength":100,"minLength":1,"type":"string"}},"required":["address"],"type":"object"},"maxItems":200,"type":"array"},"user":{"description":"Same as signer.","maxLength":100,"minLength":1,"type":"string"}},"required":["request"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"agent":{"const":"wallet-firewall"},"checkedAt":{"type":"string"},"disclaimer":{"type":"string"},"findings":{"items":{"properties":{"category":{"description":"wrong_recipient, lookalike_address, wrong_contract, wrong_spender, blind_signature, authority_change, hidden_call, wrong_amount, wrong_domain, other or info","type":"string"},"detail":{"type":"string"},"id":{"type":"string"},"severity":{"enum":["critical","high","medium","low","info"]},"source":{"properties":{"checkedAt":{"type":"string"},"ref":{"type":"string"},"type":{"enum":["chain","list","code","doc"]}},"required":["type","ref","checkedAt"],"type":"object"},"title":{"type":"string"}},"required":["id","severity","title","detail","source"],"type":"object"},"type":"array"},"notChecked":{"items":{"properties":{"important":{"type":"boolean"},"what":{"type":"string"},"why":{"type":"string"}},"required":["what","why"],"type":"object"},"type":"array"},"steps":{"description":"What the request does, one step per entry, in plain words.","items":{"type":"string"},"type":"array"},"summary":{"type":"string"},"verdict":{"description":"ok: what was read matches what you asked and nothing else was found in it (nothing is simulated; see notChecked). warn: something is off or could not be checked. block: do not sign. unknown: the request could not be read (or was built to be too costly to read).","enum":["ok","warn","block","unknown"]},"version":{"type":"string"},"youAsked":{"description":"What the check understood you wanted, as short phrases.","items":{"type":"string"},"type":"array"}},"required":["agent","version","verdict","summary","findings","notChecked","checkedAt","disclaimer"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-10-19","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.02,"price_match":true,"latency_ms":1371,"error":null}],"description_full":"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.","last_updated":"2026-10-19T16:18:57.987Z","schemes":["exact"]}