Tools Reference
The Tenderly MCP Server exposes 59 tools organized into seven groups. All tools that operate on project resources require an active project — call set_active_project first. Virtual TestNet tools require an active VNet — call set_active_vnet or create/fork a VNet (which auto-activates it).
You don’t need to call tools by name. Just describe what you want in natural language and Claude will pick the right tools automatically.
Project & account
These tools manage your session context. Most other tools depend on having an active project set.
| Tool | Description |
|---|---|
get_user_info | Returns your account info (ID, username, email), the currently active project, and the active Virtual TestNet (ID, RPC URL, network ID) if set. |
list_projects | Lists all Tenderly projects accessible to you. Supports optional search filtering by name or slug. |
set_active_project | Sets the active project for subsequent tool calls. Accepts account_slug and project_slug. Must be called before using project-scoped tools. |
Networks
| Tool | Description |
|---|---|
get_networks | Lists all public EVM networks supported by Tenderly (100+). Supports optional search filtering by name. Returns network ID, name, slug, and chain ID. |
Contracts
| Tool | Description |
|---|---|
get_contract_info | Retrieves metadata for a contract address on a given network: contract name, ABI (if verified), compiler version, EVM version, language, token standards (ERC-20, ERC-721, etc.), creation block, creation transaction, and deployer address. |
Transaction simulations
Simulate and trace transactions on any Tenderly-supported EVM network without spending gas or modifying on-chain state.
Core simulation tools
| Tool | Description |
|---|---|
simulate_transaction | Simulates a transaction and returns the outcome: success/revert status, gas used, decoded method name, error message, and revert reason. Supports state overrides, EIP-1559 fields, and custom block numbers. Results are persisted to your project dashboard. |
resimulate_transaction | Replays an existing on-chain transaction in Tenderly’s simulation environment. Useful for debugging transactions that reverted or behaved unexpectedly. |
trace_transaction | Traces an on-chain transaction and returns a summary: status, gas used, decoded method, sender, recipient, and error details. |
Simulation detail tools
After running simulate_transaction, resimulate_transaction, or trace_transaction, use these follow-up tools with the returned simulation_id or tx_hash to inspect specific aspects of the execution.
| Tool | Description |
|---|---|
get_simulation_call_trace | Flattened call tree — every internal EVM call with decoded function names, inputs, outputs, and per-call gas. Supports max_depth parameter. Capped at 256 entries. |
get_simulation_events | Decoded events (logs) emitted during execution, including event names, emitting addresses, and ABI-decoded parameters. Capped at 100 entries. |
get_simulation_state_changes | Storage slot diffs (address, key, before/after values) and native balance diffs for all affected accounts. Capped at 100 entries. |
get_simulation_asset_transfers | All token and native asset transfers: sender, recipient, token info (name, type, symbol, decimals), and amount. Capped at 100 entries. |
get_simulation_exposure_changes | Token approval and allowance changes — approvals, revocations, and permits. Capped at 100 entries. |
get_simulation_balance_changes | Net per-address balance impact with USD dollar values. Capped at 100 entries. |
get_simulation_gas_breakdown | Per-call gas breakdown including intrinsic gas and refunds. Gas values are inclusive of subcalls. |
get_simulation_generated_access_list | Generates an EIP-2930 access list by re-simulating the transaction. Useful for gas optimization. |
Virtual TestNets
Create and manage private, persistent forks of public EVM networks. Virtual TestNets have their own RPC endpoints and support impersonated transactions without private keys.
VNet tools use a stateful session model: set a VNet as active (or create/fork one, which auto-activates it), and all subsequent VNet tools operate on it. No need to pass VNet IDs to every call.
| Tool | Description |
|---|---|
set_active_vnet | Sets the active Virtual TestNet for subsequent tool calls. Accepts a vnet_id. Once set, all VNet tools operate on this VNet automatically. |
create_vnet | Creates a new Virtual TestNet by forking a public network at a specific block. Accepts network_id, optional display_name, description, block_number (hex), custom chain_id, and sync_state_enabled. Returns the VNet details including RPC URLs. Automatically sets the new VNet as active. |
list_vnets | Lists Virtual TestNets in the active project. Supports pagination (page, per_page), status filtering (running, stopped, cloning), and search by name. |
get_vnet | Returns full details of the active Virtual TestNet: ID, slug, display name, status, description, fork config, chain config, and RPC endpoint URLs. |
fork_vnet | Forks the active Virtual TestNet into a new one, preserving all state including deployed contracts and balances. Automatically sets the new fork as active. |
delete_vnet | Deletes a Virtual TestNet. This is a destructive action. Clears the active VNet from session state. |
send_vnet_transaction | Sends and executes a transaction on the active Virtual TestNet. The sender address is impersonated — no private key needed. Accepts from, to, input (calldata), value (hex wei), and gas. |
get_vnet_transactions | Lists transactions on the active Virtual TestNet with pagination. Returns transaction hash, status, gas used, block number, and method. |
fund_account | Sets the native token balance of any address on the active Virtual TestNet by calling tenderly_setBalance via RPC. Accepts address and amount in hex wei. |
set_erc20_balance | Sets the ERC-20 token balance of any address on the active VNet via tenderly_setErc20Balance. Accepts token_address, address, and value. Prefer this over set_storage_at for token balance changes. |
set_storage_at | Writes a raw value to a specific storage slot on a contract via tenderly_setStorageAt. Accepts contract_address, slot, and value. Use for oracle price overrides, protocol parameters, or any state not covered by higher-level tools. |
vnet_call | Executes a read-only eth_call on the active VNet. Accepts to, input (calldata), and optional from. Results are truncated at 10 KB. |
vnet_multicall | Executes a batch of up to 10 read-only eth_call requests in a single RPC round-trip. Each call accepts to, input, and optional from. Results are truncated individually at 10 KB. |
mine_block | Mines a single block on the active VNet via evm_mine. Use after increase_time to apply the time change. |
increase_time | Advances the VNet clock by a specified number of seconds via evm_increaseTime. Always follow with mine_block to commit the time change to a new block. |
snapshot_vnet | Saves the current VNet state and returns a snapshot ID via evm_snapshot. Use for branching test scenarios — snapshot before a test, then revert to try a different path. |
revert_vnet | Restores the VNet to a previously saved snapshot via evm_revert. The snapshot is consumed on use — take a new snapshot if you need to revert again. |
Virtual TestNet simulations & traces
Simulate and trace transactions on the active Virtual TestNet. These tools work with operation IDs rather than network-level tx hashes.
Core VNet simulation tools
| Tool | Description |
|---|---|
simulate_vnet_transaction | Simulates a transaction on a VNet without modifying its state. Returns status, gas used, decoded method, and an operation_id for follow-up tools. Supports state overrides. |
resimulate_vnet_transaction | Re-traces a previously executed VNet transaction by its operation_id (from get_vnet_transactions). |
trace_vnet_transaction | Returns a decoded execution trace summary: contract name, function name, decoded input parameters, decoded output, gas used, and error details. |
VNet simulation detail tools
Use these with the operation_id from the tools above. They operate on the active VNet.
| Tool | Description |
|---|---|
get_vnet_simulation_call_trace | Flattened call trace for a VNet transaction with call type, addresses, gas, and value per call. |
get_vnet_simulation_events | Decoded events emitted during a VNet transaction: event name and emitting address. |
get_vnet_simulation_gas_breakdown | Per-call gas breakdown sorted by gas usage. Shows total gas and top consumers. |
get_vnet_simulation_state_changes | Storage slot diffs: address, key, before/after values for each modified slot. |
get_vnet_simulation_generated_access_list | EIP-2930 access list generated from the VNet transaction execution. |
get_vnet_simulation_balance_changes | Net per-address balance changes with dollar values. |
get_vnet_simulation_asset_changes | Token and native asset transfers: type, from, to, amount, and token info. |
Advanced trace navigation
16 tools for navigating complex transactions with hundreds or thousands of internal calls. Use these when get_simulation_call_trace or get_vnet_simulation_call_trace returns truncated results, or when you need to search, drill into, or summarize a large trace without loading the full tree.
On-chain & simulation
| Tool | Description |
|---|---|
get_trace_stats | Quick size check before loading a trace — returns total calls, max depth, error count, and unique contracts. Use to decide which navigation strategy to apply. |
get_trace_skeleton | Returns a compressed call tree (function name, contract, depth, error flag — no decoded args) for large truncated traces. Use the returned absolute_position values to drill in. |
get_call_trace_node | Expands a specific truncated node in the trace. Use when a node reports omitted_children > 0. |
search_call_trace | Searches a large trace for specific calls without loading the full tree. Filter by address, function name, or error status. |
get_subtree_events | Returns events from one specific subtree instead of the full transaction. Use when get_simulation_events returns too many events. |
get_subtree_state_changes | Returns storage diffs from one specific subtree. |
find_failures | Finds all error locations in a transaction at once — returns every failing node with contract name, function, and decoded error. |
get_error_path | Shows the blame chain from root to the deepest error with decoded inputs/outputs at each level. The go-to tool for debugging reverts in complex transactions. |
get_transaction_fund_flow | Shows ordered money movement in a transaction — who sent what to whom with USD values and net flow per address. On-chain transactions only. |
Virtual TestNet equivalents
Mirror of the tools above for transactions on the active Virtual TestNet.
| Tool | Description |
|---|---|
get_vnet_trace_stats | VNet equivalent of get_trace_stats. |
get_vnet_trace_skeleton | VNet equivalent of get_trace_skeleton. |
get_vnet_call_trace_node | VNet equivalent of get_call_trace_node. |
search_vnet_call_trace | VNet equivalent of search_call_trace. |
get_vnet_subtree_events | VNet equivalent of get_subtree_events. |
find_vnet_failures | VNet equivalent of find_failures. |
get_vnet_error_path | VNet equivalent of get_error_path. |