Skip to main content
Glama

agent-tool

韩语

面向 AI 编程智能体的 MCP(Model Context Protocol)工具服务器。

为什么?

  • Tab 缩进损坏:LLM 输出空格,但你的项目使用 Tab。内置的 Edit 工具会原样写入空格,从而破坏你的缩进风格。

  • 编码损坏:编辑 EUC-KR、Shift-JIS 或 GB18030 文件会静默地将其转换为 UTF-8,从而破坏遗留项目。

  • 工具过于分散:让智能体去查找、安装和配置 Redis CLI、MySQL 客户端、SSH 客户端等既繁琐又容易出错。agent-tool 将 54 个工具打包进一个二进制文件,并通过精简的配置方案按需暴露它们。

  • 不支持逆向工程:内置工具无法反汇编二进制文件、检查 PE/ELF 头、查找函数边界或搜索交叉引用。agent-tool 包含静态二进制分析(反汇编、xref、函数检测)、DAP 调试器以及 CheatEngine 风格的内存工具——让你的智能体具备完整的逆向工程能力。

  • 网络审查:在某些国家,政府级别的网络过滤会破坏普通的 curl/wget 请求。agent-tool 默认使用 ECH(Encrypted Client Hello)和 DoH(DNS over HTTPS)来绕过这些限制。

agent-tool 通过面向智能体的工具解决这些问题,在保持模型上下文有界的同时保留项目约定。

Related MCP server: DevToolkit MCP Server

支持的智能体

Claude Code、Codex CLI、Cursor、Windsurf、Cline、Gemini CLI 以及任何兼容 MCP 的智能体。

默认对 LLM 高效

默认的 core 配置方案只暴露 11 个 schema(包括 toolbox),而不是全部 54 个。在协议级别的测量中,这使序列化后的工具列表从约 84 KB(full)减少到 18 KB。使用 toolbox(operation="describe", tool="ssh", compact=true, tool_operation="execute") 只加载一个操作的字段和必填列表,然后通过 toolbox(operation="call", tool="ssh", arguments={...}) 调用它。网关不依赖动态工具列表刷新,因此可以与 Codex 等固定绑定客户端配合使用。Describe 会返回一个绑定工具/版本的 schema_handle;在后续 describe 调用中发送它,如果 schema 仍然是最新的,就会返回一个简短的不变确认。你也可以使用 --profile coding|remote|analysis|full 启动。

可能较大的文本响应默认为 32K 字符,硬性上限为 128K。截断始终可见,可分页的工具会返回 next_offset 或 next_cursor。

本地相对路径会先基于显式工作区解析,然后再基于 MCP 客户端根目录解析。

功能

工具

描述

状态

Edit

字符串替换,具备智能缩进和编码保留(支持 dry_run)

✅

Read

编码感知、带行号的读取。默认 400 行/32K 字符,报告截断和精确的 next_offset,安全处理超长行,可选 SHA-256。灵活的偏移量和 MCP ImageContent 支持

✅

Write

编码感知的文件创建/覆盖

✅

Grep

编码感知的正则搜索,32K 输出预算,紧凑的文件分组输出,相对路径,.gitignore/生成目录过滤,二进制检测,输出模式/上下文,以及无重复匹配的确定性 next_cursor 分页

✅

Glob

使用 ** 进行排序、有界文件匹配,相对路径,生成目录过滤,显式 has_more,以及确定性游标分页

✅

ListDir

有界/可分页的目录列表。max_entries + 继续游标,目录/文件过滤器,条目名称 glob 过滤器,仅计数模式,扁平/树形输出

✅

Diff

比较两个文件并输出统一 diff(编码感知)。仅行尾或末尾换行不同的文件会明确说明,而不是返回空 diff

✅

Patch

对文件应用统一 diff 补丁(支持 dry_run)。每行保留自己的行尾,因此不会重写混合 CRLF/LF 的文件

✅

Checksum

计算文件哈希(md5、sha1、sha256)

✅

FileInfo

文件元数据(大小、编码、混合行尾计数、缩进、行数)

✅

Compress

创建 zip / tar.gz 归档

✅

Decompress

解压 zip / tar.gz 归档(Zip Slip/压缩炸弹防护)

✅

Backup

带时间戳的 zip 备份,支持排除模式。dry_run 预览包含目录统计、模式匹配计数和最大文件

✅

ConvertEncoding

转换文件编码(EUC-KR ↔ UTF-8、添加/删除 BOM 等)

✅

Delete

安全的单文件删除(不支持目录、不支持符号链接、系统路径保护、dry_run)

✅

Rename

原子性的文件/目录重命名或移动(dry_run)

✅

SysInfo

系统信息 — 操作系统、CPU、内存、磁盘、运行时间、CPU 使用率测量

✅

FindTools

发现已安装的开发工具 — 编译器、运行时、构建系统(Go、.NET、Node、Python、Java、Rust、C/C++ 等)。搜索 PATH、环境变量和已知位置(~/bin、snap、scoop、Homebrew、SDKMAN、nvm、fnm、pyenv)

✅

ProcList

列出正在运行的进程 — PID、名称、命令行、内存。敏感参数自动掩码。按名称或端口过滤

✅

ProcKill

按 PID 或端口终止、挂起或恢复进程。支持进程树终止、信号选择(kill/term/hup/int/stop/cont)、僵尸进程处理(Linux)、dry_run

✅

ProcExec

以新进程方式执行命令。支持前台/后台/挂起启动、超时/环境变量,以及安全的重复诊断压缩和可过期的原始输出检索

✅

EnvVar

读取环境变量。敏感值(密码、令牌)自动掩码

✅

Firewall

读取防火墙规则 — iptables/nftables/firewalld(Linux)、netsh(Windows)。只读

✅

SSH

SSH 执行,带 32K 头部+尾部捕获、原始字节数、正确的非零退出错误,以及后台作业(start/status/tail/cancel)。支持认证感知的连接池、主机密钥验证、ProxyJump、IPv6

✅

SFTP

通过 SSH 传输文件和管理远程文件系统。支持上传、下载、ls、stat、mkdir、rm、chmod、重命名。复用 SSH 会话池。每次传输最大 2 GB

✅

Bash

持久化 shell 会话,保留工作目录/环境,安全重复诊断压缩,以及可过期的原始输出检索。会话池(最多 5 个,空闲超时 30 分钟)。Unix:bash/sh,Windows:PowerShell/git-bash/cmd

✅

WebFetch

以文本/Markdown 获取网页内容,默认 32K/最大 128K。ECH + DoH、HTML→Markdown 转换、SSRF 防护、代理支持、Chrome User-Agent

✅

WebSearch

通过 Brave Search 或 Naver API 进行网页搜索。需要 API 密钥环境变量(BRAVE_SEARCH_API_KEY 或 NAVER_CLIENT_ID/NAVER_CLIENT_SECRET)。自动选择引擎,优先 Brave

✅

Download

将 URL 的文件下载到磁盘。默认使用 ECH + DoH。SSRF 防护。HTTP/SOCKS5 代理。原子写入。最大 2 GB

✅

HTTPReq

使用任意方法执行 HTTP 请求(GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS)。支持自定义标头、正文、代理的 API 测试。SSRF 防护

✅

JSONQuery

使用点号路径查询 JSON 文件(例如 dependencies.react、items[*].id)。提取特定值,而无需将整个文件加载到上下文中

✅

YAMLQuery

使用点号路径查询 YAML 文件(语法与 JSONQuery 相同)

✅

TOMLQuery

使用点号路径查询 TOML 文件(语法与 JSONQuery 相同)。支持 TOML 特定类型(datetime、int64)

✅

Copy

复制文件/目录,支持原子写入和权限保留。递归目录复制。Windows 锁定文件回退(将正在运行的 exe/DLL 移到旁边)。dry_run 预览

✅

Mkdir

创建目录,可指定权限模式(八进制,例如 0755)。默认递归创建(mkdir -p)。dry_run 预览

✅

MultiRead

最多读取 50 个文件,调用级 32K 预算,每个文件默认 200 行,长行安全,以及按文件/整体的续读元数据。哈希为可选启用

✅

RegexReplace

跨文件/目录的正则查找替换。保留编码和行尾,支持捕获组($1、$2)。跳过二进制文件。dry_run 预览

✅

TLSCheck

检查 TLS 证书详情 — 主题、颁发者、过期时间、SANs、TLS 版本、密码套件

✅

DNSLookup

DNS 记录查询(A/AAAA/MX/CNAME/TXT/NS/SOA)。默认使用 DNS over HTTPS(DoH)以保护隐私

✅

MySQL

在 MySQL/MariaDB 上执行 SQL 查询。表格式 SELECT 结果,可配置行/列/单元格/总输出限制;DML 影响行数。使用 SQL LIMIT/OFFSET 进行分页

✅

Redis

执行 Redis 命令,按类型格式化输出。支持 TLS。危险命令(FLUSHALL、SHUTDOWN 等)被阻止

✅

PortCheck

检查主机上的 TCP 端口是否打开。返回 OPEN/CLOSED 及响应时间。支持主机名、IPv4、IPv6

✅

ExternalIP

获取你的外部(公网)IP 地址。多个提供商,自动回退(ipify、ifconfig.me、icanhazip)

✅

SLOC

按语言统计源代码行数。支持 70+ 种语言检测、按文件/语言细分、空行统计、max_depth 控制

✅

Debug

通过 DAP(调试适配器协议)进行交互式调试。完整 DAP 覆盖,带值/输出限制以及变量、补全、模块和已加载源的分页。已使用 dlv(Go)、debugpy(Python)、codelldb(C/C++/Rust)测试。可与任何兼容 DAP 的适配器配合使用。支持 Stdio 和 TCP 模式。注意:vsdbg(Microsoft)需要 VS Code 许可,不能独立使用 — 可使用 codelldb 或 netcoredbg 作为开源替代方案

✅

Analyze

静态二进制分析和逆向工程。x86/x64/ARM/ARM64 反汇编;PE/ELF/Mach-O 解析,带受限且可分页的 PE 导入输出;xref、函数发现/调用图、指针/RTTI/vtable/结构体分析、imphash、Rich 头、DWARF、字符串、hexdump、模式搜索、熵、覆盖检测和二进制差异。无全局文件大小限制

✅

Memtool

CheatEngine 风格进程内存工具 — 搜索/过滤/读/写内存值,read_chain(解析 base+offset 指针链,单次调用批量处理),实时反汇编(x86/x64/ARM/ARM64),撤销,结构体模式搜索,指针扫描,内存差异。大扫描使用磁盘支持的快照。带空闲超时的会话管理。Windows(ReadProcessMemory)和 Linux(/proc/pid/mem)。Windows 在提升权限时自动启用 SeDebugPrivilege;可选的 force_dacl 可绕过同用户进程的自加固 DACL(之后恢复原样)

✅

IPC

通过 TCP 在 AI 代理会话之间进行进程间通信。1:1 消息传递,支持阻塞接收。协议:[2 字节类型][4 字节长度][有效载荷]。操作:发送、接收(带超时的阻塞)、ping。可跨机器工作。最大 1MB 消息,300 秒超时

✅

Wintool

Windows GUI 自动化 — 查找/枚举窗口和子控件、捕获截图(通过 PrintWindow 输出 ImageContent PNG)、读取剪贴板图像、读取/设置文本、点击、输入、发送原始消息、显示/隐藏/最小化/最大化、移动/调整大小、关闭、聚焦。screenshot/clipboard 默认返回 ImageContent(save_path 选项可输出到文件)。使 AI 代理能够“看到”并交互 GUI 应用程序。仅 Windows

✅

CodeGraph

完全嵌入的语义代码图:Go 标准库 AST 以及用于 C/C++、Python、C#、Rust 和 Java 的惰性压缩 tree-sitter WASM。添加声明/定义身份、返回链和泛型/别名传播、传递包含、校准的重载证据、虚/接口分派、宏/回调边、构建条件来源和多根工作区。无编译器、语言服务器、外部二进制、LLM 调用或令牌成本

✅

SetConfig

更改运行时设置(编码、文件大小限制、符号链接、工作区等)

✅

Help

面向代理的内置使用指南(编码、缩进、故障排除)

✅

主要改进

智能缩进

LLM 通常输出空格,但许多项目使用制表符。AgentTool 会自动转换缩进,以匹配文件现有的风格。

  • 读取 .editorconfig 中的 indent_style 和 indent_size

  • 回退到基于内容的检测(前 100 行)

  • 保护旧文件:如果实际内容与 .editorconfig 矛盾,则不进行转换

编码保留

编辑操作会保留原始文件编码,而不是强制使用 UTF-8。

  • 检测优先级:BOM → .editorconfig 字符集 → 无 BOM 的 UTF-16 → 有效 UTF-8 → chardet 自动检测 → 回退编码

  • 支持:UTF-8、UTF-8 BOM、EUC-KR、Shift-JIS、ISO-8859-1、UTF-16(LE/BE,带或不带 BOM)等

  • ASCII 不产生误报:直接验证有效 UTF-8,因此纯 ASCII 文件永远不会引发低置信度警告。

  • 行尾:检测 LF、CRLF、CR 以及混合行尾的文件。无论文件使用 CRLF 还是 LF(包括两者混用的文件),edit 都能匹配多行 old_string;edit/regexreplace 插入的文本会跟随所落区域的换行风格,因此文件其余部分保持逐字节不变。

节省 Token 的目录列表

listdir 默认每页返回 500 个条目,当有更多条目可用时返回 next_cursor。 使用 directories_only、files_only、name_pattern(例如 A*)或 include 中的多个 OR 模式来缩小结果范围。 当只需要匹配的文件/目录计数时,使用 counts_only=true。

空闲内存释放

在 30 分钟没有工具调用后,服务器会将堆内存归还给操作系统。stdio MCP 服务器无法区分被遗弃的客户端与暂时安静的客户端——生成它的进程可能仍然存活、已经不再需要它,却依然持有管道使其保持打开,因此永远不会出现 EOF——而如果仅凭这种猜测退出,就会中断一个只是暂停的会话。释放内存是这一权衡中更安全的选择:曾经读取过 50MB 文件的实例会回落到约 ~20MB 的基线,而不是在机器剩余运行时间内一直占用 200MB。已打开的 shell 和 ssh 会话不受影响,客户端可观察到的任何内容都不会改变。

快速开始

  1. 从 Releases 下载适用于你的操作系统的二进制文件

  2. 运行 agent-tool install(或针对特定代理运行 agent-tool install claude)

  3. 重启你的 IDE / 代理

  4. 完成——精简的核心工具立即可用;toolbox 会按需描述并调用其他所有工具

或者直接让你的 AI 代理替你做这件事:

"从 https://github.com/knewstimek/agent-tool/releases/latest 下载 agent-tool 并运行 agent-tool install"

任何有能力的 AI 编程代理(Claude Code、Codex 等)都能自动处理「下载 → 安装 → 重启」的完整流程。

推荐:告诉你的代理优先使用 agent-tool

安装后,代理可以访问 agent-tool,但仍可能默认使用内置工具(Read、Edit 等)。为确保代理优先使用 agent-tool 这些感知编码、智能缩进的工具,请添加以下说明之一。

代码导航提示:对于大型项目,请将以下内容添加到你的 CLAUDE.md / AGENTS.md,以启用基于 AST 的代码导航:

At the start of a session, run codegraph(op="index", path="<project_root>") to build a code index.
For several repositories sharing one graph, use codegraph(op="index", path="<db_root>", roots=["<source_root_1>", "<source_root_2>"]). Source-root provenance prevents unrelated projects with the same symbol names from contaminating candidates while explicit/transitive includes can still cross roots.
Then use codegraph for structural queries (find, callers, callees, methods, inherits) instead of grep.

选择 Strict 或 Soft:

模式

适用场景

说明

Strict

包含非 UTF-8 文件或混合缩进的项目

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools. agent-tool preserves file encoding and respects .editorconfig indentation settings.

Soft

一般项目

Prefer agent-tool MCP tools (mcp__agent-tool__*) over built-in file tools when available.

放置位置:

按项目 — 添加到项目的 CLAUDE.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.

全局(所有项目)— 添加到 ~/.claude/CLAUDE.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.

强制实施 — 通过 ~/.claude/settings.json 在权限级别拒绝内置文件工具:

{
  "permissions": {
    "deny": ["Read", "Edit", "MultiEdit", "Write", "Glob", "Grep"]
  }
}

这会使 Claude Code 的内置文件工具不可用,从而强制代理使用 agent-tool。当你希望在不依赖提示词指令的情况下实施严格管制时,推荐使用此方式。

  1. 添加到 ~/.codex/config.toml(顶层,不要放在 [mcp_servers.*] 内):

model_instructions_file = "~/.codex/model_instructions.md"
  1. 创建 ~/.codex/model_instructions.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.
  1. 重启 Codex。

按项目 — 改为添加到项目的 AGENTS.md。

添加到项目的 .cursorrules、.windsurfrules 或 AGENTS.md:

ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools.

安装

自动安装(推荐)

# Register with all detected agents (full auto-approve — all tools)
agent-tool install

# Safe mode — only auto-approve local file tools (no SSH, HTTP, DB, shell)
agent-tool install --safe-approve

# No auto-approve — manual approval required for every tool call
agent-tool install --no-auto-approve

# Register with a specific agent
agent-tool install claude
agent-tool install claude --safe-approve

# Uninstall (removes agent-tool entry only, preserves other settings)
agent-tool uninstall          # from all agents
agent-tool uninstall claude   # from specific agent

安装权限级别:

级别

标志

自动批准的工具

完整(默认)

(无)

所有工具(mcp__agent-tool__* 通配符)

安全

--safe-approve

29 个仅本地工具(read、edit、write、grep、glob 等)— 不含 SSH、HTTP、DB、bash、进程控制

无

--no-auto-approve

无工具 — 每次调用都需要手动批准

批准级别与 schema 配置档无关:安装过程可以批准整个命名空间,而服务器仍以节省 token 的 core 配置档启动。toolbox 有意不被 --safe-approve 自动批准,因为其 operation=call 网关可以调用网络、shell、数据库和进程控制工具。安全模式用户应逐一审查每个 toolbox 批准,除非打算信任整个 AgentTool 命名空间,否则不要为其授予永久允许规则。

手动设置

Claude Code / Cursor / Cline(settings.json 或 mcp.json):

{
  "mcpServers": {
    "agent-tool": {
      "command": "/path/to/agent-tool"
    }
  }
}

Codex CLI(~/.codex/config.toml):

[mcp_servers.agent-tool]
command = "/path/to/agent-tool"

选项

# Select the initial schema profile (default: core)
agent-tool --profile coding

# Set fallback encoding for projects with non-UTF-8 files
agent-tool --fallback-encoding EUC-KR

配置档是叠加式预设:core(11 个 schema)、coding(core 加上更广泛的文件/构建/shell 工具)、remote、analysis 和 full。在运行时,优先使用与客户端无关的 toolbox 网关:operation=describe 返回某个工具的 schema(compact=true 加上 tool_operation 可将其限制为单个操作),operation=call 则通过稳定的 toolbox 绑定调用它。重新发送返回的 schema_handle,可避免再次收到未变化的 schema。当命令诊断被压缩时,operation=output 可在 30 分钟内通过其报告的 ID 获取受限的原始输出,并在需要分页时报告 next_offset。enable、disable 和 profile 仍可供支持 tools/list_changed 的客户端使用;固定绑定的客户端可以继续使用该网关。

环境变量

设置 AGENT_TOOL_FALLBACK_ENCODING 和/或 AGENT_TOOL_PROFILE,避免重复指定 CLI 标志:

# Windows (no admin required)
setx AGENT_TOOL_FALLBACK_ENCODING EUC-KR
setx AGENT_TOOL_PROFILE coding

# Linux / macOS (add to ~/.bashrc or ~/.zshrc)
export AGENT_TOOL_FALLBACK_ENCODING=EUC-KR
export AGENT_TOOL_PROFILE=coding

优先级:CLI 标志 > 环境变量 > 默认值(UTF-8)。

本地 SSH/SFTP 连接配置

SSH 和 SFTP 接受 connection_profile 或会话本地的 connection_id,因此主机、用户、密钥和跳板机字段无需重复填写。配置档从操作系统用户配置目录下的 agent-tool/connections.json 读取;可使用 AGENT_TOOL_CONNECTION_PROFILE_FILE 覆盖该位置。请将此文件保存在本地;如果放置在工作区内,请显式忽略它。

{
  "connections": {
    "dev": {
      "host": "192.0.2.10",
      "user": "builder",
      "key_file": "/local/path/to/id_ed25519",
      "host_key_check": "strict",
      "trusted": true
    }
  }
}

首次调用会返回一个不透明的 connection_id,两个工具在 30 分钟内都可以重复使用它。trusted:true 仅影响显示:对于允许的私有地址,每个连接池只显示一次警告,而不是每次调用都显示;SSRF 阻断和云元数据保护保持不变。SSH 还支持 quiet、echo_command 和 result_only;后者返回以 stdout、stderr 和 exit_code 为核心的紧凑 JSON。SFTP 支持 quiet、result_only 和 upload_many(最多 100 个文件)。

运行时配置

代理可以通过 set_config 在运行时更改设置,无需重启:

参数

描述

默认值

fallback_encoding

自动检测失败时的回退编码

UTF-8

encoding_warnings

显示编码检测警告

true

max_file_size_mb

read/edit/grep 的最大文件大小(MB)

100

allow_symlinks

允许从 tar 归档中提取符号链接

false

workspace

显式指定本地工作区根目录。否则使用第一个 MCP 客户端根目录,然后是 cwd

(MCP 根目录/cwd)

allow_http_private

允许 webfetch/download/httpreq 访问私有 IP

false

allow_mysql_private

允许 mysql 工具访问私有 IP

true

allow_redis_private

允许 redis 工具访问私有 IP

true

allow_ssh_private

允许 ssh/sftp 工具访问私有 IP

true

enable_doh

全局启用 DNS over HTTPS(webfetch/download/httpreq/dnslookup)

true

enable_ech

全局启用 Encrypted Client Hello(webfetch/download/httpreq)

true

构建

go build -trimpath -ldflags="-s -w" -o agent-tool .

交叉编译:

GOOS=linux GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o agent-tool .
GOOS=darwin GOARCH=arm64 go build -trimpath -ldflags="-s -w" -o agent-tool .
GOOS=windows GOARCH=amd64 go build -trimpath -ldflags="-s -w" -o agent-tool.exe .

故障排除

乱码文本(编码问题)

如果韩文、日文或其他非 ASCII 文本显示为乱码:

选项 1:在 .editorconfig 中添加 charset:

[*]
charset = euc-kr

选项 2:设置环境变量(持久生效):

setx AGENT_TOOL_FALLBACK_ENCODING EUC-KR   # Windows
export AGENT_TOOL_FALLBACK_ENCODING=EUC-KR  # Linux

选项 3:CLI 标志(按会话):

agent-tool --fallback-encoding EUC-KR

面向代理的内置帮助

agent-tool 包含一个 agent_tool_help 工具,代理可以调用它获取使用指导。当代理遇到编码警告或乱码文本时,可以调用:

{ "tool": "agent_tool_help", "arguments": { "topic": "encoding" } }

可用主题:overview、encoding、indentation、tools、troubleshooting

安全

agent-tool 提供强大的系统访问能力(SSH、MySQL、Redis、文件操作、HTTP 请求)。与 AI 编程代理一起使用时,请注意提示注入风险:

  • SSRF 防护:云元数据 IP(169.254.x.x、fe80::/10)无论何种设置始终被阻止。私有 IP 访问可通过 set_config 按协议配置(allow_http_private、allow_mysql_private、allow_redis_private、allow_ssh_private)

  • DLP(数据丢失防护):所有出站 HTTP 请求体都会被扫描,以查找敏感数据模式(PEM 私钥、AWS 访问密钥、GitHub/GitLab 令牌、Slack 令牌、.env 文件转储),并在传输前被阻止

  • 提示注入警告:每次私有 IP 连接都会显示一条安全警告,用户和 AI 代理均可见,有助于检测来自抓取的网页内容的提示注入攻击

  • Zip Slip 防护:包含 ../ 路径穿越的归档条目将被阻止(zip 和 tar 均适用)

  • Zip 炸弹防护:单文件限制(1GB),总解压限制(5GB)

  • 符号链接:默认跳过。通过 set_config allow_symlinks=true 启用(仅限 tar;zip 符号链接始终跳过)。即使启用,指向输出目录外部的符号链接也会被阻止

  • 文件大小限制:可配置最大文件大小(默认 100MB),防止大文件导致 OOM。可通过 set_config max_file_size_mb=N 调整

  • 编码安全性:chardet 使用 64KB 采样(而非整个文件)以提高内存效率

为获得最大安全性,请在批准前审查 AI 代理的工具调用,尤其是 SSH 命令、对外部 URL 的 HTTP 请求以及数据库查询。

技术栈

许可证

MIT

Available Tools

11 tools
agent_tool_help

Returns usage guide for agent-tool. Call this when you encounter encoding warnings, garbled text, or need to understand agent-tool features. Topics: overview, encoding, indentation, tools, debug, analyze, troubleshooting.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoHelp topic. Available: overview, encoding, indentation, tools, debug, analyze, memtool, wintool, codegraph, troubleshooting. Empty = overview
editA

Replace exact text in a file. Preserves encoding and local line endings, adapts indentation using the file and .editorconfig, and supports dry-run plus hash-guarded edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for file_path
dry_runNoPreview only; default false
file_pathNoFile path; relative to workspace/MCP root
new_stringNoReplacement text; must differ from old_string
old_stringNoExact text to find in the file
new_contentNoAlias for new_string
old_contentNoAlias for old_string
replace_allNoReplace every match; default false
indent_styleNotabs or spaces-N; default auto-detect
expected_hashNoExpected SHA-256; mismatch rejects edit

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. It discloses several non-obvious traits: preserves encoding and local line endings, adapts indentation via .editorconfig, and supports dry-run and hash-guarded edits. It does not detail failure modes or response format, but for a mutation tool it offers respectable transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence that front-loads the core action ('Replace exact text in a file') and packs three behavioral notes into a compact clause. Every phrase earns its place with zero fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with 10 parameters, but all are fully documented in the schema. The description covers key behavioral aspects (encoding, line endings, indentation, dry-run, hash). However, it lacks guidance on when to use this tool versus the closely related siblings (write, patch, multiedit), which is a meaningful completeness gap for correct selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reiterates the purpose of dry_run and expected_hash and adds context about indentation adaptation, but does not add meaning beyond what the schema already documents for the parameters. It neither compensates for gaps nor contradicts the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Replace'), a resource ('a file'), and a distinctive qualifier ('exact text'), clearly separating it from write (new content) and patch (diff-based). It does not name sibling tools, but the exact-text aspect is sufficiently differentiating against the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for exact text replacement and mentions advanced features (dry-run, hash-guard) that suggest safe editing contexts. However, it provides no explicit guidance on when to use this tool versus write, patch, or multiedit, and offers no exclusion criteria or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

globA

Finds files matching a glob pattern. Supports ** recursive matching and sorts results by modification time (newest first). Defaults to 200 workspace-relative paths and 32768 characters per page. Skips hidden paths and paths excluded by root .gitignore/.ignore or the common generated/vendor policy unless explicitly included. Returns total/has_more/truncated metadata and an opaque next_cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoDirectory to search. Defaults to configured workspace, MCP client root, or current directory
limitNoMaximum paths returned per page. Default: 200, Max: 5000
cursorNoOpaque continuation cursor returned by a previous glob call
patternYesGlob pattern to match files (e.g. **/*.go or src/**/*.ts)
include_hiddenNoTraverse hidden directories. Explicit hidden roots are always searched. Default: false
relative_pathsNoReturn paths relative to the search directory. Default: true
include_ignoredNoInclude paths excluded by .gitignore/.ignore or the common generated/vendor policy. Default: false
max_output_charsNoMaximum returned text characters. Default: 32768, Max: 131072

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden, and it excels: it discloses sorting by modification time, default limits (200 paths, 32768 chars), skip rules for hidden and ignored paths, and pagination via next_cursor and metadata (total/has_more/truncated). This is thorough and actionable, covering the major behavioral traits an agent needs to anticipate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by key behaviors and return metadata. Every sentence adds distinct information (recursion, sorting, defaults, exclusions, pagination) with no filler. It is well-structured and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no annotations, and no output schema, the description covers the essential usage context: purpose, defaults, skip rules, sorting, and pagination metadata. It clearly states the return includes metadata and a cursor, which is sufficient for an agent to invoke and handle results. Minor gaps exist (e.g., exact shape of the path list) but these are not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining how parameters interact: e.g., include_hidden affects traversal, include_ignored overrides skip rules, and limit/cursor govern pagination. It also clarifies default behavior (workspace-relative, 200 limit). This enriches parameter understanding without contradicting the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Finds files matching a glob pattern.' It immediately distinguishes from siblings like listdir (directory listing) and grep (content search) by specifying pattern matching and recursive support. This is a specific, unambiguous purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when pattern-based file discovery is needed but does not explicitly state when to prefer this over listdir or grep, nor does it list exclusions (e.g., 'for directory contents, use listdir'). Context is provided via behavior (e.g., default limits, skip rules) but not as routing guidance. It is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

grepA

Regex-search encoding-aware files or directories. Supports context, glob filters, content/file/count modes, ignored-path controls, and bounded pageable output. Directory searches skip detected binaries; explicit files are searched.

ParametersJSON Schema
NameRequiredDescriptionDefault
globNoDirectory file filter, e.g. *.go
pathNoFile or directory; defaults to workspace/MCP root/CWD
afterNoLines after; overrides context
beforeNoLines before; overrides context
cursorNoContinuation cursor; incompatible with context lines
contextNoLines before/after; max 1000
patternYesRegular expression
file_pathNoAlias for path
recursiveNoRecurse; default true
ignore_caseNoIgnore case
max_resultsNoMatches per page; default 100, max 100000
output_modeNocontent (default), files_with_matches, or count
output_formatNocompact (default) or classic path:line:text
include_hiddenNoInclude hidden directories
max_line_charsNoPer-line cap; default 4000, max 32768
relative_pathsNoPaths relative to root; directory default true
include_ignoredNoInclude ignored/generated/vendor paths
max_output_charsNoOutput cap; default 32768, max 131072

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a strong job: it discloses encoding-awareness, binary skipping in directories, bounded pagination, ignored-path controls, and output modes. It does not mention rate limits or auth, but for a read-only search tool, this is comprehensive. No contradiction with annotations since none exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, and every clause adds value (modes, filters, output behavior, binary handling). No fluff, well-structured for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 18 parameters and no output schema, the description covers the major behavioral areas (search scope, filters, pagination, binary handling). It does not explicitly mention incompatibilities like cursor vs. context, but those are captured in the schema. The description is sufficient for an agent to understand the tool's role and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter. The description adds high-level context (e.g., 'context, glob filters, content/file/count modes') that maps to parameters but does not explain each individually. It does not go beyond the schema, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Regex-search') and resource ('encoding-aware files or directories'), and enumerates key features that distinguish it from siblings like glob (which finds filenames) and read (which reads content). It leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via feature list but does not explicitly state when to use grep versus alternatives (e.g., 'use for content search, not filename matching'). It does clarify directory vs. explicit file behavior, but lacks direct routing guidance or exclusions, so the agent must infer from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listdirA

Lists directory contents with bounded, pageable output. Default: flat listing, max_depth=3, max_entries=500. When has_more=true, pass next_cursor as cursor to fetch the next page. Filter by type with directories_only or files_only, and by entry-name glob with name_pattern (single) or include (multiple OR patterns, e.g. ["A*", "*.go"]). Use counts_only=true for counts without names, flat=false for a visual tree, and relative_paths=true to save tokens. Skips hidden entries and common build/vendor directories during recursion.

ParametersJSON Schema
NameRequiredDescriptionDefault
flatNoFlat listing without tree connectors (one path per line). Default: true
pathNoDirectory to list. Relative paths use the configured workspace or MCP client root
cursorNoOpaque continuation cursor returned by a previous listdir call
includeNoAdditional entry-name glob patterns. An entry is included when any pattern matches
file_pathNoAlias for path
max_depthNoMaximum depth for traversal. Default: 3
files_onlyNoReturn files only: true or false. Default: false
counts_onlyNoReturn matching directory/file counts without listing names: true or false. Default: false
max_entriesNoMaximum entries to return per page. Default: 500, maximum: 10000
name_patternNoGlob matched against each entry name, for example A* or *.go
relative_pathsNoShow paths relative to the root. Saves tokens: true or false. Default: false
directories_onlyNoReturn directories only while still traversing them: true or false. Default: false

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does a good job: it discloses pagination mechanics, skip behavior for hidden/build/vendor entries, the flat/tree distinction, counting mode, and token-saving relative paths. It does not describe the exact response fields, but it mentions has_more and next_cursor sufficient to drive pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Each sentence carries a distinct responsibility: definition, defaults, pagination, filtering, output modes, skipped entries. There is no filler or repetition, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers defaults, pagination, filtering, output modes, and behavioral exclusions, which is a solid level of context. Since there is no output schema, the only minor gap is omitted return record shape, but the provided behavior is enough for a capable agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds relationship semantics beyond the schema: pagination binds has_ more to the cursor parameter, name_pattern versus include as single/multi OR patterns, and counts_only relative_paths as output modifiers. These are not obvious from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'lists directory contents' and immediately adds the defining scope: bounded, pageable output. This is a specific verb plus resource and distinguishes the tool from siblings like read, write, and grep, even before opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives practical usage guidance: paginate with cursor when has_more=true, filter with directories_only/files_only, and use counts_only or relative_paths for optimization. It does not explicitly tell an agent when to prefer listdir over sibling tools like glob, but the tool's 'list directory contents' purpose implies the context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

multieditA

Applies multiple old_string -> new_string replacements to a single file in one call. Edits are applied sequentially in order; each edit sees the result of the previous one. Atomic: if any edit fails, the file is not modified at all. Encoding-aware: preserves original file encoding (UTF-8, EUC-KR, Shift-JIS, etc.). Line-ending aware: old_string matches whether the file uses CRLF or LF, and inserted newlines follow the region being edited (mixed-newline files stay intact). Accepts "path" as alias for "file_path". Use dry_run=true to preview all changes without modifying the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for file_path
editsYesOrdered list of replacements to apply sequentially
dry_runNoPreview changes without modifying the file: true or false. Default: false
file_pathNoFile to edit. Relative paths use the configured workspace or MCP client root

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does this well. It discloses sequential application, atomic rollback on any failure, encoding preservation, CRLF/LF line-ending awareness, and alias support. These are meaningful behavioral characteristics beyond what the schema shows and are critical for correct agent use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Each sentence earns its place: core function first, then ordering, atomicity, encoding, line endings, alias, and dry-run. It is detailed but compact, and the most important operational facts are front-loaded before the alias and dry-run notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-edit file mutation tool with no annotations and no output schema, this description is unusually complete: it tells the agent what action, in what order, with what safety guarantees, and how to preview. Return format is not described, but the invocation-relevant behavior is covered thoroughly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that old_string matching is encoding- and line-ending-aware, that newlines in inserted text follow the edited region, that path is an alias for file_path, and that dry_run preveview changes. This supplements the schema rather than restating it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Applies multiple old_string -> new_string replacements to a single file'), includes the precise edit primitive, and differentiates itself from siblings like edit by emphasizing multiple replacements, sequential application, and atomicity. An agent can clearly understand what the tool does and roughly how it differs from single-edit or patch alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear use-context: a single file with many ordered replacements, plus a dry_run option for previewing. It does not explicitly name sibling alternatives or state when not to use it, but the description makes the intended scenario obvious and includes an actionable preview-first workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

multireadA

Reads multiple files in a single call to reduce API round-trips. Encoding-aware: auto-detects file encoding for each file. Supports offset/limit for reading specific line ranges. Defaults to 200 lines per file and 32768 characters total across the call. Returns visible per-file and overall truncation metadata with continuation positions. Use file_paths or paths (string array) with global offset/limit, or files (object array) for per-file offset/limit. If a file fails, the error is included in output and remaining files continue. Maximum 50 files per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoRemove the default per-file line limit. The total character budget still applies. Default: false
filesNoPer-file read ranges. Each entry has path, offset, limit. Takes priority over file_paths
limitNoMaximum lines per file. Default: 200. Set 0 or all=true to remove the line limit
pathsNoCompatibility alias for file_paths; prefer file_paths
offsetNoLine number to start from (1-based, negative = from end). Default: 1
file_pathsNoFile paths to read. All files use the global offset/limit. Use files for per-file ranges
include_hashNoInclude per-file SHA-256 hashes. Default: false
max_line_charsNoMaximum characters returned from one line. Default: 4000, Max: 32768
max_output_charsNoMaximum total returned text characters across all files. Default: 32768, Max: 131072

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It discloses encoding auto-detection, default line and character budgets, truncation metadata with continuation positions, per-file error isolation, and the 50-file cap. This is unusually transparent for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence contributes a distinct behavior or usage constraint: purpose, encoding, line/character limits, per-file modes, failure handling, and max file count. It is dense but not bloated, and the most important fact is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no annotations, and no output schema, the description is remarkably complete. It covers defaults, limits, semantics, file failure handling, encoding behavior, and truncation continuation positions, leaving an agent with the practical knowledge needed to invoke it and interpret its results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameters, so the baseline is 3. The description adds value by tying parameters to usage modes: global offset/limit vs per-file files entries, the interaction of all=true with the total character budget, and the 50-file request cap not visible in the schema. These aggregates help an agent pick the right parameter shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Reads multiple files in a single call to reduce API round-trips.' This immediately distinguishes it from the single-file 'read' sibling and clearly states the batching purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong contextual guidance: use the tool for reading multiple files efficiently, choose global file_paths/paths vs per-file files objects depending on offset/limit needs, and understand failure/encoding/limit behavior. It does not explicitly name the single-file 'read' tool as the alternative, but the multiple-vs-single distinction is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patchA

Applies a unified diff patch to a file. Parses @@ hunk headers, verifies context lines, and applies changes. Encoding-aware: preserves original file encoding. Line-ending aware: each line keeps its own ending (a mixed CRLF/LF file is not rewritten) and a file without a trailing newline does not gain one. Use dry_run=true to preview without modifying the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for file_path
patchYesUnified diff text (output of the diff tool)
dry_runNoPreview patch result without modifying the file: true or false. Default: false
file_pathNoFile to patch. Relative paths use the configured workspace or MCP client root

TDQS

A3.6/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description directly contradicts the provided annotations: it says the tool 'applies changes' and can modify a file, while annotations mark readOnlyHint=true and destructiveHint=false. This is an annotation contradiction, which forces the lowest score regardless of the strong encoding and line-ending details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it front-loads the primary action, then adds useful encoding/line-ending behavior, and ends with an actionable dry-run usage. Every sentence contributes unique information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool description covers the behavioral full picture: diff format, context verification, encoding preservation, line-ending behavior, and dry-run safety. The confusing annotation contradiction prevents a 5, but as a standalone spec it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all four parameters clearly, including patch, dry_run, and the path aliases. The description adds little beyond restating that dry_run previews without modifying, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a precise verb-resource pair: 'Applies a unified diff patch to a file.' It further clarifies behavior with hunk parsing and context verification, making it clearly distinct from nearby siblings like edit, write, or multiedit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys a clear use-case: applying unified diff output to a file, with dry_run for preview. It does not explicitly contrast with edit or write, but the diff-specific framing makes the correct context fairly obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

readA

Read text with line numbers or return raster images as ImageContent. Detects common encodings; SVG stays text. Text is bounded and reports truncation/next_offset. Use offset/limit to page; relative paths use the workspace or MCP root.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoDisable line cap; character cap remains
pathNoAlias for file_path
limitNoLine limit; default 400. Use 0 or all=true for no line cap
offsetNoStart line: 1-based integer, negative from end, 'start-end', or [start,end]; default 1
end_lineNoInclusive end with start_line
file_pathNoAbsolute or workspace/MCP-root-relative file path
start_lineNoAlias for offset
include_hashNoInclude SHA-256; default true
max_line_charsNoPer-line character cap; default 4000, max 32768
max_output_charsNoOutput character cap; default 32768, max 131072

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden and addresses key behaviors: encoding detection, SVG staying text, bounded output with truncation/next_offset reporting, and image results as ImageContent. It does not discuss permissions or failure modes, but for a read operation it discloses the traits most likely to surprise an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences front-load the core behavior and pack each line with non-redundant detail (images, encoding, truncation, paging, paths). No sentence is wasted and the structure lets an agent scan quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, 0-required, no-output-schema tool, the description covers the most important invocation concerns: return type, encoding edge case, truncation reporting, paging, and path base. It does not spell out all optional parameters, but those are fully documented in the schema, so an agent can call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value beyond the schema by explaining paging semantics ('Use offset/limit to page') and relative path resolution ('workspace or MCP root'). This helps disambiguate offset/limit and file_path without repeating every schema field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action ('Read text') and a clear resource, and covers the image-return case ('raster images as ImageContent'), going beyond a bare tautology. It does not explicitly name a sibling such as multiread to differentiate, but the core behavior is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives actionable context for paging ('Use offset/limit to page') and path interpretation ('relative paths use the workspace or MCP root'), which helps an agent decide how to call it. However, it provides no explicit guidance on when to prefer a sibling like multiread or grep, so the when-vs-alternatives guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toolboxC

Discover and call tools without loading every schema. Use describe, preferably compact with tool_operation, then call with arguments. Reuse schema_handle. output retrieves preserved paged command output. list shows tools; enable/disable/profile manage direct bindings. Profiles: core-lite, core, coding, remote, analysis, full.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNoTarget tool for describe/call
toolsNoTool names for enable/disable
groupsNoGroups for enable/disable: core, file, coding, system, remote, data, analysis, windows
compactNoReturn a reduced describe schema
profileNoProfile to add; core-lite, core, coding, remote, analysis, or full. core-lite is smallest at startup
argumentsNoTarget arguments for call; describe first if unknown
operationNolist (default), describe, call, output, enable, disable, or profile
output_idNoRaw output ID for output
output_offsetNoOutput character offset; default 0
schema_handleNoPrior handle; short acknowledgement if unchanged
tool_operationNoOperation-specific compact schema, e.g. execute
output_max_charsNoOutput character limit; default 32768, max 130048

TDQS

C2.9/5.0
Behavior3/5

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 discloses that output is paged and preserved, that describe can be compact, and that profile management exists. However, it does not reveal side effects of enable/disable/profile operations (like whether they alter persistent state), auth requirements, or any output format details. For a tool that can modify bindings and profiles, more transparency is needed, but the basic behavioral facts are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but poorly structured: it front-loads operational guidance but then lists operations and profiles in an unorganized way. Each sentence adds info, but the flow is jumbled, mixing instructions, operation list, and profile list without clear separation. It's not concise enough for the complexity; ideally it would use a structured list for operations and profiles.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, multiple operations, nested objects), the description covers the high-level workflow and mentions key parameters and profiles. However, it lacks details on return values (no output schema), side effects of enable/disable/profile, and edge cases like how output_id relates to output operation. It is minimally adequate but leaves gaps that an agent might need to infer or test.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a description in the schema. The description adds some usage context around certain parameters (e.g., 'compact' and 'tool_operation' relationship, 'profile' list), but it doesn't add meaning beyond the schema for most parameters. It does clarify the default operation is 'list' and that 'schema_handle' might return a short acknowledgement, but that's marginal. With full coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description lists multiple operations ('list', 'describe', 'call', etc.) and the tool name 'toolbox' hints at a dispatch tool, but the core purpose is not stated as a single verb+resource. It bundles several operations, making the primary purpose ambiguous. The list of sibling tools (read, write, edit) are specific file operations, while this one is a general dispatcher, but that distinction is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives some guidance on when to use certain operations: 'Use describe, preferably compact with tool_operation, then call with arguments' and 'output retrieves preserved paged command output'. However, it does not explicitly contrast with alternatives or state exclusions. It implies that for performance, compact describe is preferred, but it doesn't say when NOT to use this tool vs. siblings; it assumes the agent knows this is a dispatch tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

writeA

Create or overwrite a file. Preserves existing encoding, uses .editorconfig for new files, and creates parent directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoAlias for file_path
contentYesContent to write to the file
file_pathNoFile path; relative to workspace/MCP root

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by revealing important side effects: overwriting, preserving existing encoding, applying .editorconfig for new files, and creating parent directories. It stops short of mentioning irreversibility risks, permissions, or failure behavior, but the core destructive nature is communicated through 'overwrite.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence that front-loads the primary action ('Create or overwrite a file') and then adds three compact behavioral details. Every clause earns its place, with no filler or repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple write tool, the description covers the essential contextual details: overwrite semantics, encoding handling, editorconfig behavior, and directory creation. It lacks an explicit note about destructive impact or comparison to edit/patch, but the schema covers parameter requirements and the description provides enough behavioral context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured fields already document content, file_path, and path as an alias. The description adds no parameter-specific detail beyond the schema, which matches the baseline of 3; no compensation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Create or overwrite a file') and further specifies exact behavior: preserving encoding, applying .editorconfig for new files, and creating parent directories. This clearly identifies it as a whole-file write operation and differentiates it from siblings like edit, patch, and multiedit, which imply targeted changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—creating new files or fully overwriting existing ones—but does not explicitly say when not to use it or mention alternatives such as edit/patch for partial modifications. An agent can infer the use case from 'Create or overwrite a file,' but there is no direct routing guidance.

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.

  1. 1 tool updatev1.0.2
    • Changedagent_tool_help1 field changed
      • changedInput schema / properties / topic / description
        Previous value: -"Help topic. Available: overview, encoding, indentation, tools, debug, analyze, memtool, wintool, codegraph, ipc, troubleshooting. Empty = overview"New value: +"Help topic. Available: overview, encoding, indentation, tools, debug, analyze, memtool, wintool, codegraph, troubleshooting. Empty = overview"
  2. 6 tool updatesv0.9.7
    • Changededit6 fields changed
      • changedInput schema / properties / dry_run / description
        Previous value: -"Preview changes without modifying the file: true or false. Default: false"New value: +"Preview only; default false"
      • changedInput schema / properties / expected_hash / description
        Previous value: -"Optional SHA-256 hash of the file. If provided and mismatched, edit is rejected (optimistic concurrency)."New value: +"Expected SHA-256; mismatch rejects edit"
      • changedInput schema / properties / file_path / description
        Previous value: -"File to edit. Relative paths use the configured workspace or MCP client root"New value: +"File path; relative to workspace/MCP root"
      • changedInput schema / properties / indent_style / description
        Previous value: -"Override indentation style. Values: tabs or spaces-N (e.g. spaces-4). Empty = auto-detect (default)"New value: +"tabs or spaces-N; default auto-detect"
      • changedInput schema / properties / new_string / description
        Previous value: -"Replacement text (must differ from old_string)"New value: +"Replacement text; must differ from old_string"
      • changedInput schema / properties / replace_all / description
        Previous value: -"Replace all occurrences instead of just the first: true or false. Default: false"New value: +"Replace every match; default false"
    • Changedglob1 field changed
      • changedInput schema / properties / include_ignored / description
        Previous value: -"Traverse generated/vendor directories such as node_modules, vendor, target, build, and dist. Default: false"New value: +"Include paths excluded by .gitignore/.ignore or the common generated/vendor policy. Default: false"
    • Changedgrep17 fields changed
      • changedInput schema / properties / after / description
        Previous value: -"Lines after each match. Overrides context. Default: 0, Max: 1000"New value: +"Lines after; overrides context"
      • changedInput schema / properties / before / description
        Previous value: -"Lines before each match. Overrides context. Default: 0, Max: 1000"New value: +"Lines before; overrides context"
      • changedInput schema / properties / context / description
        Previous value: -"Lines before and after each match (like grep -C). Default: 0, Max: 1000"New value: +"Lines before/after; max 1000"
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque continuation cursor returned by a previous grep call. Not supported with context lines"New value: +"Continuation cursor; incompatible with context lines"
      • changedInput schema / properties / glob / description
        Previous value: -"Glob pattern to filter files (e.g. *.go). Only used when path is a directory"New value: +"Directory file filter, e.g. *.go"
      • changedInput schema / properties / ignore_case / description
        Previous value: -"Case-insensitive search. Default: false"New value: +"Ignore case"
      • changedInput schema / properties / include_hidden / description
        Previous value: -"Search hidden directories. Explicitly provided hidden roots are always searched. Default: false"New value: +"Include hidden directories"
      • changedInput schema / properties / include_ignored / description
        Previous value: -"Search common generated/vendor directories instead of skipping them. Default: false"New value: +"Include ignored/generated/vendor paths"
      • changedInput schema / properties / max_line_chars / description
        Previous value: -"Maximum characters per matching/context line. Default: 4000, Max: 32768"New value: +"Per-line cap; default 4000, max 32768"
      • changedInput schema / properties / max_output_chars / description
        Previous value: -"Maximum total result characters. Default: 32768, Max: 131072"New value: +"Output cap; default 32768, max 131072"
      • changedInput schema / properties / max_results / description
        Previous value: -"Maximum matching lines/files per page. Default: 100, Max: 100000"New value: +"Matches per page; default 100, max 100000"
      • changedInput schema / properties / output_format / description
        Previous value: -"Content layout: compact (group matches by file, default) or classic (path:line:text on every line)"New value: +"compact (default) or classic path:line:text"
      • changedInput schema / properties / output_mode / description
        Previous value: -"Output mode: content (default), files_with_matches, or count"New value: +"content (default), files_with_matches, or count"
      • changedInput schema / properties / path / description
        Previous value: -"File or directory to search. Defaults to configured workspace, MCP client root, or current directory"New value: +"File or directory; defaults to workspace/MCP root/CWD"
      • changedInput schema / properties / pattern / description
        Previous value: -"Regular expression pattern to search for"New value: +"Regular expression"
      • changedInput schema / properties / recursive / description
        Previous value: -"Recurse into subdirectories. Default: true"New value: +"Recurse; default true"
      • changedInput schema / properties / relative_paths / description
        Previous value: -"Return paths relative to the search root. Default: true for directory searches"New value: +"Paths relative to root; directory default true"
    • Changedread11 fields changed
      • changedInput schema / properties / all / description
        Previous value: -"Remove the default line limit. The max_output_chars safety budget still applies. Default: false"New value: +"Disable line cap; character cap remains"
      • changedInput schema / properties / end_line / description
        Previous value: -"Inclusive end line used with start_line"New value: +"Inclusive end with start_line"
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute or workspace-relative path to the file to read"New value: +"Absolute or workspace/MCP-root-relative file path"
      • changedInput schema / properties / include_hash / description
        Previous value: -"Include SHA-256 for optimistic edit concurrency. Default: true"New value: +"Include SHA-256; default true"
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum lines to return. Default: 400. Set 0 or all=true to remove the line limit; the character budget still applies"New value: +"Line limit; default 400. Use 0 or all=true for no line cap"
      • changedInput schema / properties / max_line_chars / description
        Previous value: -"Maximum characters returned from one line. Default: 4000, Max: 32768"New value: +"Per-line character cap; default 4000, max 32768"
      • changedInput schema / properties / max_output_chars / description
        Previous value: -"Maximum returned text characters. Default: 32768, Max: 131072"New value: +"Output character cap; default 32768, max 131072"
      • changedInput schema / properties / offset / description
        Previous value: -"Line offset. Integer (1-based, negative=from end), string range 'start-end', or [start,end] array. Default: 1"New value: +"Start line: 1-based integer, negative from end, 'start-end', or [start,end]; default 1"
      • addedInput schema / properties / offset / type
        Added value: +"integer"
      • changedInput schema / properties / path / description
        Previous value: -"Compatibility alias for file_path; prefer file_path"New value: +"Alias for file_path"
      • changedInput schema / properties / start_line / description
        Previous value: -"Compatibility alias for offset; prefer offset"New value: +"Alias for offset"
    • Changedtoolbox12 fields changed
      • changedInput schema / properties / arguments / description
        Previous value: -"Target tool arguments for operation=call. Use operation=describe first when the schema is unknown"New value: +"Target arguments for call; describe first if unknown"
      • changedInput schema / properties / compact / description
        Previous value: -"Return a reduced input schema: true or false. Pair with tool_operation for operation-specific fields"New value: +"Return a reduced describe schema"
      • changedInput schema / properties / groups / description
        Previous value: -"Tool groups to enable or disable: core, file, coding, system, remote, data, analysis, windows"New value: +"Groups for enable/disable: core, file, coding, system, remote, data, analysis, windows"
      • changedInput schema / properties / operation / description
        Previous value: -"Operation: list (default), describe, call, output, enable, disable, profile. Prefer describe/call because they work even when the MCP client ignores dynamic tool-list changes"New value: +"list (default), describe, call, output, enable, disable, or profile"
      • changedInput schema / properties / output_id / description
        Previous value: -"Preserved raw command output ID for operation=output"New value: +"Raw output ID for output"
      • changedInput schema / properties / output_max_chars / description
        Previous value: -"Maximum raw-output characters returned by operation=output. Default: 32768, Max: 130048"New value: +"Output character limit; default 32768, max 130048"
      • changedInput schema / properties / output_offset / description
        Previous value: -"Character offset for operation=output paging. Default: 0"New value: +"Output character offset; default 0"
      • changedInput schema / properties / profile / description
        Previous value: -"Profile for operation=profile: core, coding, remote, analysis, full"New value: +"Profile to add; core-lite, core, coding, remote, analysis, or full. core-lite is smallest at startup"
      • changedInput schema / properties / schema_handle / description
        Previous value: -"Handle returned by an earlier describe; matching handles return only an unchanged acknowledgement"New value: +"Prior handle; short acknowledgement if unchanged"
      • changedInput schema / properties / tool / description
        Previous value: -"Single tool name for operation=describe or call"New value: +"Target tool for describe/call"
      • changedInput schema / properties / tool_operation / description
        Previous value: -"Target tool operation for compact describe, for example execute or upload"New value: +"Operation-specific compact schema, e.g. execute"
      • changedInput schema / properties / tools / description
        Previous value: -"Individual tool names to enable or disable"New value: +"Tool names for enable/disable"
    • Changedwrite1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"File to write. Relative paths use the configured workspace or MCP client root"New value: +"File path; relative to workspace/MCP root"
  3. 1 tool updatev0.9.6
    • Changedtoolbox3 fields changed
      • addedInput schema / properties / compact
        Added value: +{
        +  "description": "Return a reduced input schema: true or false. Pair with tool_operation for operation-specific fields",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / schema_handle
        Added value: +{
        +  "description": "Handle returned by an earlier describe; matching handles return only an unchanged acknowledgement",
        +  "type": "string"
        +}
      • addedInput schema / properties / tool_operation
        Added value: +{
        +  "description": "Target tool operation for compact describe, for example execute or upload",
        +  "type": "string"
        +}
  4. 53 tool updatesv0.9.5
    • Removedanalyze
    • Removedbackup
    • Removedbash
    • Removedchecksum
    • Removedcodegraph
    • Removedcompress
    • Removedconvert_encoding
    • Removedcopy
    • Removeddebug
    • Removeddecompress
    • Removeddelete
    • Removeddiff
    • Removeddnslookup
    • Removeddownload
    • Changededit3 fields changed
      • addedInput schema / properties / dry_run / type
        Added value: +"boolean"
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to the file to edit"New value: +"File to edit. Relative paths use the configured workspace or MCP client root"
      • addedInput schema / properties / replace_all / type
        Added value: +"boolean"
    • Removedenvvar
    • Removedexternalip
    • Removedfile_info
    • Removedfind_tools
    • Removedfirewall
    • Changedglob8 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque continuation cursor returned by a previous glob call",
        +  "type": "string"
        +}
      • addedInput schema / properties / include_hidden
        Added value: +{
        +  "description": "Traverse hidden directories. Explicit hidden roots are always searched. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_ignored
        Added value: +{
        +  "description": "Traverse generated/vendor directories such as node_modules, vendor, target, build, and dist. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Maximum paths returned per page. Default: 200, Max: 5000",
        +  "type": "integer"
        +}
      • addedInput schema / properties / max_output_chars
        Added value: +{
        +  "description": "Maximum returned text characters. Default: 32768, Max: 131072",
        +  "type": "integer"
        +}
      • changedInput schema / properties / path / description
        Previous value: -"Directory to search in (absolute path). Defaults to current directory if empty"New value: +"Directory to search. Defaults to configured workspace, MCP client root, or current directory"
      • changedInput schema / properties / relative_paths / description
        Previous value: -"Return paths relative to the search directory instead of absolute paths. Saves tokens in output: true or false. Default: false"New value: +"Return paths relative to the search directory. Default: true"
      • addedInput schema / properties / relative_paths / type
        Added value: +[
        +  "null",
        +  "boolean"
        +]
    • Changedgrep21 fields changed
      • changedInput schema / properties / after / description
        Previous value: -"Lines of context after each match (like grep -A). Overrides context. Default: 0"New value: +"Lines after each match. Overrides context. Default: 0, Max: 1000"
      • addedInput schema / properties / after / type
        Added value: +"integer"
      • changedInput schema / properties / before / description
        Previous value: -"Lines of context before each match (like grep -B). Overrides context. Default: 0"New value: +"Lines before each match. Overrides context. Default: 0, Max: 1000"
      • addedInput schema / properties / before / type
        Added value: +"integer"
      • changedInput schema / properties / context / description
        Previous value: -"Lines of context before and after each match (like grep -C). Default: 0"New value: +"Lines before and after each match (like grep -C). Default: 0, Max: 1000"
      • addedInput schema / properties / context / type
        Added value: +"integer"
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque continuation cursor returned by a previous grep call. Not supported with context lines",
        +  "type": "string"
        +}
      • changedInput schema / properties / ignore_case / description
        Previous value: -"Case insensitive search: true or false. Default: false"New value: +"Case-insensitive search. Default: false"
      • addedInput schema / properties / ignore_case / type
        Added value: +"boolean"
      • addedInput schema / properties / include_hidden
        Added value: +{
        +  "description": "Search hidden directories. Explicitly provided hidden roots are always searched. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_ignored
        Added value: +{
        +  "description": "Search common generated/vendor directories instead of skipping them. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / max_line_chars
        Added value: +{
        +  "description": "Maximum characters per matching/context line. Default: 4000, Max: 32768",
        +  "type": "integer"
        +}
      • addedInput schema / properties / max_output_chars
        Added value: +{
        +  "description": "Maximum total result characters. Default: 32768, Max: 131072",
        +  "type": "integer"
        +}
      • changedInput schema / properties / max_results / description
        Previous value: -"Maximum number of matching lines/files to return. Default: 100"New value: +"Maximum matching lines/files per page. Default: 100, Max: 100000"
      • addedInput schema / properties / max_results / type
        Added value: +"integer"
      • addedInput schema / properties / output_format
        Added value: +{
        +  "description": "Content layout: compact (group matches by file, default) or classic (path:line:text on every line)",
        +  "type": "string"
        +}
      • changedInput schema / properties / output_mode / description
        Previous value: -"Output mode: 'content' (matching lines with path:line:text, default), 'files_with_matches' (file paths only), 'count' (match count per file)"New value: +"Output mode: content (default), files_with_matches, or count"
      • changedInput schema / properties / path / description
        Previous value: -"File or directory to search in (absolute path). Defaults to current directory"New value: +"File or directory to search. Defaults to configured workspace, MCP client root, or current directory"
      • changedInput schema / properties / recursive / description
        Previous value: -"Recurse into subdirectories: true or false. Default: true"New value: +"Recurse into subdirectories. Default: true"
      • addedInput schema / properties / recursive / type
        Added value: +[
        +  "null",
        +  "boolean"
        +]
      • addedInput schema / properties / relative_paths
        Added value: +{
        +  "description": "Return paths relative to the search root. Default: true for directory searches",
        +  "type": [
        +    "null",
        +    "boolean"
        +  ]
        +}
    • Removedhttpreq
    • Removedipc
    • Removedjsonquery
    • Changedlistdir12 fields changed
      • addedInput schema / properties / counts_only
        Added value: +{
        +  "description": "Return matching directory/file counts without listing names: true or false. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque continuation cursor returned by a previous listdir call",
        +  "type": "string"
        +}
      • addedInput schema / properties / directories_only
        Added value: +{
        +  "description": "Return directories only while still traversing them: true or false. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / files_only
        Added value: +{
        +  "description": "Return files only: true or false. Default: false",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Additional entry-name glob patterns. An entry is included when any pattern matches",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • changedInput schema / properties / max_depth / description
        Previous value: -"Maximum depth for tree traversal. Default: 3"New value: +"Maximum depth for traversal. Default: 3"
      • addedInput schema / properties / max_depth / type
        Added value: +"integer"
      • addedInput schema / properties / max_entries
        Added value: +{
        +  "description": "Maximum entries to return per page. Default: 500, maximum: 10000",
        +  "type": "integer"
        +}
      • addedInput schema / properties / name_pattern
        Added value: +{
        +  "description": "Glob matched against each entry name, for example A* or *.go",
        +  "type": "string"
        +}
      • changedInput schema / properties / path / description
        Previous value: -"Absolute path to the directory to list"New value: +"Directory to list. Relative paths use the configured workspace or MCP client root"
      • changedInput schema / properties / relative_paths / description
        Previous value: -"Show the root as '.' instead of the full absolute path. Saves tokens in output: true or false. Default: false"New value: +"Show paths relative to the root. Saves tokens: true or false. Default: false"
      • addedInput schema / properties / relative_paths / type
        Added value: +"boolean"
    • Removedmemtool
    • Removedmkdir
    • Changedmultiedit2 fields changed
      • addedInput schema / properties / dry_run / type
        Added value: +"boolean"
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to the file to edit"New value: +"File to edit. Relative paths use the configured workspace or MCP client root"
    • Changedmultiread14 fields changed
      • addedInput schema / properties / all
        Added value: +{
        +  "description": "Remove the default per-file line limit. The total character budget still applies. Default: false",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / file_paths / description
        Previous value: -"List of absolute file paths to read. All files use the global offset/limit. Use 'files' instead for per-file ranges"New value: +"File paths to read. All files use the global offset/limit. Use files for per-file ranges"
      • changedInput schema / properties / files / items / properties / limit / description
        Previous value: -"Max lines to read. Default: 0 (all)"New value: +"Max lines to read. Default: 200. Set 0 to remove the line limit"
      • addedInput schema / properties / files / items / properties / limit / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
      • addedInput schema / properties / files / items / properties / offset / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
      • changedInput schema / properties / files / items / properties / path / description
        Previous value: -"Absolute file path"New value: +"Absolute or workspace-relative file path"
      • addedInput schema / properties / include_hash
        Added value: +{
        +  "description": "Include per-file SHA-256 hashes. Default: false",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of lines to read per file. Default: 0 (all)"New value: +"Maximum lines per file. Default: 200. Set 0 or all=true to remove the line limit"
      • addedInput schema / properties / limit / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
      • addedInput schema / properties / max_line_chars
        Added value: +{
        +  "description": "Maximum characters returned from one line. Default: 4000, Max: 32768",
        +  "type": "integer"
        +}
      • addedInput schema / properties / max_output_chars
        Added value: +{
        +  "description": "Maximum total returned text characters across all files. Default: 32768, Max: 131072",
        +  "type": "integer"
        +}
      • changedInput schema / properties / offset / description
        Previous value: -"Line number to start reading from (1-based). Negative = from end (e.g. -5 = last 5 lines). Default: 1"New value: +"Line number to start from (1-based, negative = from end). Default: 1"
      • addedInput schema / properties / offset / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
      • changedInput schema / properties / paths / description
        Previous value: -"Alias for file_paths"New value: +"Compatibility alias for file_paths; prefer file_paths"
    • Removedmysql
    • Changedpatch2 fields changed
      • addedInput schema / properties / dry_run / type
        Added value: +"boolean"
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to the file to patch"New value: +"File to patch. Relative paths use the configured workspace or MCP client root"
    • Removedportcheck
    • Removedprocexec
    • Removedprockill
    • Removedproclist
    • Changedread13 fields changed
      • addedInput schema / properties / all
        Added value: +{
        +  "description": "Remove the default line limit. The max_output_chars safety budget still applies. Default: false",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / end_line / description
        Previous value: -"End line number (1-based, inclusive). Sets limit = end_line - start_line + 1 when used with start_line"New value: +"Inclusive end line used with start_line"
      • addedInput schema / properties / end_line / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute or relative path to the file to read"New value: +"Absolute or workspace-relative path to the file to read"
      • addedInput schema / properties / include_hash
        Added value: +{
        +  "description": "Include SHA-256 for optimistic edit concurrency. Default: true",
        +  "type": [
        +    "null",
        +    "boolean"
        +  ]
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of lines to read. Default: 0 (all)"New value: +"Maximum lines to return. Default: 400. Set 0 or all=true to remove the line limit; the character budget still applies"
      • addedInput schema / properties / limit / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
      • addedInput schema / properties / max_line_chars
        Added value: +{
        +  "description": "Maximum characters returned from one line. Default: 4000, Max: 32768",
        +  "type": "integer"
        +}
      • addedInput schema / properties / max_output_chars
        Added value: +{
        +  "description": "Maximum returned text characters. Default: 32768, Max: 131072",
        +  "type": "integer"
        +}
      • changedInput schema / properties / offset / description
        Previous value: -"Line offset. Integer (1-based, negative=from end), string range 'start-end', or [start,end] array. Default: 0 (all)"New value: +"Line offset. Integer (1-based, negative=from end), string range 'start-end', or [start,end] array. Default: 1"
      • changedInput schema / properties / path / description
        Previous value: -"Alias for file_path"New value: +"Compatibility alias for file_path; prefer file_path"
      • changedInput schema / properties / start_line / description
        Previous value: -"Alias for offset (1-based line number to start reading from)"New value: +"Compatibility alias for offset; prefer offset"
      • addedInput schema / properties / start_line / type
        Added value: +[
        +  "null",
        +  "integer"
        +]
    • Removedredis
    • Removedregexreplace
    • Removedrename
    • Removedset_config
    • Removedsftp
    • Removedsloc
    • Removedssh
    • Removedsysinfo
    • Removedtlscheck
    • Removedtomlquery
    • Addedtoolbox
    • Removedwebfetch
    • Removedwebsearch
    • Removedwintool
    • Changedwrite1 field changed
      • changedInput schema / properties / file_path / description
        Previous value: -"Absolute path to the file to write"New value: +"File to write. Relative paths use the configured workspace or MCP client root"
    • Removedyamlquery
  5. 53 tool updatesv0.8.7
    • Addedagent_tool_help
    • Addedanalyze
    • Addedbackup
    • Addedbash
    • Addedchecksum
    • Addedcodegraph
    • Addedcompress
    • Addedconvert_encoding
    • Addedcopy
    • Addeddebug
    • Addeddecompress
    • Addeddelete
    • Addeddiff
    • Addeddnslookup
    • Addeddownload
    • Addededit
    • Addedenvvar
    • Addedexternalip
    • Addedfile_info
    • Addedfind_tools
    • Addedfirewall
    • Addedglob
    • Addedgrep
    • Addedhttpreq
    • Addedipc
    • Addedjsonquery
    • Addedlistdir
    • Addedmemtool
    • Addedmkdir
    • Addedmultiedit
    • Addedmultiread
    • Addedmysql
    • Addedpatch
    • Addedportcheck
    • Addedprocexec
    • Addedprockill
    • Addedproclist
    • Addedread
    • Addedredis
    • Addedregexreplace
    • Addedrename
    • Addedset_config
    • Addedsftp
    • Addedsloc
    • Addedssh
    • Addedsysinfo
    • Addedtlscheck
    • Addedtomlquery
    • Addedwebfetch
    • Addedwebsearch
    • Addedwintool
    • Addedwrite
    • Addedyamlquery

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation4/5

edit/multiedit/patch and read/multiread are closely related, but the descriptions clearly distinguish single-vs-multiple edits, direct reading, and unified-diff application. glob, grep, and listdir have distinct search/listing roles, while toolbox/help are recognizably meta tools.

Naming Consistency3/5

Most tool names are lowercase single tokens, and multiedit/multiread follow a consistent compound pattern, but agent_tool_help uses underscored prefixed naming and listdir is not separated as list_dir. There is no clear verb_noun convention, though the set remains readable.

Tool Count5/5

11 tools is well-scoped for a file/coding-agent MCP. The core file operations are joined by useful multi-file and meta-discovery helpers, with no excessive tool count.

Completeness4/5

The surface covers reading, writing, editing, patching, searching, listing, and multi-file operations. It lacks explicit delete, rename, or move tools, which is a minor gap for full file lifecycle coverage.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers