PWN-MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PWN-MCPanalyze heap after the second free"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PWN-MCP
面向 CTF Pwn 题的 AI 辅助调试平台。基于 MCP(Model Context Protocol)协议,让 AI 模型直接操作远程靶机上的 GDB、与 CTF 服务交互、分析堆状态,实现自动化堆利用。
架构
AI (MCP Client) ──stdio──▶ PWN-MCP Server ──SSH──▶ 远程靶机
│ ├─ GDB + heap_logger.py
│ ├─ CTF binary (socat)
│ └─ /tmp/heap_*.json
└── 本地 IDA headlessRelated MCP server: gdb-mcp
安装
pip install -e .依赖:mcp、paramiko
运行
# 以下三种方式均可
ctf-debugger
python -m src
python src/server.pyMCP 客户端配置
{
"mcpServers": {
"ctf-debugger": {
"command": "python",
"args": ["-m", "src"],
"cwd": "/path/to/PWN-MCP"
}
}
}模块总览
模块 | 文件 | 职责 |
MCP Server |
| FastMCP 入口,注册全部工具组,stdio transport |
SSH Manager |
| 单例 SSH 连接管理(paramiko),提供 exec/upload/download |
GDB Controller |
| 单例 GDB 会话控制,通过 SSH PTY Channel 操控远程 GDB |
CTF Connector |
| 单例 CTF 服务连接,SSH direct-tcpip 端口转发,pwntools 风格接口 |
Heap Analyzer |
| 解析 heap_logger 产生的 JSON(delta/snapshot),过滤与格式化 |
GDB Plugin |
| 上传到靶机的 GDB Python 插件,hook malloc/calloc/realloc/free |
MCP Tools
SSH 工具组(src/tools/ssh_tools.py)
Tool | 说明 |
| 建立 SSH 连接(密钥/密码认证) |
| 远程执行 shell 命令 |
| SFTP 上传文件 |
| SFTP 下载文件内容 |
| 断开 SSH 连接 |
GDB 工具组(src/tools/gdb_tools.py)
Tool | 说明 |
| 启动 GDB 会话,可加载 heap_logger.py 插件 |
| 运行目标程序 |
| 继续执行(前台) |
|
|
| Ctrl-C 中断程序 |
| 暂停程序(优先 GDB |
| kill + run 重启 |
| 退出 GDB 会话 |
| 执行任意 GDB/pwndbg/gef 命令 |
| 内存 dump(bytes + words 双视图,支持 GDB 表达式) |
| 查看 glibc malloc chunk header(prev_size/size + pwndbg malloc_chunk) |
| 围绕 source chunk 查看溢出窗口内存 |
| 读取 GDB 输出缓冲区(不等待 prompt) |
Heap 分析工具组(src/tools/heap_tools.py)
请求粒度追踪
Tool | 说明 |
| 标记堆操作阶段开始 |
| 结束阶段,返回增量 delta(支持 caller/地址/类型过滤) |
| 获取完整堆状态快照(所有活跃 chunk) |
| 快速查看堆统计概览 |
| 对最近一次 delta 做二次查询过滤 |
| 查询完整文本日志 heaplog.txt |
Bin 与 Chunk 追踪
Tool | 说明 |
| 导出 glibc bin 状态 JSON(fastbins/unsorted/smallbins/largebins) |
| 查找 chunk 在哪个 bin 中 |
| 返回 chunk 所属 bin 描述 |
| 开始追踪 chunk 生命周期(header/bin/memory diff) |
| 停止追踪 chunk |
| 查看已追踪 chunk 状态 |
请求级 Timeline
Tool | 说明 |
| 开始网络请求粒度的 heap timeline |
| 结束请求 timeline |
| 读取请求级 heap timeline |
| 按 label 查询请求内 heap 事件 |
高级能力
Tool | 说明 |
| 条件断点 + 自动采样 probe |
| 保存内存快照 |
| 比较两个内存快照(offset/old/new/u32/ascii) |
| Payload sweep 自动化框架(批量测试配置,按停止条件终止) |
CTF 交互工具组(src/tools/ctf_tools.py)
Tool | 说明 |
| 通过 SSH 端口转发连接 CTF 服务(自动接收 banner) |
| 发送数据(支持 hex 模式发送原始字节) |
| 发送一行文本(自动追加换行) |
| 接收响应数据 |
| 接收到指定 pattern |
| 关闭 CTF 连接 |
| 组合工具:自动完成菜单式交互(选菜单 → 等 prompt → 填值) |
IDA 静态分析工具组(src/tools/ida_tools.py)
Tool | 说明 |
| 调用本地 IDA headless 分析 ELF,输出 JSON 扫描结果 |
| 在扫描结果中按正则/子串搜索函数 |
| 获取函数反编译伪代码 |
| 获取函数交叉引用(xrefs_to / calls_from) |
项目结构
PWN-MCP/
├── pyproject.toml # 项目配置与依赖
├── README.md
├── src/
│ ├── __init__.py
│ ├── __main__.py # python -m src 入口
│ ├── server.py # MCP Server 入口,注册全部工具
│ ├── ssh_manager.py # SSH 连接管理器(单例)
│ ├── gdb_controller.py # GDB 会话控制器(单例,PTY Channel)
│ ├── ctf_connector.py # CTF 服务连接器(单例,端口转发)
│ ├── heap_analyzer.py # 堆日志 JSON 解析与格式化
│ └── tools/
│ ├── __init__.py
│ ├── ssh_tools.py # SSH 工具组(5 tools)
│ ├── gdb_tools.py # GDB 工具组(13 tools)
│ ├── heap_tools.py # Heap 工具组(20 tools)
│ ├── ctf_tools.py # CTF 工具组(7 tools)
│ └── ida_tools.py # IDA 工具组(4 tools)
├── remote_scripts/
│ └── heap_logger.py # GDB Python 插件(上传到靶机)
├── scripts/
│ └── verify_mcp_heap_debug.py
├── skills/
│ └── ctf-heap-spray.md # AI Skill:堆喷射自动化工作流
└── docs/
└── mcp_heap_debug_capabilities.md典型工作流
ssh_connect → ssh_upload_file(heap_logger.py)
→ gdb_start(binary, plugin) → gdb_command("set disable-randomization on") → gdb_run
→ ctf_connect(127.0.0.1, port)
→ 迭代循环:
heap_begin_action("spray")
→ gdb_continue → ctf_menu_action("1", [...]) → gdb_interrupt
→ heap_end_action() # 分析 delta
→ heap_snapshot() # 关键步骤验证布局
→ 发送 exploit payloadGDB 插件(heap_logger.py)
上传到靶机后通过 gdb -x heap_logger.py 加载。特性:
x86_64 / i386 ABI 感知的参数与返回值提取
Hook malloc / calloc / realloc / free(raw + pending libc 断点)
user pointer → chunk header 转换,chunk size 字段读取
caller 解析到主程序调用点
action-scoped delta JSON(
/tmp/heap_delta.json)和全量 snapshot JSON(/tmp/heap_snapshot.json)自定义 GDB 命令:
heap-begin、heap-end、heap-snapshot、heap-status、heap-bins-json、heap-find-chunk、track-chunk、add-probe-json等
技术栈
MCP SDK — MCP 协议支持(FastMCP + stdio transport)
Paramiko — SSH2 协议(连接、SFTP、PTY Channel、端口转发)
asyncio — 异步运行时,通过
asyncio.to_thread桥接同步调用IDA Pro — headless 模式静态分析(可选)
Available Tools
51 toolsadd_probeC
添加条件断点/自动采样 probe。commands 为 JSON 数组,每个元素是 GDB 命令。
| Name | Required | Description | Default |
|---|---|---|---|
| commands | No | [] | |
| location | Yes | ||
| continue_ | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions executing GDB commands but does not disclose whether the operation is destructive, requires a running target, or can be done while paused. Side effects and prerequisites are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences, no extraneous text. The purpose is front-loaded and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's use in a debugging context with many siblings (e.g., gdb_command, list_probes), the description lacks essential context such as what a 'probe' is, persistence, output behavior (though output schema may help), and interaction with execution state. Insufficient for an AI agent to fully understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the 'commands' parameter format but omits the required 'location' and the optional 'continue_' parameter, leaving significant gaps in understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a probe (conditional breakpoint/auto-sampling) and mentions GDB commands. However, it could be more specific about what distinguishes a probe from a regular breakpoint or other sibling tools like gdb_command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. For instance, when to use add_probe vs. gdb_command to set a breakpoint, or vs. other probe manipulation tools like remove_probe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_requestC
开始一个网络请求粒度的 heap timeline。
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only says 'start', without explaining side effects, destructiveness, or required state (e.g., ongoing connection or context).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), but it sacrifices necessary detail for brevity. It is front-loaded with the purpose but misses crucial context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has one parameter, an output schema, and many sibling tools, the description is incomplete. It does not explain the concept of a 'network request granular heap timeline', how to end it, or what the output contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description does not mention the single parameter 'label' or its purpose. This leaves the agent without any guidance on what to provide for this required string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (begin) and the resource (a heap timeline at network request granularity). It distinguishes from the sibling 'end_request' which likely ends this process. However, the Chinese phrasing may be less accessible to English agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool vs alternatives, nor any prerequisites or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ctf_closeA
关闭与 CTF 程序的连接。
Returns: 关闭确认信息
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states the tool closes a connection and returns a confirmation, but does not mention side effects (e.g., can this be undone? Does it affect other sessions?). For a simple close, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main action. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description is minimally adequate. However, for a CTF toolset, it lacks context about when to close (e.g., after a session) or if other cleanup is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema coverage is 100%. The description does not need to add parameter information because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'close the connection to the CTF program' and distinguishes it from siblings like ctf_connect. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While it's a cleanup tool, the description does not indicate prerequisites (e.g., 'use after operations are complete') or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ctf_connectB
通过 SSH 端口转发连接远程 CTF 服务。
连接到远程 Linux 上运行的 CTF 程序的网络端口。 通常 CTF 程序通过 socat 或自身绑定到某个端口。
Args: host: CTF 服务在远程机器上的地址(通常是 127.0.0.1) port: CTF 服务端口号
Returns: 连接状态信息和首次接收到的 banner/prompt
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | 127.0.0.1 | |
| port | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions SSH port forwarding and return of connection status/banner, but does not disclose prerequisites (e.g., existing SSH connection), error behavior, or potential side effects. This is insufficient for a tool that likely requires network setup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, followed by a brief explanation, args, and returns. It is reasonably concise and well-structured, though the explanation could be slightly trimmed without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 2 parameters and an output schema hinted via the 'Returns' line. However, the description omits prerequisites (e.g., 'ssh_connect' must be called first), error handling, and whether repeated calls are idempotent. Given the context signals (no required params, no enums), it is mostly complete but lacks important setup context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the tool description explains both parameters: host as the CTF service address on the remote machine (typically 127.0.0.1) and port as the port number. This adds meaningful context beyond the schema's default values and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool connects to a remote CTF service via SSH port forwarding, specifying the verb 'connect' and resource. It distinguishes from siblings like ssh_connect by focusing on CTF services, but could be more explicit about the differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for CTF programs binding to a port but does not explicitly state when to use this tool versus alternatives like ssh_connect or ctf_send. No when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ctf_recvC
接收 CTF 程序的响应数据。
Args: timeout: 等待数据的最大秒数
Returns: 收到的文本数据
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It implies blocking with a timeout but does not explain what happens on timeout (empty string, exception) or whether it is destructive. No mention of connection state requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences) and front-loaded with purpose. However, it omits crucial details, making it more sparse than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and presence of output schema, the description does not clarify return structure, error cases, or blocking semantics. It mentions 'received text data' but lacks detail on format or when data is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must add meaning. It explains the timeout parameter as 'max seconds to wait', which adds some context beyond the schema title, but does not specify units or behavior beyond waiting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool receives response data from a CTF program, using a specific verb and resource. It distinguishes from siblings like ctf_recv_until, which receives until a pattern, but does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives like ctf_recv_until. The description only mentions the timeout parameter without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ctf_recv_untilA
接收数据直到匹配指定模式。
Args: pattern: 要匹配的文本模式(如 "Choice: ", ">>>", ":") timeout: 等待的最大秒数
Returns: 从开始到匹配模式为止的所有数据
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses basic behavior (read until pattern, timeout), but does not specify what happens on timeout, pattern matching details (e.g., regex or exact match), or blocking behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose, followed by clear Args and Returns sections. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters, an output schema (not shown but indicated), and no annotations, the description covers the main workflow. However, it lacks details on edge cases (timeout error, pattern format) and usage context relative to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains pattern as '要匹配的文本模式' (text pattern to match) and timeout as '等待的最大秒数' (max wait seconds), adding meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '接收数据直到匹配指定模式' (receive data until matching a specified pattern), providing a specific verb and resource. It distinguishes from siblings like ctf_recv (likely receives without pattern) and ctf_send/ctf_sendline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for waiting until a pattern is received, but it does not explicitly state when to use vs. alternatives like ctf_recv, or mention when not to use it (e.g., timeout scenarios, connection state).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ctf_sendA
向 CTF 程序发送数据。
Args: data: 要发送的数据。如果 hex_mode=True,则 data 是十六进制字符串(如 "414243") hex_mode: 是否将 data 当作十六进制字节串处理
Returns: 确认发送的字节数
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| hex_mode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must provide behavioral details. It mentions hex_mode behavior and return value (bytes sent), but omits side effects, state changes, or error handling. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with structured Args/Returns format. Every sentence adds value, though a brief usage hint would improve it further.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with 2 params; description explains input and return. However, lacks behavioral context (e.g., is send blocking? what happens on failure?) and usage guidelines, which are needed given the complex CTF context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully compensates by explaining 'data' is the data to send and 'hex_mode' controls hex interpretation. Adds essential context beyond the schema's type-only definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('向 CTF 程序发送数据' - send data to CTF program) and distinguishes from sibling 'ctf_sendline' which sends with line termination. The verb+resource pattern is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like ctf_sendline or when to set hex_mode. The description only defines parameters without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ctf_sendlineC
向 CTF 程序发送一行数据(自动追加换行符)。
Args: line: 要发送的文本行
Returns: 确认信息
| Name | Required | Description | Default |
|---|---|---|---|
| line | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only mentions auto-appending newlines and returning a confirmation. It does not disclose potential side effects, blocking behavior, error handling, or required permissions. For a tool with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise and front-loaded, with only two sentences. It wastes no words but could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, likely simple output), the description is adequate but lacks behavioral and usage context. The presence of an output schema reduces the need to explain return values, but the description could still be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description (0% coverage), so the description must compensate. It clarifies that the 'line' parameter is text and a line to send, adding basic meaning. However, this is minimal, and further details (e.g., encoding, length limits) would improve the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a line of data to a CTF program with auto-appended newline. It is specific about the resource (line) and action (send), and the name contrasts with sibling tools like ctf_send (likely raw) and ctf_recv (receive). However, it does not explicitly differentiate from ctf_send, which would elevate to a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as ctf_send or ctf_recv. The description lacks context about prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_requestC
结束请求粒度 timeline;wait_handler_return 参数保留用于上层编排。
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| wait_handler_return | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits such as side effects, destruction, or safety. Only a brief note on one parameter, leaving the tool's behavior largely unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences), which is concise, but it sacrifices clarity. The structure is front-loaded, yet the meaning is ambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters and an output schema (not shown), the description is incomplete. It fails to explain the purpose, behavior, or the label parameter, leaving the agent with insufficient information for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only mentions wait_handler_return as 'reserved for upper-layer orchestration'. The label parameter is completely unexplained, so the description adds minimal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states '结束请求粒度 timeline' which suggests ending a request or timeline granularity. From sibling tools like begin_request, it can be inferred that this ends a request, but the purpose is vague and not explicitly stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like request_timeline or request_events. The description only mentions the wait_handler_return parameter is reserved for upper-layer orchestration, but does not provide usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_chunkA
查看 glibc malloc chunk header 和附近内存。
对 i386 常用: chunk_addr 指向 chunk header,user 指针通常是 chunk_addr+0x8。工具会打印 prev_size/size 字段、chunk 附近内存, 并可尝试调用 pwndbg 的 malloc_chunk/vis/heap 命令。
Args: chunk_addr: chunk header 地址,例如 source/next chunk 地址。 context: dump 的上下文字节数。 pause_first: 是否先暂停目标。 try_pwndbg: 是否尝试 pwndbg malloc_chunk 命令。
Returns: chunk 信息和内存 dump。
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| chunk_addr | Yes | ||
| try_pwndbg | No | ||
| pause_first | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It explains what the tool prints and the optional pwndbg calls, but does not disclose whether it modifies debugger state, requires a running process, or has side effects. The pause_first parameter is mentioned but its behavioral impact is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-sentence summary followed by usage tips and parameter documentation. It contains no superfluous information, though the i386 tip could be integrated into parameter descriptions for better flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, parameters, and some usage context (i386). However, it lacks prerequisites (e.g., needing a running process with glibc), and the return value is only vaguely described as 'chunk 信息和内存 dump'. The output schema may fill gaps, but overall completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the description adds meaningful explanations for all four parameters: chunk_addr, context, pause_first, and try_pwndbg. It clarifies their purpose and default behavior, compensating well for the lacking schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: '查看 glibc malloc chunk header 和附近内存' (view glibc malloc chunk header and nearby memory). It distinguishes itself from sibling tools like gdb_memory or heap_chunk_bin by focusing specifically on chunk headers and offering optional pwndbg integration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a tip for i386 and explains the tool's capabilities, but does not explicitly state when to use this tool versus alternatives like heap_find_chunk or heap_chunk_bin. Usage is implied through the description, but no direct guidance on when not to use it or which alternative to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_commandA
发送任意 GDB/pwndbg 命令并返回输出。
可以执行任何 GDB 命令,如 'info functions', 'break main', 'heap', 'bins' 等。 命令执行后等待 GDB prompt 返回完整输出。
Args: cmd: 要执行的 GDB 命令字符串 timeout: 等待 GDB prompt 返回的秒数,复杂请求的 finish 可调大
Returns: 命令的完整输出
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | Yes | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that the tool waits for GDB prompt and returns full output, and notes the timeout parameter. However, it does not disclose potential side effects, destructive actions, or required permissions for certain commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a brief intro, examples, then clear Args and Returns sections. Every sentence serves a purpose, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's generic nature and the existence of an output schema, the description covers the main behavior. However, it could be more complete by explicitly stating when this tool should be preferred over specific sibling tools, and by providing more details on return value format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema with an Args section explaining both parameters: 'cmd' as the GDB command string and 'timeout' as seconds to wait, with a note to increase for complex requests. Since schema coverage is 0%, this is valuable context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sends any GDB/pwndbg command and returns output, with examples like 'info functions', 'break main'. While it distinguishes from siblings implicitly by being generic, it does not explicitly contrast with specific tools like gdb_continue or gdb_stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'can execute any GDB command', implying it is the generic tool, but it does not provide explicit guidance on when to use this vs. specific sibling tools. No when-not-to-use or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_continueB
继续执行被暂停的程序。等同于 GDB 的 'continue' 命令。
Returns: continue 命令的输出
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
無 annotations 輔助,描述僅說明執行continue命令,但未揭露所需前提(程式必須處於暫停狀態)、可能阻塞行為、超時或錯誤情況,以及副作用(如重新開始輸出)。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
非常簡潔,僅兩句及一行返回值說明,訊息前後對齊,無冗餘字句。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
有輸出schema,返回值描述略粗糙但可接受。然而缺乏行為細節(如阻塞性)及使用情境說明,對於簡單工具尚可,但仍有提升空間。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
無任何參數,schema覆蓋率100%。描述無需補充參數資訊,根據規則0參數基準分為4。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
明確指出工具用於繼續執行被暫停的程式,並等同於GDB的'continue'命令,與大量GDB相關工具共存時仍能區分其核心功能。但未明確與'gdb_continue_background'等兄弟工具做對比。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
未提供任何使用時機或替代方案說明,例如僅適用於暫停狀態的程式,或與'gdb_run'、'gdb_start'等的差異完全缺失。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_continue_backgroundA
让 GDB 后台继续执行目标程序,立即返回 prompt。
用于请求粒度 heaplog:先设置请求完成断点,然后调用本工具让程序 继续运行;随后发送网络请求,等断点命中后再 heap_end_action。 内部执行: set target-async on continue&
Returns: GDB 对 continue& 的输出。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses internal behavior: setting target-async on, executing continue&, and returning its output. This leaves no ambiguity about side effects or execution mode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs: the first gives the high-level purpose, the second explains internal steps and return value. No verbose or redundant sentences, efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema (implied by 'Returns'), the description covers purpose, usage, and internal behavior. It does not mention prerequisites like GDB being active, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema trivially covers 100%. The description does not need to add parameter details, but it also does not mislead. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states that the tool continues the target program in the background and immediately returns the prompt, distinguishing it from foreground continue (gdb_continue) and other GDB tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a concrete use case (heap logging with breakpoints) and describes the sequence of steps, giving clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_interruptA
中断正在运行的程序(发送 Ctrl-C)。用于暂停程序以执行 GDB 命令。
Returns: 中断后的输出
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It discloses that it sends Ctrl-C and returns output after interrupt. However, it does not mention side effects, safety (e.g., data loss), or what happens if no program is running. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences and a returns line. Every sentence serves a purpose, and the key action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description is fairly complete. It explains the action and what is returned. However, it lacks context about when the tool is applicable (e.g., only when a program is running) and how it differs from gdb_pause.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so the baseline is 4. The description adds no parameter info, but none is needed since there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool interrupts a running program by sending Ctrl-C, which is specific. However, it does not differentiate from similar sibling tools like gdb_pause, so purpose is clear but not uniquely distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'used to pause the program to execute GDB commands' but provides no guidance on when to use this tool versus alternatives like gdb_pause or gdb_stop. No explicit when-not-to-use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_memoryA
查看指定内存区域,适合模型检查 source/next chunk/victim 附近内容。
会执行 GDB 的 x 命令输出字节和按 word_size 分组的数值。地址支持 表达式/十六进制,如 "0x57eebce8"、"$esp"、"0x57eebce8+0x40"。
Args: address: 起始地址或 GDB 表达式。 size: 查看字节数。 word_size: 分组大小,1/2/4/8;4 对 i386 chunk header 最常用。 pause_first: 若为 True,先 Ctrl-C 暂停目标。 include_bytes: 是否输出 x/Nxb。 include_words: 是否输出 x/Nxw/xg 等分组视图。
Returns: 内存 dump 文本。
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| address | Yes | ||
| word_size | No | ||
| pause_first | No | ||
| include_bytes | No | ||
| include_words | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains that it executes GDB's x command, outputs bytes and grouped values, and includes optional pauses. It is adequate but could be more explicit about read-only nature and lack of side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief purpose, then behavior explanation, then parameter list. It is not overly verbose but could be slightly more concise. The front-loading is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters and an output schema, the description covers address formats, grouping options, viewing both bytes and words, and pause behavior. It is comprehensive for a memory dump tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description's 'Args' section details each parameter: address (supports expressions), size, word_size (with typical usage for i386), pause_first, include_bytes, and include_words. It adds defaults and usage context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it views a specified memory region using GDB's x command, suitable for checking source/next chunk/victim content. This distinguishes it from sibling tools like gdb_chunk for heap chunks or gdb_command for arbitrary GDB commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use it ('适合模型检查 source/next chunk/victim 附近内容') and explains address expression formats. However, it does not explicitly mention when not to use or compare to alternatives like gdb_chunk, which is mentioned in sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_pauseA
临时暂停正在运行的调试目标,等价于 gdb_interrupt。
用于堆布局过程中在关键包发送后暂停程序,然后调用 gdb_memory / gdb_chunk / gdb_command("x/..") 查看指定内存区域。
注意:本项目大量使用 continue& 让 inferior 后台运行,此时 GDB
已经返回 prompt。对 prompt 发送 Ctrl-C 只会中断 GDB 自身输入,未必
会暂停后台 inferior;因此这里优先执行 GDB 的 interrupt 命令,
只有在 foreground continue 无 prompt 的场景下才回退到 PTY Ctrl-C。
Returns: 暂停后的 GDB 输出。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that pausing uses GDB's interrupt command, with a fallback to PTY Ctrl-C for foreground continues. It also states the return value is GDB output. No side effects beyond pausing are mentioned, which is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three focused sentences: purpose, use case, and technical nuance. It is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an existing output schema, the description covers purpose, usage scenario, technical behavior, and return value. It is sufficiently complete for a parameterless tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description adds no parameter-specific information. According to rules, baseline is 4. The schema covers 100% trivially.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool pauses the debug target and equates it to gdb_interrupt. It provides a specific use case (heap layout) but does not differentiate from gdb_interrupt, which is a sibling. This creates some confusion but overall purpose is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: after sending a key packet during heap layout, and explains why interrupt is preferred over Ctrl-C for background continues. It does not explicitly state when not to use, but the scenario is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_read_outputA
读取 GDB 当前输出缓冲区中的内容。
不等待 prompt,仅读取当前可用的输出。用于查看正在运行程序的输出。
Args: timeout: 等待输出的最大秒数
Returns: 当前缓冲区中的输出内容
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool is non-blocking (reads only available output), includes a timeout parameter, and is for viewing ongoing program output. This provides sufficient transparency about its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences front-loading the purpose, followed by parameter and return info. No redundant text; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the existence of an output schema (likely providing return info), the description covers essential aspects: reading buffer, non-blocking, timeout. It could mention buffer clearing or error behavior, but is adequate for a straightforward read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the single parameter 'timeout' as the maximum seconds to wait for output, adding meaning beyond the schema's type-only definition. This fully compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads GDB output buffer without waiting for prompt, and specifies its use for checking output of running programs. This is a specific verb-resource combination that distinguishes it from sibling tools like gdb_command which sends commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states it reads available output without waiting for a prompt, implying it's for non-blocking reads. It gives context for use but does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_restartA
重启目标程序(kill 当前进程后重新 run)。
Returns: 重启后的输出
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses destructive action (kill current process) and return of output. Lacks details on error handling, behavior if program not running, or side effects beyond restart.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, direct and front-loaded, no extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with no parameters and output schema present, but could mention preconditions or failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description adds no param info; baseline 4 for zero-param tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it restarts the target program by killing current process and re-running, distinguishing it from siblings like gdb_run (first start) and gdb_continue (resume).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when restarting is needed, but does not explicitly compare to alternatives or state preconditions (e.g., program must be running).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_runC
在 GDB 中运行目标程序。等同于 GDB 的 'run' 命令。
Returns: run 命令的输出
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool runs the program and returns output, but fails to disclose important behavioral traits like prerequisite (program must be loaded), stops at breakpoints, blocking nature, or side effects (e.g., resetting state). Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very short with no wasted words. However, it could be slightly more informative while remaining concise, e.g., mentioning that the program must be loaded first. Still, good front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and an output schema, the description is minimally adequate. However, it lacks context on prerequisites (program loaded), behavior (stops at breakpoints), and relationship to siblings, leaving some gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, schema coverage is 100% (vacuously). Baseline is 3 per guidelines. The description adds no parameter info, but none is needed. Score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool runs the target program in GDB (verb+resource) and equates it to the 'run' command. However, among many GDB siblings (e.g., gdb_start, gdb_restart, gdb_continue), it does not differentiate its purpose, so it is not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like gdb_start or gdb_continue. The description only states equivalence to GDB's 'run' command, which is implicit usage context but no explicit when/when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_source_windowB
围绕 SLPParseSrvUrl source chunk 查看溢出相关窗口。
会 dump:
source_chunk-before 到 source_chunk+source_size+after 的内存
next_chunk = source_chunk + source_size 的 chunk header
Args: source_chunk: source chunk header 地址。 source_size: source 实际 chunk 大小,通常 chunk_sz & ~7,例如 0x40。 before: source 前方查看字节数。 after: next chunk 后方查看字节数。 pause_first: 是否先暂停。
Returns: source/next chunk 周边内存。
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| before | No | ||
| pause_first | No | ||
| source_size | No | ||
| source_chunk | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains what is dumped but does not disclose side effects, whether it modifies GDB state, or if it pauses execution (beyond the pause_first parameter). Important behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and then details what is dumped and parameter explanations. It is fairly concise but the Chinese phrase may reduce clarity for some agents. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (memory dumping for exploit debugging), the description covers the parameters and output but lacks details on error conditions, required GDB state, or the exact return format (though output schema is mentioned). Annotations are absent, so more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to all five parameters, given 0% schema coverage. It defines source_chunk, source_size, before, after, and pause_first with specific roles, such as 'source_size: source 实际 chunk 大小,通常 chunk_sz & ~7,例如 0x40.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it views overflow-related windows around the SLPParseSrvUrl source chunk and dumps memory before/after the source chunk and the next chunk header. The verb 'view' is clear, but the Chinese phrase may cause ambiguity. It distinguishes from siblings by focusing on heap overflow exploitation, though not explicitly differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like gdb_memory or heap_chunk_bin. It lacks context on prerequisites or scenarios where it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_startA
启动 GDB 调试会话,加载目标二进制程序和可选的 GDB Python 插件。
Args: binary_path: 远程 Linux 上目标二进制文件的绝对路径 plugin_path: 可选,GDB Python 插件脚本路径(如 heap_logger.py)
Returns: GDB 启动输出信息
| Name | Required | Description | Default |
|---|---|---|---|
| binary_path | Yes | ||
| plugin_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the basic actions (start session, load binary/plugin) and the return type, but lacks transparency about side effects, whether it is blocking, potential errors, or required setup (e.g., remote binary must exist). The behavioral disclosure is insufficient for safe tool invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for purpose, an Args block with two parameters, and Returns. Every sentence adds value, and the structure is clear and front-loaded. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and presence of many sibling tools, the description adequately covers the tool's purpose and parameters. However, it omits mention of prerequisites (e.g., SSH connection via ssh_connect) and the fact that starting a new session might interfere with an existing one. The description is sufficient for basic use but not fully complete for safe context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description is essential. It adds clear semantics: binary_path is an absolute path on the remote Linux, and plugin_path is an optional script path with a concrete example. This goes beyond the schema's type information and provides actionable guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it starts a GDB debugging session and loads a target binary with an optional plugin. The verb '启动 GDB 调试会话' is specific and the resource is well-defined. Among many gdb_* sibling tools, this is distinctly the initialization tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the first step in a GDB debugging workflow (loading binary and plugin). However, it does not explicitly state when to use it versus alternatives, nor does it mention prerequisites like the need for an existing SSH connection (suggested by sibling ssh_connect). Usage context is hinted but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_stopA
退出 GDB 会话,关闭调试连接。
Returns: 退出确认信息
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It mentions the exit and closure, but lacks details like irreversibility or state requirements. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences, no wasted words, and information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, clear action), the description fully covers what it does and its return value, with an output schema present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description adds no further meaning. Baseline for 0 parameters is 4, as no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool exits a GDB session and closes the debugging connection, using a specific verb and resource. It is easily distinguishable from sibling tools like gdb_start or gdb_continue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use the tool (when wanting to end a GDB session). No explicit exclusions or alternatives are mentioned, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_begin_actionA
标记一个堆操作阶段的开始。
在发送 payload 到 CTF 程序之前调用此工具。 配合 heap_end_action 使用,记录这一步操作引起的所有堆变化。
Args: action_id: 操作标识符(如 "step_1", "spray_phase", "free_target")
Returns: 确认信息
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It explains that the tool marks a phase and records heap changes when paired with heap_end_action, but it does not disclose whether it modifies state, side effects, or prerequisites. For a simple marker, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a few sentences with a clear structure: main description, usage note, arguments, and returns. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, paired with heap_end_action, has output schema), the description covers the essential context: when to call it, how to pair it, and what the parameter means. It could be slightly more detailed about the return value, but overall it is complete for its role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameter descriptions (0% coverage). The description compensates by providing an example and clarifying that action_id is an operation identifier, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool marks the start of a heap operation phase and should be called before sending a payload to the CTF program. While it implicitly pairs with heap_end_action, it does not explicitly differentiate from other heap tools, hence a 4 instead of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises calling this tool before sending a payload and mentions using it in conjunction with heap_end_action. This provides clear context and pairing, though it does not specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_bins_jsonB
导出 glibc bin 状态 JSON,包括 fastbins/unsorted/smallbins/largebins。
| Name | Required | Description | Default |
|---|---|---|---|
| include_raw | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It only mentions the output format but does not describe side effects, permissions, or error conditions. Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core purpose. It is appropriately sized, though it could benefit from minor structural improvements (e.g., listing bins as examples).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a low-complexity tool (one optional bool param, output schema exists), the description provides the essential purpose but omits parameter explanation and usage context. Barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'include_raw' has a default but is not explained in either the schema (0% coverage) or the description. The description adds no meaning beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it exports glibc bin state as JSON, listing specific bin types (fastbins/unsorted/smallbins/largebins). This provides a specific verb and resource, and distinguishes from sibling tools that perform other heap operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as heap_get_state or other bin inspection tools. No conditions or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_chunk_binC
返回指定 chunk 所属 bin 的简洁描述。
| Name | Required | Description | Default |
|---|---|---|---|
| addr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavior. It only states the tool returns a description but does not specify what the description contains, whether it's a string, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), which is concise, but it is under-specified. It sacrifices necessary detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to provide sufficient context for a specialized heap analysis tool. It lacks explanation of the parameter and the nature of the returned description, making it incomplete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'addr' is not explained in the description. With 0% schema description coverage, the description should clarify the format (e.g., hex pointer) and meaning of 'chunk', but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a concise description of the bin for a specified chunk. However, it does not differentiate from sibling tools like heap_bins_json, which may also provide bin information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool compared to alternatives. There is no mention of prerequisites, context, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_end_actionA
结束当前请求/堆操作阶段,返回该请求创建的 chunk 记录。
在单个网络请求或单个 connect/close 操作处理完毕、GDB 暂停后调用。 默认输出按请求粒度映射的 heaplog 风格记录,例如: [calloc] nmemb=0x1 size=0x46 total=0x46 user=... chunk_addr=... chunk_sz=... caller=... [malloc] size=0xec user=... chunk_addr=... chunk_sz=... caller=... 同时附带 Raw Delta JSON,供后续自动分析。
Args: event_types: 可选,逗号分隔事件类型/分组过滤,如 "alloc", "free", "malloc,calloc", 留空表示全部。 caller_contains: 可选,按 caller 符号子串过滤,如 "SLPParseSrvUrl"、"SLPBufferAlloc"。 action_contains: 可选,按 action 名称子串过滤。 addr_start: 可选,按 chunk/user 地址范围起点过滤,支持十六进制。 addr_end: 可选,按 chunk/user 地址范围终点过滤,支持十六进制。 around_addr: 可选,查看某地址附近的堆事件。 around_size: around_addr 半径。 limit: 最多返回多少条事件。 include_raw: 是否附带 Raw Delta JSON;调堆风水时可设 False 减少噪声。
Returns: JSON 格式的堆变化增量数据,包含: - action_id: 操作标识 - events: 详细事件列表 - delta: 增量汇总(新分配数、新释放数、详情) - summary: 一行文本摘要 - cumulative: 累计状态
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| addr_end | No | ||
| addr_start | No | ||
| around_addr | No | ||
| around_size | No | ||
| event_types | No | ||
| include_raw | No | ||
| action_contains | No | ||
| caller_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description details the output format (JSON with action_id, events, delta, summary, cumulative) and mentions Raw Delta JSON. It explains parameter effects like include_raw. No side effects are described, but none expected for this type of action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and structured with Args and Returns sections. It is somewhat lengthy due to examples, but each part adds value for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, no annotations, and an output schema, the description covers all aspects: when to call, how to filter, and what to expect in the response. It is complete for an agent to correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides thorough explanations for all 9 parameters with examples (e.g., event_types, caller_contains, around_addr). This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool ends a heap action phase and returns chunk records. The Chinese and English text specify the purpose, and it distinguishes itself from siblings like heap_begin_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: call after a network request or connect/close operation when GDB is paused. It does not explicitly mention when not to use or alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_find_chunkB
查找指定 chunk 地址是否在 bin 中。addr 支持 0x 前缀。
| Name | Required | Description | Default |
|---|---|---|---|
| addr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It only states the check action, without mentioning side effects, permissions, or output format. Read-only nature is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Every word adds value, appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple check tool with one parameter and existing output schema, the description is mostly complete. It could mention the return type but output schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds the detail that addr supports '0x' prefix, which is useful beyond the schema's type string. However, schema coverage is 0%, so more param guidance would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks if a chunk address is in a bin, with format support. It is a specific verb+resource but does not differentiate from sibling tools like heap_chunk_bin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No exclusion criteria or context provided for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_get_stateB
获取当前堆状态概览(不生成文件,直接从 GDB 获取)。
快速查看当前活跃 chunk 数量和累计统计。
Returns: 堆状态概览文本
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that no file is generated and data comes directly from GDB. However, it does not mention prerequisites like GDB being running, whether it is read-only, or any potential side effects. With no annotations, more behavioral context would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short with two clear sentences and a return line. It is front-loaded with the key point. Could be slightly more structured (e.g., bullet points) but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description covers the basic purpose but lacks detail on the output format or edge cases. It mentions active chunk count and cumulative statistics but does not elaborate on what the returned text includes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and the schema coverage is 100%. The description adds value by explaining what the tool does overall, which is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a heap status overview including active chunk count and cumulative statistics, and specifies it does not generate a file but gets data directly from GDB. While the verb and resource are clear, it does not explicitly distinguish from sibling tools like heap_bins_json or heap_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It simply implies 'quick view' but lacks explicit context, exclusions, or comparisons with related heap tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_query_deltaA
查询最近一次 heap-end 产生的 /tmp/heap_delta.json,可按 caller/地址过滤。
适合只关注布局后的 source 点相关日志,例如:
caller_contains="SLPParseSrvUrl"
around_addr="0x57eebce8", around_size=0x400
event_types="free"
Args: event_types: 逗号分隔类型/分组,如 "alloc", "free", "malloc,calloc"。 caller_contains: caller 符号子串过滤。 action_contains: action 名称子串过滤。 addr_start: 地址范围起点。 addr_end: 地址范围终点。 around_addr: 中心地址。 around_size: 中心地址半径。 limit: 最多返回多少条。 include_raw: 是否附带完整 JSON。
Returns: 过滤后的 heaplog 风格文本。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| addr_end | No | ||
| addr_start | No | ||
| around_addr | No | ||
| around_size | No | ||
| event_types | No | ||
| include_raw | No | ||
| action_contains | No | ||
| caller_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It implies a read-only query operation with no side effects, but does not explicitly state safety, authentication needs, or return format details. The mention of 'heaplog 风格文本' gives some indication of output style.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise but mixes languages and includes a separate 'Args' section. The examples add clutter. A more streamlined format with front-loaded key information would improve usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 params, no schema descriptions, no annotations), the description covers all necessary aspects for a query tool: purpose, example usage, parameter explanations, and return type. The presence of an output schema reduces the need for detailed return format documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds value by explaining all 9 parameters. Each parameter has a brief but clear explanation, including filter semantics (e.g., caller_contains as substring filter, around_addr as center address). This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries a specific file (/tmp/heap_delta.json) generated by heap-end, and allows filtering by caller and address. While it does not explicitly differentiate from siblings like heap_query_log, the specific resource and filtering capabilities set it apart. The examples further clarify its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides example usage patterns (e.g., caller_contains='SLPParseSrvUrl', around_addr with size) that indicate when this tool is appropriate. However, it lacks explicit guidance on when not to use it or alternatives to consider. The sibling heap_query_log exists but is not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_query_logA
查询 heap_logger 的完整文本日志 /tmp/heaplog.txt,并可按地址/caller/action 过滤。
这个工具用于“只看某一段/某个 source 点附近日志”,不要求当前必须 处于 heap action。heaplog.txt 每行是 JSON 事件。
Args: caller_contains: caller 符号子串过滤。 action_contains: action 名称子串过滤。 text_contains: 原始 JSON 行文本子串过滤。 addr_start: 地址范围起点。 addr_end: 地址范围终点。 around_addr: 中心地址。 around_size: 中心地址半径。 event_types: 类型/分组过滤,如 "malloc,calloc,free"。 last: 返回最后 N 条匹配事件。
Returns: 过滤后的 heaplog 风格文本。
| Name | Required | Description | Default |
|---|---|---|---|
| last | No | ||
| addr_end | No | ||
| addr_start | No | ||
| around_addr | No | ||
| around_size | No | ||
| event_types | No | ||
| text_contains | No | ||
| action_contains | No | ||
| caller_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it reads from /tmp/heaplog.txt, returns filtered text, and lists all parameters. No destructive behavior is implied, so it's transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a main purpose, context, and bullet-pointed args. It front-loads the key information, though the parameter list could be slightly trimmed. Still, it's clear and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters, no required), the description covers all parameters and their roles. It also mentions the file location and return format. With an output schema present, the return description is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides detailed explanations for all 9 parameters via the Args section, significantly adding meaning beyond the bare schema (which has 0% description coverage). Each parameter's use and default are clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries the full text log from a specific file and filters by address/caller/action. It distinguishes itself from sibling tools by focusing on log querying rather than other heap operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context about when to use the tool (viewing logs around a segment/source point) and notes it doesn't require being in a heap action. It lacks explicit when-not-to-use or alternatives but is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heap_snapshotA
获取完整的堆状态快照。
在关键步骤后调用以验证完整堆布局。 返回所有活跃 chunk 的地址、大小和来源信息。
Args: caller_contains: 可选,按 caller 子串过滤活跃 chunk。 action_contains: 可选,按 action 子串过滤活跃 chunk。 addr_start: 可选,地址范围起点。 addr_end: 可选,地址范围终点。 around_addr: 可选,查看某地址附近的活跃 chunk。 around_size: around_addr 半径。 limit: 最多返回多少条。 include_raw: 是否附带 Raw Snapshot JSON。
Returns: 格式化的堆快照,包含所有活跃 chunk 信息
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| addr_end | No | ||
| addr_start | No | ||
| around_addr | No | ||
| around_size | No | ||
| include_raw | No | ||
| action_contains | No | ||
| caller_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the return (formatted snapshot with address/size/source) and parameter effects. It lacks explicit statement that this is a read-only operation with no side effects, but the snapshot nature implies non-destructiveness. Still, a brief clarification would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a purpose sentence, usage hint, return line, then parameter list. Every sentence adds value with no redundancy. It is front-loaded with the key purpose and ends with necessary parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no annotations, and presence of an output schema (implied), the description covers core functionality and parameter semantics. It could explicitly compare with sibling heap tools to reduce ambiguity, but overall it provides sufficient information for an agent to understand and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description fully compensates. It adds detailed meaning for all 8 parameters in the Args block, explaining their filtering purposes (e.g., '按 caller 子串过滤活跃 chunk'). This is far beyond the bare schema and essential for correct agent invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a complete heap state snapshot (特定动词+资源: '获取完整的堆状态快照'), and distinguishes from sibling tools by emphasizing '所有活跃 chunk' (all active chunks) for full layout verification, which is different from specific queries like heap_find_chunk or heap_bins_json.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions '在关键步骤后调用以验证完整堆布局' (call after key steps to verify full heap layout), providing clear when-to-use guidance. However, it does not explicitly state when not to use this tool or mention alternatives like heap_get_state or heap_query_delta, though sibling context implies they exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ida_find_functionsC
在 IDA 扫描结果中按函数名正则/子串查找函数。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| pattern | Yes | ||
| scan_json | No | research/results/ida_slpd_quickscan.json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits beyond the core purpose. It lacks information on side effects (e.g., read-only), required permissions, error handling, or how results are returned. The existence of an output schema is not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no redundancy. It front-loads the core action and resource, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and param descriptions, the description is incomplete. It does not clarify the role of 'scan_json', the default limit, or what happens on no match. The output schema may exist but is not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in the schema). The description does not explain any parameter—it does not mention 'pattern', 'limit', or 'scan_json'. Thus, it adds no value beyond the schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's action: 'find functions by function name regex/substring in IDA scan results'. It uses a specific verb-resource combination and distinguishes from sibling tools like ida_headless_scan (which runs scans) and ida_get_pseudocode (which decompiles).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., a prior scan) nor exclusions compared to siblings like ida_get_xrefs or ida_headless_scan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ida_get_pseudocodeC
获取指定函数的反编译伪代码和地址。
| Name | Required | Description | Default |
|---|---|---|---|
| max_chars | No | ||
| scan_json | No | research/results/ida_slpd_quickscan.json | |
| name_or_ea | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description should compensate. It fails to disclose behavioral traits like side effects, permissions, or read-only nature. Minimal transparency beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence, concise and front-loaded. However, it may be too brief to be maximally informative, losing points for missing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters with no schema descriptions and no annotations, the description is incomplete. It does not explain defaults or parameter roles. Output schema exists but does not justify the lack of parameter guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. Description does not explain any of the three parameters (max_chars, scan_json, name_or_ea). It only vaguely implies name_or_ea via 'specified function', leaving parameter semantics entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states verb '获取' (get) and resource '反编译伪代码和地址' (decompiled pseudocode and address), specifying '指定函数' (specified function). This clearly identifies the tool's purpose and distinguishes it from siblings like ida_find_functions or ida_get_xrefs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage when needing decompiled pseudocode for a function, but provides no guidance on when not to use or alternatives. Context is clear but exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ida_get_xrefsC
获取指定函数的 xrefs_to 和 calls_from 摘要。
| Name | Required | Description | Default |
|---|---|---|---|
| scan_json | No | research/results/ida_slpd_quickscan.json | |
| name_or_ea | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral traits. It only states the output (summary) but does not disclose read-only nature, error conditions, or any side effects, which is insufficient for a tool with no annotation safety net.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it sacrifices completeness for brevity. It is minimally adequate but lacks important details like parameter usage and context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (2 parameters, no annotations, but an output schema exists), the description is incomplete. It omits parameter semantics and usage context, though the output schema may partially compensate for return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the two parameters ('scan_json' and 'name_or_ea'). The parameter meanings and expected formats are left entirely to the agent to infer, failing to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the xrefs_to and calls_from summary for a specified function, using a specific verb ('get') and resource. However, it does not differentiate from sibling tools like ida_find_functions or ida_get_pseudocode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ida_headless_scanB
用 IDA headless 重新分析 ELF,并输出 JSON 扫描结果。
Args: binary_path: 待分析二进制,默认当前仓库 slpd。 out_path: 输出 JSON 路径。 ida_path: idat.exe 路径;为空时自动选 IDA9.3/9.0/7.7。 timeout_sec: IDA 批处理超时。
| Name | Required | Description | Default |
|---|---|---|---|
| ida_path | No | ||
| out_path | No | research/results/ida_slpd_quickscan.json | |
| binary_path | No | slpd | |
| timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full disclosure burden. It mentions 're-analyze' (implying idempotent?) and timeouts, but lacks details on whether it modifies any state, required permissions, or potential side effects like overwriting existing data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear one-line purpose and a structured Args list. It is front-loaded and every sentence adds value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists, the description doesn't clarify the exact JSON structure or return behavior. Missing details on error handling, IDA availability, and execution mode. For a complex external-process tool, more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema titles provide parameter names but no descriptions (0% coverage). The description adds brief explanations and defaults for all four parameters, which is adequate but not detailed. For example, binary_path is described as 'Binary to analyze, default current repo slpd', but no format or constraint info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool re-analyzes an ELF binary using IDA headless and outputs JSON results. It distinguishes from sibling IDA tools like ida_find_functions and ida_get_pseudocode by focusing on full offline analysis with output to a file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., other IDA tools). The description only lists parameters without clarifying use cases or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_probesB
列出 probe 以及最近命中输出。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the function without mentioning safety, permissions, or side effects. For a tool with no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded and contains no unnecessary words. It efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an available output schema, the description is minimally adequate. However, it does not define 'probes' or 'recent hit output', lacking full context for an agent unfamiliar with the system.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (schema coverage 100%), so the description need not explain them. The description adds meaning by indicating the output content (probes and hit output), exceeding the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists probes and recent hit output. It differentiates from sibling tools like add_probe and remove_probe by focusing on listing. However, it could be more specific about what 'recent hit output' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like add_probe or remove_probe. The description lacks context on the scenario for listing probes, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_diffC
比较两个内存快照,输出 offset/old/new/u32/ascii。
| Name | Required | Description | Default |
|---|---|---|---|
| name1 | Yes | ||
| name2 | Yes | ||
| include_raw | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only mentions output format. It does not disclose whether the tool is read-only, whether snapshots must exist in memory, what happens on mismatch, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, highly concise and front-loaded. However, it omits necessary details, so while efficient, it sacrifices completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters, no annotations, but has an output schema. The description lacks preconditions, return format (though output schema may cover it), and behavioral context, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the meaning of 'name1', 'name2', or 'include_raw'. Only the tool's purpose implies name1/name2 are snapshot identifiers, but no details on format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: '比较两个内存快照' (compare two memory snapshots) and specifies the output fields (offset/old/new/u32/ascii). This distinguishes it from sibling tools like 'mem_snapshot' (which creates snapshots) and 'heap_query_delta' (heap-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'heap_query_delta' or when not to use it. No prerequisites or context for when comparisons are valid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mem_snapshotC
保存内存快照。
| Name | Required | Description | Default |
|---|---|---|---|
| addr | Yes | ||
| name | Yes | ||
| size | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It fails to mention side effects, permissions, or what constitutes the snapshot, leading to uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one short sentence), but this comes at the cost of information density. It is not verbose, but it is under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too minimal to be complete for a 3-parameter required tool. It lacks essential context for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter details. The meanings of 'addr', 'name', and 'size' remain undefined, severely hindering correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'save' and the resource 'memory snapshot', making the primary action obvious. However, it does not differentiate from sibling tools like 'heap_snapshot' or 'mem_diff', which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description lacks context for usage scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_probeC
删除 probe。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states 'delete probe' but does not disclose important behavioral traits such as whether deletion is permanent, requires special permissions, or affects other probes. No annotations are present to compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence. It is front-loaded and wastes no words, but could benefit from a bit more detail without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter and an output schema, the description lacks essential context such as the effect of deletion and any return values. It leaves the agent guessing about side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description adds no additional meaning to the 'id' parameter. It does not clarify what type of ID (e.g., name, UUID) or any constraints beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (remove) and the resource (probe). It is specific enough to convey the tool's purpose, though it does not differentiate from sibling tools like add_probe or list_probes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives (e.g., add_probe, list_probes), nor does it mention prerequisites or side effects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_eventsC
按 label 查询请求内 heap 事件,可按 caller/type 过滤。
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | ||
| limit | No | ||
| event_types | No | ||
| caller_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states a query operation. It fails to disclose behavioral traits such as read-only nature, performance impact, or any side effects. With no annotations, the description should carry the full burden but does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks necessary detail for a tool with 4 parameters. It is front-loaded with the core purpose, but under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no schema descriptions, and potentially overlapping siblings, the description is incomplete. It does not define the output schema (though it exists) or explain default behavior. More context is needed for proper use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It mentions 'label' and filtering by caller/type, but does not explain the format of event_types or caller_contains, nor the limit parameter. The description adds some meaning but is insufficient for the 4 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries heap events by label, with filtering by caller and type. The verb 'query' and resource 'heap events within a request' are specific, though it does not explicitly distinguish from sibling tools like request_timeline or heap_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. siblings like request_timeline or heap_bins_json. There is no mention of prerequisites, contexts, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_timelineC
读取请求级 heap timeline。
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| include_raw | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only says 'read' but does not clarify that it is read-only, its safety profile, or any side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at one sentence but too brief to convey necessary detail. It is front-loaded but sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count and lack of schema descriptions, the description is incomplete. It does not explain how parameters affect behavior or what the output contains, despite an output schema existing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the parameters 'label' and 'include_raw'. The meaning of these parameters remains completely unclear, adding no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool reads a 'request-level heap timeline', which is a specific verb and resource. However, it does not differentiate from sibling tools like 'request_events' or other heap-related tools, leaving potential ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'request_events' or 'heap_get_state'. The description lacks any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_heap_sweepC
Payload sweep 框架。configs 为 JSON list;command_template 可用 {config_json} {out_json} 占位。
| Name | Required | Description | Default |
|---|---|---|---|
| configs | Yes | ||
| out_dir | No | research/results/heap_sweeps | |
| stop_conditions | No | {} | |
| command_template | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description discloses no behavioral traits such as side effects, permissions, or output behavior. This is a significant gap for a mutation-like tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the purpose. It is reasonably structured for its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, output schema exists), the description is too sparse. It omits essential context about what a 'sweep' entails and what results are produced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by clarifying that configs is a JSON list and command_template uses placeholders. However, it ignores out_dir and stop_conditions, leaving half of the parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a 'Payload sweep framework' and mentions configs and command_template, but the purpose remains vague. It does not specify what 'sweep' means or what resource it operates on, making it somewhat ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus siblings like heap_get_state or heap_snapshot. The description lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_connectA
Establish an SSH connection to a remote host.
Connect to a remote server for CTF debugging. Supports both key-based and password-based authentication.
Args: host: Remote host address (IP or hostname). port: SSH port number (default: 22). username: SSH username (default: root). key_path: Path to SSH private key file (optional). password: SSH password (optional).
Returns: Connection status message.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| port | No | ||
| key_path | No | ||
| password | No | ||
| username | No | root |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description lacks details on connection lifecycle, error states, security implications, or side effects. Only mentions authentication methods.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise with structured Args and Returns sections. No unnecessary words, effective for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality and parameters but lacks information on connection state management, return value details, and error conditions. Adequate but not complete for a stateful tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description provides clear parameter descriptions (e.g., host, port, username with defaults). Adds meaningful info beyond schema for all 5 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Establish an SSH connection to a remote host' and specifies it's for CTF debugging. Distinct from sibling SSH tools like ssh_disconnect and ssh_exec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'for CTF debugging' but does not provide explicit when-to-use vs alternatives or mention exclusions. Minimal guidance beyond context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_disconnectA
Disconnect from the current SSH session.
Close the active SSH connection and release all resources.
Returns: Disconnection confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that it closes the active connection and releases resources, which is clear. No hidden behaviors mentioned, but for a simple action, it's sufficiently transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences plus a returns line. Every sentence is meaningful and no extraneous text. It is front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, zero parameters, and existence of an output schema, the description is complete. It covers the action and confirms the return value without needing further detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description adds no parameter information beyond the schema. Baseline score of 4 is appropriate as per guidelines for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: disconnect from the current SSH session and release resources. It uses a specific verb ('disconnect') and resource ('SSH session'), and distinguishes well from sibling tools like ssh_connect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after an SSH connection is established, but does not explicitly state when to use or when not to use it. Given the simplicity, it's adequate but lacks explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_download_fileA
Download and read a file from the remote host via SFTP.
Retrieve the text content of a file from the connected remote server.
Args: remote_path: Path to the file on the remote host.
Returns: The text content of the remote file.
| Name | Required | Description | Default |
|---|---|---|---|
| remote_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool retrieves text content, implying text-only capability, but does not specify behavior on errors (e.g., missing file, permission issues) or whether it handles binary files. The side effects are none, but that is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a summary line, then a more detailed paragraph, followed by Args and Returns sections. It is relatively concise at about 70 words, though the summary and first sentence are slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, the description covers the core functionality and parameter meaning. It lacks details on error handling and prerequisites, but given the presence of an output schema (not shown), the description is adequately complete for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description adds meaning by explaining that remote_path is 'Path to the file on the remote host.' This clarifies the single parameter beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Download and read a file') and the resource ('remote host via SFTP'). It distinguishes well from sibling tools like ssh_upload_file and ssh_exec, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., active SSH connection) or limitations (e.g., text-only files). It assumes a connected remote server but does not direct the agent to ensure connectivity first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_execA
Execute a command on the remote host via SSH.
Run a shell command on the connected remote server and return the combined output including stdout, stderr, and exit code.
Args: command: Shell command to execute on the remote host.
Returns: Formatted string with stdout, stderr, and exit code.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Clearly states it returns combined stdout, stderr, and exit code. Does not mention error handling or side effects, but transparent enough for its function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four well-structured sentences: purpose, output details, args list, return format. No unnecessary words; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and an output schema (described), the description covers input and output completely. Error handling not required for a straightforward command execution.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'command' with 0% schema description coverage. Description adds 'Shell command to execute on the remote host,' fully clarifying its meaning and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes a command on a remote host via SSH, with specific verb 'Execute' and resource 'remote host.' It distinguishes from siblings like ssh_connect (connection) and file transfer tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, but context implies it is for running shell commands after an SSH connection. Does not mention alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ssh_upload_fileA
Upload a local file to the remote host via SFTP.
Transfer a file from the local machine to the connected remote server.
Args: local_path: Path to the local file to upload. remote_path: Destination path on the remote host.
Returns: Upload confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| local_path | Yes | ||
| remote_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It states the mechanism (SFTP) but does not mention overwrite behavior, error handling, or connection state requirements. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a summary, args list, and returns note. It could be more efficient by omitting the Args section that largely repeats schema info, but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, parameters, and return value. Given no annotations or output schema, it provides minimal but sufficient context for a simple file upload. Missing details like overwrite behavior or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage. The description adds brief explanations for each parameter, clarifying their roles beyond the schema titles. However, it lacks format or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Upload a local file to the remote host via SFTP,' specifying the verb and resource. It distinguishes from siblings like ssh_download_file and ssh_exec.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, or prerequisites. The description only explains what it does, not context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_chunkB
开始追踪 chunk 地址的 header/bin/memory diff 生命周期。
| Name | Required | Description | Default |
|---|---|---|---|
| addr | Yes | ||
| size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions tracking a 'lifecycle' but does not explain what tracking entails (e.g., whether it records events, requires resources, or is reversible). Output schema exists but is not referenced, and no side effects are noted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Front-loaded with key concept. Could be slightly more informative without adding bulk, but currently efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and two parameters (one undocumented), the description is incomplete. It does not explain return values, lifecycle details, or how the tool behaves over time. Sibling tools like 'untrack_chunk' suggest pairing, but no hint is given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only partially compensates by linking 'addr' to a chunk address. The 'size' parameter is entirely undocumented, and the description does not clarify how 'header/bin/memory diff lifecycle' relates to the parameters. Baseline for 0% coverage would be 4, but missing explicit parameter meanings reduces score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb '追踪' (track) and resource 'chunk地址的header/bin/memory diff生命周期', clearly indicating the tool starts tracking the lifecycle of a chunk's header, bin, and memory diff. This differentiates it from sibling tools like 'untrack_chunk' which stops tracking, and other query tools like 'heap_chunk_bin' that inspect state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for starting to monitor a chunk's lifecycle, but provides no explicit guidance on when to use versus alternatives (e.g., mem_diff, untrack_chunk). No contextual triggers or prerequisites are stated, making it average but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracked_chunks_statusA
输出已追踪 chunk 的当前 header、bin membership 和最近 diff。
| Name | Required | Description | Default |
|---|---|---|---|
| include_raw | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool outputs header, bin membership, and diff, implying a read-only operation. However, with no annotations provided, it does not explicitly state lack of side effects, authentication needs, or rate limits. The description carries the full burden but does not fully disclose behavioral traits beyond the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient. However, it omits necessary context about the parameter and usage, making it slightly under-specified. Front-loading is adequate, but could be improved without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description contains essential information (outputs status of tracked chunks) but assumes domain knowledge about header, bin membership, and diff. It does not mention that tracking must be set up first. An output schema exists, which may compensate for return value details, but overall completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'include_raw' with no description. The tool description does not mention or explain this parameter. Since schema description coverage is 0%, the description should compensate, but fails to do so. The parameter name provides some hint, but semantic meaning is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool outputs current header, bin membership, and recent diff of tracked chunks. It is a specific verb+resource (output status of tracked chunks) and differentiates from siblings like track_chunk (which adds tracking) and heap_bins_json (which shows all bins).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies it should be used after tracking chunks, but does not mention alternatives or prerequisites. Usage context is clear but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
untrack_chunkD
停止追踪 chunk。
| Name | Required | Description | Default |
|---|---|---|---|
| addr | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as side effects (e.g., whether removing tracking frees resources), required permissions, or whether the action is reversible. The agent has no insight into the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence in Chinese), but this conciseness comes at the cost of completeness. It fails to provide any useful information beyond what the name already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (one parameter, no nested objects) and the presence of an output schema (unseen), the description should at least explain the return value or behavior. It does not, leaving the tool's functionality largely opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no parameter details in the description, the single required parameter 'addr' is left unexplained. The agent cannot infer what kind of address (memory address, identifier, etc.) is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '停止追踪 chunk' essentially restates the tool name ('untrack chunk') in Chinese, adding no new information about what a 'chunk' is in this context. It is a tautology, as it only repeats the action implied by the name without clarifying the resource or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'track_chunk' or 'tracked_chunks_status'. The description fails to specify prerequisites or conditions for stopping tracking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
51 tool updates
v0.1.0- First observed
add_probe - First observed
begin_request - First observed
ctf_close - First observed
ctf_connect - First observed
ctf_menu_action - First observed
ctf_recv - First observed
ctf_recv_until - First observed
ctf_send - First observed
ctf_sendline - First observed
end_request - First observed
gdb_chunk - First observed
gdb_command - First observed
gdb_continue - First observed
gdb_continue_background - First observed
gdb_interrupt - First observed
gdb_memory - First observed
gdb_pause - First observed
gdb_read_output - First observed
gdb_restart - First observed
gdb_run - First observed
gdb_source_window - First observed
gdb_start - First observed
gdb_stop - First observed
heap_begin_action - First observed
heap_bins_json - First observed
heap_chunk_bin - First observed
heap_end_action - First observed
heap_find_chunk - First observed
heap_get_state - First observed
heap_query_delta - First observed
heap_query_log - First observed
heap_snapshot - First observed
ida_find_functions - First observed
ida_get_pseudocode - First observed
ida_get_xrefs - First observed
ida_headless_scan - First observed
list_probes - First observed
mem_diff - First observed
mem_snapshot - First observed
remove_probe - First observed
request_events - First observed
request_timeline - First observed
run_heap_sweep - First observed
ssh_connect - First observed
ssh_disconnect - First observed
ssh_download_file - First observed
ssh_exec - First observed
ssh_upload_file - First observed
track_chunk - First observed
tracked_chunks_status - First observed
untrack_chunk
TDQS
Most tools have distinct purposes, but there is some overlap among heap query tools (e.g., heap_query_delta vs heap_query_log) and GDB control tools (e.g., gdb_interrupt vs gdb_pause). However, descriptions are clear enough to differentiate.
All tools use lowercase_with_underscores and follow a consistent verb_noun or prefix_category pattern. The prefixes (gdb_, heap_, ctf_, ssh_, ida_) provide clear grouping.
With 51 tools, the server is overly large for a focused CTF pwn debugging toolset. Many tools could be consolidated, and the sheer number may overwhelm agents and reduce coherence.
The toolset covers most aspects of CTF pwn debugging: GDB interaction, heap analysis, memory snapshots, IDA integration, SSH file transfer, and CTF program interaction. Minor gaps exist (e.g., no explicit register manipulation), but gdb_command can compensate.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Reasoning, code, anti-deception, memory harness MCP tools. Stdio or HTTPS api.ejentum.com/mcp
Agent Replay Debugger MCP — record every agent step + deterministic replay. Step-debugger for
AI-security knowledge as MCP: standards-mapped tools (OWASP, NIST, MITRE) for AI agents.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Related MCP Servers
- AlicenseCqualityDmaintenanceAn MCP server that exposes pwndbg commands running under LLDB as tools for AI assistants. This enables AI-driven binary analysis, exploit development, and reverse engineering through pwndbg's enhanced debugging capabilities.1001MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to control GDB debugger via MCP protocol for local and remote debugging, supporting CTF Pwn, crash analysis, and ELF inspection.131MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP tool that enables AI agents to debug ELF binaries, particularly for CTF pwn challenges.35MIT
- FlicenseNot gradedqualityCmaintenanceA stateful debugging and binary research system for LLM agents, integrating GDB + pwndbg with MCP for deterministic exploit workflows and multi-session support.280-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Aiyakami/PWN-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server