Skip to main content
Glama

wsl-bridge-mcp

一个 MCP 服务器,让 Windows 侧的 AI 编程代理(Claude Code、Codex、OpenCode)可以像操作本地环境一样操作 WSL 发行版:读写/编辑文件、执行命令、管理长驻进程、流式查看日志、搜索文件内容——全部由运行在 Windows 上的代理完成。

WSL 内部零安装。 只依赖系统自带的 wsl.exe 和 Windows 对 WSL 文件系统的 UNC 访问视图。

工作原理

双通道设计兼顾低延迟,同时绕开常见的 WSL 桥接坑:

Agent(Windows,MCP 客户端)──stdio──▶ wsl-bridge-mcp(Windows,TS/Node)
                                           │
                           ┌───────────────┴────────────────┐
                           ▼                                 ▼
                 文件通道(UNC)                    执行通道(常驻 shell)
                 \\wsl.localhost\<distro>\…       wsl.exe -d <distro> -- stdbuf -o0 bash
                 Node fs,二进制安全               每个发行版一个,哨兵帧协议
                           │                                 │
                           └───────── 路径转换 ──────────────┘
                                        + 护栏 + 审计日志
  • 文件操作\\wsl.localhost\<distro>\…(9P 协议),通过 Node fs 完成——不派生 wsl.exe,二进制安全,速度快。

  • 命令执行 / 搜索 / 进程管理 走每个发行版一个的长驻 wsl.exe … bash 进程,使用哨兵标记帧协议——摊薄了约 50–150ms 的派生开销,并提供真正的管道用于流式输出。

  • 路径转换 集中处理并带缓存;代理侧统一使用 POSIX 路径。

  • 护栏 拦截灾难性命令(rm -rf /dd of=/dev/sd*、fork 炸弹等),支持可选确认;另提供可选的路径沙箱和完整审计日志。

Related MCP server: Filesystem MCP Server for WSL

安装

npm install -g wsl-bridge-mcp
# 或者不安装直接使用:
npx wsl-bridge-mcp

要求 Node ≥ 20 和一个 WSL2 发行版(\\wsl.localhost 推荐在 Windows 11 上使用)。

配置

配置是可选的。只要设置了默认发行版,默认值即可开箱即用。 优先级:环境变量(WSL_BRIDGE_*)> .wsl-bridge.json(从当前工作目录向上查找)> 默认值。

.wsl-bridge.example.json 复制为 .wsl-bridge.json(或设置环境变量):

配置项

环境变量

默认值

说明

defaultDistro

WSL_BRIDGE_DISTRO

工具未指定 distro 时使用的发行版

commandTimeoutMs

WSL_BRIDGE_COMMAND_TIMEOUT_MS

30000

run_command 超时

scriptTimeoutMs

WSL_BRIDGE_SCRIPT_TIMEOUT_MS

120000

长耗时操作(搜索、系统信息)超时

maxOutputBytes

WSL_BRIDGE_MAX_OUTPUT_BYTES

1048576

输出截断上限

guardrailMode

WSL_BRIDGE_GUARDRAIL_MODE

block-and-confirm

block-and-confirm / block / off

sandboxDirs

WSL_BRIDGE_SANDBOX_DIRS

[]

POSIX 路径;为空 = 整个发行版

logDir

WSL_BRIDGE_LOG_DIR

%APPDATA%\wsl-bridge-mcp

审计日志目录(Windows 侧)

prewarmShells

WSL_BRIDGE_PREWARM_SHELLS

true

启动时预派生默认发行版的 shell(消除首条命令的延迟)

sandboxDirs 在环境变量中使用 ; 分隔。

连接你的代理

Claude Code

claude mcp add wsl-bridge -- node /path/to/wsl-bridge-mcp/dist/server.js
# 或已全局安装 / 通过 npx:
claude mcp add wsl-bridge -- npx wsl-bridge-mcp

在服务器配置中通过环境变量设置默认发行版,或在每次调用时传入 distro

Codex

添加到 Codex 的 MCP 配置(~/.codex/config.toml 或等效位置):

[mcp_servers.wsl-bridge]
command = "npx"
args = ["wsl-bridge-mcp"]
env = { WSL_BRIDGE_DISTRO = "Ubuntu-24.04" }

OpenCode

添加到 OpenCode 的 MCP 配置(例如 opencode.json):

{
  "mcp": {
    "wsl-bridge": {
      "type": "local",
      "command": ["npx", "wsl-bridge-mcp"],
      "environment": { "WSL_BRIDGE_DISTRO": "Ubuntu-24.04" }
    }
  }
}

工具(28 个)

发现类: list_distrosget_system_infocheck_wsl_status 路径类: translate_pathresolve_path 文件类(UNC): read_fileread_multiple_fileswrite_fileedit_filelist_directoryget_file_infocreate_directorymove_filedelete_path 执行类: run_commandset_cwd 进程与日志: start_processget_process_statusread_process_outputlist_processesstop_process 搜索类: search_filessearch_content 辅助类: list_portsget_envset_envdiagnosequery_audit_log

性能、流式输出与保真度

部分工具参数可解锁更低延迟、真正的流式输出和可校验的二进制传输:

延迟

  • /mnt/<盘符> 直连访问 —— 对 /mnt/c/... 等 drvfs 路径的文件操作会通过 Node fs 直接解析到 Windows 盘符(C:\...),完全跳过 WSL/9P。其他路径(/home/tmp/mnt/wsl 等)仍走 UNC。适用时 translate_path 会报告直连的 windowsPath。盘符只探测一次并缓存。

  • list_directory 分页 —— 传入 offset/limit 可对大目录分页遍历,只对返回的当前页做 stat。响应中包含 totaloffsetlimithasMore

  • Shell 预热 —— prewarmShells: true(默认)会在启动时派生默认发行版的 shell,让第一条命令不必承担 wsl.exe 的派生开销。

流式输出与 stderr

  • run_command / start_processseparateStderr: true —— 单独捕获 stderr,而不是合并进 stdout。此时 run_command 返回独立的 stdoutstderrstart_process 会写入一个 .err 文件,可通过 read_process_outputwhich: "stderr" 读取。

  • read_process_outputstream: true —— 在 follow 期间,将每个新数据块以 notifications/message 推送(客户端传了 progressToken 时还会推送 notifications/progress),然后返回最终偏移量。无需轮询即可实时收到日志;无论客户端是否忽略通知,最终负载都会完整返回,不会丢数据。

  • 内存安全读取 —— read_file 通过文件描述符只读取所需字节(利用 offset/limit/maxBytes),超大文件不会整体加载进内存。

二进制保真

  • read_file / write_filesha256: true —— 返回(读/写的)字节的 sha256。写入后读取并比对哈希,即可验证字节级精确往返。write_file 还会回显 mimeType

安全性

  • 护栏 会扫描每个 run_command / start_process 命令中的危险模式。灾难性命令(rm -rf /、块设备写入、fork 炸弹、mkfs)被硬性拦截;有风险但可逆的命令(shutdownchmod -R /)需要 confirm=true。可通过 guardrailMode 调整。rm 的目标会被规范化(去引号、去尾部斜杠),因此带引号的根目录 / $HOME / ~/ 写法也能被捕获。

  • 路径沙箱sandboxDirs):设置后,修改类文件操作被限制在允许列表内,并会在 Linux 侧解析符号链接(realpath -m),因此沙箱内的符号链接无法逃逸。(符号链接解析刻意放在 Linux 侧:WSL 9P 会把符号链接呈现为 Windows 上的不透明 reparse 点,fs.realpath 无法穿透。)默认关闭。

  • Shell 安全输入:环境变量名(run_command/start_process 的 env、set_env/get_env 的名称)必须是合法的 POSIX 标识符并被 shell 引用;stop_process 只接受大写信号枚举(TERMKILLINT 等),并如实报告 sent/exitCode。搜索模式使用单引号包裹,因此 $、反引号和引号会被字面匹配,绝不会被执行。

  • 配置校验.wsl-bridge.json 的值按配置项逐项校验(zod);无效条目会向 stderr 告警并回退到默认值,而不是崩溃或静默异常。超时环境变量被限制为 >= 0——0 表示显式禁用超时。

  • 审计日志:每次工具调用(工具名、参数摘要、状态、耗时、发行版)都会追加到 logDir 下的 audit.log。可通过 query_audit_log 查询。

  • 输出上限:大输出会被截断到 maxOutputBytes,并附带提示。

故障排查

  • 运行命令时出现 Wsl/Service/E_UNEXPECTED:WSL 服务状态异常,尽管发行版显示为 Running 且 UNC 正常。用 wsl --shutdown 修复(会重启所有发行版——关闭 WSL 中正在运行的进程),然后重试。此状态下文件通道工具仍然可用。

  • No distro specified:设置 WSL_BRIDGE_DISTROdefaultDistro,或在每次调用时传 distro。运行 list_distros 查看发行版名称。

  • UNC 不可达:确保发行版已启动(wsl -d <distro> echo ok)。优先使用 \\wsl.localhost(Win11+);\\wsl$ 是备选方案。

  • 运行 diagnose 工具对 UNC、shell 和权限做一次通过/失败的全项检查。

开发

npm install
npm run build        # tsc -> dist/
npm run typecheck    # 类型检查 src + tests
npm test             # 仅单元测试(无需 WSL)
npm run test:integration   # 针对真实 WSL 发行版的集成测试
npm run test:smoke   # 构建并在 stdio 上冒烟测试服务器
npm run test:e2e     # 构建并在 stdio 上跑完整 e2e 套件
npm run dev          # tsx watch

设置 WSL_BRIDGE_DISTRO=<你的发行版>,可让 e2e/smoke/integration 脚本针对非默认发行版运行。

Available Tools

28 tools
check_wsl_statusA

Health check: confirm a WSL distro is reachable and the persistent shell responds.

ParametersJSON Schema
NameRequiredDescriptionDefault
distroNoWSL distro name; defaults to defaultDistro

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains that the tool checks both reachability and persistent shell responsiveness, providing some insight, but does not describe return behavior, side effects, error handling, or whether any command is sent to the distro.

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, concise sentence that immediately conveys the tool's purpose. It is front-loaded with 'Health check' and contains no filler or unnecessary detail.

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 simplicity (one optional parameter, no output schema), the description is adequate but incomplete. It does not explain what the agent should expect as a return value or result, which is important for a health check that may indicate success or failure. The description could be more complete by specifying output format or failure behavior.

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% with the 'distro' parameter already described. The description adds no additional meaning to the parameter, so the baseline of 3 is appropriate. It does not clarify default behavior beyond the schema's mention of defaultDistro.

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 performs a health check on a WSL distro, confirming reachability and persistent shell responsiveness. This specific verb+resource pairing distinguishes it from siblings like list_distros (which lists distros) and run_command (which executes commands).

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 as a health check before engaging with a distro, but does not explicitly state when to use it over alternatives or mention exclusions. The purpose is evident, but no direct comparison is made to sibling tools like list_distros or get_process_status.

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

create_directoryC

Create a directory in WSL (recursive).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
distroNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It only mentions 'recursive' but omits important behaviors such as whether the operation is idempotent (if directory already exists), whether intermediate parent directories are created, how distro selection works, permissions required, or return values. This is a mutation tool, so more transparency is expected.

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 imperative sentence that is front-loaded with the action. There is zero wasted wording, and it conveys the core purpose efficiently.

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

Completeness2/5

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

Although the tool is simple, the description omits critical operational context such as return values, error behavior (e.g., existing directory, invalid path), and distro parameter semantics. No output schema is provided, so the description should compensate, but it does not.

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

Parameters1/5

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 mention 'path' or 'distro' at all. It does not clarify that 'path' is the target directory path or that 'distro' specifies the WSL distribution, nor whether distro has a default. The description adds no meaning beyond the raw schema fields.

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 action ('Create'), resource ('a directory'), context ('in WSL'), and behavior ('recursive'). This distinguishes it from sibling file/content manipulation tools like write_file or edit_file, which create/modify files rather than directories.

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

Usage Guidelines2/5

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. For example, run_command could also create a directory via shell commands, but the description does not mention this alternative or any exclusions. The usage context is only implied by the tool name and description.

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

delete_pathA

Delete a file or directory in WSL. Recursive directory deletion requires recursive=true and may require confirm=true for shallow paths (guardrail).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
distroNo
confirmNoSet true to confirm a risky delete flagged by the guardrail
recursiveNoRequired to delete non-empty directories

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the guardrail behavior (confirm requirement) and that recursive is needed for non-empty directories. But it does not mention irreversibility, error handling, or permission requirements, leaving moderate gaps.

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 concise, front-loaded sentences with no unnecessary content. The first sentence states the main purpose; the second adds essential conditions. Every word earns its place.

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 the destructive nature and no output schema, the description covers the core action, recursion requirement, and guardrail confirmation. It leaves some ambiguity about distro behavior and error responses, but overall it is sufficiently complete for a delete tool.

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 coverage is 50%, and the description adds meaning by clarifying that recursive is for non-empty directories and confirm is a guardrail confirmation. It does not explain the distro parameter, and path semantics are only lightly implied ('file or directory'). It partially compensates for the coverage gap.

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 uses a specific verb 'Delete' and resource 'file or directory in WSL', clearly distinguishing it from sibling tools like move_file or create_directory. The scope 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 Guidelines4/5

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

The description provides specific usage conditions: recursive directory deletion requires recursive=true and may require confirm=true for shallow paths, which is clear operational guidance. However, it does not explicitly mention alternatives or when-not-to-use, so it stops short of full alternative differentiation.

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

diagnoseA

Run a diagnostic sweep: distros, UNC reachability, persistent shell, /tmp/wsl-bridge, and a UNC write/read probe. Returns a pass/fail report.

ParametersJSON Schema
NameRequiredDescriptionDefault
distroNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It lists the components checked, which gives good insight into behavior, but it does not disclose potential side effects (e.g., whether the UNC write/read probe creates files or modifies state), nor does it mention any permissions needed. The 'write/read probe' could be a write operation, which is not flagged as non-destructive.

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, tightly packed sentence that front-loads the action ('Run a diagnostic sweep') and enumerates specific checks. No wasted words; every element contributes to understanding the tool's purpose.

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 the moderately complex nature of a multi-part diagnostic and the absence of an output schema, the description does a good job explaining the scope of checks and the output format ('pass/fail report'). However, the unexplained 'distro' parameter and lack of side-effect disclosure hold it back from a 5.

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

Parameters1/5

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

The input schema has one optional string parameter 'distro' with 0% schema description coverage. The description does not mention or explain this parameter at all, leaving the agent uncertain whether it is a filter, target, or something else. The description completely fails to compensate for the schema's lack of info.

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 uses a specific verb ('Run a diagnostic sweep') and names concrete resources being checked (distros, UNC reachability, persistent shell, /tmp/wsl-bridge, UNC write/read probe). It clearly distinguishes itself from individual sibling tools like list_distros or check_wsl_status by being a composite health report.

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 use for overall environment diagnostics and mentions it returns a pass/fail report, but it does not explicitly state when to use this tool versus the individual sibling tools, nor does it list any exclusions or prerequisites. The usage context is inferred rather than explicit.

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

edit_fileA

Line/substring-based edit of a WSL file: replace oldString with newString. oldString must be unique unless replaceAll=true. Use dryRun=true to preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
distroNo
dryRunNo
newStringYes
oldStringYes
replaceAllNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full disclosure burden. It reveals the uniqueness constraint and dryRun preview feature, but does not explain failure modes (e.g., what happens if oldString is not found), whether the file must pre-exist, or any permission requirements. This is adequate but incomplete for a mutation tool.

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 deliver the core purpose, a key constraint, and the preview option without fluff. Every word earns its place; no redundant phrasing.

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 has 6 parameters and no output schema, the description covers the main edit operation but falls short on the distro parameter and failure behavior. It's moderately complete for a simple edit tool, but the missing parameter semantics and lack of error disclosure prevent a higher score.

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

Parameters2/5

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 all parameters. It explains oldString, newString, replaceAll, and dryRun, but completely omits 'distro' and 'path', which are core parameters. Without schema descriptions, the distro parameter's purpose remains unclear, making this a significant gap.

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 it performs line/substring-based edits on a WSL file, replacing oldString with newString. This distinguishes it from siblings like write_file, which creates/overwrites whole files, and read_file, which reads content. The verb 'edit' and resource 'WSL file' are specific.

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?

Provides concrete guidance: oldString must be unique unless replaceAll=true, and dryRun=true is recommended for previewing. While it doesn't explicitly contrast with write_file, the substring-based nature implies editing existing content, and the dryRun/replaceAll hints give practical usage context.

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

get_envA

Read environment variables from the persistent WSL shell. Pass name for one var, or omit for all.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
distroNo

TDQS

A3.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 must carry the transparency burden. The verb 'Read' implies a non-destructive operation, and the scope is clarified by 'persistent WSL shell'. However, it doesn't disclose the return format or behavior when a name is not found, which could be expected for a read tool.

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 two concise sentences. The first sentence states the core purpose, and the second provides immediate usage guidance, with no redundant details.

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?

With no output schema, the description should describe what is returned, but it doesn't. Additionally, the 'distro' parameter is missing from the description, making the tool's invocation only partially specified. Given the tool's simplicity, it is adequate but not fully 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 schema has 0% description coverage, so the description must compensate. It explains the 'name' parameter ('Pass name for one var, or omit for all'), but the 'distro' parameter is entirely unexplained, leaving a gap in the tool's semantic understanding.

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 verb ('Read') and resource ('environment variables'), and specifies the context ('persistent WSL shell'). It clearly differentiates from the sibling 'set_env' by focusing on reading rather than writing.

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 explicit usage instructions: 'Pass name for one var, or omit for all.' This defines when to use optional parameters. However, it does not explicitly mention alternatives or when-not-to-use, though the read/write contrast with set_env is implied.

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

get_file_infoB

Stat a WSL path: type, size, mode, mtime, atime.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
distroNo

TDQS

B3.3/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden for disclosing behavior. It lists output fields but does not explicitly state that the operation is read-only, whether symlinks are followed, whether permissions are needed, or how non-existent paths are handled. The read-only nature is only implicit in 'stat'.

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, front-loaded sentence that efficiently states the operation and the key output fields. Every word adds value, and there is no unnecessary elaboration.

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

Completeness2/5

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

With no output schema and no annotations, the description must cover both parameter semantics and behavioral context. It lists return fields but omits the distro parameter, error cases, and any discussion of permissions or side effects. The tool is simple, but the description still leaves significant gaps.

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

Parameters2/5

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

The input schema has zero parameter descriptions, so the description must compensate. It clarifies that 'path' is a WSL path, but it does not explain the 'distro' parameter at all, leaving it ambiguous. This is inadequate given the 0% schema description coverage.

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 uses a specific verb 'stat' and identifies the resource as a 'WSL path', making the tool's purpose immediately clear. It also lists the exact metadata returned (type, size, mode, mtime, atime), which distinguishes it from sibling tools like read_file (content) and list_directory (listing entries).

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 this is used to obtain file metadata, but it does not explicitly state when to use it versus alternatives such as read_file or list_directory. There is no mention of exclusions, prerequisites, or direct comparisons to sibling tools, leaving usage guidance only implied.

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

get_process_statusA

Check whether a started process is still running, and its exit code if finished.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesProcess handle from start_process

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains the core behavior (checking running status, returning exit code) but does not disclose edge-case behavior such as invalid handles or error conditions. This is a moderate gap for a status-check tool.

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 concise sentence that directly conveys the tool's purpose and return information. No filler or redundancy, making it highly efficient.

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 one-parameter tool with no output schema, the description adequately explains what the tool does and the key return concept (exit code if finished). It doesn't specify the exact response format or invalid-handle behavior, but the core functionality is sufficiently covered.

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 schema covers 100% of the parameter details, including a description of 'handle' as 'Process handle from start_process'. The tool description adds no additional parameter meaning beyond what the schema already provides. Baseline of 3 is appropriate given high schema coverage.

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's function: checking whether a started process is still running and retrieving its exit code if finished. The verb 'check' and resource 'process status' are specific, and the reference to 'started process' distinguishes it from siblings like list_processes or read_process_output.

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 implies usage after a process has been started via start_process, and the schema parameter references start_process, providing clear context. It doesn't explicitly exclude alternatives like list_processes or read_process_output, but the purpose is distinct enough that an agent could infer when to use it.

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

get_system_infoA

Get WSL system info (OS, kernel, uptime, memory, disk, user) for a distro.

ParametersJSON Schema
NameRequiredDescriptionDefault
distroNoWSL distro name; defaults to defaultDistro

TDQS

A3.8/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 burden. It clearly indicates a read operation ('Get') and lists the information categories, which adds context. However, it does not disclose any prerequisites, error behavior, side effects (e.g., whether it boots the distro), or return format. For a read-only tool, this is 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It leads with the action and resource, then parenthetically lists the specific data points, making every word informative.

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 read-only tool with one optional parameter, the description adequately conveys the purpose and output scope. The listed info categories hint at the return content. However, the absence of an output schema and annotations means some details like return format or error handling are not covered, preventing a perfect score.

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 fully describes the only parameter 'distro' with its default behavior (100% coverage). The description's mention of 'for a distro' aligns with the schema but adds no new semantic information. The baseline of 3 is appropriate since the schema handles the parameter explanation.

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 uses the specific verb 'Get' and resource 'WSL system info' with scope 'for a distro', and enumerates the exact data categories (OS, kernel, uptime, memory, disk, user). This clearly distinguishes it from sibling tools like check_wsl_status, which likely focuses on WSL installation health rather than system details.

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 states what the tool does but provides no explicit guidance on when to use it instead of alternatives. Usage context is implied by the 'Get' action and mention of 'distro', but there are no exclusions or references to sibling tools.

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

list_directoryA

List entries in a WSL directory, with type and size. Directories sort first. Supports offset/limit pagination for large directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
limitNoMax entries to return (default all)
distroNo
offsetNoEntry index to start at (default 0)

TDQS

A3.7/5.0
Behavior3/5

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 useful behavior: entries include type and size, directories sort first, and offset/limit pagination is supported. However, it does not mention return format details, hidden-file handling, symlink behavior, or potential errors, leaving notable gaps.

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 two sentences and every clause earns its place: it states the operation, output fields, sort order, and pagination support. No filler or redundancy.

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 has four parameters and no output schema. The description covers the core listing behavior and pagination, but does not clarify the role of the 'distro' parameter or the structure of the returned entries. Given the WSL context and sibling tools like list_distros, this is a significant omission for a fully self-contained description.

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 only 50% (limit and offset have descriptions; path and distro do not). The description mentions offset/limit pagination, reinforcing the schema for those parameters, but it adds nothing about path semantics or how distro is selected, so the low-coverage parameters remain under-explained.

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 uses a specific verb ('List') with a clear resource ('entries in a WSL directory') and specifies additional output details (type and size). It clearly distinguishes from sibling tools like read_file and get_file_info, which focus on file content or single-file metadata.

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: it is for listing directory entries and mentions pagination for large directories. However, it does not explicitly state when to prefer this tool over alternatives, nor does it provide exclusions or when-not-to-use guidance.

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

list_distrosB

List installed WSL distributions with their state and version, and mark the default.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It implies a read-only list operation but 'mark the default' introduces uncertainty about potential side effects. It does not explicitly state that the tool is non-mutating or what happens in edge cases (e.g., no distros installed).

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 sentence with no filler words. It conveys the main purpose and the expected output fields efficiently, though the phrase 'mark the default' could be more precise.

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?

For a simple no-parameter, no-annotation tool, the description covers the core output (distributions, state, version) but leaves the phrase 'mark the default' unexplained, and it omits any error behavior or preconditions. It is minimally adequate but has gaps given the absence of annotations and output schema.

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 tool has zero parameters and an empty input schema, so the baseline is 4. The description adds no parameter-specific semantics, but none are needed; it does not conflict with 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 clearly states a specific action ('List') and resource ('installed WSL distributions') and indicates the output fields (state, version). It is distinguishable from sibling tools like check_wsl_status. However, 'mark the default' is ambiguous—it could mean indicating the default or modifying it—slightly weakening clarity.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. It does not mention prerequisites (e.g., WSL must be installed) or contexts where this is preferable to check_wsl_status, leaving the agent without usage direction.

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

list_portsA

List TCP ports listening in WSL (via ss, falling back to /proc/net/tcp). Useful to find where a dev server is reachable (WSL2 forwards localhost to Windows).

ParametersJSON Schema
NameRequiredDescriptionDefault
distroNo

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 must carry the burden of behavioral disclosure. It reveals implementation details ('via ss, falling back to /proc/net/tcp') and notes WSL2 behavior, which adds transparency. However, it does not describe the output format or any potential side effects, so it is not fully transparent.

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 two sentences long, front-loads the core purpose, and includes only useful context. Every clause adds value: the mechanism, the use case, and the WSL2 note. No wasted words.

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 relatively simple, but with no output schema, the description should explain what the tool returns (e.g., port numbers, format). It also fails to explain the 'distro' parameter. While the purpose and use case are clear, these gaps make the description only partially complete.

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

Parameters2/5

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

There is one optional parameter 'distro' with no schema description. The description does not mention or explain this parameter at all, leaving the agent to guess its meaning and valid values. Given 0% schema coverage, the description should have clarified 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 clearly states the tool lists TCP ports listening in WSL, using a specific verb ('List') and specific resource ('TCP ports listening in WSL'). It also distinguishes itself from sibling tools by focusing on ports rather than processes, files, or system info.

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 a clear use case: 'Useful to find where a dev server is reachable (WSL2 forwards localhost to Windows).' This gives context for when to use the tool, though it does not explicitly mention when not to use it or name alternative tools. Overall, the guidance is clear and helpful.

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

list_processesA

List all processes started via start_process that this server is tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/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 for behavioral disclosure. It transparently states the tracking scope (processes started via start_process) and implies a read-only list operation. It does not detail edge cases like whether finished processes are included, but for a simple list tool this is sufficient.

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 immediately states the action and scope. Every word earns its place; there is no fluff or irrelevant detail.

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 is simple (no parameters, no output schema). The description sufficiently explains the tool's purpose and scope. However, since there is no output schema, it could have briefly mentioned what the returned list contains (e.g., process IDs, names), but the current wording is adequate for a list operation.

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 tool has zero parameters, so the schema provides complete coverage. Baseline for 0 params is 4. The description adds no parameter-related meaning, but none is needed—the tool requires no arguments.

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 uses a specific verb 'List' with a clear resource 'all processes started via start_process that this server is tracking.' This clearly distinguishes it from sibling tools like get_process_status or stop_process, which target individual processes, and from broader system process listing tools.

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 clearly states the scope: it lists only processes started via start_process and tracked by the server. This gives the agent context for when to use it vs. alternatives, though it doesn't explicitly mention alternative tools or exclusions. The intended use is implied strongly enough.

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

move_fileC

Move or rename a file/directory within WSL.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
fromYes
distroNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states the action but does not mention overwrite behavior, whether it is destructive, permissions required, atomicity, or what happens if the destination exists. For a mutation tool, this is a significant gap.

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 concise sentence that is front-loaded with the core action and resource. It contains no filler words, redundancy, or irrelevant details. It is appropriately sized for the simple operation it describes.

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

Completeness2/5

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

Despite being a seemingly simple operation, the tool has no output schema and no annotations. The description does not explain return values, error handling, whether the move is synchronous, or effects of the optional 'distro' parameter. Given the environment is WSL, more context is needed for the agent to invoke it correctly.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description provides no explanation of 'from', 'to', or 'distro' parameters. While 'from' and 'to' are self-explanatory, 'distro' is ambiguous without additional context. The description must compensate for the missing schema descriptions, but it fails to do so.

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 uses specific verbs 'move or rename' and identifies the resource as 'a file/directory within WSL'. This clearly distinguishes it from siblings like write_file, edit_file, or delete_path, and the scope 'within WSL' adds precision.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or scenarios like copying, overwriting, or cross-filesystem moves. The context of 'move or rename' implies a distinct operation, but the tool does not state this.

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

query_audit_logA

Query the audit log of past tool calls (most-recent-first). Filter by tool, since (ISO timestamp), or keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNo
limitNoDefault 100
sinceNoISO timestamp; only entries at or after
keywordNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description must carry the transparency burden. It discloses ordering and filter behavior, and 'query' implies a read-only operation, but it does not describe return format, pagination, or whether results are truncated.

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, front-loaded sentence with no filler. It conveys the core action, ordering, and filter options efficiently.

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 has 4 optional parameters and no output schema or annotations. The description covers purpose, ordering, and filters, but omits details like limit behavior and the structure of returned entries, so it is adequate but not comprehensive.

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 50% (limit and since are documented), while tool and keyword lack schema descriptions. The description adds meaning by identifying tool, since, and keyword as filters, partially compensating for the undocumented parameters.

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 action ('Query'), the resource ('audit log of past tool calls'), and a key behavior (most-recent-first ordering). This distinguishes it from sibling tools like search_content or read_process_output.

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 intended use case is implied by 'audit log of past tool calls', but there is no explicit when-to-use guidance or comparison to alternatives. No exclusions or prerequisites are mentioned.

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

read_fileA

Read a file from WSL. Text files return UTF-8 content; binary files return base64 with a mimeType. Supports offset/limit for large files; sha256=true returns a hash of the read bytes for round-trip verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute POSIX path in WSL (use ~ for home)
limitNoMax bytes to read
distroNo
offsetNoByte offset to start reading
sha256NoReturn sha256 (hex) of the read bytes

TDQS

A4.4/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 for behavioral disclosure. It clearly states that text files return UTF-8 content, binary files return base64 with a mimeType, and describes partial reads and hashing. It does not mention distro selection or error behavior, but the disclosed behaviors are significant and well stated.

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 two sentences long and wastes no words. It front-loads the core action, then packs return-type behavior and advanced parameters into concise, purposeful clauses.

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?

With no output schema, the description appropriately explains return values for both text and binary files. It covers offset/limit and sha256, which addresses the main usage complexities. However, the distro parameter is not explained at all, and there is no mention of error conditions or path resolution nuances, leaving slight gaps.

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 schema already covers path, limit, offset, and sha256 (80% coverage), so the baseline is 3. The description adds value by explaining how binary files are returned (base64 + mimeType) and what sha256=true actually does, beyond the schema's description. The distro parameter remains undocumented, preventing a higher score.

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 'Read a file from WSL', specifying both the action and resource, and differentiates this tool from siblings by detailing text vs. binary handling. It clearly distinguishes read_file from read_multiple_files and list_directory.

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 clear context for when to use offset/limit (large files) and sha256 (round-trip verification), implying appropriate use cases. It does not explicitly mention alternatives or exclusions, but the guidance is sufficient for selecting this tool over siblings.

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

read_multiple_filesA

Read multiple files from WSL in one call (reduces round-trips). Each entry is returned independently; failures do not abort the batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesAbsolute POSIX paths in WSL
distroNo

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 transparency burden. It discloses a key behavioral trait: failures do not abort the batch and each entry is returned independently. This is valuable. However, it does not describe the return format or mention any permissions required, which would add more context.

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 two concise sentences with information front-loaded. The first sentence states the action and benefit, the second explains batch behavior. Every word earns its place, with no fluff or repetition of schema details.

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 description covers the core purpose and failure isolation, but for a batch tool with no output schema and minimal annotations, it would benefit from mentioning the return structure, ordering of results, and the distro parameter. The missing return format is a notable gap given the output schema is absent.

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

Parameters2/5

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

Schema coverage is only 50% (paths has a description, distro does not). The description does not explain the distro parameter or add any parameter-level detail. The purpose implies paths are files in WSL, but the optional distro parameter remains ambiguous, leaving the agent uncertain about how to use 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 clearly states the action: 'Read multiple files from WSL in one call', with the specific benefit of reducing round-trips. It distinguishes itself from the single-file sibling read_file by emphasizing the batch nature. The independent return and failure isolation further clarify the tool's 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 phrase 'reduces round-trips' implies this tool is for batch reading, and the independent failure handling indicates it can be used when some files may fail. However, it does not explicitly mention alternatives like read_file or specify when not to use this tool (e.g., for a single file).

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

read_process_outputA

Read new output from a started process log, incrementally by byte offset. Pass follow=true to briefly wait for new output; stream=true to additionally push each new chunk as a notifications/message (and notifications/progress when the client sent a progressToken) as it arrives. which selects stdout (default) or stderr. Returns the next offset to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
whichNoWhich stream to read (default stdout)
followNoWait briefly for new output if at EOF
handleYes
offsetNoByte offset to read from; default 0
streamNoPush new chunks as notifications/message while following, then return
streamMsNoMax ms to stream (default min(scriptTimeoutMs/4, 5000))
binaryOutputNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, so description carries full burden. It discloses incremental offset behavior, follow semantics (brief wait), stream behavior (pushes notifications/message and progress when progressToken provided), and return of next offset. This goes beyond basic 'read' and covers the most important behavioral nuances, though edge cases like invalid handles or binary output are not addressed.

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?

Three sentences, front-loaded with the core purpose. Each sentence earns its place: primary read mechanism, follow/stream options, and stream selection plus return value. No redundant phrasing.

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 tool with 8 parameters and no output schema, the description covers the main workflow (offset-based reading, follow, stream, choosing stdout/stderr, return offset). It omits details on limit, binaryOutput, and streamMs, but these are optional and the overall operation is clear. Adequate for typical use.

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 coverage is 63%, and the description adds meaning for follow, stream, which, and offset (via 'byte offset' and 'next offset'). However, it does not explain limit or binaryOutput, which are also missing from schema descriptions for limit and binaryOutput, leaving a gap for these parameters. Still, the key parameters are well covered.

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?

Description opens with a specific action and object: 'Read new output from a started process log, incrementally by byte offset.' This clearly distinguishes it from file-reading tools (read_file) and process-status tools (get_process_status) by focusing on process logs and incremental offset-based reading.

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?

Provides clear context: use after starting a process, with follow/stream modes. It explains how to use follow and stream and which stream to select. While it doesn't explicitly name alternatives or exclusions, the context is unambiguous and implies use for process output rather than file content.

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

resolve_pathA

Resolve a possibly-relative WSL POSIX path (handles ~, ., ..) to an absolute POSIX path, using a working directory and the distro home.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for relative paths
pathYesThe path to resolve
distroNoWSL distro; defaults to defaultDistro

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. It discloses key behavioral details: handling of ~, ., and ..., and the role of cwd and distro home. It implies a pure computation with no side effects, which is sufficient for a path resolution tool.

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, front-loaded sentence that states the purpose and key nuances without any redundant words. It is concise and well-structured.

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 utility tool, the description is quite complete: it states the input (path, cwd, distro), the behavior, and the output (absolute POSIX path). It lacks explicit error behavior, but that is a minor gap for a pure resolution function.

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 extra meaning by explaining that ~ resolves to the distro home, and that relative paths use the working directory, enhancing the schema parameter descriptions.

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 ('Resolve') and resource ('WSL POSIX path'), and specifies the exact behavior: converting possibly-relative paths to absolute, handling ~, ., and ... This distinguishes it from siblings like translate_path and read_file.

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 usage context is implied by the description (i.e., when you need to resolve a path), but it does not explicitly mention alternatives or when not to use the tool. No exclusions or comparisons to sibling tools like translate_path are provided.

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

run_commandA

Run a shell command in WSL (foreground, waits for completion). Supports multi-line scripts, cwd, env vars, and timeout. Returns stdout (and stderr, separately when separateStderr=true; otherwise stderr is merged into stdout) and exit code. Dangerous commands are blocked by the guardrail (confirm=true overrides confirmable ones).

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory (absolute POSIX or ~)
envNoEnvironment variables for this command only
distroNo
commandYesThe shell command(s) to run; may be multi-line
confirmNoConfirm a command flagged by the guardrail
timeoutMsNoTimeout in ms; default commandTimeoutMs
binaryOutputNoReturn stdout/stderr as base64 instead of UTF-8 text
separateStderrNoCapture stderr separately (stderr field) instead of merging into stdout

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 discloses important behaviors: it waits for completion, returns stdout/stderr and exit code, merges stderr unless separateStderr is true, and explains the guardrail blocking dangerous commands with confirm override. It does not discuss side effects or permission requirements, but for a command runner the key behavioral traits are covered.

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?

Three focused sentences: the first states the core action and mode, the second enumerates capabilities, the third describes output and guardrail behavior. No redundant or filler language.

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 no output schema and no annotations, the description covers the essential return values, synchronous execution, stderr handling, and safety guardrail. It is slightly incomplete regarding the unannotated 'distro' parameter and default behavior for timeout/cwd, but overall sufficient for a shell-command tool.

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 coverage is 88%, so the schema already documents most parameters. The description adds semantic context for behavior (stderr merging, guardrail, multi-line) but does not add meaning to the undocumented 'distro' parameter or explain defaults like timeoutMs/cwd, keeping it at baseline.

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 verb+resource: 'Run a shell command in WSL' with the key qualifier '(foreground, waits for completion)', clearly distinguishing it from background process siblings like start_process. It also previews supported capabilities (multi-line scripts, cwd, env, timeout), leaving no ambiguity about its function.

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 makes the synchronous/foreground behavior explicit, implying it should be used when a command's completion and exit code are needed immediately. It does not explicitly name alternatives like start_process for background execution, so it stops short of full when/when-not guidance.

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

search_contentA

Search file contents in WSL (recursive grep). Returns file:line:match entries. Uses ripgrep if available, else falls back to grep.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory to search
distroNo
includeNoFile name glob filter, e.g. "*.py"
patternYesSearch pattern (regex for grep/rg)
maxResultsNoDefault 200

TDQS

A4.3/5.0
Behavior4/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 honestly discloses the recursive search behavior, output format, and the implementation fallback (ripgrep vs grep). It does not mention error handling or file types, but these are less critical for a search tool.

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 two sentences, front-loaded with the core purpose and output format, then adding the implementation detail. No wasted words.

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?

Despite no output schema, the description explicitly states the return format (file:line:match). The tool is straightforward, and the description covers its scope (WSL, recursive), output, and implementation, making it complete enough for an agent.

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 80%, with descriptions for path, include, pattern, and maxResults. The description itself does not add parameter-level detail beyond what the schema provides, but the schema already covers most semantics, so a baseline score of 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 the tool searches file contents in WSL recursively, returning file:line:match entries. This distinguishes it from sibling tools like search_files (which likely searches filenames) and read_file.

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 gives clear context: recursive grep in WSL, with a fallback from ripgrep to grep. It does not explicitly mention when not to use it or name alternatives, but the purpose is clear enough for an agent to decide.

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

search_filesA

Find files in WSL by name pattern (find -name). Returns matching POSIX paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory to search from (absolute POSIX)
distroNo
patternYesGlob pattern, e.g. "*.ts" or "test*"
maxDepthNoMax directory depth

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It adds useful behavioral details: it returns POSIX paths and behaves like 'find -name'. However, it omits details like default recursion depth, handling of hidden files, and error behavior, leaving gaps.

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 one concise sentence that packs purpose, method, and output with no redundancy. It 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.

Completeness4/5

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

For a moderate-complexity tool with no output schema and no annotations, the description covers core purpose and return type adequately. The 'find -name' reference and maxDepth parameter imply recursive search, but explicit default behavior is not stated, leaving minor completeness gaps.

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 75% (3 of 4 parameters explained). The description only reinforces pattern semantics via 'find -name' and does not compensate for the undocumented 'distro' parameter. Overall, it adds minimal value beyond 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?

Description clearly states verb 'Find', resource 'files in WSL', and method 'by name pattern (find -name)'. It also specifies output ('matching POSIX paths'), distinguishing it from siblings like search_content (content search) and list_directory (listing).

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 clearly implies this tool is for locating files by name pattern in WSL, providing clear context. However, it does not explicitly contrast with sibling tools or state when not to use it, so it lacks exclusions but is still directional.

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

set_cwdA

Set the persistent shell working directory for a distro. Subsequent run_command calls without an explicit cwd will run here.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdYesAbsolute POSIX path or ~
distroNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it discloses persistence and the precise effect on subsequent run_command calls. It does not cover edge cases like invalid paths or default distro behavior, but the core behavior is transparent.

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 descriptions uses two short, front-loaded sentences with no wasted words. Every clause adds useful information about what the tool does and its consequences.

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 setter tool, the description covers the main behavioral contract. However, it omits details about distro selection, error handling, and whether the setting persists across WSL sessions, leaving some contextual gaps given the lack of annotations or output schema.

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

Parameters2/5

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

Schema description coverage is only 50%; the distro parameter has no description. The description mentions 'for a distro' but does not clarify valid values, defaults, or how to reference the distro, leaving a significant semantic gap that the schema does not fill.

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 action ('Set') and resource ('persistent shell working directory for a distro'), making the tool's purpose unambiguous. It also implicitly distinguishes itself from siblings like run_command by explaining how it affects future run_command calls.

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 clear context by explaining that subsequent run_command calls without an explicit cwd will use this setting. It does not explicitly mention alternatives or exclusions, but the relationship to run_command gives a strong sense of when to use the tool.

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

set_envA

Set an environment variable in the persistent WSL shell (persists across run_command calls).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes
distroNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It discloses the persistent nature of the change across run_command calls, which is useful, but it does not mention side effects like overwriting existing values, distro scoping, or any permission requirements. The persistence trait lifts it above a bare 'set' description.

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 sentence that front-loads the action and resource, then adds the most important behavioral qualifier. Every phrase earns its place and there is no redundant or filler content.

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 simple, but the description omits the optional 'distro' parameter and does not clarify whether the variable is set in the default distro or one specified by the parameter. The persistence behavior is covered, but without more parameter or default-scope context the description is not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needs to compensate for parameter documentation. It does not explain the 'distro' parameter at all, and while 'name' and 'value' are self-explanatory, the lack of any parameter detail leaves the optional distro behavior ambiguous.

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 the specific action 'Set' and clearly identifies the resource as 'an environment variable in the persistent WSL shell.' This distinguishes it from sibling tools like get_env (which reads) and run_command (which executes commands), and the parenthetical persistence note adds key scope.

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 phrase 'persists across run_command calls' gives a clear context for when to use this tool: to prepare environment variables for later shell commands. It does not explicitly mention alternatives or exclusion cases, but the context is sufficient to differentiate it from get_env and set_cwd.

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

start_processA

Start a long-running process in WSL (backgrounded). Returns a handle and pid; output is streamed to a log file readable via read_process_output.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
envNo
distroNo
commandYesThe command to run; may be multi-line
confirmNo
separateStderrNoWrite stderr to a separate .err file (read via read_process_output which=stderr)

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 burden of behavioral disclosure. It discloses that the process is backgrounded, returns a handle and pid, and streams output to a log file. This provides meaningful insight beyond what annotations would offer, though it does not cover potential failure modes or process lifecycle 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 a single sentence that is front-loaded with the core action and outcome. It efficiently conveys purpose, return values, and output handling without superfluous words.

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 description covers the main behavioral aspects and return values, but with 6 parameters and no output schema, it leaves important details unexplained (e.g., what 'confirm' does, how distro is selected, env handling). It is adequate for a high-level understanding but not fully complete for safe invocation.

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

Parameters2/5

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

Schema description coverage is only 33%; cwd, env, distro, and confirm lack descriptions. The tool description does not elaborate on any parameters, so it fails to compensate for the low schema coverage. Only command and separateStderr have schema descriptions, leaving the other parameters semantically under-specified.

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 starts a long-running process in WSL, explicitly noting it is backgrounded. It distinguishes from siblings like run_command by highlighting the backgrounded nature and the returned handle/pid, plus the log-file output mechanism.

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 implies usage for long-running, backgrounded tasks and indicates how output is retrieved via read_process_output. However, it does not explicitly state when to avoid this tool (e.g., for short foreground commands) or name alternatives like run_command. The context is clear but lacks explicit exclusions.

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

stop_processA

Send a signal to a started process (default SIGTERM). Use signal=KILL to force. Uppercase signal names only.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYes
signalNoSignal name without SIG, uppercase, e.g. TERM, KILL, INT

TDQS

A4/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 the default and force signals and the uppercase naming requirement, but omits side effects (e.g., process termination, unsaved data) and does not clarify whether the process must be started by this tool. Additional disclosure of destructive consequences 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.

Conciseness5/5

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

Two concise sentences with no redundancy, immediately front-loading the tool's purpose and then providing essential usage details. Every word earns its place.

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 process signal tool, the description covers the essentials: action, default behavior, and signal syntax. It lacks edge-case behavior (e.g., errors, success output) but given the tool's simplicity, this is acceptable. The absence of output schema and annotations is partially mitigated by the clear description.

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 coverage is 50% (only signal has a description). The description adds meaningful detail about default signal and uppercase enforcement, compensating somewhat for the undocumented handle parameter, but handle semantics still remain unclear.

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 'Send a signal to a started process' with a specific verb and resource, and distinguishes itself from siblings like start_process and get_process_status by focusing on signal delivery.

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 gives context on default behavior (SIGTERM) and a specific usage hint for force killing with KILL, but does not explicitly mention alternatives or when not to use it. The guidance is clear enough for common use cases.

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

translate_pathA

Translate a WSL POSIX path to a Windows UNC path, or vice versa. Useful for understanding where a WSL file lives on the Windows side.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesThe path to translate
distroNoWSL distro (required for posix→unc)
directionNoDefault auto-detected from the path form

TDQS

A3.8/5.0
Behavior2/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 omits important details such as the requirement of a distro for posix-to-unc conversion, whether the operation is read-only, and potential error conditions. The description is too minimal to fully inform the agent about the tool's behavior.

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 two concise sentences that front-load the core functionality and then provide a practical use case. Every word earns its place with no redundancy.

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 the tool's low complexity, a well-described schema, and no output schema, the description is reasonably complete. It explains the purpose and a common application. Minor gaps remain, such as not explicitly mentioning the return type, but the overall context is sufficient for most use cases.

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 documents all three parameters (path, distro, direction) with useful descriptions, including the auto-detection of direction. The description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 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 the tool's function with a specific verb ('Translate') and the exact resource types (WSL POSIX path, Windows UNC path), covering both directions. This distinguishes it from sibling tools like resolve_path or get_system_info.

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 a concrete use case ('understanding where a WSL file lives on the Windows side') that helps the agent know when to use it. However, it does not explicitly mention alternatives or when not to use the tool, missing an opportunity for fuller guidance.

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

write_fileA

Write a file in WSL. content is UTF-8 text by default; set encoding="base64" for binary content. Creates parent directories as needed. sha256=true returns a hash of the written bytes for round-trip verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
distroNo
sha256NoReturn sha256 (hex) of the written bytes
contentYes
encodingNoDefault "text"

TDQS

A4.1/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. It discloses several behavioral traits: default encoding, base64 option, automatic parent directory creation, and sha256 return behavior. It does not explicitly state whether existing files are overwritten, which is a minor gap, but the provided details add substantial value beyond the schema.

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 two sentences, front-loaded with the core action, and every clause adds value. No wasted words.

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 no output schema and no annotations, the description covers the essential behavior for a file-writing tool: encoding, parent dirs, and hash verification. It omits overwrite semantics and distro parameter, but overall it is sufficiently complete for an agent to invoke 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 description coverage is only 40%, but the description adds meaning for 'content' (UTF-8 default), 'encoding' (base64 option), 'sha256' (returns hash), and implicitly 'path' (creates parent dirs). The 'distro' parameter is not addressed, but the description compensates significantly for the low schema coverage.

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 'Write a file in WSL', which clearly identifies the verb (write) and resource (file in WSL). It distinguishes from read/delete tools, but does not explicitly differentiate from sibling edit_file, so a 4 is appropriate.

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 concrete usage guidance: 'content is UTF-8 text by default; set encoding="base64" for binary content' and 'sha256=true returns a hash... for round-trip verification'. It also notes parent directory creation. However, it does not mention when to choose this over edit_file, so it misses explicit alternatives.

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. 28 tool updatesv0.1.0
    • First observedcheck_wsl_status
    • First observedcreate_directory
    • First observeddelete_path
    • First observeddiagnose
    • First observededit_file
    • First observedget_env
    • First observedget_file_info
    • First observedget_process_status
    • First observedget_system_info
    • First observedlist_directory
    • First observedlist_distros
    • First observedlist_ports
    • First observedlist_processes
    • First observedmove_file
    • First observedquery_audit_log
    • First observedread_file
    • First observedread_multiple_files
    • First observedread_process_output
    • First observedresolve_path
    • First observedrun_command
    • First observedsearch_content
    • First observedsearch_files
    • First observedset_cwd
    • First observedset_env
    • First observedstart_process
    • First observedstop_process
    • First observedtranslate_path
    • First observedwrite_file

TDQS

A3.6/5.0

Scored across 28 tools

Disambiguation5/5

Each tool targets a distinct resource and action: file operations, process management, environment variables, and system queries are cleanly separated. Even similar tools like run_command vs start_process or read_file vs read_multiple_files have clear behavioral differences. No two tools appear to do the same thing.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern in snake_case, such as write_file, list_directory, get_system_info, and stop_process. Minor exceptions like diagnose or check_wsl_status still fit the general style. The naming is predictable and makes it easy to infer what each tool does.

Tool Count2/5

With 28 tools, this exceeds the 25-tool threshold considered 'too many', though the broad scope of a WSL bridge justifies many of them. Still, consolidation is possible, e.g., merging get_file_info into list_directory or having diagnose call other tools. The set feels heavy even if each tool is individually useful.

Completeness4/5

The tool surface covers a comprehensive set of WSL operations: file CRUD and search, process execution and management, environment controls, system information, path translation, and an audit log. A minor gap is the lack of distro lifecycle management (start/stop/shutdown), but that is not essential for typical bridging tasks. Core workflows are fully covered with no dead ends.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides programmatic access to the Windows terminal, enabling AI models to interact with the Windows command line through standardized tools for writing commands, reading output, and sending control signals.
    3
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Node.js server implementing Model Context Protocol that enables seamless interaction between Windows and Linux distributions under WSL, allowing file operations like reading, writing, searching, and managing files across the WSL filesystem from Windows.
    9 npm
    15
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A local Model Context Protocol server that allows LLMs to securely execute shell commands on remote Linux and Windows systems via SSH connections.
    6
    23 npm
    2
    -