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 Environment tools require an active Virtual Environment, call set_active_vnet or create/fork a Virtual Environment (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 Environment (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.
| 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. |
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 Environments
Create and manage private, persistent forks of public EVM networks. Virtual Environments have their own RPC endpoints and support impersonated transactions without private keys.
Virtual Environment tools use a stateful session model: set a Virtual Environment as active (or create/fork one, which auto-activates it), and all subsequent Virtual Environment tools operate on it. No need to pass Virtual Environment IDs to every call.
| Tool | Description |
|---|
set_active_vnet | Sets the active Virtual Environment for subsequent tool calls. Accepts a vnet_id. Once set, all Virtual Environment tools operate on this Virtual Environment automatically. |
create_vnet | Creates a new Virtual Environment 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 Virtual Environment details including RPC URLs. Automatically sets the new Virtual Environment as active. |
list_vnets | Lists Virtual Environments 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 Environment: ID, slug, display name, status, description, fork config, chain config, and RPC endpoint URLs. |
fork_vnet | Forks the active Virtual Environment into a new one, preserving all state including deployed contracts and balances. Automatically sets the new fork as active. |
delete_vnet | Deletes a Virtual Environment. This is a destructive action. Clears the active Virtual Environment from session state. |
send_vnet_transaction | Sends and executes a transaction on the active Virtual Environment. 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 Environment 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 Environment 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 Virtual Environment 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 Virtual Environment. 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 Virtual Environment via evm_mine. Use after increase_time to apply the time change. |
increase_time | Advances the Virtual Environment 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 Virtual Environment 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 Virtual Environment 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 Environment simulations & traces
Simulate and trace transactions on the active Virtual Environment. These tools work with operation IDs rather than network-level tx hashes.
| Tool | Description |
|---|
simulate_vnet_transaction | Simulates a transaction on a Virtual Environment 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 Virtual Environment 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. |
Use these with the operation_id from the tools above. They operate on the active Virtual Environment.
| Tool | Description |
|---|
get_vnet_simulation_call_trace | Flattened call trace for a Virtual Environment transaction with call type, addresses, gas, and value per call. |
get_vnet_simulation_events | Decoded events emitted during a Virtual Environment 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 Virtual Environment 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 Environment equivalents
Mirror of the tools above for transactions on the active Virtual Environment.
| Tool | Description |
|---|
get_vnet_trace_stats | Virtual Environment equivalent of get_trace_stats. |
get_vnet_trace_skeleton | Virtual Environment equivalent of get_trace_skeleton. |
get_vnet_call_trace_node | Virtual Environment equivalent of get_call_trace_node. |
search_vnet_call_trace | Virtual Environment equivalent of search_call_trace. |
get_vnet_subtree_events | Virtual Environment equivalent of get_subtree_events. |
find_vnet_failures | Virtual Environment equivalent of find_failures. |
get_vnet_error_path | Virtual Environment equivalent of get_error_path. |