> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server 工具参考

> Tenderly MCP Server 中全部 59 个工具的完整参考。

[Tenderly MCP Server](/ai-tools/overview) 提供 59 个工具，分为七个组。要先将其连接到您的客户端，请参阅 [MCP Server 快速入门](/ai-tools/quickstart)。所有操作项目资源的工具都需要激活的项目，请先调用 `set_active_project`。Virtual Environment 工具需要激活的 Virtual Environment，请调用 `set_active_vnet` 或创建/fork 一个 Virtual Environment（这会自动将其激活）。

<Note>
  您无需按名称调用工具。只需用自然语言描述您想做的事，Claude 会自动选择合适的工具。
</Note>

## 项目与账户

这些工具管理您的会话上下文。大多数其他工具依赖于已设置激活的项目。

| 工具                   | 描述                                                                            |
| -------------------- | ----------------------------------------------------------------------------- |
| `get_user_info`      | 返回您的账户信息（ID、用户名、邮箱）、当前激活的项目，以及激活的 Virtual Environment（ID、RPC URL、网络 ID，如已设置）。 |
| `list_projects`      | 列出您可以访问的所有 Tenderly 项目。支持按名称或 slug 进行可选的搜索过滤。                                 |
| `set_active_project` | 为后续工具调用设置激活的项目。接受 `account_slug` 和 `project_slug`。必须在使用项目范围的工具之前调用。           |

## 网络

| 工具             | 描述                                                                       |
| -------------- | ------------------------------------------------------------------------ |
| `get_networks` | 列出 Tenderly 支持的所有公共 EVM 网络（100 多个）。支持按名称进行可选的搜索过滤。返回网络 ID、名称、slug 和链 ID。 |

## 合约

| 工具                  | 描述                                                                                       |
| ------------------- | ---------------------------------------------------------------------------------------- |
| `get_contract_info` | 检索指定网络上某个合约地址的元数据：合约名称、ABI（如已验证）、编译器版本、EVM 版本、语言、代币标准（ERC-20、ERC-721 等）、创建区块、创建交易和部署者地址。 |

## 交易模拟

在任何 Tenderly 支持的 EVM 网络上模拟并追踪交易，无需消耗 gas 或修改链上状态。

### 核心模拟工具

| 工具                       | 描述                                                                                           |
| ------------------------ | -------------------------------------------------------------------------------------------- |
| `simulate_transaction`   | 模拟一笔交易并返回结果：成功/回滚状态、gas 消耗、解码后的方法名、错误消息和 revert 原因。支持状态覆盖、EIP-1559 字段和自定义区块号。结果会保存到您的项目仪表盘中。 |
| `resimulate_transaction` | 在 Tenderly 的模拟环境中重放一笔已存在的链上交易。适用于调试回滚或表现异常的交易。                                               |
| `trace_transaction`      | 追踪一笔链上交易并返回摘要：状态、gas 消耗、解码后的方法、发送者、接收者和错误详情。                                                 |

### 模拟详情工具

在运行 `simulate_transaction`、`resimulate_transaction` 或 `trace_transaction` 后，使用这些后续工具（配合返回的 `simulation_id` 或 `tx_hash`）以检查执行的特定方面。

| 工具                                     | 描述                                                                         |
| -------------------------------------- | -------------------------------------------------------------------------- |
| `get_simulation_call_trace`            | 扁平化的调用树，每个内部 EVM 调用都包含解码后的函数名、输入、输出和每次调用的 gas。支持 `max_depth` 参数。上限为 256 条。 |
| `get_simulation_events`                | 执行期间发出的解码事件（日志），包括事件名、发出地址和 ABI 解码后的参数。上限为 100 条。                          |
| `get_simulation_state_changes`         | 存储槽差异（地址、键、变化前后的值）以及所有受影响账户的原生代币余额差异。上限为 100 条。                            |
| `get_simulation_asset_transfers`       | 所有代币和原生资产转移：发送者、接收者、代币信息（名称、类型、符号、小数位）和金额。上限为 100 条。                       |
| `get_simulation_exposure_changes`      | 代币授权和额度变化，包括 approval、撤销和 permit。上限为 100 条。                                |
| `get_simulation_balance_changes`       | 每个地址的净余额影响，附带美元价值。上限为 100 条。                                               |
| `get_simulation_gas_breakdown`         | 每次调用的 gas 拆解，包括固有 gas 和退款。gas 值包含子调用。                                      |
| `get_simulation_generated_access_list` | 通过重新模拟交易生成 EIP-2930 access list。适用于 gas 优化。                                |

## Virtual Environments

创建并管理公共 EVM 网络的私有、持久化 fork。Virtual Environments 拥有自己的 RPC 端点，并支持无需私钥的冒充交易。

Virtual Environment 工具使用**有状态会话模型**：将某个 Virtual Environment 设为激活（或创建/fork 一个，会自动激活），后续所有 Virtual Environment 工具都会在其上运行。无需在每次调用中传递 Virtual Environment ID。

| 工具                      | 描述                                                                                                                                                                                                                               |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `set_active_vnet`       | 为后续工具调用设置激活的 Virtual Environment。接受 `vnet_id`。设置后，所有 Virtual Environment 工具都会自动在此 Virtual Environment 上运行。                                                                                                                       |
| `create_vnet`           | 通过在特定区块 fork 公共网络来创建新的 Virtual Environment。接受 `network_id`、可选的 `display_name`、`description`、`block_number`（十六进制）、自定义 `chain_id` 和 `sync_state_enabled`。返回 Virtual Environment 的详情，包括 RPC URL。**自动将新的 Virtual Environment 设为激活。** |
| `list_vnets`            | 列出激活项目中的 Virtual Environments。支持分页（`page`、`per_page`）、状态过滤（`running`、`stopped`、`cloning`）和按名称搜索。                                                                                                                                 |
| `get_vnet`              | 返回激活 Virtual Environment 的完整详情：ID、slug、显示名、状态、描述、fork 配置、链配置和 RPC 端点 URL。                                                                                                                                                        |
| `fork_vnet`             | 将激活的 Virtual Environment fork 为一个新的，保留所有状态（包括已部署的合约和余额）。**自动将新 fork 设为激活。**                                                                                                                                                      |
| `delete_vnet`           | 删除一个 Virtual Environment。这是破坏性操作。会从会话状态中清除激活的 Virtual Environment。                                                                                                                                                               |
| `send_vnet_transaction` | 在激活的 Virtual Environment 上发送并执行一笔交易。发送者地址被冒充，无需私钥。接受 `from`、`to`、`input`（calldata）、`value`（十六进制 wei）和 `gas`。                                                                                                                     |
| `get_vnet_transactions` | 分页列出激活 Virtual Environment 上的交易。返回交易哈希、状态、gas 消耗、区块号和方法。                                                                                                                                                                         |
| `fund_account`          | 通过 RPC 调用 `tenderly_setBalance` 设置激活 Virtual Environment 上任意地址的原生代币余额。接受 `address` 和以十六进制 wei 表示的 `amount`。                                                                                                                      |
| `set_erc20_balance`     | 通过 `tenderly_setErc20Balance` 设置激活 Virtual Environment 上任意地址的 ERC-20 代币余额。接受 `token_address`、`address` 和 `value`。对于代币余额变更，优先使用此工具而非 `set_storage_at`。                                                                            |
| `set_storage_at`        | 通过 `tenderly_setStorageAt` 向合约的特定存储槽写入原始值。接受 `contract_address`、`slot` 和 `value`。用于预言机价格覆盖、协议参数或任何未被更高层工具覆盖的状态。                                                                                                                  |
| `vnet_call`             | 在激活的 Virtual Environment 上执行只读的 `eth_call`。接受 `to`、`input`（calldata）和可选的 `from`。结果在 10 KB 处截断。                                                                                                                                   |
| `vnet_multicall`        | 在单次 RPC 往返中执行最多 10 个只读 `eth_call` 请求的批处理。每次调用接受 `to`、`input` 和可选的 `from`。结果按每个请求单独截断在 10 KB。                                                                                                                                     |
| `mine_block`            | 通过 `evm_mine` 在激活的 Virtual Environment 上挖出一个区块。在 `increase_time` 后使用以应用时间变化。                                                                                                                                                     |
| `increase_time`         | 通过 `evm_increaseTime` 将 Virtual Environment 的时钟按指定秒数向前推进。始终紧接着使用 `mine_block` 将时间变化提交到新区块。                                                                                                                                       |
| `snapshot_vnet`         | 通过 `evm_snapshot` 保存当前 Virtual Environment 状态并返回快照 ID。用于分支测试场景，先在测试前拍摄快照，再回滚以尝试不同路径。                                                                                                                                             |
| `revert_vnet`           | 通过 `evm_revert` 将 Virtual Environment 恢复到之前保存的快照。快照在使用时会被消耗，如果需要再次回滚，请重新拍摄快照。                                                                                                                                                    |

## Virtual Environment 模拟与追踪

在激活的 Virtual Environment 上模拟并追踪交易。这些工具使用 operation ID，而不是网络级的交易哈希。

### 核心 Virtual Environment 模拟工具

| 工具                            | 描述                                                                                     |
| ----------------------------- | -------------------------------------------------------------------------------------- |
| `simulate_vnet_transaction`   | 在 Virtual Environment 上模拟一笔交易，不修改其状态。返回状态、gas 消耗、解码后的方法和用于后续工具的 `operation_id`。支持状态覆盖。 |
| `resimulate_vnet_transaction` | 通过 `operation_id`（来自 `get_vnet_transactions`）重新追踪先前执行的 Virtual Environment 交易。         |
| `trace_vnet_transaction`      | 返回解码后的执行追踪摘要：合约名、函数名、解码后的输入参数、解码后的输出、gas 消耗和错误详情。                                      |

### Virtual Environment 模拟详情工具

配合上面工具返回的 `operation_id` 使用。它们在激活的 Virtual Environment 上运行。

| 工具                                          | 描述                                                       |
| ------------------------------------------- | -------------------------------------------------------- |
| `get_vnet_simulation_call_trace`            | Virtual Environment 交易的扁平化调用追踪，包括每次调用的类型、地址、gas 和 value。 |
| `get_vnet_simulation_events`                | Virtual Environment 交易期间发出的解码事件：事件名和发出地址。                |
| `get_vnet_simulation_gas_breakdown`         | 按 gas 使用排序的每次调用 gas 拆解。显示总 gas 和消耗最多的项。                  |
| `get_vnet_simulation_state_changes`         | 存储槽差异：每个被修改槽的地址、键、变化前后的值。                                |
| `get_vnet_simulation_generated_access_list` | 由 Virtual Environment 交易执行生成的 EIP-2930 access list。      |
| `get_vnet_simulation_balance_changes`       | 每个地址的净余额变化，附带美元价值。                                       |
| `get_vnet_simulation_asset_changes`         | 代币和原生资产转移：类型、from、to、金额和代币信息。                            |

## 高级追踪导航

16 个工具用于导航包含数百或数千次内部调用的复杂交易。当 `get_simulation_call_trace` 或 `get_vnet_simulation_call_trace` 返回被截断的结果时使用，或当您需要搜索、钻取或汇总大型追踪但不加载完整树时使用。

### 链上与模拟

| 工具                          | 描述                                                                           |
| --------------------------- | ---------------------------------------------------------------------------- |
| `get_trace_stats`           | 加载追踪前进行快速大小检查，返回总调用数、最大深度、错误数和唯一合约数。用于决定应用哪种导航策略。                            |
| `get_trace_skeleton`        | 对于大型被截断的追踪，返回压缩后的调用树（函数名、合约、深度、错误标志，不含解码参数）。使用返回的 `absolute_position` 值进行钻取。 |
| `get_call_trace_node`       | 展开追踪中被截断的特定节点。当某个节点报告 `omitted_children > 0` 时使用。                            |
| `search_call_trace`         | 在大型追踪中搜索特定调用，无需加载完整树。按地址、函数名或错误状态过滤。                                         |
| `get_subtree_events`        | 返回某个特定子树的事件，而不是整个交易的事件。当 `get_simulation_events` 返回过多事件时使用。                  |
| `get_subtree_state_changes` | 返回某个特定子树的存储差异。                                                               |
| `find_failures`             | 一次性查找交易中所有错误位置，返回每个失败节点的合约名、函数和解码后的错误。                                       |
| `get_error_path`            | 显示从根到最深错误的追责链条，每一层都包含解码后的输入/输出。这是调试复杂交易 revert 的首选工具。                        |
| `get_transaction_fund_flow` | 显示交易中有序的资金流动，谁向谁发送了什么，附带美元价值和每个地址的净流量。仅限链上交易。                                |

### Virtual Environment 对应工具

上述工具在激活 Virtual Environment 上交易的镜像版本。

| 工具                         | 描述                                              |
| -------------------------- | ----------------------------------------------- |
| `get_vnet_trace_stats`     | `get_trace_stats` 的 Virtual Environment 版本。     |
| `get_vnet_trace_skeleton`  | `get_trace_skeleton` 的 Virtual Environment 版本。  |
| `get_vnet_call_trace_node` | `get_call_trace_node` 的 Virtual Environment 版本。 |
| `search_vnet_call_trace`   | `search_call_trace` 的 Virtual Environment 版本。   |
| `get_vnet_subtree_events`  | `get_subtree_events` 的 Virtual Environment 版本。  |
| `find_vnet_failures`       | `find_failures` 的 Virtual Environment 版本。       |
| `get_vnet_error_path`      | `get_error_path` 的 Virtual Environment 版本。      |
