chatgpt-local-coding-agent
Agente Shell local para la versión web de ChatGPT 0.2.1 (Windows + WSL)
Esta implementación conecta el Developer Mode oficial de ChatGPT a través de OpenAI Secure MCP Tunnel con el Shell local y el workspace de código. La inferencia del modelo ocurre solo en la sesión web de ChatGPT; el código del servidor no llama a Responses, Chat Completions, Realtime ni a otras APIs de modelos. La clave de API de runtime se entrega únicamente al cliente oficial de Tunnel para establecer el enlace de transporte.
El proyecto no incluye capturas de pantalla, mouse, teclado, automatización de UI, control remoto de escritorio ni herramientas de automatización de navegador, y no envuelve chatgpt.com como una API no oficial.
Capacidades
Lee archivos de texto plano normales de Windows / WSL a los que el usuario actual tiene acceso.
Conserva el
shell_runoriginal de WSL con bubblewrap: sin cuenta regresiva de autorización, disponible a largo plazo con el servicio; el home del host, los montajes de Windows y/vardel host no son visibles.PowerShell 7 y los ejecutables nativos de Windows usan
windows_shell_open → windows_shell_prepare → windows_shell_run; tras la primera aprobación local, la autorización se conserva a través de Tunnel, MCP y reinicios de sesión, hasta que se invoque explícitamentewindows_shell_close.Los repos de Windows y WSL admiten snapshot, diff, detección de conflictos, confirmación local, escritura atómica y copias de respaldo.
El workspace solo copia archivos normales rastreados por Git o no rastreados y no ignorados; excluye
.env, rutas de credenciales, archivos con contenido de credenciales detectado, symlinks, junctions, reparse points, archivos especiales y contenido ignorado por Git.Windows Shell solo hereda variables de entorno de una lista blanca; las variables de entorno con apariencia de secreto no se pasan; la salida se limita a 2 MiB por cada una y se desinfecta antes de devolverla a ChatGPT.
Los subprocesos de Windows se colocan en un Job Object de kill-on-close; al agotarse el tiempo, revocar la autorización o detener el agente, se termina el árbol de comandos.
No eleva privilegios ni invoca UAC. Si la puerta de enlace está elevada, Windows Shell se niega a ejecutarse.
El snapshot de Windows es una copia auditable, no un sandbox de seguridad fuerte. Los procesos de usuario estándar aún pueden acceder a otros archivos de ese usuario, por lo que todos los comandos de Windows que no sean estrictamente de solo lectura se tratan como "capaces de afectar al host" y solicitan confirmación local comando por comando.
Los límites detallados se encuentran en SECURITY.md.
Related MCP server: agent-mcp-gateway
Herramientas MCP
Herramientas de archivos:
system_health
fs_stat / fs_list / fs_search_paths
fs_inspect / fs_read / fs_releaseHerramientas de workspace compartido:
workspace_open(executor="wsl" | "windows")
workspace_status
workspace_diff
workspace_apply_back
workspace_closeHerramientas de Shell:
shell_run # 只用于 WSL bubblewrap
windows_shell_status
windows_shell_open
windows_shell_prepare
windows_shell_run
windows_shell_closewindows_shell_prepare vincula el shell, el comando completo o argv, cwd, target, propósito, tiempo de espera, resumen de entorno, características de red y riesgo a un review_id de un solo uso de 5 minutos. Al ejecutar no se pueden reemplazar los campos; tras un reinicio, el token de revisión caduca, pero la autorización persistente DPAPI de Windows Shell sigue siendo válida.
Clasificación de comandos de Windows
Nivel | Comportamiento |
| Se puede ejecutar si el Shell está autorizado; acepta una lista blanca extendida que el AST puede demostrar como estática y de solo lectura, incluyendo información de archivos/procesos/servicios/sistema, hashes/ACL, metadatos de PowerShell, y consultas como Git status/diff/log/show/rev-parse/ls-files/ls-tree. |
| cwd se asigna al snapshot de Windows; confirmación de la herramienta de ChatGPT y confirmación comando por comando en Windows local. |
| Afecta directamente al host o tiene capacidad de cambiar el estado de red; confirmación de la herramienta de ChatGPT y confirmación comando por comando en Windows local. |
| Elevación de privilegios, RunAs, EncodedCommand, ofuscación de comandos, desactivación de protecciones de seguridad, inyección, keylogging, volcado de credenciales o evasión de aprobación. |
El Shell nunca devuelve credenciales exactas. Cuando una tarea legítima realmente necesita el valor original, debe continuar con fs_inspect → fs_release(mode="exact") y el usuario debe confirmar en un diálogo local.
Uso en ChatGPT
Flujo de trabajo de WSL:
system_health
workspace_open(platform="windows", path="C:\path\repo", executor="wsl")
shell_run(command="...")
workspace_diff
workspace_apply_back(review_id="...", purpose="具体写回用途")
workspace_closeFlujo de trabajo de Windows:
system_health
windows_shell_status
windows_shell_open(purpose="在本机 repo 中构建并运行测试")
workspace_open(platform="windows", path="C:\path\repo", executor="windows")
windows_shell_prepare(
shell="powershell",
command="python -m pytest",
cwd="C:\path\repo",
target="workspace",
purpose="运行该 repo 的测试以验证当前修改",
timeout_seconds=120
)
windows_shell_run(review_id="...")
workspace_diff
workspace_apply_back(review_id="...", purpose="测试通过后写回已审核 diff")
workspace_closeEl parámetro antiguo duration_seconds de windows_shell_open se conserva por compatibilidad y se ignora bajo authorization_mode="persistent". No llames a windows_shell_close al final de cada tarea; solo llámalo si deseas revocar la autorización permanente. Detener o reiniciar el Tunnel no revoca la autorización.
Usa target="host" para consultas de solo lectura al host. Cualquier instalación, escritura de archivos, modificación del registro, cambio de estado de procesos/servicios o transferencia de red solicitará confirmación local comando por comando.
Instalación, actualización y ejecución
Ubicación de instalación predeterminada:
%LOCALAPPDATA%\ChatGPTMCPAntes de una instalación nueva, crea un Secure MCP Tunnel y una clave de API de runtime dedicada en el panel de control de OpenAI. El script de instalación no incluye ningún ID de Tunnel preestablecido; debe pasarse explícitamente:
& .\scripts\Install.ps1 -TunnelId 'tunnel_your_id'El perfil de Tunnel predeterminado se llama chatgpt-local-coding-agent. Para personalizarlo:
& .\scripts\Install.ps1 -TunnelId 'tunnel_your_id' -ProfileName 'my-local-coding-agent'El script de instalación escribe el nombre del perfil en el config.toml local. Si una instalación anterior aún no tiene esa configuración, el CLI de Operator solo realiza descubrimiento compatible si hay exactamente un YAML en el directorio de perfiles; si hay varios o ninguno, se niega a adivinar.
Actualización desde una versión anterior:
& .\scripts\Upgrade.ps1El script de actualización primero guarda la configuración, los scripts, los paquetes instalados y el manifiesto de dependencias en %LOCALAPPDATA%\ChatGPTMCP\backups, luego instala 0.2.1 y ejecuta las pruebas completas; solo si las pruebas pasan, cambia windows_shell.enabled a true y establece authorization_mode="persistent". La clave de runtime no se lee, imprime ni elimina.
Comandos comunes:
& "$env:LOCALAPPDATA\ChatGPTMCP\Doctor.ps1"
& "$env:LOCALAPPDATA\ChatGPTMCP\Start-Agent.ps1"
& "$env:LOCALAPPDATA\ChatGPTMCP\Status-Agent.ps1"
& "$env:LOCALAPPDATA\ChatGPTMCP\Stop-Agent.ps1"
& "$env:LOCALAPPDATA\ChatGPTMCP\Enable-Autostart.ps1" -StartNow
& "$env:LOCALAPPDATA\ChatGPTMCP\Disable-Autostart.ps1"La tarea de inicio de sesión se registra solo para el usuario actual, con RunLevel=Limited, sin privilegios elevados. El registro de autorización de Windows Shell está cifrado con DPAPI del usuario actual de Windows; tras la primera aprobación mediante windows_shell_open, se restaura en los reinicios de sesión/Tunnel/MCP. El Shell de WSL no tiene cuenta regresiva. La autorización permanente no significa permiso permanente para comandos: los comandos de Windows que no son de solo lectura, la escritura de vuelta al repo original y el contenido sensible exacto siguen requiriendo confirmación local comando por comando.
La confirmación de herramientas de la propia página web de ChatGPT es otra capa: el Developer Mode de OpenAI requiere confirmación por defecto para acciones de escritura, y el "recordar" en la página web solo se aplica a la conversación actual; al actualizar o iniciar una nueva conversación, puede volver a preguntar. El servicio local no puede ni intentará eludir esta capa. Consulta la documentación de Developer Mode.
Después de implementar nuevas definiciones de herramientas, ve a la página de detalles de App/Connector en ChatGPT y ejecuta Refresh para revisar las cinco acciones nuevas de Windows Shell. OpenAI no habilita automáticamente las definiciones de herramientas modificadas. Consulta la documentación de Developer Mode.
Cuota web y API
Este proyecto no tiene como objetivo ahorrar cuota web de ChatGPT. Los límites de uso del modelo de ChatGPT Plus cambian dinámicamente; las llamadas de la App MCP siguen los límites de la sesión de ChatGPT correspondiente y no constituyen llamadas adicionales a la API de modelos; la cuenta de API de OpenAI y la suscripción de ChatGPT son sistemas de facturación independientes. Consulta ChatGPT Plus y Apps in ChatGPT.
Validación de desarrollo
El alcance de validación general se encuentra en docs/VALIDATION.md.
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[test]"
.\.venv\Scripts\python.exe -m pytestLas pruebas cubren la clasificación de sensibilidad de archivos, el descubrimiento de herramientas MCP, el estado sin caducidad de WSL, la autorización persistente DPAPI de Windows y su revocación explícita, el rechazo de autorizaciones corruptas, el snapshot de Windows, los artefactos ignorados por Git, diff/apply/conflictos, la lista blanca extendida de solo lectura, el AST de PowerShell, los tokens de un solo uso, el aislamiento de entorno, la desinfección de salida, el rechazo local, el tiempo de espera y la limpieza de subprocesos de múltiples niveles.
Available Tools
18 toolsfs_inspectBRead-onlyIdempotent
Classify a bounded file range locally and return reasons plus a short-lived inspection token, never content.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| distro | No | ||
| line_end | No | ||
| platform | Yes | ||
| line_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds critical context beyond them: it explicitly states 'never content' and mentions a 'short-lived inspection token'. This is meaningful behavioral disclosure and doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary action and key limitation. Every word earns its place, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too sparse for a tool with 5 parameters. It doesn't explain what 'classify' means, what the reasons represent, how the token is used, or the significance of 'locally'. The complexity warrants more detail than a single sentence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description must compensate, but it provides no direct explanation of any parameter. It hints at a 'bounded file range', which maps to line_start/line_end, but doesn't clarify platform/distro or other semantics, leaving agents to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'classify' and resource 'bounded file range', with a specific output of reasons and an inspection token. It distinguishes from fs_read by emphasizing 'never content', but does not explicitly differentiate from other siblings like fs_stat or fs_list, so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It implies usage for classification without returning content, but does not state scenarios, exclusions, or reference sibling tools. Agents have to infer when this is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_listARead-onlyIdempotent
List directory entry names and metadata. This never returns file snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| limit | No | ||
| distro | No | ||
| platform | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds useful behavioral context beyond annotations by specifying that the return includes entry names and metadata but never file snippets, helping agents avoid misusing the tool for content retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and scoped by a clarifying negative. Every word adds value, and there is no redundant restatement of schema or annotation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with robust annotations and an output schema, the description is mostly sufficient. It captures the core purpose and the key behavioral boundary (no file snippets). It does not explain distro/platform context or limit behavior, but parameter names and the structured schema partially cover that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no parameter-level guidance. It only implies that the operation targets a directory via 'List directory entry names', leaving path, limit, distro, and platform semantics entirely to their names and schema types. The description must compensate for the lack of schema descriptions but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List directory entry names and metadata') and clearly distinguishes this from sibling file tools by stating it never returns file snippets. This makes the tool's scope immediately clear and differentiates it from content-reading tools like fs_read or fs_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this is a directory-listing operation, and the explicit note 'never returns file snippets' gives an implicit exclusion when file content is needed. However, it does not explicitly name alternatives or provide a when-not-to-use directive, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_readARead-onlyIdempotent
Read a bounded normal text range. Sensitive ranges return review_required and no content.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| distro | No | ||
| line_end | No | ||
| platform | Yes | ||
| line_start | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds valuable context about sensitive ranges returning review_required and no content, which is beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word earns its place. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters with 0% schema description coverage, but an output schema exists. The description explains the sensitive range behavior but does not cover parameter details or return format beyond that. Given the complexity, it is adequate but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'bounded normal text range' implying line_start and line_end, but does not explain platform, path, or distro semantics. The description adds minimal value beyond the schema, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool reads a bounded normal text range, which is a specific verb+resource. It distinguishes from siblings like fs_stat and fs_list by focusing on reading file content, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading text files within a line range, but does not provide explicit when-to-use vs alternatives or exclusions. The mention of sensitive ranges returning review_required gives some context but not enough for clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_releaseB
Release an inspected range after model purpose verification. Exact mode also requires local confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | redacted | |
| purpose | Yes | ||
| inspection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints false, the description carries the full burden for behavioral disclosure. It reveals that Exact mode requires local confirmation, but it does not explain what releasing a range does, whether the effect is reversible, or what happens when purpose verification fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and condition, with no filler or redundant restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-changing tool with no useful annotations and zero parameter documentation, the description is under-specified: it lacks mode semantics, the relationship to fs_inspect, and the release workflow beyond the confirmation requirement. The presence of an output schema does not compensate for those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning for the parameters. It only hints at an 'Exact mode' concept for the mode parameter; 'purpose' and 'inspection_id' remain effectively unexplained, and 'redacted' is not described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Release') with a clear resource ('an inspected range') and a precondition ('after model purpose verification'), which differentiates it from related fs_* inspection/read tools. It does not name the sibling tool explicitly, but the action is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear timing/condition: use this after an inspection has been performed and the purpose has been verified. It also warns that Exact mode requires local confirmation, but it doesn't explicitly contrast with alternatives or explain when redacted mode is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_search_pathsBRead-onlyIdempotent
Search file and directory names under a root; never searches or returns secret-bearing content snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| limit | No | ||
| query | Yes | ||
| distro | No | ||
| platform | Yes | ||
| max_depth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by specifying that it searches only names, not content, and explicitly never returns secret-bearing snippets. This adds value beyond annotations. However, it does not describe other behaviors like recursion, performance characteristics, or case sensitivity, but given the annotations, this baseline is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that is front-loaded with the main action and includes a critical safety caveat. It wastes no words and has a clear structure. Perfect length for the information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters, an output schema, and no parameter descriptions. The description is minimal and does not explain return format (though output schema exists), paging/limits, depth control, or platform/distro specifics. The description is adequate for basic selection but insufficient for correct invocation without additional inference. Sibling tools like fs_list or shell_run span a complex ecosystem, and this description does not provide enough guidance on how to use parameters effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. The description mentions 'root', 'search file and directory names', and 'query', but does not explicitly tie these to specific parameters like 'path', 'query', 'platform', 'distro', 'max_depth', or 'limit'. With six parameters and zero schema descriptions, the tool clearly fails to help the agent understand parameter semantics. The description only implies a search term and root path, leaving the rest unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb+resource structure ('Search file and directory names under a root'), specifies the scope ('names under a root'), and includes a crucial exclusion ('never searches or returns secret-bearing content snippets'). It distinguishes itself from sibling read tools like fs_read and fs_list by focusing on path-name search. However, it does not explicitly name a sibling alternative, so it doesn't fully differentiate from similar search-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use cases for searching file/directory names without returning content, which is a clear context but not explicit guidance on when to use this tool versus alternatives like fs_list or fs_find. No when-not-to-use or alternative tool names are provided. The 'never searches content' clarification hints at a distinguishing use case but does not provide full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fs_statBRead-onlyIdempotent
Resolve and stat an absolute Windows or WSL path without returning file content.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| distro | No | ||
| platform | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint=true, destructiveHint=false, idempotentHint=true) but description adds limited detail about metadata only, no filesystem side-effect details, permission/error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, concise, no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, but description does not explain return values; sibling tools of file listing/existence; contextual invocation for stat metadata may be sufficient. Missing content read vs lstat details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema parameters have no descriptions; description adds no meaning. schema_description_coverage is 0%, so tool relies on parameter names 'platform', 'path', 'distro' only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific action 'resolve' with target 'absolute Windows or WSL path without returning content'. Tool name 'fs_stat' suggests stat-like behavior. Distinguishes from siblings by stating no file content returned, but no explicit sibling comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied context: use to check path type/existence/metadata without reading content. No explicit when-vs alternatives, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shell_runADestructive
Run a command in the always-enabled WSL bubblewrap snapshot. Host homes and Windows mounts are hidden; network is enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as destructive and non-read-only. The description adds useful behavioral context by disclosing filesystem isolation and network availability, which is directly relevant for working with commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey purpose and key environment traits without any fluff. The most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command-execution tool with an output schema and robust annotations, the description captures core environment details (isolation, network) that affect command behavior. It doesn't discuss destructive potential, but annotations already signal that. Overall, sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the 'command' or 'timeout_seconds' parameters at all. The description adds no parameter-level meaning, even though it has the burden to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a command in the WSL bubblewrap snapshot, using a specific verb and resource. It distinguishes itself from siblings like windows_shell_run by specifying the WSL environment and notes key behaviors (host homes/windows mounts hidden, network enabled).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives like windows_shell_run. Usage is only implied by the tool name and environment description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_healthARead-onlyIdempotent
Report gateway capabilities and whether enhanced post-secret protections are active.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate read-only, idempotent, non-destructive behavior, so the description's job is simpler. It adds specific context by mentioning 'enhanced post-secret protections', which indicates the health check includes security-related status. There is no contradiction, and it helps the agent understand the focus of the report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that front-loads the core purpose. It is concise with no redundant information, and every word adds value in communicating what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters) and the richness of annotations, the description is sufficient. It explains the purpose and key focus areas. The output schema exists, so return values are documented separately. No significant gaps are present for this straightforward health check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not applicable. The description doesn't need to explain parameters, and with no parameters, a baseline of 4 is appropriate since there is no confusion about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports gateway capabilities and whether enhanced post-secret protections are active. It uses specific verbs ('report') and resources ('gateway capabilities'), and while it is not explicitly contrasted with siblings, the subject matter is distinct from the listed sibling tools which deal with files, workspaces, and shells.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for checking system health or status, but it does not provide explicit guidance on when to use it versus other tools like workspace_status or windows_shell_status. There is no mention of exclusions or alternatives, though the purpose is clear enough for an agent to infer usage in a health-check context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
windows_shell_closeA
Immediately revoke Windows Shell authorization, invalidate reviews, and terminate the active Windows command tree.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=false, but the description says 'Immediately revoke... invalidate... terminate', which suggests destructive actions. However, the description does not contradict the annotations directly; it adds context about what happens (revoke, invalidate, terminate). Since annotations are present, the description adds some value by specifying the exact effects, but it could be more explicit about side effects like whether it is reversible or requires confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise, and front-loaded with the action. It covers the key effects without unnecessary words. It earns a high score for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description is fairly complete. However, it does not mention what the output or return value is, but the output schema likely covers that. It also does not mention any prerequisites or side effects beyond the listed actions, which could be important for a close operation. Overall, it is adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% (vacuously). The description does not need to explain parameters, and the baseline for zero parameters is 4. The description adds no parameter info, but that is acceptable given no parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: revoke Windows Shell authorization, invalidate reviews, and terminate the active command tree. It uses specific verbs and resources, and it distinguishes from siblings like windows_shell_status and windows_shell_open by indicating a closing/termination action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the user wants to close the Windows Shell session, but it does not explicitly state when to use it versus alternatives like windows_shell_close vs workspace_close. It lacks explicit exclusions or alternative tool references, but the context of 'close' is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
windows_shell_openA
Request one local approval for persistent Windows Shell authorization. It survives restarts until windows_shell_close; duration_seconds is legacy compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | Yes | ||
| duration_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, openWorldHint=false, etc., but no detailed behavioral traits. The description adds important behavior: the approval survives restarts until windows_shell_close, and notes that duration_seconds is legacy compatibility. This goes beyond the basic annotations and helps the agent understand persistence and parameter deprecation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core action, persistence, and a parameter caveat. It is front-loaded with the primary purpose, and every clause adds value. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this tool has a clear purpose, an output schema (which likely documents the result), and only two simple parameters, the description covers the main behavioral points. However, the purpose parameter is left unexplained, and there is no mention of what constitutes 'approval' or how it is handled. The description is adequate but not fully complete for a tool that triggers a user-approval flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides only minimal parameter context: it mentions that duration_seconds is legacy compatibility, but does not explain the purpose parameter or its expected content. The purpose parameter is required but unexplained, leaving the agent to guess what information to provide. The description adds some value for duration_seconds but fails for purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Request one local approval for persistent Windows Shell authorization') and specifies the scope (persistent across restarts until closed). It distinguishes this from related tools like windows_shell_prepare, windows_shell_run, and windows_shell_close by focusing on the authorization/approval step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when the tool is used (to request approval before shell operations, and that it persists until close), but does not provide explicit guidance on when NOT to use it or which alternative (e.g., windows_shell_prepare) might be preferred. The context of 'one local approval' implies a prerequisite step, but comparisons are not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
windows_shell_prepareARead-onlyIdempotent
Statically parse and bind one PowerShell or direct native command to cwd, target, purpose, risk, environment, and timeout; does not execute it.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | ||
| shell | Yes | ||
| target | Yes | ||
| command | No | ||
| purpose | Yes | ||
| arguments | No | ||
| executable | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and non-destructive behavior. The description reinforces this by stating it does not execute, and adds that parsing is static, suggesting no side effects. This is sufficient given the existing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core action (parse and bind) and its non-execution aspect. It is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While it explains the main purpose, it does not describe the output of the preparation, how the bound command is used later, or interactions with other tools. Given the tool's complexity and unknown output schema, the description is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions several parameters (cwd, target, purpose, timeout) but omits others (shell, command, arguments, executable). It also references 'risk' and 'environment' which are not in the schema, causing ambiguity. Parameter meanings are not fully explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it statically parses and binds a PowerShell or native command to specified parameters, and explicitly notes it does not execute. This distinguishes it from execution tools like shell_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for preparation without execution, but does not explicitly state when to choose this tool over alternatives. It lacks direct guidance on scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
windows_shell_runADestructive
Consume one prepared review token and run exactly the reviewed standard-user command; non-safe commands require local confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, which signals mutation and risk. The description adds that it runs standard-user commands and that non-safe commands require local confirmation, which is useful beyond annotations. It also implies a warning about consuming a token. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys purpose, constraints, and safety requirement. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and an output schema, the description provides the essential context: it's a gated execution tool. It doesn't explain what the output looks like, but the output schema likely covers that. The description could mention what happens on failure or how to obtain a review_id, but that might be covered by sibling tools like 'windows_shell_prepare'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage of 0%, the description must explain the parameter. It mentions 'review token' and 'review_id' but doesn't explicitly map 'review_id' to the token. The connection is implied but could be clearer. The description adds meaning (what a valid review_id is), but not fully explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: consume a review token and run a reviewed standard-user command. It distinguishes itself from 'shell_run' by specifying it uses a prepared review token and requires confirmation for non-safe commands, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when you have a prepared review token and want to execute a reviewed command. It contrasts with 'windows_shell_prepare' (which produces the token) and 'shell_run' (likely a less safe variant), but doesn't explicitly say when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
windows_shell_statusARead-onlyIdempotent
Report PowerShell 7, standard-user, Job Object, authorization, workspace, and policy status without executing a command.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the list of specific status categories and the fact it doesn't execute commands, which adds some behavioral context beyond annotations but doesn't elaborate on output format or side effects (none expected). With annotations covering the core behavioral traits, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that front-loads the verb 'Report' and then lists the specific items. Every word contributes value, with no fluff or repetition, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (0 params), has rich annotations covering safety, and an output schema exists. The description lists exactly what statuses are reported, covering all relevant aspects for such a status tool. No additional context is needed given the low complexity and structured annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so schema coverage is 100% by default. The description correctly omits parameter details. Baseline for 0-parameter tools is 4, and the description doesn't attempt to fabricate unnecessary parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports status (PowerShell 7, standard-user, Job Object, authorization, workspace, policy) and explicitly says 'without executing a command', distinguishing it from siblings like shell_run or windows_shell_run. This is a specific verb-resource pair that leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance is given, but the phrase 'without executing a command' informs agents that this is a safe, non-executing status check. Siblings like shell_run and windows_shell_run imply alternatives, but no direct comparison or exclusions are stated. 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.
workspace_apply_backADestructive
After diff review and local confirmation, conflict-check and apply only reviewed paths to the original repository.
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | Yes | ||
| review_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description aligns by stating 'apply ... to the original repository,' implying modifications. The description adds the 'conflict-check' step, which is useful behavioral context. However, it doesn't detail what happens on conflict or whether the operation is reversible. With destructiveHint already set, the description adds some value but not extensive detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the action. It provides the key context in a short string, which is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (though not provided in detail), and the annotations include destructiveHint. The description covers the main purpose and usage step. Given the simple parameters and clear purpose, it is mostly complete. However, it could benefit from explaining the output or side effects more, but with output schema present, that burden is reduced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the description must compensate. The description names 'review_id' and 'purpose' indirectly? Actually, it mentions 'reviewed paths' and 'diff review' but does not explicitly map to 'review_id' or 'purpose'. It doesn't explain how 'purpose' is used or what values it takes. Since there are only 2 params, a good description could easily explain them, but this one does not. Baseline is low because coverage is 0%, and the description adds minimal param semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('apply back') and the resource ('reviewed paths to the original repository'). It specifies the operation is about applying previously reviewed changes after diff review and local confirmation, which distinguishes it from generic apply tools. However, it doesn't explicitly differentiate from sibling tools like workspace_diff or workspace_status, though the focus on applying back is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: 'After diff review and local confirmation, conflict-check and apply only reviewed paths to the original repository.' This indicates when to use the tool (after diff review) and what it does (conflict-check and apply). It doesn't explicitly mention alternatives or when not to use it, but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_closeADestructive
Remove the active local snapshot. Unapplied changes require an explicit discard flag and local confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| discard_unapplied | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool as destructive (destructiveHint: true), but the description adds valuable behavioral context by noting that unapplied changes require an explicit discard flag and local confirmation. This goes beyond what the annotations provide and helps the agent understand the safety mechanism and prerequisite for destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action. The second sentence adds essential conditional behavior without verbosity. Every word contributes to clarity, and it is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional parameter, output schema exists), the description is complete. It covers the main action, the destructive nature, the parameter's purpose, and the confirmation requirement. There are no ambiguous aspects or missing behavioral details that the agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only one parameter (discard_unapplied) with no coverage from the schema description (0%). The description fully compensates by explaining that unapplied changes need this flag, directly linking the parameter to its purpose. This gives the agent a clear understanding of when to set it to true.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Remove the active local snapshot.' It uses a specific verb and resource, and it is easily distinguished from sibling tools like workspace_open, workspace_status, or workspace_diff, which have different purposes. The mention of unapplied changes and discard flags further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when the discard flag is required (for unapplied changes), which provides clear context on how to handle a common scenario. It does not explicitly name alternative tools or state when not to use it, but the purpose is evident from the tool name and description, and the guidance on unapplied changes covers the main usage nuance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_diffARead-onlyIdempotent
Return a redacted managed-file diff; Git-ignored runtime outputs are listed but never reviewed or applied.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive aspects. The description adds behavioral details such as redaction and that Git-ignored outputs are listed but not reviewed or applied, which goes beyond the annotations. It could be more specific about what 'redacted' entailed, but it's still informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys all essential information without redundancy. It is well-structured and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters), the existing output schema, and comprehensive annotations, the description covers all required aspects. It explains the core functionality and key behaviors, making it complete for an agent to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since the tool has zero parameters, the schema fully covers them (100% coverage). Per the guidelines, when coverage is high, the baseline score is 3 even without parameter-specific descriptions. No additional parameter info is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a diff of managed files, and specifies the redaction and handling of Git-ignored outputs. This distinguishes it from sibling tools like workspace_apply (which applies changes) and workspace_status (which shows status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing what the tool does and its limitations (lists but never applies Git-ignored outputs), but it does not explicitly contrast with alternatives or provide when-to-use scenarios. However, the conditions are reasonably clear from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_openA
Open one repository snapshot with executor='wsl' or executor='windows'; the original remains read-only until reviewed apply-back.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| distro | No | ||
| executor | No | wsl | |
| platform | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds crucial behavioral context beyond annotations: the original remains read-only until reviewed apply-back, indicating that opening a snapshot does not modify the original. This is not captured in annotations (readOnlyHint=false) and helps the agent understand side effects. It does not discuss other traits like auth or rate limits, but the added detail is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence that front-loads the verb and resource, then provides the executor qualification and the read-only note. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description need not explain return values. It conveys the core operation and an important workflow constraint. It could mention prerequisites or follow-up actions (e.g., apply-back or close), but it is sufficient for a well-scoped tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It clarifies the executor parameter values ('wsl' or 'windows') and implies platform, but does not explain 'path' or 'distro'. This partial coverage of the four parameters is helpful but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (open one repository snapshot) and specifies two permitted executor values ('wsl' or 'windows'). It differentiates from siblings like workspace_apply_back and workspace_close by describing the snapshot-opening role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning the snapshot execution context and the original's read-only status until apply-back, but it does not explicitly state when to use this tool vs. alternatives or when not to use it. The context is clear but not prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_statusARead-onlyIdempotent
Report managed changes and separately list Git-ignored runtime outputs, without file content.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and idempotent behavior. The description adds meaningful detail by specifying that it excludes file content and separately lists ignored outputs, providing extra behavioral transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It efficiently conveys the tool's purpose and key limitation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no parameters and an output schema exists, the description adequately explains the tool's function and output scope. It is complete for a status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description need not explain them. The baseline of 4 applies, and no additional parameter information is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reports managed changes and separately lists Git-ignored runtime outputs, providing a specific action and resource. This distinguishes it from sibling tools like workspace_diff or workspace_apply_back.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for status checking but does not explicitly state when to use it over alternatives or mention sibling tools. It provides some context (excluding file content) but lacks explicit when-to-use/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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
v0.2.1- First observed
fs_inspect - First observed
fs_list - First observed
fs_read - First observed
fs_release - First observed
fs_search_paths - First observed
fs_stat - First observed
shell_run - First observed
system_health - First observed
windows_shell_close - First observed
windows_shell_open - First observed
windows_shell_prepare - First observed
windows_shell_run - First observed
windows_shell_status - First observed
workspace_apply_back - First observed
workspace_close - First observed
workspace_diff - First observed
workspace_open - First observed
workspace_status
TDQS
Scored across 18 tools
Each tool has a clearly distinct purpose. The fs_* tools handle file inspection/reading, workspace_* manage snapshots and changes, and windows_shell_* handle Windows shell operations, with shell_run specifically for WSL. No overlapping or ambiguous tools.
Most tools follow a verb_noun pattern with consistent prefixes (fs_, workspace_, windows_shell_). The only outlier is 'system_health' which is noun-based, but it's a single tool and doesn't create confusion.
With 18 tools, the set is well-balanced for a coding agent. It covers file system, workspace management, shell execution, and system health without being overly bloated or insufficient.
The toolset covers read/inspect operations, workspace management, and shell execution, but lacks a direct file write/edit tool. This is a minor gap, as editing could be performed via shell commands, but it's not explicitly provided.
Maintenance
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables ChatGPT web to use local tools like file reading, command execution, and patch application through an MCP server over OpenAI Secure MCP Tunnel.62MIT
- FlicenseNot gradedqualityBmaintenanceEnables ChatGPT Web to securely access local files and run commands via MCP, with optional OpenCode agent mode for autonomous tasks.-
- AlicenseNot gradedqualityAmaintenanceEnables ChatGPT to access approved local Windows folders, run commands, control the desktop, and manage session history through a permission-bounded MCP server.5,052MIT
- AlicenseNot gradedqualityAmaintenanceEnables ChatGPT on Windows to securely access codebases, Git, terminals, language servers, debuggers, SQLite, local HTTP services, adaptive project memory, engineering skills, checkpoints, audit logs, and sandboxed command execution through MCP tools.MIT