The Tenderly MCP Server exposes 59 tools organized into seven groups. To connect it to your client first, follow the MCP Server quickstart. 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. |