AgentDock
AgentDock lets MCP clients (such as ChatGPT) inspect, edit, and verify a local developer workspace through a bounded, mode-controlled toolset.
Workspace management: open the configured/current workspace or a chosen root, list/close workspaces, and set the default workspace.
File exploration: generate file trees, search text/regex or by symbol/reference/impact intent, and read text files in bounded, paged chunks.
Repository analysis: build a repository map with languages, project types, entrypoints, symbols, relationships, related tests, and change-risk signals.
Image access: get image info, safe previews, rectangular crops, and tiled high-detail reads from workspace-local JPEG/PNG/WebP images.
File modification: write files, apply targeted edits, or apply unified patches, returning diffs while enforcing workspace/path guards.
Verification: run allowlisted verification commands (tests/build/lint/typecheck) and review Git changes with
show_changes.Skills: discover workspace/user/plugin skills and load their bounded SKILL.md contents.
Diagnostics/config: view server config, safety modes, limits, and blocked paths; run a controlled self-test; dispatch to registered tools via the
local-workspace-bridgesupertool.
Provides Git-aware review of workspace changes, including status, diff stats, and unified diffs via the show_changes tool.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AgentDockOpen this workspace and summarize the repo architecture without making changes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AgentDock
Languages: English · 简体中文 · 日本語
AgentDock is a local MCP gateway that gives ChatGPT bounded access to a developer workspace. The model remains the planner; AgentDock supplies repository evidence, local files and images, direct edits, command verification, and Git-aware review.
Status: early public release (
0.1.x). Review the security model before exposing a local workspace through a public tunnel.
Why AgentDock
ChatGPT can reason about code, but a web session normally cannot inspect or modify arbitrary files on your computer. AgentDock bridges that gap through MCP while keeping workspace boundaries explicit.
The primary loop is intentionally simple:
ChatGPT model
├─ inspect/search repository evidence
├─ read text or images
├─ edit/write/apply patch
├─ run bounded verification commands
└─ review the resulting Git changes
↓
local workspaceAgentDock does not add a second server-side planning or execution layer. Planning stays with the model that is already driving the MCP tools.
Related MCP server: chatgpt-codex-tools-mcp
Features
Workspace isolation — open one or more explicitly allowed roots; path traversal, blocked files, and symlink escapes are guarded.
Repository analysis — bounded inventory, language/project detection, symbols, relationships, impact hints, related tests, and change-risk signals.
Text tools — tree, search, paged reads, exact edits, writes, and unified patches.
Image tools — image metadata, safe preview, rectangular crop, and tiled high-detail reads for JPEG/PNG/WebP files.
Verification — safe/full/off command modes plus Git-aware
show_changesreview.HTTP + stdio transports — local MCP clients can use stdio; ChatGPT can connect through an HTTPS tunnel.
OAuth for public HTTP mode — OAuth discovery/PKCE is available when AgentDock has a stable public URL.
Multiple workspaces — open, list, close, and switch the default workspace inside an allowed root set.
Optional local Codex history reads — disabled by default and only enabled explicitly.
Linux service support — saved stable profiles can run as a per-workspace
systemd --userservice.
Requirements
For the recommended Windows + ChatGPT + ngrok setup, install:
Git — used to clone AgentDock and inspect workspace changes.
Node.js 20+ —
node -vshould report 20 or newer.Python 3 — used by the image/PDF helper workers.
PyMuPDF — required for PDF text/page rendering and image processing:
python -m pip install pymupdf.ngrok — recommended for a stable public HTTPS address that ChatGPT can reach.
A ChatGPT account/workspace that exposes Developer Mode / custom MCP app creation. Availability and UI labels vary by plan and rollout; see the current OpenAI help page linked below.
You do not need to buy a domain from Namecheap for the recommended path. A free ngrok account currently includes one account-assigned development domain. If you already own a custom domain, the Cloudflare named-tunnel route is an optional alternative.
Zero-to-working deployment: Windows + ngrok + OAuth
This section is intentionally verbose. It is written so that a person—or a coding agent such as Codex/Claude Code—can follow the deployment from a clean machine without guessing missing steps.
Step 0 — Know what will happen
The final connection looks like this:
ChatGPT
↓ HTTPS + OAuth
your ngrok development domain
↓
AgentDock HTTP/MCP server on your computer (default port 8787)
↓
one explicitly allowed local workspaceThere are three different credentials/identifiers that are easy to confuse:
Item | Where it comes from | Where it is used | Keep private? |
ngrok authtoken | ngrok Dashboard |
| Yes |
ngrok dev domain | ngrok Dashboard → Domains | AgentDock | No, it is a public hostname |
AgentDock OAuth approval key | AgentDock setup/start output | AgentDock consent page opened during ChatGPT OAuth | Yes |
The ngrok authtoken and AgentDock approval key are not the same thing.
Step 1 — Clone AgentDock
Open PowerShell, Windows Terminal, or another normal terminal:
git clone https://github.com/Nippori709/AgentDock.git
cd AgentDockIf the repository already exists locally, update it instead:
git pullStep 2 — Install Node/Python dependencies and build
From the AgentDock repository:
npm install
python -m pip install pymupdf
npm run buildThe build must finish without TypeScript errors. You can run the full local smoke suite as an optional sanity check:
npm run smokeFor easier daily use, you may also install this local checkout as a global CLI:
npm install -g .That exposes the command local-workspace-bridge. If you skip this optional step, use node scripts/local-workspace-bridge.mjs ... in the commands below.
Step 3 — Create a free ngrok account and get your two ngrok values
Create/sign in to an ngrok account.
Open the ngrok Dashboard.
Find your authtoken. This is a long secret string used only to authenticate the ngrok agent running on your computer.
Open Domains and copy the development domain assigned to your account.
Do not invent the domain or blindly copy the suffix from this README. ngrok has changed domain suffixes over time. Depending on the account, you may see something such as:
example-name.ngrok-free.appor an older assigned domain such as:
example-name.ngrok-free.devCopy exactly what the ngrok Dashboard shows for your account. Free plans generally provide an assigned development domain; choosing a custom name or bringing your own custom domain may require a paid ngrok plan.
Namecheap is not part of this recommended free path. Namecheap only becomes relevant if you separately buy/own a custom domain and choose an advanced custom-domain deployment.
Step 4 — Install and authenticate ngrok on Windows
ngrok currently recommends the Microsoft Store/WinGet path on Windows. One option is:
winget install ngrok -s msstoreYou can also install it from ngrok's official download page. After installation, verify:
ngrok versionThen add the ngrok authtoken from Step 3:
ngrok config add-authtoken "YOUR_NGROK_AUTHTOKEN"Do not paste this token into README files, source code, screenshots, issues, or ChatGPT prompts.
Step 5 — Run the AgentDock setup wizard
The easiest and least error-prone path is the interactive wizard:
node scripts/local-workspace-bridge.mjs setupIf you installed the global CLI in Step 2, this is equivalent to:
local-workspace-bridge setupThe wizard asks several questions. For the normal ChatGPT + ngrok setup, use the following answers.
5.1 Where is your project located?
Enter the folder that you actually want ChatGPT to inspect/edit, for example:
D:\Projects\MyAppIf you are intentionally exposing AgentDock itself, the AgentDock repository path is fine. Otherwise, do not accidentally expose the AgentDock source folder when you meant to expose another project.
5.2 Which local port should LocalWorkspaceBridge use?
Press Enter to keep the default unless port 8787 is already occupied.
Typical answer:
87875.3 Public access: quick, stable, ngrok, tailscale, or local?
For this guide, enter:
ngrokThe choices mean:
quick— temporary Cloudflare quick tunnel; easiest demo, but URL changes after restart.ngrok— recommended here; reuse your account's stable ngrok development domain.stable— Cloudflare named tunnel using a domain you control.tailscale— Tailscale Funnel.local— no public tunnel; ChatGPT on the web cannot normally reach127.0.0.1directly.
5.4 Ngrok domain or URL, without /mcp
Paste the exact development domain copied from the ngrok Dashboard, for example:
example-name.ngrok-free.appDo not append /mcp; AgentDock adds the MCP route itself.
5.5 LocalWorkspaceBridge auth token for this workspace
The wizard provides a generated random default. For a normal setup, press Enter to accept it.
This saved secret is used by AgentDock's public HTTP authentication. When OAuth is active, the launcher prints it as the local OAuth approval key that you enter on the AgentDock consent page.
Do not publish this value.
5.6 Save this setup for future runs from this workspace?
Answer:
yesAgentDock saves the per-workspace profile under:
~/.local-workspace-bridgeThat is why later launches can reuse the same workspace, tunnel type, hostname, port, and local auth secret without asking everything again.
5.7 Start LocalWorkspaceBridge now?
Answer:
yesStep 6 — Read the startup output carefully
A successful public OAuth launch prints a block containing values similar to:
LocalWorkspaceBridge ready
Workspace D:\Projects\MyApp
Server URL https://YOUR_ASSIGNED_NGROK_DOMAIN/mcp
Authentication: OAuth
OAuth approval key (enter once on the LocalWorkspaceBridge consent page):
<private-generated-key>Two values matter now:
Server URL — copy the full HTTPS URL ending in
/mcpinto ChatGPT.OAuth approval key — keep the terminal open or copy the key somewhere private temporarily. You will enter it on AgentDock's own consent page during OAuth.
Do not append ?token=... to the Server URL. Query-string credentials are disabled by default and are easier to leak through browser history/logs.
Step 7 — Create the custom MCP app in ChatGPT
ChatGPT's UI is changing over time and can differ by plan/workspace. Current OpenAI documentation generally describes the path as Settings → Apps → Create (or the equivalent workspace Apps page). Some accounts/builds may still expose a Developer Mode / Plugins → + flow.
Use whichever custom-MCP creation UI your account exposes, then enter:
Name: AgentDock
Description: Local coding workspace bridge for ChatGPT
Connection: Server URL
Server URL: https://YOUR_ASSIGNED_NGROK_DOMAIN/mcp
Authentication: OAuthIf the UI has Scan Tools, start the scan. Because the server uses OAuth, ChatGPT should open/redirect to AgentDock's authorization page.
Current OpenAI help for Developer Mode/custom MCP apps:
Plan availability changes over time. If your ChatGPT account does not offer custom MCP app creation or blocks write/modify tools, check the current OpenAI plan/workspace requirements before debugging AgentDock itself.
Step 8 — Approve the OAuth request
On the AgentDock consent page:
Confirm that you initiated this connection from ChatGPT.
Check the requested client/redirect information.
Paste the AgentDock OAuth approval key printed in your local terminal.
Approve the request.
Do not paste your ngrok authtoken here. The consent page wants the AgentDock approval key, not the ngrok credential.
After approval, ChatGPT completes OAuth/PKCE and receives an access token. The MCP Server URL itself stays credential-free.
Step 9 — Verify the connection in ChatGPT
Start with a read-only request:
Use AgentDock to open the current workspace, inspect the repository, and summarize the architecture. Do not edit files.Then verify a harmless tool such as tree, search, or read. Only after the read path works should you try write/edit/bash operations.
Step 10 — Daily startup after the first setup
If the profile was saved, you do not need to repeat the ngrok account setup or ChatGPT app creation each day.
From the AgentDock checkout:
node scripts/local-workspace-bridge.mjs start --root "D:\Projects\MyApp"Or, if you installed the global CLI:
cd D:\Projects\MyApp
local-workspace-bridge startThe saved ngrok hostname remains the same, so the ChatGPT Server URL can remain unchanged.
Non-interactive ngrok launch
Once ngrok is installed/authenticated and you know the assigned domain, you can skip the wizard and launch explicitly:
node scripts/local-workspace-bridge.mjs ngrok --root "D:\Projects\MyApp" --hostname YOUR_ASSIGNED_NGROK_DOMAINFor reproducible automation, prefer a saved workspace profile after the first interactive setup rather than putting private auth values directly on command lines.
What a coding agent can and cannot automate
If you ask Codex, Claude Code, or another local coding agent to deploy AgentDock from this README, it can usually automate:
cloning/pulling the repository;
checking Node.js, Python, Git, and ngrok availability;
running
npm install, PyMuPDF installation, build, and smoke tests;starting the AgentDock setup wizard or constructing the equivalent launch command;
diagnosing local port/process/build problems.
It normally cannot safely invent or bypass the account-interaction steps. Expect to perform or provide these yourself:
Sign in/create the ngrok account.
Copy the account's ngrok authtoken.
Copy the exact assigned ngrok development domain.
Enable the relevant Developer Mode/custom-app feature in ChatGPT if your plan/workspace requires it.
Create/authorize the ChatGPT MCP app.
Enter the locally printed AgentDock OAuth approval key on the consent page.
A good prompt for a coding agent is:
Clone https://github.com/Nippori709/AgentDock and deploy it by following README.md exactly.
Use the recommended Windows + ngrok + OAuth path.
Do not invent a domain, token, approval key, or ChatGPT account setting.
Perform all local terminal steps yourself. When an ngrok/ChatGPT account action is required,
tell me exactly what page/value you need, then continue from the value I provide.
Run the documented build and smoke checks before declaring the deployment complete.Tunnel choices
Recommended: ngrok assigned development domain
Use this when you want the simplest persistent URL. The free plan currently includes an account-assigned development domain. Your actual hostname may use a suffix different from examples in older AgentDock releases, so always copy it from the ngrok Dashboard.
Temporary demo: Cloudflare quick tunnel
For a quick test with no stable URL requirement:
node scripts/local-workspace-bridge.mjs startThe quick-tunnel URL can change after restart. If ChatGPT was configured with that URL, you must update the app/connector when the URL changes.
Advanced: your own domain + Cloudflare named tunnel
If you already own a domain (for example one purchased from Namecheap), you can use a Cloudflare named tunnel. The domain must be configured appropriately in Cloudflare DNS. This is an advanced alternative; buying a Namecheap domain is not required for AgentDock.
Local-only
For MCP clients running on the same computer:
node scripts/local-workspace-bridge.mjs start --tunnel noneThis does not provide a public HTTPS URL for ChatGPT web.
OAuth vs credentials in the URL
Prefer:
https://YOUR_ASSIGNED_NGROK_DOMAIN/mcp
+ OAuth / PKCEinstead of:
https://YOUR_ASSIGNED_NGROK_DOMAIN/mcp?token=...Query-string credentials are disabled by default, can leak through browser/history/log surfaces, and are unnecessary when the stable public URL uses AgentDock's OAuth flow.
Tool modes
LOCALWORKSPACEBRIDGE_TOOL_MODE controls how much of the MCP surface is advertised:
minimal— tight direct coding loop: workspace open, read/image, write/edit/patch, bash, change review.standard— default; adds repository analysis, tree/search, skills, and workspace management.full— adds advanced diagnostics, Git details, snapshot/inventory tools, and optional Codex-session tools.
Write behavior is separate:
LOCALWORKSPACEBRIDGE_WRITE_MODE=workspace # direct workspace edits
LOCALWORKSPACEBRIDGE_WRITE_MODE=off # read-onlyBash behavior is also separate:
LOCALWORKSPACEBRIDGE_BASH_MODE=safe
LOCALWORKSPACEBRIDGE_BASH_MODE=off
LOCALWORKSPACEBRIDGE_BASH_MODE=fullUse full only for repositories and commands you trust.
Repository analysis
inspect_workspace builds a bounded local map from manifests, source declarations, imports, tests, and Git state. Structured search can also use symbol/reference/impact intents.
The analysis layer provides evidence to the model; it does not decide or execute an implementation plan on the model's behalf.
Image access
Large images should not be pushed into model context at full resolution by default. AgentDock exposes a progressive path:
image_info → read_image preview → read_image_crop / read_image_tile when detail is neededImage paths are subject to the same workspace guards as text files.
PDF and DOCX access
AgentDock can read PDF text with read_pdf, render a PDF page for visual inspection with read_pdf_page, and extract paragraphs/table rows from Word .docx files with read_docx.
PDF support uses PyMuPDF on the machine running AgentDock:
python -m pip install pymupdfDOCX extraction reads OOXML directly and does not require Microsoft Word or an extra Python package.
Security model
Important defaults:
roots must be explicitly allowed;
.env, private keys, credential stores, dependency/build directories, and other blocked paths are denied;secret-looking content is redacted on reads and blocked on writes;
public/non-loopback HTTP use requires authentication unless explicitly overridden;
query-string credentials are disabled by default;
safe Bash blocks high-risk shell patterns and environment expansion;
logs are designed not to contain source contents, prompts, credentials, or full command output by default.
AgentDock is a developer bridge, not an OS sandbox. See SECURITY.md.
Verification
npm run build
npm run smoke
npm run benchmark:quickThe benchmark is local and reproducible. It reports tool-schema size, a shared direct-agent workflow, security boundary checks, and generated-repository inventory/search timing. Machine-specific benchmark output is printed rather than committed.
Linux
See LINUX_SERVER.md for a headless systemd --user setup after you have created a stable tunnel profile.
Configuration
See config.example.env. Prefer per-workspace saved profiles over committing machine-specific settings.
Attribution
AgentDock is a derivative work based on the open-source CodexPro project. The original CodexPro copyright notice and MIT license are preserved in LICENSE.
This derivative focuses on a single direct ChatGPT-to-workspace agent loop, repository/image evidence, authentication hardening, and reproducible local evaluation. It should not be represented as a from-scratch implementation of the upstream project.
License
MIT. See LICENSE.
Available Tools
22 toolsapply_patchApply PatchADestructive
Apply one unified diff patch inside the workspace. Paths are validated before applying. Prefer edit for tiny replacements and apply_patch for multi-file diffs.
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Unified diff patch to apply. File paths must stay inside the workspace and avoid blocked paths. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds useful safety-relevant context beyond the annotations: paths are validated before applying, and the patch is confined to the workspace. There is no contradiction between the description and 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 three short sentences, each earning its place: it states the operation, mentions a key safety behavior, and gives tool-selection guidance. There is no redundant filler or repetition of schema contents.
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 only two parameters, full schema coverage, and annotations that communicate destructive behavior. The description sufficiently covers scope, validation, and when to use it. Details like failure behavior or partial-apply semantics are not spelled out, but they are not necessary for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both patch and workspace_id. The description reinforces the path validation and workspace constraint, but it does not add meaningfully new parameter-level details such as patch formatting, defaults, or examples, so the baseline score applies.
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 opens with a specific verb and resource: 'Apply one unified diff patch inside the workspace.' It also distinguishes apply_patch from its nearest sibling edit by explicitly saying apply_patch is for multi-file diffs, so the agent can tell it apart without needing to inspect other 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 gives direct selection guidance: 'Prefer edit for tiny replacements and apply_patch for multi-file diffs.' This explicitly names the alternative and the condition for choosing each tool, leaving no ambiguity about when to use apply_patch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bashBashADestructive
Run one allowlisted verification command in the workspace, such as tests, build, lint, typecheck, or a project script. Do not use for git status/diff or file inspection; use show_changes, tree, search, and read instead. Do not chain commands with &&, pipes, redirects, or shell file readers.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory relative to workspace root. Default: . | |
| command | Yes | Command to run. | |
| session_id | No | Optional bash session id. If configured on the server, a provided value must match it. | |
| timeout_ms | No | Timeout in milliseconds. Default: 30000. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (destructiveHint=true, readOnlyHint=false, openWorldHint=true), so the bar is lower. The description adds genuinely useful behavioral constraints beyond the annotations: only allowlisted verification commands may run, only a single command (no chaining), and no shell redirection/pipe constructs. This meaningfully shapes agent behavior without contradicting the 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?
Three sentences with zero waste: purpose is front-loaded, exclusions and alternatives follow, then invocation constraints. Every sentence earns its place and the structure makes it skimmable for an agent.
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 safety-sensitive nature of a command runner, the combination of annotations (destructive/openWorld), full schema coverage, and the description covers what to run, when to run it, and how to constrain invocations. The main gap is the absence of an output schema and no description of the return format (stdout/stderr/exit code), but for a bash tool this is fairly standard and a minor omission.
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 100%, so all five parameters (command, cwd, session_id, timeout_ms, workspace_id) are already documented in the schema, warranting the baseline 3. The description adds marginal value by constraining what values the command parameter may take (single, allowlisted, un-chained), but provides no format or syntax detail beyond that.
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?
States a specific verb and resource ('Run one allowlisted verification command') with concrete examples (tests, build, lint, typecheck, project script). It also distinguishes itself from siblings by explicitly naming what it is not for (git status/diff, file inspection) and pointing to the correct alternatives, so an agent can route correctly without opening schemas.
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?
Provides explicit when-to-use guidance ('verification command') and exclusions ('Do not use for git status/diff or file inspection') with named sibling alternatives (show_changes, tree, search, read). Also gives hard constraints on invocation style (no &&, pipes, redirects, or shell file readers). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_workspaceClose WorkspaceARead-only
Forget one opened workspace from this server session. This does not delete files.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | Workspace id to close. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation Contradiction: readOnlyHint is true, yet the description says the tool will 'Forget one opened workspace from this server session,' which is a state-changing action in the server session. This directly contradicts the read-only annotation. The clarification that it does not delete files is helpful, but the contradiction makes the behavioral transparency unreliable.
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 with no wasted words. The core action is front-loaded, and the second sentence earns its place by disambiguating from file deletion.
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 single-parameter tool with no nested objects or output schema, the description covers the core behavior, the session scope, and the non-destructive nature. It is adequate for an agent to invoke correctly, though the annotation contradiction prevents full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the only parameter, workspace_id, is already described as 'Workspace id to close.' The description adds only the qualifier 'opened' to the workspace, which is mild extra context. With full schema coverage, the baseline of 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 uses the specific verb 'Forget' with a clear resource, 'one opened workspace,' and scopes the action to 'this server session.' It also explicitly distinguishes itself from file-deleting operations by stating 'This does not delete files,' so an agent can separate it from filesystem tools and from open_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this to forget one opened workspace from the current server session. It does not explicitly name alternatives or when-not-to-use conditions, but the intended use case is evident from the wording and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
editEdit FileADestructive
Apply a targeted exact text replacement inside a workspace text file. Returns a unified diff.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to workspace root. | |
| new_text | Yes | Replacement text. | |
| old_text | Yes | Exact text to replace. Must match once unless replace_all=true. | |
| replace_all | No | Replace all occurrences. Default: false. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| expected_replacements | No | Fail if actual replacement count differs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a destructive, non-read-only operation, and the description is consistent with that. It adds useful behavioral detail by emphasizing exact replacement and by disclosing the unified-diff return value.
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, front-loaded sentence that states the core action, the target scope, and the return value. Every element earns its place and there is no filler.
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 fully documented schema, the annotations, and the description's disclosure of the diff return value, the tool is sufficiently specified for correct invocation. The main missing piece is routing guidance relative to apply_patch, already penalized under usage guidelines.
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 100%, so the parameters are already well documented. The description reinforces the exact-replacement nature of old_text/new_text but does not add meaning beyond what the schema provides.
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 names a specific verb and resource ('Apply a targeted exact text replacement inside a workspace text file') and also states the return format. It is clear, though it does not explicitly contrast itself with sibling tools like apply_patch or write.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no direct guidance on when to use this tool versus apply_patch or write, nor does it mention exclusions. The word 'targeted' implies surgical edits, but the agent must infer routing to this tool from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_infoImage InfoARead-only
Inspect a workspace-local image without returning its pixels. Reports original dimensions/bytes and a recommended 1600 px-safe tile grid for high-detail follow-up reads.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Image path relative to workspace root. Supported: .jpg, .jpeg, .png, .webp. Maximum input: 25 MiB. | |
| tile_overlap | No | Fractional overlap used when recommending tiles. Default: 0.08 (8%). | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. |
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 meaningful behavioral context beyond that: the tool intentionally avoids returning pixel data and instead reports metadata plus a tile grid recommendation. This tells the agent what side effects it avoids and what kind of result to expect.
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, no filler. The first sentence defines the tool's core purpose and its key limitation, while the second sentence states the outputs. Every phrase contributes meaning, and the distinguishing 'without returning its pixels' 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?
There is no output schema, so the description correctly takes responsibility for explaining what the tool returns: dimensions, bytes, and a recommended tile grid. Combined with the 100%-covered input schema and read-only annotations, an agent has enough information to invoke the tool correctly and interpret its result.
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 100%, so the schema fully documents path, tile_overlap, and workspace_id. The description mentions the tile grid concept, which loosely ties to tile_overlap, but adds little parameter-level detail beyond the schema. A baseline of 3 is appropriate when the schema already carries the parameter documentation burden.
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 a specific action, 'Inspect a workspace-local image', and clearly distinguishes the tool from siblings by saying it does not return pixels. It then names the concrete outputs: original dimensions/bytes and a recommended tile grid. This makes the tool's purpose unambiguous even before looking at the schema.
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 phrase 'for high-detail follow-up reads' gives clear context for when to use this tool. The negative statement 'without returning its pixels' implicitly tells the agent not to use it when pixel data is required, though it does not explicitly name read_image or read_image_crop as the pixel-returning alternatives. This is strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_workspaceInspect WorkspaceBRead-only
Build a bounded repository map with languages, project types, entrypoints, areas, symbols, relationships, and coverage warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Analysis depth. inventory/inventory_only skips symbol extraction; symbols skips dependency graph construction. Default: full, or inventory when symbols and relationships are disabled. | |
| path | No | Optional workspace-relative area to emphasize. Default: entire workspace. | |
| cursor | No | Opaque continuation token from a previous limited response. | |
| max_files | No | Maximum returned file records. Default: 300. | |
| max_symbols | No | Maximum returned symbols. Analysis remains bounded by server config. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| include_symbols | No | Include symbols in structured output. Default: true. | |
| max_relationships | No | Maximum returned relationships. Analysis remains bounded by server config. | |
| include_relationships | No | Include relationships in structured output. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds 'bounded' and 'coverage warnings,' hinting at output limitations, but it does not discuss pagination, truncation behavior, or analysis cost. This is adequate given the annotations, but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It front-loads the core action and output scope, then enumerates the components compactly. Every word earns its place.
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 9 parameters and no output schema, the description gives only a high-level output list. It does not cover mode selection, pagination/default limits, or when to choose this over siblings. The input schema fills parameter details, but the overall invocation context remains thin.
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 100%, so parameter semantics are already fully documented. The description does not repeat parameter details, but it aligns output concepts like symbols and relationships with include_symbols and include_relationships, adding marginal context. 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 uses a specific verb ('Build') and resource ('bounded repository map') and enumerates the map's contents: languages, project types, entrypoints, areas, symbols, relationships, and coverage warnings. This clearly distinguishes it from file-level tools like read or tree, though it does not explicitly name any sibling alternative.
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?
There is no guidance on when to use inspect_workspace versus related tools like tree, search, or list_workspaces. No conditions, exclusions, or alternative-routing hints are provided; the only signal is the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesList WorkspacesARead-only
List currently opened LocalWorkspaceBridge workspaces for this server/config.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the scoping detail that only currently opened workspaces for the server/config are returned, which is useful, but it does not disclose return format or pagination 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?
A single sentence with no filler; the verb and scope are front-loaded. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool, the description is mostly complete: it states what is listed and the scope. However, with no output schema, it does not describe the return shape (e.g., workspace names vs. metadata), leaving a small 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?
There are zero parameters and schema coverage is 100%, so the baseline of 4 applies. The description adds no parameter information because there is nothing to document.
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 the specific verb 'List' and identifies the resource: currently opened LocalWorkspaceBridge workspaces, scoped to the server/config. This distinguishes it clearly from sibling tools like open_workspace, close_workspace, or inspect_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to prefer this tool over related siblings such as inspect_workspace or open_current_workspace. The phrase 'currently opened' implies a use case, but there is no explicit when/when-not or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_skillLoad SkillARead-only
Load the bounded SKILL.md body for a discovered workspace, user, or plugin skill by name. Does not accept arbitrary paths; use after open_current_workspace/open_workspace shows skill_inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact skill name from skill_inventory or local_workspace_bridge_inventory. | |
| path | No | Exact sanitized path from skill_inventory when name/source are still ambiguous. | |
| source | No | Optional source when multiple skills share a name. | |
| max_bytes | No | Maximum bytes to return from SKILL.md. Default: 40000. | |
| max_skills | No | Maximum skills to scan while resolving the requested skill. Default: 500. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| include_global_skills | No | Also scan installed user/plugin skills. Default: auto when source/path is not workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by noting the load is bounded and path-restricted, but it does not explain response format, truncation behavior, or error handling.
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, no fluff, with the core operation and the most important usage constraint front-loaded. Every clause earns its place.
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 tool with 7 well-documented parameters, the description gives the essential sequence (inventory first, then load by name) and the critical restriction on paths. It does not detail output shape, but 'SKILL.md body' communicates the main return value, and annotations cover safety.
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 100%, so the schema already documents all 7 parameters. The description adds the key constraint that names come from skill_inventory and that arbitrary paths are rejected, which complements the path/name parameters but does not need to repeat the full schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Load') and a specific resource ('bounded SKILL.md body') for discovered workspace, user, or plugin skills. It also distinguishes itself from arbitrary file reading by explicitly rejecting arbitrary paths.
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 clearly states the precondition: use after open_current_workspace/open_workspace shows skill_inventory. It also gives a negative guideline ('Does not accept arbitrary paths'), helping the agent know when this tool is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
local-workspace-bridgeLocalWorkspaceBridge SupertoolADestructive
Stable wrapper for advanced ChatGPT connector setups. Pass action plus args to call an already-registered LocalWorkspaceBridge tool without changing the visible schema; it cannot call tools disabled by the current mode.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments for the selected action. Same shape as the wrapped LocalWorkspaceBridge tool. | |
| action | No | Action or registered tool name. Use list_actions to see what this server mode allows. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds value by stating it cannot call tools disabled by the current mode, which is behavioral context beyond the annotations. This justifies a score above the baseline.
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 with no filler. The purpose is front-loaded ('Stable wrapper'), and the constraint is placed at the end. It is concise and well-structured, though the phrase 'advanced ChatGPT connector setups' is slightly vague but not verbose enough to warrant a 3.
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 wrapper tool with two parameters and no output schema, the description covers the core mechanics, the mode constraint, and directs to list_actions. It does not explain potential side effects beyond annotations, but annotations already cover destructive behavior. Overall it is complete enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add anything beyond what the schema already provides for the two parameters; it simply echoes 'pass action plus args' without enriching the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a stable wrapper that passes action plus args to an already-registered LocalWorkspaceBridge tool, which is a specific verb-resource combination. It distinguishes itself as a generic dispatcher, though it does not explicitly compare to sibling tools, so it gets a 4 rather than 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?
It implies use for advanced ChatGPT connector setups and for invoking an already-registered tool without schema changes. It provides a constraint (cannot call disabled tools) but does not explicitly state when to use this vs alternatives or when not to use it, so it is adequate but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
local_workspace_bridge_self_testLocalWorkspaceBridge Self TestARead-only
Run a controlled local diagnostic for workspace access, tool registration, skills, git, and the configured bash policy without modifying workspace files.
| Name | Required | Description | Default |
|---|---|---|---|
| bash_probe | No | Check bash policy with safe local commands only. Default: true. | |
| max_skills | No | Maximum skills to inspect during the inventory check. Default: 40. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| include_global_skills | No | Include user/plugin skill discovery in the inventory check. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful context by stating the test will not modify workspace files and is 'controlled' and 'local.' It also clarifies the scope of checks, which goes beyond the annotations, though it does not describe what output the diagnostic produces.
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 front-loads the core action and then lists the diagnostic scope without wasted words. Every phrase contributes to understanding the tool's behavior and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for selecting and invoking the tool, and the schema covers all parameters. However, there is no output schema and the description does not explain what the diagnostic returns or how an agent should interpret the result, which is a notable gap for a self-test tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already well documented in the schema. The main description does not add parameter-level detail, but that is acceptable because the schema carries the full burden. Baseline 3 is appropriate here.
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 names a specific verb ('Run'), a clear resource ('a controlled local diagnostic'), and enumerates the exact areas covered: workspace access, tool registration, skills, git, and bash policy. It also adds the key constraint 'without modifying workspace files,' which distinguishes this self-test from file-inspection siblings like inspect_workspace.
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 phrase 'controlled local diagnostic' implies this tool is for verifying bridge health, but the description does not explicitly state when to prefer it over alternatives such as inspect_workspace or tree. Usage context is implied rather than spelled out, and no exclusions or alternative recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_current_workspaceOpen Current WorkspaceARead-only
Use this once at the start to open the configured default workspace without accepting a path. Do not call open_workspace after this unless switching roots.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | Tree depth when include_tree=true. Default: 2. | |
| include_tree | No | Include a compact file tree. Default: false for speed. | |
| include_skills | No | Discover skills by name/description. Default: false for speed. | |
| include_global_skills | No | Also scan installed user/plugin skills when include_skills=true. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description does not contradict them. It adds useful beyond-schema context: the tool is intended as the initial workspace-opening call, it accepts no path, and it establishes a root context such that following it with open_workspace means switching roots.
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 compact sentences with zero padding. The main instruction is front-loaded and the alternative-tool warning appears in the second sentence, giving a clear and efficient structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple optional-parameter tool, the description covers the core invocation rule, the no-path constraint, and the relationship to open_workspace. The schema covers parameter details, and the annotations cover safety, so nothing essential for selecting and calling this tool is missing.
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?
All four parameters are fully documented in the input schema (types, ranges, defaults, and behavior such as 'Default: false for speed'), so the description does not need to add much. The description adds no parameter-specific guidance, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('open'), a specific resource ('the configured default workspace'), and an explicit constraint ('without accepting a path'). It also contrasts directly with open_workspace, making it easy for an agent to distinguish this from the sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage trigger ('Use this once at the start') and an explicit exclusion ('Do not call open_workspace after this unless switching roots'). This tells the agent both when to invoke this tool and when not to invoke the obvious alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_workspaceOpen WorkspaceARead-only
Open a local project directory as a LocalWorkspaceBridge workspace. Returns a workspace_id plus git status, AGENTS.md, and a compact file tree.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Alias for root. Useful for clients that naturally send path instead of root. | |
| root | No | Project directory to open. Omit to use LOCALWORKSPACEBRIDGE_ROOT/current working directory. Supports ~/ paths. | |
| max_depth | No | Tree depth. Default: 3. | |
| max_files | No | Alias for maximum tree entries. Default: 500. | |
| include_tree | No | Include a compact file tree. Default: true. | |
| include_skills | No | Discover skills by name/description. Default: false for speed. | |
| include_global_skills | No | Also scan installed user/plugin skills when include_skills=true. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the safety profile (read-only, non-destructive). The description goes beyond them by detailing the workspace_id plus git status, AGENTS.md, and compact file tree that will be returned, giving the agent a concrete expectation of the response. It does not discuss potential scan costs or non-idempotent behavior, but this is minor given the parameter schema and hints.
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 carry the purpose and the output contract with no filler. The return value list is front-loaded after the verb phrase, making the core behavior immediately readable.
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?
Although there is no output schema, the description names the important returned fields. All optional parameters are documented in the schema, and the annotations cover safety concerns, so an agent has enough context to invoke the tool and interpret its result.
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?
All seven parameters are fully described in the schema (100% coverage), so the baseline applies. The description's mention of 'local project directory' simply echoes the path/root parameter without adding syntax or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Open a local project directory as a LocalWorkspaceBridge workspace') and names the key results (workspace_id plus git status, AGENTS.md, and file tree). This clearly differentiates it from siblings like open_current_workspace, which works on the current directory rather than a user-supplied root.
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?
Usage is implied: call this when you need to open a local project directory into a workspace. However, the description does not explicitly contrast it with open_current_workspace or say when to prefer one over the other, leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readRead FileARead-only
Read a specific text file with line numbers. Avoid rereading files after write/edit/apply_patch unless exact final content is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to workspace root. | |
| end_line | No | Last line to read. Default: end of file. | |
| max_bytes | No | Maximum bytes returned in this page. Capped by the server and MCP response limits. | |
| start_line | No | First line to read. Default: 1. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that output includes line numbers and counsels against redundant rereads, which is useful but modest behavioral context; no pagination or encoding behavior is disclosed.
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 with no filler. The purpose and the key usage caveat are front-loaded in a compact, easily parsed form.
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?
All five parameters are documented in the schema, annotations cover safety, and the description adds the one non-obvious operational tip about avoiding redundant rereads. There is no output schema, but mentioning line numbers gives a rough return-format expectation; minor omissions like pagination behavior are inferable from max_bytes and start_line parameters.
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 covers 100% of parameters with descriptions, so baseline is 3. The description adds no parameter-specific detail beyond 'text file' and line numbers; start_line, end_line, max_bytes, and workspace_id semantics live in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Read a specific text file with line numbers,' identifying the verb, resource, and output format. It clearly distinguishes itself from sibling tools like write/edit and read_image by restricting scope to text files.
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?
Gives explicit when-not guidance: avoid rereading after write/edit/apply_patch unless exact final content is needed. It does not explicitly name alternative listing/search tools, but the text-file scope and read-only safety make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_imageRead ImageARead-only
Read a workspace-local JPEG, PNG, or WebP as native MCP image content. Safe default previews use a 1600 px longest side; values above 1600 up to 4096 are experimental in ChatGPT. For pixel-level detail, prefer image_info plus read_image_crop/read_image_tile.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Image path relative to workspace root. Supported: .jpg, .jpeg, .png, .webp. Maximum input: 25 MiB. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| max_dimension | No | Preview longest-side dimension. Default: 1600. Values above 1600 are experimental and may be unstable in ChatGPT's MCP image path. | |
| return_original | No | Return original bytes when they fit within the 3 MiB output safety limit. Default: false. This bypasses safe pixel-dimension previewing and is experimental for large-dimension images. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is read-only and non-destructive, so the bar is lower. The description adds valuable behavioral context beyond the annotations: default preview sizing of 1600 px, the experimental nature of values above 1600 in ChatGPT, and the guarantee of returning native MCP image content. It does not fully describe failure behavior or output-size edge cases, but the schema covers those partially.
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 uses only three sentences, each earning its place: purpose, sizing behavior, and alternative routing. It front-loads the core purpose and avoids redundant restatement of the tool name or schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only preview tool with fully documented parameters and annotations, the description is complete. It clarifies the output type (native MCP image content), supported formats, preview sizing limits, and the available sibling tools for pixel-level work. No output schema exists, but the description sufficiently covers what the agent needs to know.
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 100%, so the schema already documents path, workspace_id, max_dimension, and return_original with detailed constraints. The description adds no new parameter-specific meaning beyond what the schema provides, so the baseline of 3 applies.
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 a specific verb-resource pair: 'Read a workspace-local JPEG, PNG, or WebP as native MCP image content.' It clearly differentiates from the closely related siblings image_info, read_image_crop, and read_image_tile by naming them as alternatives for pixel-level detail rather than whole-image previews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when not to use this tool: 'For pixel-level detail, prefer image_info plus read_image_crop/read_image_tile.' It also implies the correct use case through 'Safe default previews' and the mention of returning native MCP image content. This is explicit enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_image_cropRead Image CropARead-only
Read a rectangular crop directly from the original image, rendered at a safe maximum longest side of 1600 px. Coordinates are original-image pixels from the top-left corner.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Crop left coordinate in original-image pixels. | |
| y | Yes | Crop top coordinate in original-image pixels. | |
| path | Yes | Image path relative to workspace root. | |
| width | Yes | Crop width in original-image pixels. | |
| height | Yes | Crop height in original-image pixels. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| max_dimension | No | Crop output longest-side dimension. Default/max: 1600 pixels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds genuinely useful behavior beyond that: the crop is 'rendered at a safe maximum longest side of 1600 px' (so output may be downscaled) and coordinates are 'original-image pixels from the top-left corner.' No contradiction with 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?
Two sentences with zero waste: purpose first, then the two critical constraints (rendering cap and coordinate frame). Every sentence earns its place and nothing is redundant with the schema.
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 7-parameter tool with no output schema, the description covers purpose, coordinate system, and rendering cap, but omits out-of-bounds behavior and any guidance on how this tool relates to read_image and read_image_tile. An agent can invoke it correctly, but the sibling selection context is left unresolved.
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 100%, so the baseline of 3 applies. The description adds the 'from the top-left corner' origin clarification and the 1600 px cap context for max_dimension, but most parameter semantics (x/y/width/height in original-image pixels) are already fully documented in the schema, making the description's additive value modest.
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 names a specific operation ('Read a rectangular crop directly from the original image') with a clear resource and scope. 'Rectangular crop' plus 'directly from the original image' separates it from sibling tools like read_image and read_image_tile without needing to open their schemas.
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 when to use it — when a rectangular region of the original image is needed — but it never names read_image or read_image_tile as alternatives, and gives no explicit when-not-to-use guidance. Usage context is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_image_tileRead Image TileARead-only
Read one tile from an automatically recommended high-detail grid. Tiles come directly from original pixels, default to 8% overlap, and are kept within the safe 1600 px longest-side path.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | 1-based tile row from image_info's recommended grid. | |
| path | Yes | Image path relative to workspace root. | |
| column | Yes | 1-based tile column from image_info's recommended grid. | |
| overlap | No | Fractional tile overlap. Default: 0.08 (8%). Use the same value as image_info if overridden. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| max_dimension | No | Tile output longest-side dimension. Default/max: 1600 pixels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds useful behavioral details beyond that: tiles come from original pixels, default to 8% overlap, and are capped at a 1600 px longest side. This helps set expectations about fidelity and output limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence that front-loads the core purpose and packs only high-value behavioral details. No filler or repetition of schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters and no output schema, but the schema itself is detailed with 100% coverage. The description covers the essential behavior, overlap default, and size limit. It does not explicitly connect to image_info or rule out alternatives, but the schema and sibling names fill most of 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 coverage is 100%, so the baseline is 3. The description adds value by explaining that tiles are original-pixel-based and constrained to a safe 1600 px path, which clarifies the intent behind overlap and max_dimension parameters even before reading their descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read one tile from an automatically recommended high-detail grid.' This clearly differentiates it from whole-image reading and arbitrary cropping tools among the siblings.
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 for high-detail grid tiles, and schema parameters reference image_info's recommended grid, but the description itself does not explicitly say when to use this tool versus read_image_crop or read_image, nor does it state prerequisites like calling image_info first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch FilesARead-only
Use this for targeted verification or code lookup. Prefer one specific final search instead of repeated broad verification searches.
| Name | Required | Description | Default |
|---|---|---|---|
| glob | No | Optional glob, for example src/**/*.ts. | |
| path | No | Directory or file relative to workspace root. Default: . | |
| query | Yes | Text or regex to search for. | |
| regex | No | Treat query as a regular expression. Requires ripgrep. Default: false. | |
| intent | No | Optional structured search intent. Omit for legacy lexical behavior. | |
| symbol | No | Optional symbol query. Uses repository analysis and overrides query text. | |
| max_results | No | Maximum results. Default from config. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| include_tests | No | Include related tests in structured results. Default: false. | |
| include_hidden | No | Include hidden files that are not blocked. Default: false. |
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 strategic guidance but not additional behavioral details such as output truncation, result ordering, or performance characteristics. With annotations present, this is an acceptable but not rich contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no redundant phrasing. The primary use case is front-loaded, and the practical guidance about avoiding repeated broad searches earns its place.
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 10 parameters including an enum-based intent field and no output schema, yet the description only provides use-case guidance. The schema covers parameters and annotations cover read-only safety, but the description does not address result behavior, workspace scope, or structured-search modes, leaving moderate 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 100%, so all 10 parameters are already documented in the input schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 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 identifies the tool's purpose as targeted verification and code lookup, which is specific enough to orient an agent. It stops short of explicitly stating that it searches file contents across the workspace, and it does not differentiate itself from siblings like read or tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: use for targeted verification or code lookup. It also provides a clear strategy: prefer one specific final search rather than repeated broad verification searches. It does not name alternative tools or exclusion conditions, so it is not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_configServer ConfigARead-only
Show LocalWorkspaceBridge server configuration, safety modes, limits, and blocked paths. Does not reveal auth tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, and the description reinforces this by saying it 'Shows' configuration. It adds meaningful behavioral disclosure with 'Does not reveal auth tokens,' telling agents what sensitive data will not be exposed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The core purpose is front-loaded in the first sentence, and the important privacy constraint is succinctly added in the second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only configuration inspection tool, the description is complete: it states what is shown, implies read-only behavior, and explicitly discloses the auth-token exclusion. Nothing needed for correct invocation is missing.
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 the schema coverage is 100%, so there are no parameter semantics for the description to clarify. The baseline of 4 applies because no parameter documentation 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 uses a specific verb 'Show' with a clear resource: 'LocalWorkspaceBridge server configuration.' It further specifies the exact contents (safety modes, limits, blocked paths), making it easy to distinguish from file/workspace manipulation siblings like write, edit, and inspect_workspace.
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 clearly indicates this tool is for reading server configuration and safety-related settings, with zero parameters and no prerequisites. It does not explicitly name alternatives or exclusions, but the sibling tools are mostly file/workspace operations, so the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_default_workspaceSet Default WorkspaceBRead-only
Set an already-opened workspace as the default and active workspace for omitted workspace_id calls.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | Workspace id from open_workspace/list_workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says the tool 'Set[s]' a workspace as default/active, which implies a state change. This directly contradicts the annotation readOnlyHint=true, which indicates the tool does not modify state. Therefore the description contradicts the 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, front-loaded sentence with no filler. Every part contributes meaning: the target workspace, the precondition that it is already opened, and the effect on omitted workspace_id calls.
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 one-parameter tool, the core effect is stated, but the contradiction with readOnlyHint leaves the behavioral profile unreliable. The description also does not clarify persistence, session scope, or whether this changes any stored server state.
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 100% and the schema already explains that workspace_id comes from open_workspace/list_workspaces. The tool description adds no additional parameter semantics beyond the schema, so the 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 a specific verb ('Set'), a specific resource ('an already-opened workspace'), and the exact purpose ('default and active workspace for omitted workspace_id calls'). The phrase 'already-opened' also distinguishes it from open_workspace, which actually opens a workspace.
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 when to use it: after a workspace is already opened and when you want it to be the default for calls that omit workspace_id. However, it does not explicitly mention alternatives like list_workspaces/open_workspace or state when not 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.
show_changesShow ChangesARead-only
Summarize the current workspace changes in one review-oriented result with git status, diff stats, and optional diff. Use this instead of bash git status, bash git diff, git_status, or git_diff when reviewing work.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional file path relative to workspace root. | |
| since | No | Use last_shown to suppress unchanged repeated reviews. Default: last_shown. | |
| staged | No | Show staged diff. Default: false. | |
| include_diff | No | Include the unified diff. Default: true. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| mark_reviewed | No | Update the last-shown review checkpoint after this call. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior. The description adds that the tool aggregates multiple git views into a single review-oriented result and clarifies the optional diff. It doesn't explicitly surface the mark_reviewed checkpoint side effect, but that is already documented in the parameter schema, so the description is not misleading.
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 with no filler: the core action and output are front-loaded, and the routing guidance is in the second sentence. Every phrase earns its place.
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 tool with 6 self-describing parameters and no output schema, the description provides a clear output sketch and usage context. It could be more explicit about the review-checkpoint behavior, but the parameter docs and annotations cover the remainder.
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?
All 6 parameters are covered at 100% in the schema, so the description needn't repeat details. It adds a high-level mapping to output components like diff stats and optional diff, but no parameter-specific meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb (summarize), names the exact resource (current workspace changes), and enumerates output components (git status, diff stats, optional diff). It also explicitly contrasts with sibling git/bash tools, so an agent can distinguish show_changes from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the use case ('when reviewing work') and explicitly says 'Use this instead of bash git status, bash git diff, git_status, or git_diff'. This gives both a positive trigger and named alternatives to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treeFile TreeBRead-only
List files and directories inside the workspace, excluding blocked paths.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Directory relative to workspace root. Default: . | |
| max_depth | No | Maximum depth. Default: 4. | |
| max_entries | No | Maximum entries. Default: 800. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. | |
| include_hidden | No | Include dotfiles/dotfolders that are not blocked. Default: false. |
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 one useful behavioral limitation, 'excluding blocked paths', but does not disclose output format or truncation behavior; still a reasonable mid-level contribution.
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 focused sentence that states the action, scope, and a key limitation with no filler. It is concise and front-loaded, every word contributing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool, the description combined with the rich schema and safety annotations is largely complete. It does not describe the exact return format, which is a minor gap, but an agent likely has enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters are fully described in the input schema, so the schema carries the semantic weight. The description itself adds no parameter-level detail beyond what is already structured, matching the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List'), a resource ('files and directories'), and a scope ('inside the workspace'), so an agent can tell it apart from content-reading or searching tools. It does not explicitly name a sibling alternative, but the behavior is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to choose tree over related tools like search, read, or inspect_workspace. The intended use is implied by the action 'List files and directories', but no conditions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
writeWrite FileADestructive
Create or overwrite a meaningful text file inside the workspace. Returns a unified diff; do not create empty placeholder files.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to workspace root. | |
| content | Yes | Complete file contents to write. | |
| overwrite | No | Allow overwriting existing files. Default: true. | |
| create_dirs | No | Create parent directories if missing. Default: true. | |
| workspace_id | No | Workspace id from open_workspace. Omit to use default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description reinforces this with 'overwrite.' Beyond annotations, it discloses that the tool returns a unified diff and warns against empty placeholder files, adding useful behavioral context. It does not contradict the 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 two concise sentences with no filler. The primary action is front-loaded first, followed by the return behavior and a key usage rule. Every phrase carries necessary 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 5-parameter tool with no output schema, the description covers the essential context: workspace scope, create/overwrite behavior, return format, and a critical guideline about placeholders. It relies appropriately on the schema for parameter details and annotations for destructive behavior. It is nearly complete, though it does not discuss failure modes or diff formatting in more depth.
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 100%, so the baseline is 3; the schema itself documents path, content, overwrite, create_dirs, and workspace_id. The description adds little parameter-level detail beyond 'meaningful text file' and 'inside the workspace.' This meets the baseline but does not exceed it.
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 creates or overwrites a text file inside the workspace, which differentiates it from sibling tools like edit or apply_patch that modify existing content. The scope is specific: a meaningful text file within the workspace. It leaves no ambiguity about the core operation.
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 usage context: use this tool to create or overwrite files in the workspace. It also gives an explicit constraint, 'do not create empty placeholder files,' which guides agent behavior. However, it does not directly name alternatives or state when to prefer edit or apply_patch over write, so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
22 tool updates
v0.1.0- First observed
apply_patch - First observed
bash - First observed
close_workspace - First observed
edit - First observed
image_info - First observed
inspect_workspace - First observed
list_workspaces - First observed
load_skill - First observed
local_workspace_bridge_self_test - First observed
local-workspace-bridge - First observed
open_current_workspace - First observed
open_workspace - First observed
read - First observed
read_image - First observed
read_image_crop - First observed
read_image_tile - First observed
search - First observed
server_config - First observed
set_default_workspace - First observed
show_changes - First observed
tree - First observed
write
TDQS
Most tools target distinct operations—workspace management, file read/write/edit, image inspection, and change review—with descriptions that explicitly separate them. The main sources of ambiguity are the generic local-workspace-bridge wrapper, which can call other tools indirectly, and the write/edit/apply_patch cluster, though their intended use cases are clarified.
The vast majority of tools follow a clear verb_noun snake_case pattern like open_workspace, read_image, and show_changes. The hyphenated local-workspace-bridge and the single-word bash/tree are noticeable outliers, but they are isolated deviations rather than a systematic mixing of conventions.
22 tools is on the heavy side and exceeds the typical 3–15 tool sweet spot. The count is somewhat justified by the broad scope—workspace lifecycles, file editing, image handling, diagnostics, and verification—but it still feels like more surface area than necessary.
The toolset covers workspace open/list/close/default management, file tree/search/read/write/edit/apply_patch, image inspection and cropping, bash verification, change summarization, skills, and self-test/config. Obvious gaps like an explicit delete/rename tool or git commit are absent, but apply_patch can handle file deletion and the remaining gaps are workable.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Share one project context across ChatGPT, Claude, Telegram and any MCP client.
The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Connect AI agents to Filepad workspaces through OAuth MCP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA desktop launcher and local MCP workspace server that enables ChatGPT and other MCP clients to securely read, edit, search, run commands, and show changes in selected local project folders.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables ChatGPT to inspect and edit local projects through a secure MCP interface, offering workspace management, file operations, git integration, and safe command execution.4MIT
- FlicenseNot gradedqualityAmaintenanceTurns local project directories into persistent MCP workspaces, allowing AI agents to read files, modify code, run commands, manage Git, and save session progress across conversations.-
- AlicenseNot gradedqualityAmaintenanceEnables ChatGPT Web Developer Mode to interact with local repositories through MCP, providing tools for file editing, shell execution, Git worktrees, semantic navigation, and checkpoints.1612MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nippori709/AgentDock'
If you have feedback or need assistance with the MCP directory API, please join our Discord server