Transaction Simulator
See what a transaction will do before signing: assets in and out, approvals, revert reason.
Simulate a transaction before signing it: what leaves and enters the wallet (native, ERC-20, NFTs, SPL) with USD values, approvals granted (unlimited / to non-contracts), revert reason, gas and fee, plus a risk level. EVM chains via eth_simulateV1 (raw call: from, to, data, value); Solana via simulateTransaction (base64 transaction, unsigned is fine). Nothing is broadcast.
What agents use it for
- Stop an agent from signing a draining transaction
- Preview token and NFT balance changes with USD values
- Catch reverts and unlimited approvals before broadcast
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
chain | "ethereum" | "base" | "arbitrum" | "optimism" | "polygon" | "bsc" | "solana" | yes | Blockchain network (see allowed values) |
from | string | no | EVM: sender address |
to | string | no | EVM: target address |
data | string | no | EVM: calldata hex (default 0x) |
value | string | no | EVM: value in wei (decimal or 0x hex) |
gas | string | no | EVM: optional gas limit |
transaction | string | no | Solana: base64-encoded transaction (legacy or v0; signatures not required) |
Call it
{
"name": "simulate_tx",
"arguments": {
"chain": "ethereum",
"from": "0x28c6c06298d514db089934071355e5743bf21d60",
"to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"data": "0xa9059cbb000000000000000000000000906f87f107b4675dd890b3f8eb2d51885e50e09d00000000000000000000000000000000000000000000000000000000000f4240",
"value": "0"
}
}curl -i -X POST "https://api.ishob.com/v1/crypto/simulate-tx" \
-H "Content-Type: application/json" \
-d '{"chain":"ethereum","from":"0x28c6c06298d514db089934071355e5743bf21d60","to":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","data":"0xa9059cbb000000000000000000000000906f87f107b4675dd890b3f8eb2d51885e50e09d00000000000000000000000000000000000000000000000000000000000f4240","value":"0"}'Paid with x402: the first call returns HTTP 402 with the price; an x402 client (for example @x402/fetch or @x402/mcp) signs a USDC payment and retries. Calls that fail are not charged.
Connect the MCP server: setup for Claude, Cursor and other clients.