simulate_transaction
Run an eth_call against the chain's RPC to simulate a transaction without signing or broadcasting it. Returns { ok, returnData?, revertReason? }. Use this BEFORE prepare_*/send_transaction to verify a contract call does what you expect — e.g. does wrapping ETH by sending to WETH9's fallback succe...
This record as markdown: /tools/io-github-szhygulin-vaultpilot-mcp/simulate-transaction.md
What simulate_transaction does on VaultPilot MCP
AI agents invoke simulate_transaction to trigger actions in VaultPilot MCP. What it does depends on the arguments the agent supplies, and its effects often reach beyond the immediate call: builds kicked off, notifications sent, workflows started.
| Parameter | Type | Required | Description |
|---|---|---|---|
to | object | Yes | |
data | string | — | Hex-encoded calldata. Omit for a plain value transfer. |
from | string | — | msg.sender to simulate from. Omit for a state-independent call; include the user's wallet when the target contract's behavior depends on the caller (e.g. WETH9. |
chain | string | — | |
value | string | — | Value to send with the call, in wei as a decimal string. Omit for 0. Example: "500000000000000000" for 0.5 ETH. |
Parameters from the server's own tool schema.
Why simulate_transaction is rated High
simulate_transaction executes arbitrary contract code via eth_call to determine outcomes. Although it does not broadcast or sign transactions (which would elevate it to Financial/Destructive), it triggers blockchain smart contract execution with user-controlled parameters.
From the tool's definition Tool description states "Run an eth_call against the chain's RPC to simulate a transaction" and explicitly mentions use cases like "does wrapping ETH by sending to WETH9's fallback succeed, does a custom calldata revert" — these are calls to external smart…
Attacks that exploit this kind of access
The rule that runs simulate_transaction safely
PolicyLayer is an MCP gateway: it sits between your AI agents and VaultPilot MCP, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For simulate_transaction, this is the rule to start with:
simulate_transaction stays usable, but rate-capped: a runaway agent can't fire it dozens of times a minute. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect VaultPilot MCP, apply this rule, and every simulate_transaction call is checked against it from then on.
Questions about simulate_transaction
Run an eth_call against the chain's RPC to simulate a transaction without signing or broadcasting it. Returns { ok, returnData?, revertReason? }. Use this BEFORE prepare_*/send_transaction to verify a contract call does what you expect — e.g. does wrapping ETH by sending to WETH9's fallback succeed, does a custom calldata revert, what selector gets hit. For state-dependent calls (WETH deposit credits msg.sender, ERC-20 transfer debits msg.sender), pass the user's wallet as from. Prepared transactions are also re-simulated automatically at send_transaction time — this tool lets the agent check ahead. NEVER call this on a tx that depends on an approval you just submitted but haven't yet waited on: the approval must be included on-chain (poll get_transaction_status until confirmed) before the dependent tx will simulate correctly — otherwise you get a misleading 'insufficient allowance' revert. It is categorised as a Execute tool in the VaultPilot MCP MCP Server, which means it can trigger actions or run processes. Use rate limits and argument validation.
simulate_transaction accepts 5 parameters: to, data, from, chain, value. Required: to. The full parameter table on this page comes from the server's own tool schema.
Register the VaultPilot MCP server in PolicyLayer and add a rule for simulate_transaction: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches VaultPilot MCP. Nothing to install.
simulate_transaction is a Execute tool with high risk. Execute tools should be rate-limited and have argument validation enabled.
Yes. Add a rate_limit block to the simulate_transaction rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for simulate_transaction. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
simulate_transaction is provided by the VaultPilot MCP server (vaultpilot-mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on VaultPilot, and thousands of servers like it.
Across the catalogue