Verify an unsigned transaction before signing
verify_txRun SwapChan's calldata guard + simulation on any unsigned tx and return a verdict (ok / caution / danger), findings, balance-diff simulation and a plain-language summary for human sign-off. Covers unlimited approvals, approvals to a spender other than expected.spender, including inside multicall and Safe batches (an exact-balance approval to a drainer is still danger when you name the spender), Permit2, setApprovalForAll, Safe DELEGATECALL, proxy upgrades, EIP-7702, ownership transfers, address poisoning lookalikes, minOut vs quote, Solana program allowlist + simulateTransaction, Tron AccountPermissionUpdate. Always show the summary to the human and get an explicit yes for THIS tx before their wallet signs. Trustless: read-only, never signs. Result includes display markdown with chan images: show it to the user. How to combine this with the other tools: swapchan_playbook (workflows: find-money, best-swap, rebalance, revoke-approvals, bridge-stuck, token-safety, recover-old-wallet).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"chainId": "<chainId>",
"tx": "<tx>"
},
"name": "verify_tx"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tx | Yes | EVM {from,to,data,value}, Solana base64 tx, or Tron tx JSON | |
| chainId | Yes | Chain id (1, 8453, 42161, 10, 137, 56, 43114, 59144, 534352, 792703809 Solana, 8253038 Bitcoin, 728126428 Tron) or name (eth, base, arbitrum, optimism, polygon, bnb, avalanche, linea, scroll, solana, bitcoin, tron). | |
| expected | No | expected.recipient and expected.minOut are checked against the simulated outcome (pass tx.from); if they cannot be checked, the verdict is danger. |