ChatGPT2LocalBridge
ChatGPT2LocalBridge lets ChatGPT/Codex agents securely access and operate on local project files and environments via policy-gated MCP tools. Key capabilities include:
File & Directory Operations
Read, write, patch, delete, copy, move files and directories
List directory contents, get file metadata, create directories
Download files from approved HTTPS URLs to local workspaces
Code Reading & Search
Read files or specific line ranges
Ripgrep-style code search with glob filtering
Project Intelligence
Get project snapshots (git state, language, file tree)
Higher-level project index (scripts, key files, detected tests)
List
package.jsonscripts
Git Operations
View status, generate diffs, create checkpoints, and revert the working tree to a checkpoint
Testing & Shell Execution
Detect and run project-specific tests
Execute arbitrary shell commands (restricted to debug/full profiles)
Workspace & Task Management
Register, list, and resolve local workspaces
Create and track multi-step tasks with notes, status checks, and completion
Process Management
Start, list, and stop long-running processes; check local TCP port status
Bridge Monitoring & Administration
Check bridge/tunnel service status and health
Read bridge and ngrok logs, inspect tool-call audit events
Restart bridge or tunnel services
All operations are governed by configurable security policies, authentication modes (e.g. OAuth), and tool profiles that limit functionality based on trust level.
Provides tools for interacting with Git repositories, including status, diff, checkpoint, and revert.
Allows ChatGPT to access local files and execute commands on the local machine after OAuth authorization.
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., "@ChatGPT2LocalBridgelist the files in my project root"
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.
Linux One-Click Prompt
Repository: https://github.com/Harzva/chatgpt2localbridge
Copy this prompt to a Linux shell agent:
Install ChatGPT2LocalBridge from https://github.com/Harzva/chatgpt2localbridge on this Linux host.
Use one command, keep secrets local, and do not print .env.local, OAuth tokens,
ngrok authtokens, cookies, or unlock codes into chat.
Run:
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | bash
After install, report the local health result, the ChatGPT Connector fields, and
the tunnel choice. If ngrok is selected, ask me for NGROK_AUTHTOKEN and optional
NGROK_DOMAIN. If Cloudflare is selected, explain quick tunnel vs named tunnel.Or run it yourself:
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | bashThe installer prints every Connector field you need to fill in ChatGPT, plus ngrok and Cloudflare registration links, tunnel tradeoffs, and an agent-safe setup prompt.

ChatGPT2LocalBridge is a self-hosted Codex / ChatGPT Plugin App: a local desktop/operator app plus an MCP connector that lets ChatGPT access approved local workspaces after authorization. It is designed for people who want ChatGPT or Codex-style agents to inspect, bundle, download, trace, or operate on local project files without uploading the whole workspace elsewhere.
The TypeScript build is the full OAuth MCP connector. A small Rust native
preview also lives in rust/chatgpt2localbridge-rs
for the local operator console, health checks, activity APIs, and a minimal MCP
smoke surface.
In this repository, plugin app means a small agent-facing product surface: a local app, a policy file, a tool catalog, trace records, and one or more ChatGPT/Codex-visible MCP tools. It is not a legacy ChatGPT plugin. It is best described as:
Codex Plugin App
ChatGPT Plugin App
MCP Server
ChatGPT Custom Connector
OAuth Local Workspace Bridge
Unofficial project. Not affiliated with OpenAI.
Related MCP server: DevSpace
Build Your Own Plugin App
This project is also an invitation to build more agent-facing plugin apps. A good plugin app should give ChatGPT or Codex a focused tool surface, keep risky operations behind policy, and give the human operator a clear local console.
Layer | What to build | Example in this repo |
Agent interface | MCP tools with concise names, schemas, and safe defaults |
|
Skill runtime | Local skills are discovered through approved roots, manifests, and stable registry tools |
|
Human control | A local app that shows status, policy, traces, and cancel buttons | Native macOS console |
Safety policy | Approved roots, deny globs, auth mode, shell restrictions |
|
Distribution | README, GitHub Pages, screenshots, setup prompts, install scripts |
|
If you build your own plugin app, keep the default workflow narrow and readable: one clear problem, one safe tool surface, one local control panel, and one copyable ChatGPT test prompt.
The next product direction is a Local Skill OS: local skills stay in approved skill roots, the bridge exposes a stable registry surface, and the app shows which skills are readable, routable, invokable, or blocked. See the Skill Runtime Roadmap.
The main execution path is moving toward Handoff -> Codex Runner: ChatGPT creates a structured handoff, the bridge validates and stores it, then local Codex CLI performs the project work. See the Handoff Spec.
Route
ChatGPT
-> OAuth MCP Connector
-> HTTPS tunnel
-> http://127.0.0.1:3838/mcp
-> ChatGPT2LocalBridge
-> approved local workspace rootsChatGPT does not directly mount your disk. It calls MCP tools, and every file operation is checked against bridge.policy.json.
Architecture
The intended product shape is a control plane, not just a raw shell bridge:
ChatGPT Web makes structured MCP calls.
Connector auth should use OAuth or Secure MCP Tunnel for public access.
Bridge policy gates roots, deny globs, shell mode, timeouts, and traces.
Tool tiers guide ChatGPT toward safer project and Codex Runner workflows.
Local app shows policy, tool calls, logs, diffs, downloads, and cancellable tasks.
30-Second Install
Linux one-click installer:
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | bashOptional Linux tunnel helpers:
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | TUNNEL=cloudflare bash
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | TUNNEL=ngrok NGROK_AUTHTOKEN=... NGROK_DOMAIN=my-bridge.ngrok-free.app bashTemporary GitHub npx install, no clone required:
npx github:Harzva/chatgpt2localbridge init --root ~/Projects
set -a; source .env.local; set +a
npx github:Harzva/chatgpt2localbridge --http 3838Local clone flow:
git clone https://github.com/harzva/chatgpt2localbridge.git
cd chatgpt2localbridge
npm install
npm run build
node dist/index.js init --root ~/Projects
set -a; source .env.local; set +a
node dist/index.js --http 3838Health check:
curl -sS http://127.0.0.1:3838/healthLocal operator console:
http://127.0.0.1:3838/appRust native preview:
cargo run --manifest-path rust/chatgpt2localbridge-rs/Cargo.toml -- --http 3842The Rust preview intentionally exposes a smaller MCP surface today:
initialize, tools/list, bridge.health, bridge.activity, and file.list.
Native macOS app:
npm run macos:install
open /Applications/ChatGPT2LocalBridge.appThe macOS app is a native AppKit/SwiftUI desktop console that embeds the Rust
engine, uses the repository logo as its .icns icon, manages the local 3842
service, and shows the ChatGPT-visible MCP tool catalog, browser bundle prompts,
approved roots, editable policy, logs, connector tool calls, skill reads, write
events, and cloud-download trace records without needing the browser console.
The native Policy Center edits the local policy safely:
workspace roots stay separate from skill roots
the default skill root is
~/.codex/skillssaving creates
bridge.policy.backup.jsonpolicy changes are written to local audit trace
the app warns if you expose broad paths such as
~/.codex
Downloads And Releases
GitHub Releases provide prebuilt artifacts for local testing:
ChatGPT2LocalBridge-macos-*.dmg: drag-and-run macOS native control console with the Rust companion binary bundled inside the app.ChatGPT2LocalBridge-macos-*.app.zip: native macOS control console with the Rust companion binary bundled inside the app.ChatGPT2LocalBridge-windows-x64-rust-preview.zip: Windows Rust-native local console preview.chatgpt2localbridge-*.tgz: npm package for the full TypeScript OAuth MCP bridge.
The Windows artifact is currently a Rust preview, while the full OAuth connector
surface remains the Node/TypeScript package. Release builds are generated by
.github/workflows/release.yml when a v* tag is pushed.
See Windows Roadmap for the current preview scope.
Release route:
npm run typecheck
npm test
npm run macos:app
git tag v0.1.x
git push origin v0.1.xThe release workflow attaches macOS .dmg / .app.zip, a Windows Rust preview
zip, an npm tarball, and SHA256 files.
ChatGPT Connector Setup
Choose An Auth Mode
ChatGPT's custom connector UI may offer OAuth, No Authentication, and Mixed Authentication. This project supports more than one path, but the safe default depends on where the endpoint is reachable.
Connector auth | Use when | Notes |
OAuth | Any public HTTPS tunnel, including Mac mini with ngrok/Cloudflare or a Linux server tunnel | Recommended default. ChatGPT completes an OAuth code flow and later calls |
No Authentication | Short-lived loopback-only or private-network tests | Works only if the bridge is intentionally running without OAuth. Do not use this on a public tunnel. |
Mixed | Advanced per-tool policy where public tools are anonymous and privileged tools require OAuth | Useful later if you split tools by risk. The current public-safe guide keeps the whole connector OAuth-protected. |
If both OAuth and No Authentication appear to work, prefer OAuth for anything reachable from ChatGPT over the internet. No Authentication means the URL itself is the control surface.
Expose the local server through HTTPS:
ngrok http 3838 --url=your-fixed-domain.ngrok-free.devThen create a ChatGPT Custom Connector:
Field | Value |
Name |
|
URL |
|
Auth | OAuth |
When the authorization page opens, enter the unlock code from .env.local. Do not paste unlock codes or tokens into public chats, issues, screenshots, or commits.
Linux Server Setup
Linux works the same way as Mac mini: run one bridge next to the files you want ChatGPT to see, expose that bridge through HTTPS, then create a separate ChatGPT connector for that machine.
One-click install directly on the Linux host:
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | bashCommon options:
curl -fsSL https://raw.githubusercontent.com/Harzva/chatgpt2localbridge/main/scripts/linux-one-click-install.sh | WORKSPACE_ROOT=/srv/workspace BRIDGE_PORT=3900 bashThe installer prints the exact ChatGPT Connector fields, local health checks, ngrok registration requirements, Cloudflare registration requirements, and a longer agent prompt for safe remote setup.
Deploy from an existing local clone to a remote Linux host:
REMOTE=linux-box \
REMOTE_WORKSPACE=/srv/workspace \
REMOTE_ALLOWED_ROOTS="/srv/workspace,/home/agent/projects" \
PUBLIC_BASE_URL=https://linux-bridge.example.com \
bash scripts/deploy-linux-bridge.shCreate a second connector such as ChatGPT2LocalBridge Linux with:
Field | Value |
URL |
|
Auth | OAuth |
Use separate connectors for separate machines so each policy can stay narrow. See Linux deployment.
Screenshot Walkthrough
Step | Preview |
Initialize local policy |
|
Run local MCP server |
|
Review Policy Center |
|
Check |
|
Create connector |
|
Authorize |
|
Test file listing |
|
macOS Screenshot CLI
Use the Mac mini helper when you need real screenshots for README, GitHub Pages,
release notes, or social posts. Outputs default to docs/assets/app_screenshots.
npm run shot:selection # choose any screen area
npm run shot:window # click any window
npm run shot:full # capture the full screen
npm run shot:app # capture the ChatGPT2LocalBridge window boundsDirect usage:
scripts/mac-screenshot.sh --rect 100,120,1280,760 --out docs/assets/app_screenshots/dashboard.png
scripts/mac-screenshot.sh --app "ChatGPT2LocalBridge" --open --copy-pathIf macOS blocks capture, grant Screen Recording permission to Terminal, iTerm, or the agent process in System Settings.
Full guides:
Main MCP Tools
Tool Tiers
Tier | Default use | Tools |
High-level agent workflow | Recommended entry point for Web ChatGPT once Codex Runner lands |
|
Mid-level project workflow | Preferred today for reading context, checking policy, inspecting diffs, and running tests |
|
Low-level debug primitives | Advanced local troubleshooting only; avoid as the Web ChatGPT path |
|
The roadmap tracks the move from low-level primitives toward a safer Codex Runner surface. See ROADMAP.md.
Tool Profiles
ChatGPT2LocalBridge already uses a profile gate to progressively expose tools: a small public connector surface, a standard daily surface, and a full debug surface. For clearer public docs, it now accepts both product-facing profile names and the earlier internal aliases:
Profile | Alias | Use |
|
| Small ChatGPT connector surface with compatibility aliases. Raw shell execution is intentionally not exposed. |
|
| Recommended default for project, policy, skills, git, tests, traces, and Codex task workflows. |
|
| Trusted local debugging with low-level file, process, shell, and service tools exposed. |
|
| High-level Codex task control plane without general project tools. |
Set it with:
LOCALBRIDGE_TOOL_PROFILE=standardUse minimal for the first public connector test, standard for daily work,
and full only for focused local debugging where you want every raw primitive
visible.
shell_exec is not supported in the Web ChatGPT connector profile. Hosted
ChatGPT safety checks can block shell-like actions before they ever reach your
local bridge, especially commands that enumerate files, use pipes, or combine
multiple shell operators. For a smoother connector experience, use
file_list / local_list_dir for directories, batch_read for bounded
multi-file reads, and handoff_create -> codex_task_start when local Codex
CLI should run commands. The raw shell tools remain debug-only under the full
/ debug profile for trusted local troubleshooting.
This profile model is part of the bridge's own tool router and progressive disclosure roadmap: expose only the tools needed for the current trust level, then let the local app and trace records explain what happened.
Area | Examples |
Project |
|
Handoff |
|
Policy |
|
Skills |
|
Code |
|
Files |
|
Shell/tests |
|
Git |
|
Runtime |
|
Cloud sync |
|
Bridge |
|
The full debug-profile MCP tool catalog is generated from MCP tools/list into
assets/mcp-tools.json:
npm run tools:catalogproject.bundle is the recommended multi-file context tool. It returns a
directory summary, selected text files, and optional git diff in one read-only
call, so ChatGPT can read local first and then create a cloud-side downloadable
copy from the returned content.
skill.* tools make local Codex skills readable through the connector without
turning the whole Codex runtime directory into a workspace. Configure:
{
"skillRoots": [
"/Users/YOUR_USERNAME/.codex/skills"
]
}Project-local skills are also discovered from approved project roots at
.codex/skills. Reference files are gated: call skill.read on a SKILL.md
first, then pass the returned activationId to skill.bundle so it can include
referenced local files such as references/*.md.
Do not approve the whole ~/.codex directory. It can contain sessions,
attachments, local configuration, and other private runtime files.
Codex Provider Profiles
Codex Runner can use either the normal Codex CLI login or an OpenAI-compatible
API endpoint. This keeps sub2api optional: run sub2api separately, then point
the bridge at its /v1 endpoint.
LOCALBRIDGE_CODEX_BIN=/Users/YOUR_USERNAME/.local/bin/codex
LOCALBRIDGE_CODEX_PROVIDER=sub2api
LOCALBRIDGE_CODEX_BASE_URL=http://127.0.0.1:4999/v1
LOCALBRIDGE_CODEX_API_KEY_ENV=SUB2API_KEY
SUB2API_KEY=...The native app has a Codex Provider page for editing these local settings. Trace output records the provider kind and base URL host only; API keys are not written into tool results or audit logs.
If ChatGPT shows spawn codex ENOENT, the connector and handoff tools are
working, but the background service cannot find the Codex CLI. Set
LOCALBRIDGE_CODEX_BIN to the absolute codex path, or install Codex in one
of the service-friendly locations such as ~/.local/bin, /opt/homebrew/bin,
or /usr/local/bin.
File Sync And Activity
Local files can be read by ChatGPT through approved MCP tools.
Multiple local files can be bundled with
project.bundle.MCP-read local file content can be re-emitted by ChatGPT as a cloud-side downloadable artifact when the user wants a copy in the conversation.
For stable Trace Studio grouping, ask ChatGPT to call
trace.session_startat the beginning of each conversation, andtask.startbefore long multi-step work.ChatGPT/App-provided cloud file download URLs can be written back to local disk with
cloud.download.Tool calls are persisted to
tool-calls.jsonl.File writes, downloads, tasks, processes, and service restarts are persisted to
audit.jsonl.The local console at
/appand native macOS app show status, tool calls, and audit events.
See file sync flows.
Field Evidence
The current release includes sanitized evidence from local and ChatGPT connector
tests: build/test output, macOS app installation, tool catalog counts, write
smoke tests, and connector troubleshooting notes. See
docs/evidence.md.
Latest connector proof: after recreating the ChatGPT custom connector as
attachlocal2chatgpt-v3, ChatGPT's action list exposed the high-level handoff
and Codex Runner entry points:
Public-safe safety evidence from field testing:
Field note: keep xhigh / XHigh mode off by default. In local testing it
produced more connector/tool-call errors than the normal profile, so use it only
for focused debugging with trace capture enabled.
Field note: codex.result and codex_result return compact summaries by
default. Full logs, diffs, and handoff metadata are opt-in with includeLog,
includeDiff, and includeHandoff because hosted ChatGPT safety checks can
block large execution records or structured payloads.
Star History
Security Defaults
Do not run unauthenticated on a public URL.
Keep
allowedProjectRootsnarrow.Keep
skillRootsnarrow; prefer~/.codex/skills, not~/.codex.Never commit
.env.local,bridge.policy.json, OAuth stores, tokens, cookies, or unlock codes.Prefer OAuth over URL tokens.
Set
LOCALBRIDGE_DASHBOARD_TOKENbefore using/app.Review shell deny rules before enabling shell access for broad workspaces.
See security model.
Alternatives
OAuth + fixed HTTPS tunnel is the default because it fits ChatGPT Custom Connectors well. Other options exist:
OpenAI Secure MCP Tunnel, when available to your workspace
Cloudflare Tunnel
VPS reverse proxy
Static bearer token for private clients
Loopback-only no-auth testing
See alternatives.
GitHub Pages
The static product site lives in docs/. The repository includes a GitHub Actions workflow that deploys it to GitHub Pages after pushing to main.
Development
npm install
npm run typecheck
npm run tools:catalog
npm test
npm pack --dry-run
cargo test --manifest-path rust/chatgpt2localbridge-rs/Cargo.toml
cargo build --manifest-path rust/chatgpt2localbridge-rs/Cargo.toml
cargo build --release --manifest-path rust/chatgpt2localbridge-rs/Cargo.toml
npm run macos:app
npm run macos:installRender README and docs assets:
npm run docs:assets
npm run docs:previewPublic Release Checklist
Enable GitHub Pages with the included workflow.
Confirm
npm testpasses in GitHub Actions.Confirm the macOS
.dmgand.app.zipdownload, unzip/mount, and launch.Confirm the Windows Rust preview starts
http://127.0.0.1:3842/app.Keep
.env.localandbridge.policy.jsonuntracked.Verify the ChatGPT connector uses OAuth and the correct
/mcpURL.
License
MIT
Available Tools
38 toolsbridge.activityBridge ActivityARead-only
Read recent local bridge tool-call records and audit events. Use this to inspect what ChatGPT actually asked the MCP server to do.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| includeAudit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| toolCalls | Yes | |
| auditEvents | Yes | |
| dataDir | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is clear. The description adds context about the data being 'recent' and covering 'audit events,' but does not go beyond what annotations provide in terms of safety or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core function and followed by a practical use case. 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?
The description differentiates the tool from siblings and is adequate given the output schema exists. However, the lack of parameter documentation reduces completeness for a tool with only two optional 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 description coverage is 0%, yet the tool description does not explain the parameters (limit, includeAudit) or their effects. This leaves the agent without guidance on how to use these parameters effectively.
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 reads 'recent local bridge tool-call records and audit events' and provides a concrete use case: 'inspect what ChatGPT actually asked the MCP server to do.' This distinguishes it from sibling bridge tools like health, logs, and status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells when to use the tool (to inspect tool-call records) but does not explicitly mention when not to use it or compare with alternatives. However, the context provided is sufficient for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge.healthBridge HealthBRead-only
Check local and optional public bridge health endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| includePublic | No | ||
| publicBaseUrl | No | https://example.ngrok-free.app | |
| timeoutMs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| checks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint and openWorldHint annotations, indicating a read operation that may access external endpoints. However, it does not elaborate on potential side effects, latency, or error conditions beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is appropriately front-loaded but lacks supporting details that could improve usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is too brief for a tool with three undocumented parameters and no output schema details. It omits information about default behavior, success/failure indicators, and usage nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the parameters (includePublic, publicBaseUrl, timeoutMs) beyond the schema defaults. With 0% schema description coverage, the description fails to add meaningful guidance on parameter usage or behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Check') and the resource ('local and optional public bridge health endpoints'). It is specific and distinguishes from sibling tools like bridge.activity, bridge.logs, and bridge.status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, such as bridge.status or other health check tools. No context is given for appropriate usage scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge.logsBridge LogsARead-only
Read recent bridge and tunnel log lines from the configured log directory.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | ||
| lines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| logDir | Yes | |
| files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, confirming a safe read operation. The description adds 'recent' and 'configured log directory' but does not disclose behaviors like line limits, file selection, or error handling. With annotations covering the safety profile, the description provides modest additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, front-loaded with the key action and resource. Every word contributes value, making it highly concise and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, read-only annotation, output schema present), the description covers the core functionality sufficiently. It does not explain return values, but that is handled by the output schema. Minor gap: no mention that logs are tail-based, but defaults hint at it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should explain the parameters. It mentions 'recent' implying the 'lines' parameter controls count, but does not explicitly describe 'files' or 'lines'. The enum values for files are self-explanatory, but the description fails to add meaningful semantics beyond defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'bridge and tunnel log lines', specifying 'recent' and 'from the configured log directory'. This distinguishes it from sibling tools like bridge.activity or bridge.health which provide different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., code.read, bridge.status). It does not mention context or exclusions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge.statusBridge StatusARead-only
Return local bridge and tunnel launchd service status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| services | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds context about the scope (bridge and tunnel), but does not elaborate on behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, concise sentence that front-loads the key information with no redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with an output schema, the description is sufficiently complete to convey its function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so baseline 4; the description correctly states the purpose without needing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'Return' and the resource 'local bridge and tunnel launchd service status', clearly distinguishing it from siblings like bridge.health and bridge.logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking service status but provides no explicit guidance on when to use it versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cloud.downloadDownload Cloud FileA
Download a ChatGPT/App-provided HTTPS file URL into an approved local workspace. Use this when a cloud-side file has a download link and should be synced to local disk.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| url | Yes | ||
| file | Yes | ||
| overwrite | No | ||
| maxBytes | No | ||
| expectedSha256 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| bytes | Yes | |
| sha256 | Yes | |
| contentType | No | |
| sourceUrlHost | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description adds value by mentioning 'approved local workspace' and syncing context. However, it does not elaborate on overwrite behavior, sha256 verification, or maxBytes limits, leaving gaps for a write tool with open world access.
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, front-loaded with the core action and usage context. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 6 parameters (3 required), an output schema, and open-world access, the description minimally covers the tool's behavior. It omits details on parameter usage, error handling, and output format, making it incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention any of the 6 parameters (projectPath, url, file, overwrite, maxBytes, expectedSha256) or their roles. With 0% schema description coverage, the agent must infer from names and schema types alone, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it downloads an HTTPS file URL to a local workspace, specifying the source as 'ChatGPT/App-provided'. This distinguishes it from sibling tools like file.write (which writes content directly) and no other download tool exists among 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 explicitly says 'Use this when a cloud-side file has a download link and should be synced to local disk.' This provides clear context for when to use, though it does not explicitly mention when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.readRead FilesBRead-only
Read one or more text files from a local project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| files | Yes | ||
| maxLines | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool's safety is clear. The description adds that it reads 'text files' but does not disclose other behavioral traits (e.g., encoding, handling of missing files, line limits beyond schema defaults). With annotations covering the primary behavioral concern, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the primary purpose. However, it sacrifices necessary detail for brevity. Still, it earns a 4 due to 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?
Given the existence of an output schema and 3 parameters with 0% schema coverage, the description should compensate by explaining parameter usage and return behavior. It fails to do so, leaving the agent with significant gaps. The completeness is inadequate for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not clarify the meaning of any parameter. Schema description coverage is 0%, so the burden on description is high. An agent cannot infer what 'projectPath' should be (absolute/relative path?) or how 'files' should be specified (relative to projectPath?). The maxLines parameter is also unexplained despite having a default and bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Read'), resource ('text files'), and scope ('from a local project'). It distinguishes from siblings like code.read_range and code.search by focusing on full files, not ranges or search results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like code.read_range or code.search. No explicit context or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.read_rangeRead File RangeARead-only
Read a bounded line range from one text file inside a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| file | Yes | ||
| startLine | Yes | ||
| endLine | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| startLine | Yes | |
| endLine | Yes | |
| totalLines | Yes | |
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds that it reads a bounded line range, which is the key behavioral trait. However, it does not disclose edge cases like what happens if startLine > endLine or if the file doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence that efficiently conveys the tool's purpose with no extraneous words. Front-loaded with the core action.
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 minimal and leaves out usage guidelines and parameter details. Given that there is an output schema (reducing need to explain return values) and 4 required parameters, the description could provide more context about the range parameters or file path format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for parameters. The description implies that 'startLine' and 'endLine' define the range via 'bounded line range', but provides no additional meaning for 'projectPath' or 'file'. Baseline 3 is appropriate as it adds partial value.
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 explicitly states 'Read a bounded line range from one text file inside a project.' It specifies the verb 'read' and the precise resource (bounded line range, one text file), distinguishing it from siblings like 'code.read' (reads whole file) and 'code.search' (searches content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it does not mention that reading the entire file should use 'code.read', or that searching across files should use 'code.search'. Missing context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code.searchSearch CodeCRead-only
Search local project files with ripgrep-compatible output.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| query | Yes | ||
| glob | No | ||
| maxResults | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| count | Yes | |
| files | Yes | |
| matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating safe read operation. The description adds that output is ripgrep-compatible, providing some behavioral context beyond annotations, but does not detail any other behavioral traits.
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, making it concise but lacking structure. It does not present information in a clear, front-loaded format and could benefit from organizing key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has four parameters with no schema descriptions and an output schema exists, the description fails to explain parameter semantics or usage context. It only covers purpose and output format, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any parameters, their types, or their purpose. The four parameters (projectPath, query, glob, maxResults) remain undocumented, offering no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches local project files and specifies that the output is ripgrep-compatible, providing a specific verb and resource. It distinguishes itself from siblings like code.read and code.read_range which read file content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as code.read for reading entire files or file.list for listing files. The description does not mention when not to use it or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.copyCopy FileC
Copy a file inside a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| from | Yes | ||
| to | Yes | ||
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| from | Yes | |
| to | Yes | |
| changedFiles | Yes | |
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, so the description does not contradict them. However, it fails to disclose that overwrite is possible (via the overwrite parameter) or what happens if the target file exists. The description adds no behavioral insight beyond 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 short sentence, which is concise but too terse given the tool's complexity (4 parameters). It avoids fluff but fails to front-load important 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?
With 4 parameters, an output schema, and multiple sibling tools, the description is incomplete. It does not clarify path formats, the behavior of overwrite, or how copy differs from move. The description lacks enough context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description offers no explanation of the parameters (projectPath, from, to, overwrite). The description does not compensate for the lack of schema descriptions, leaving parameter semantics entirely unspecified.
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 'Copy a file inside a project' clearly states the verb (copy) and resource (file) and scopes it to a project. It distinguishes from siblings like file.move or file.delete, though lacks any additional context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., file.move, file.write). No prerequisites or context for usage are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.deleteDelete FileCDestructive
Delete a file inside a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| file | Yes | ||
| confirm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| changedFiles | Yes | |
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and readOnlyHint=false. The description adds minimal context beyond 'inside a project', but does not contradict annotations. It lacks details on deletion behavior (e.g., permanence, confirmation prompt).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. However, some users may desire more detail given the tool's destructive nature.
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 destructive tool with no parameter descriptions and an output schema, the description is too minimal. It does not explain return behavior, error cases, or the necessity of the confirm parameter, relying entirely on external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain any parameter meaning. In particular, the required confirm parameter is not mentioned as needing to be true to proceed, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (delete) and resource (file), with scope 'inside a project'. It distinguishes itself from sibling tools like file.copy or file.list as the only delete 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?
No guidance on when to use file.delete versus alternatives (e.g., file.patch for modification) or when not to use it. The description does not mention prerequisites or safety considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.listList DirectoryARead-only
List files and directories inside a project directory without reading file contents.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| dir | No | . | |
| recursive | No | ||
| maxEntries | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| dir | Yes | |
| entries | Yes | |
| truncated | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations by specifying it lists without reading contents. Annotations already declare readOnlyHint=true and openWorldHint=false, which aligns. No contradictions. However, it does not disclose behavior like recursion limits or performance characteristics, but the annotations cover safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key action. Every word is necessary and there is no redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of output schema and annotations, the description provides the basic purpose but lacks details on parameter behavior, error conditions, or example usage. For a tool with 4 parameters and a recursive option, more context about how to use them would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (description does not mention any parameters). With 4 parameters, the description fails to add meaning beyond the schema. For example, it does not explain the role of 'projectPath', 'dir', 'recursive', or 'maxEntries'. This is a critical gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'files and directories inside a project directory', and distinguishes itself from file reading tools by adding 'without reading file contents'. This is specific and differentiates it from siblings like file.read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing without reading, but does not explicitly mention when to use this tool vs alternatives like file.stat or code.read. No exclusions or alternative suggestions are provided, relying on the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.mkdirCreate DirectoryC
Create a directory inside a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| dir | Yes | ||
| recursive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| dir | Yes | |
| created | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false), which is consistent. The description says 'Create', implying mutation. However, it does not disclose behavior if the directory already exists, what happens on error, or the effect of the 'recursive' parameter (default true). More transparency is needed.
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 wasted words, but it is overly terse. While concise, it sacrifices clarity and completeness. A slightly longer description structuring the key aspects would be more helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown) and three parameters, the description is too sparse. It lacks information about error handling, preconditions (e.g., project must exist), return values, or typical usage patterns. The description does not meet the needs of an AI agent selecting between sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage for descriptions, yet the tool description does not explain any of the three parameters (projectPath, dir, recursive). It only says 'inside a project', which vaguely hints at projectPath. This is insufficient for an agent to correctly fill in the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'directory', and the title reinforces it. It is distinct from sibling file tools (e.g., file.copy, file.delete) because 'mkdir' specifically creates directories, not files or copying. However, it could be more precise about the project context, e.g., 'relative to project 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?
No guidance is provided on when to use this tool versus alternatives like file.write (for files) or any prerequisites. The description does not mention situations where mkdir is preferable or any caveats (e.g., directory existence).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.moveMove FileC
Move or rename a file or directory inside a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| from | Yes | ||
| to | Yes | ||
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| from | Yes | |
| to | Yes | |
| changedFiles | Yes | |
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which are consistent with moving/renaming (mutation but not destructive). The description adds that it works for files and directories, but lacks details on behavior upon overwrite or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks necessary detail. It could be expanded without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, 3 required, and an output schema, the description is insufficient. It does not mention return values, error cases, or the role of the overwrite parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no explanation of parameters (projectPath, from, to, overwrite). It fails to add meaning beyond the schema, e.g., path formats or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Move or rename') and resource ('file or directory'), and specifies the context ('inside a project'). It distinguishes from siblings like file.copy and file.delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., file.copy for copying). It does not mention prerequisites, conditions, or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.patchPatch FileA
Replace exact text inside a file. Fails unless the old text is found exactly once, unless replaceAll is true.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| file | Yes | ||
| oldText | Yes | ||
| newText | Yes | ||
| replaceAll | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| changedFiles | Yes | |
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral detail beyond annotations: fails on zero/multiple matches unless replaceAll. Annotations don't specify this. Could mention that changes are irreversible or require permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded action, no wasted words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and main condition. Lacks info on return value, error handling beyond the described condition, and performance. But given simplicity, it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. Only replaceAll is mentioned, while other parameters (projectPath, file, oldText, newText) are not described. Names are self-explanatory, but description should compensate for lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Replace exact text inside a file') and key condition (fails unless exactly one match unless replaceAll). Differentiates from sibling tools like file.write and file.delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for replacing exact text, but no explicit guidance on when to use vs alternatives like file.write or code.search. No when-not conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.statFile StatBRead-only
Return metadata for a file or directory inside a project, optionally including sha256 for files.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| file | Yes | ||
| includeHash | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| type | Yes | |
| size | Yes | |
| modifiedAt | Yes | |
| sha256 | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the optional SHA256 inclusion behavior, which is not in annotations. However, there is no mention of other behavioral aspects like recursion, permissions, or metadata fields. Annotations already indicate read-only, so the description's additional value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and to the point. It is front-loaded with the main action. However, it could be slightly more structured by separating the hash option as an afterthought.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the return values are covered. However, the description lacks context about projectPath requirements, relative paths, or error conditions. It is adequate but not fully complete for a stat operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any parameter (e.g., format of projectPath, meaning of includeHash). The agent must infer from parameter names alone, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'metadata for a file or directory inside a project', distinguishing it from sibling tools like file.list (listing) or file.delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as file.list or file.stat for different purposes. No when-not-to-use or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file.writeWrite FileB
Create or overwrite a text file inside a project. Use code.read first when modifying an existing file.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| file | Yes | ||
| content | Yes | ||
| createDirs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| changedFiles | Yes | |
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations set destructiveHint=false, but the description describes an overwrite operation, which is inherently destructive. This contradiction undermines transparency. The description adds no clarifying behavioral context beyond 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 sentences, efficiently conveying the tool's core purpose and a key usage guideline. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic operation but omits details about encoding, size limits, behavior when file exists, or binary file handling. Given the tool has an output schema (presumably documenting returns), it partially compensates but still feels incomplete for nuanced scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate but only offers minimal context. It mentions 'text file' to hint at content type but does not explain the meaning of parameters like projectPath, file, content, or createDirs.
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 a project. The verb 'Create or overwrite' combined with the resource 'text file' precisely defines the action, and it distinguishes itself from sibling tools like file.delete, file.copy, etc.
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 advises 'Use code.read first when modifying an existing file,' which provides guidance on when to read before writing. However, it doesn't explicitly state when not to use this tool or suggest alternatives for non-text files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git.checkpointGit CheckpointARead-only
Return the current HEAD commit. Use this before a risky edit so git.revert can restore the working tree to this commit.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| checkpoint | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that it returns HEAD commit, but does not detail any other behavioral traits like response format or edge cases. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no repetition, front-loaded with the action. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a single parameter and an output schema (not shown but indicated), the description covers the core action and usage pattern. The missing parameter guidance prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'projectPath' has no description in the schema (coverage 0%), and the description does not mention it at all, leaving the agent to infer its necessity and format without guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Return the current HEAD commit' as the primary action. Distinguishes from sibling tools like git.revert and git.status by focusing on capturing a point for potential reversion.
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?
Explicitly advises using 'before a risky edit' and references git.revert as the recovery mechanism, providing clear context for when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git.diffGit DiffBRead-only
Return git diff summary and structured diff for the current working tree.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| ref | No | Optional git ref to diff against. Defaults to HEAD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| changedFiles | Yes | |
| stats | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description adds the context of returning 'summary and structured diff'. However, it does not clarify the exact scope (e.g., staged vs unstaged changes, or that ref defaults to HEAD).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and efficient. It could be slightly more informative about the output structure, but it is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of annotations and an output schema, the description minimally covers the core purpose. However, it omits context about what 'current working tree' means and does not clarify the diff scope (e.g., all changes vs specific files).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention projectPath or provide additional context for the ref parameter beyond what the schema already states. With 50% schema description coverage, the description fails to compensate for the missing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'git diff summary and structured diff' for the 'current working tree', making the purpose specific and distinguishable from siblings like git.status and git.revert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives like git.status or git.revert. The description does not mention prerequisites, exclusion criteria, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git.revertGit Revert Working TreeBDestructive
Destructive: restore tracked files to a checkpoint and optionally remove untracked files.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| checkpoint | Yes | ||
| cleanUntracked | No | ||
| confirm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| checkpoint | Yes | |
| cleanUntracked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true. The description adds that it restores tracked files and optionally removes untracked files, providing context beyond annotations. However, it does not clarify that the operation is irreversible or requires confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. Clearly front-loaded with 'Destructive' alert.
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 4 parameters, an output schema, and no parameter descriptions, the description is insufficient. It misses details on required confirmation, checkpoint format, and return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate but only mentions 'checkpoint' and 'cleanUntracked' without explaining them. Parameters like 'confirm' (critical for safety) and 'projectPath' are ignored.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('restore tracked files to a checkpoint') and the resource ('tracked files'), distinguishing it from siblings like git.checkpoint (create) and git.diff (diff).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. Does not mention prerequisites or conditions (e.g., needing a valid checkpoint).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git.statusGit StatusARead-only
Return git branch, HEAD, and porcelain status for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| branch | Yes | |
| head | Yes | |
| files | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so agent knows it's safe. The description adds context about what is returned (branch, HEAD, porcelain status). No additional behavioral details needed for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It could be slightly more informative, but it is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter and an output schema, the description is somewhat complete. However, it lacks edge-case handling, such as when the project is not a git repository. Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. However, it does not explain the meaning or format of the projectPath parameter, leaving the agent to infer its purpose from the name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (return) and resources (git branch, HEAD, porcelain status). It distinguishes from sibling git tools like git.checkpoint, git.diff, and git.revert which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or exclusions. For a simple status check, usage is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
port.checkCheck PortARead-only
Check whether a local TCP port is listening and identify the owning process when possible.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | ||
| host | No | 127.0.0.1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| host | Yes | |
| port | Yes | |
| listening | Yes | |
| output | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool checks listening status and identifies the owning process, adding behavioral context beyond the readOnlyHint annotation. It does not contradict annotations, and it helps the agent understand the tool's capabilities.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently conveys the tool's purpose and functionality. Every word contributes meaning, and there is no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, the description is complete for a simple check operation. An output schema exists, so return values are not required in the description. It covers the essential behavioral aspects, though mentioning that it operates locally could be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate by explaining the parameters. It only mentions 'local TCP port' and 'owning process', but does not clarify the host parameter or provide details on how port and host are used. The param names are clear, but the description adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'check', the resource 'local TCP port', and the specific action of checking if it's listening and identifying the owning process. This differentiates it from sibling tools that focus on different resources like files, processes, or cloud services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. However, given the absence of similar port-checking tools among siblings, the purpose is self-explanatory, but a clear distinction would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process.listList Project ProcessesBRead-only
List processes started by this bridge runtime.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| processes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the scope 'started by this bridge runtime', but does not disclose pagination, filtering behavior, or response format beyond what the output schema (if present) might cover.
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 redundancy or irrelevant information. It is front-loaded and efficiently conveys the core function.
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 simplicity of the tool (one optional param, output schema present), the description is minimally adequate. However, it lacks details on parameter usage and potential limitations, leaving some gaps in 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?
The description does not mention the 'workspace' parameter at all, and schema coverage is 0%. For a single optional parameter, the description should at least hint that it serves as a filter, but it provides no additional 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 clearly states 'List processes started by this bridge runtime', specifying the action (list) and the resource (processes with a specific scope). It effectively distinguishes from sibling tools like process.start and process.stop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or when to prefer process.list over other tools such as bridge.status or shell.exec.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process.startStart Project ProcessC
Start a long-running project process and persist its pid/log path.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| command | Yes | ||
| workspace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| workspace | No | |
| projectPath | Yes | |
| command | Yes | |
| pid | Yes | |
| logFile | Yes | |
| status | Yes | |
| startedAt | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true. The description adds context about persisting pid/log path, but lacks details on blocking, cancellation, or failure 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 short sentence is concise but overly terse. Could benefit from structure like a bullet list or clearer separation of use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description does not cover prerequisites, side effects, or return behavior. For a tool with 3 parameters and complex behavior, it is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no explanation for the three parameters (projectPath, command, workspace). The description fails to compensate for missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a long-running project process and persists its PID and log path. It distinguishes from siblings like process.list and process.stop, though 'project process' could be more precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like shell.exec or process.start vs process.run. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process.stopStop Project ProcessADestructive
Stop a process previously started by process.start. Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| processId | Yes | ||
| confirm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| workspace | No | |
| projectPath | Yes | |
| command | Yes | |
| pid | Yes | |
| logFile | Yes | |
| status | Yes | |
| startedAt | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior (destructiveHint=true). The description adds that 'confirm=true' is required, which is useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two short sentences that convey all essential information without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description adequately covers the core purpose and a key parameter requirement. It is mostly complete for a simple stop operation, though parameter 'processId' could use a brief explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate. It only clarifies that 'confirm' must be true, but provides no explanation for 'processId'. This is insufficient guidance for the two required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Stop a process' and specifies it is for processes started by 'process.start', differentiating it from siblings like 'process.start' and 'process.list'.
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 requires 'confirm=true', providing a clear usage condition. It implies the tool is for stopping previously started processes, though it does not list alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project.indexProject IndexCRead-only
Return a higher-level project index: package scripts, key files, detected tests, and top-level structure.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| language | No | |
| packageManager | No | |
| scripts | Yes | |
| tests | Yes | |
| keyFiles | Yes | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=true, so the description adds minimal behavioral context beyond listing return contents. No contradiction. The description does not disclose additional traits like performance or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that front-loads the main action. However, it omits necessary parameter information, reducing completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return value with an output schema present, but it ignores the required input parameter. Given one parameter and existing output schema, the description is moderately complete but has a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'projectPath' parameter at all, failing to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a higher-level project index and lists included items (package scripts, key files, detected tests, top-level structure), but does not explicitly differentiate from sibling tools like project.scripts or project.snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description only describes the output, not usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project.scriptsProject Package ScriptsBRead-only
Return scripts from package.json for a Node project.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| packageJson | Yes | |
| scripts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's claim of returning data is consistent and adds the specific behavior of reading package.json scripts. However, no behavioral edge cases are disclosed (e.g., missing package.json, invalid path), and the description does not go beyond what the annotations already imply.
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 of only 9 words. It contains no redundancy and is appropriately front-loaded with the key action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, safe read, output schema exists), the description is mostly adequate. However, it lacks important context about error handling and preconditions (e.g., project must be Node). The presence of an output schema mitigates the need to explain return values, but overall completeness is average.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, meaning no parameter documentation in the schema. The description only indirectly hints that 'projectPath' should point to a Node project root, but does not explain the format, constraints, or what happens if the path is invalid. This is insufficient for a required parameter with no schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and a clear resource 'scripts from package.json for a Node project', making the tool's purpose immediately obvious. It also implicitly distinguishes from sibling tools like 'project.index' or 'project.snapshot' by focusing on a specific file and data type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., project must be Node-based with a package.json) or situations where it should not be used. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project.snapshotProject SnapshotARead-only
Get local project context: git state, language, package manager, and a bounded file tree. Use this before editing a project.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the project directory | |
| maxDepth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| branch | Yes | |
| isGitRepo | Yes | |
| headCommit | No | |
| isDirty | Yes | |
| entries | Yes | |
| language | No | |
| packageManager | No | |
| fileTree | Yes | |
| totalFiles | Yes | |
| totalLines | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only (readOnlyHint: true). The description adds context about the specific data returned (git state, language, etc.) but does not disclose additional behavioral traits such as side effects, permissions, or error states. With good annotation coverage, the description provides marginal added 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?
The description is concise, consisting of two sentences that front-load the verb and resource. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a specific purpose, an output schema (so return values are explained there), and the description covers the key components (git state, language, package manager, bounded file tree). No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (only 'path' has a description; 'maxDepth' has constraints but no description). The description does not add any parameter information beyond what the schema provides. Given moderate coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get local project context: git state, language, package manager, and a bounded file tree.' It uses a specific verb ('Get') and resource ('local project context'), and the detail on what is included (git state, language, package manager, bounded file tree) distinguishes it from sibling tools like 'project.index'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use the tool: 'Use this before editing a project.' This provides clear context for usage. Although it does not explicitly state when not to use it or list alternatives, the guidance is sufficient for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service.restartRestart Bridge ServiceADestructive
Restart one fixed launchd service: bridge or ngrok. Requires confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | ||
| confirm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| service | Yes | |
| label | Yes | |
| exitCode | Yes | |
| stdout | Yes | |
| stderr | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, and the description adds the mandatory confirm parameter required for execution. This provides behavioral context beyond the annotations, though more detail on what restart entails (e.g., service downtime) is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and immediately follow with the critical usage requirement. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects: what services, required confirm flag. Since an output schema exists, return values need not be described. It is complete enough for a simple restart operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds meaning to the confirm parameter (must be true) and implies the service parameter's values (bridge, ngrok via enum). It compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (restart) and resource (launchd service), listing the two specific services (bridge, ngrok). It effectively distinguishes from sibling tools like bridge.health and bridge.logs by focusing on the restart action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires confirm=true, which is a critical usage guideline. While it doesn't explicitly contrast with alternatives, the context of siblings (health, logs, etc.) makes it clear when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shell.execRun Shell CommandA
Run a shell command in the project directory and return stdout/stderr. Use for tests, builds, and local inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| command | Yes | ||
| timeoutMs | No | ||
| maxOutputBytes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| command | Yes | |
| exitCode | Yes | |
| stdout | Yes | |
| stderr | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only and has open-world effects, but description adds little beyond stating it runs a command. It does not detail potential side effects, security implications, or that commands run in project directory is already implied.
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 succinct sentences with no unnecessary words or structure. Every sentence provides value: purpose and usage contexts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having output schema and annotations, the description lacks essential context for a potentially dangerous tool: no details on environment, permissions, error behavior, or safety warnings. 4 parameters with 0% schema coverage are left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain parameters (projectPath, command, timeoutMs, maxOutputBytes). The phrase 'in the project directory' hints at projectPath, but overall fails to add 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 explicitly states 'Run a shell command in the project directory and return stdout/stderr', with clear use cases (tests, builds, local inspection). It uniquely identifies the tool among sibling tools that handle files, processes, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear contexts: tests, builds, local inspection. However, it does not explicitly state when not to use this tool (e.g., for file operations instead of file.* tools), limiting full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task.finishFinish TaskC
Mark a persisted task/session as done or blocked.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| status | No | done | |
| note | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| workspace | No | |
| projectPath | No | |
| status | Yes | |
| notes | Yes | |
| createdAt | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint: false). The description adds no further behavioral details (e.g., idempotency, side effects, error conditions).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, but at the cost of omitting important details about parameters and usage. It could include more information without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (0% schema coverage) and is a mutation operation, the description lacks essential context about parameter constraints, error handling, and expected behavior. The existence of an output schema does not compensate for missing input guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the meaning or usage of any parameter (taskId, status, note), even though status has an enum that benefits from clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark'), the resource ('a persisted task/session'), and the possible outcomes ('done or blocked'). It distinguishes from sibling tools like task.start, task.note, and task.status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, when not to use it, or any prerequisites. The description is too brief to help with decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task.noteAdd Task NoteC
Append a note to a persisted task/session.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | ||
| note | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| workspace | No | |
| projectPath | No | |
| status | Yes | |
| notes | Yes | |
| createdAt | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false), but the description adds no further behavioral context, such as whether the note appends to existing notes or if there are 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?
Single sentence is concise and front-loaded, but it may be too brief for optimal clarity given the lack of parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With simple parameters and an output schema present, the description still misses usage context and parameter semantics, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the only source for parameter meanings. It does not explain 'taskId' (format, validation) or 'note' (content type, length).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Append' and the resource 'note to a persisted task/session'. It distinguishes from sibling tools like task.start, task.finish, and task.status, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. No mention of prerequisites or context, such as whether the task must already exist or be started.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task.startStart TaskB
Start a lightweight persisted task/session record for multi-step work.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| workspace | No | ||
| projectPath | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| title | Yes | |
| workspace | No | |
| projectPath | No | |
| status | Yes | |
| notes | Yes | |
| createdAt | Yes | |
| updatedAt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint false), and description adds 'lightweight persisted' but no additional behavioral details like side effects, auth needs, or implications. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, no redundancy. Concise, though could be more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters and an output schema, the description is minimal. It lacks context on what 'lightweight persisted' entails, how it relates to task.finish, or what the tool returns. Incomplete for guiding agent behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain any parameter meanings. Both the schema and description fail to add semantics beyond parameter names.
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 starts a task/session record, using a specific verb ('Start') and resource. It distinguishes from sibling tools like task.finish and task.note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites, exclusions, or comparison to sibling tools like task.finish.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task.statusTask StatusBRead-only
Read one task or list recent task/session records.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, confirming safe read access. The description adds that it can read one or list recent records, but does not elaborate on what 'recent' means or any ordering/pagination behavior beyond the schema's limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action. Efficient but could benefit from a brief note on optional parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values are covered. However, for a tool with two parameters and no schema descriptions, the description lacks parameter semantics and usage context, making it marginally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters. It vaguely implies the optional taskId (for one task) and limit (for list), but does not describe their purpose, syntax, or effects in detail.
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 reads one task or lists recent task/session records. This specific verb-resource combination distinguishes it from sibling tools like task.finish or task.note which involve mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not specify that providing taskId retrieves a single task while omitting it lists recent records, nor does it mention any exclusion criteria or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test.detectDetect Test CommandsARead-only
Detect likely project test commands without running them.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true; the description adds 'without running them' reinforcing non-destructive nature, but does not disclose other behavioral traits like heuristics used or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 9 words, front-loaded with the action and key differentiator. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists (not shown), so return values are covered. However, description lacks detail on what 'detect' entails (heuristics, scope) and the word 'likely' introduces ambiguity. For a simple tool, it's barely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'projectPath' with 0% schema description coverage. Description does not add any meaning beyond the parameter name (e.g., what path it should point to, required format). Given low coverage, description should compensate but fails.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('detect') and resource ('project test commands') and adds 'without running them' to distinguish from the sibling 'test.run' which executes tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for inspection before running, but lacks explicit guidance on when to use this vs. alternatives like 'project.scripts' or 'shell.exec'. No exclusion criteria or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test.runRun TestsC
Run a detected or explicit test command in a project directory.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | ||
| command | No | ||
| timeoutMs | No | ||
| maxOutputBytes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| command | Yes | |
| exitCode | Yes | |
| stdout | Yes | |
| stderr | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond what annotations provide. Annotations indicate non-read-only and open-world, but the description does not elaborate on side effects, permissions, or execution guarantees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence) and front-loaded, but its brevity sacrifices informativeness. For a tool with four parameters, it omits essential details, making it under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has multiple parameters and an output schema, the description is incomplete. It does not explain input expectations, output format, or usage scenarios, leaving significant gaps in understanding despite the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should compensate by explaining parameters. It mentions 'detected or explicit test command' but does not describe 'projectPath', 'command', 'timeoutMs', or 'maxOutputBytes', failing to add meaningful semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and the resource 'test command' in a project directory. It distinguishes from sibling 'test.detect' by mentioning 'detected or explicit', making its purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'test.detect'. There are no exclusions or context cues, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace.addAdd WorkspaceC
Register a local project path with a short workspace name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| projectPath | Yes | ||
| makeDefault | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| createdAt | Yes | |
| updatedAt | Yes | |
| isDefault | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutable). The description adds no additional behavioral context, such as behavior when name conflicts, whether paths must exist, or side effects. This is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but it omits necessary details. It is front-loaded but not sufficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, output schema exists), the description is incomplete. It does not cover parameter descriptions, behavioral expectations, or return value semantics. The presence of an output schema reduces the burden for return value description, but input and behavior are underexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not explain any parameter semantics beyond what parameter names imply. The makeDefault parameter is not mentioned, and the name pattern constraint is not explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool registers a local project path with a workspace name, distinguishing it from sibling tools like workspace.list and workspace.resolve which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies usage for adding a workspace but does not provide context about prerequisites or cases where alternative tools should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace.listList WorkspacesARead-only
List registered local workspaces.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| workspaces | Yes | |
| defaultWorkspace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, and the description is consistent. However, the description does not add behavioral context beyond what annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, directly to the point with no unnecessary words. Perfectly concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an output schema, and simple purpose, the description is complete. No further context needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no parameters, so schema description coverage is 100%. With zero parameters, the description does not need to provide parameter details; baseline 4 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 clearly states the verb 'list' and the resource 'registered local workspaces', distinguishing it from sibling tools like workspace.add and workspace.resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies listing is for viewing registered workspaces, but lacks when-not and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace.resolveResolve WorkspaceARead-only
Resolve a workspace name to its project path. If name is omitted, resolves the default workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| createdAt | Yes | |
| updatedAt | Yes | |
| isDefault | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the default behavior beyond the readOnlyHint annotation, and there is no contradiction. It clarifies that the tool is non-destructive and returns a path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. The key information is front-loaded, and every sentence is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and an output schema, the description covers the main purpose and default case sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the single 'name' parameter by indicating it is optional and explaining the behavior when omitted, but does not specify expected format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Resolve' and the resource 'workspace name to its project path', which is specific and distinguishes from sibling tools like workspace.add or workspace.list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when name is omitted (default workspace) but does not explicitly state when to use this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
38 tool updates
v0.1.0- First observed
bridge.activity - First observed
bridge.health - First observed
bridge.logs - First observed
bridge.status - First observed
cloud.download - First observed
code.read - First observed
code.read_range - First observed
code.search - First observed
file.copy - First observed
file.delete - First observed
file.list - First observed
file.mkdir - First observed
file.move - First observed
file.patch - First observed
file.stat - First observed
file.write - First observed
git.checkpoint - First observed
git.diff - First observed
git.revert - First observed
git.status - First observed
port.check - First observed
process.list - First observed
process.start - First observed
process.stop - First observed
project.index - First observed
project.scripts - First observed
project.snapshot - First observed
service.restart - First observed
shell.exec - First observed
task.finish - First observed
task.note - First observed
task.start - First observed
task.status - First observed
test.detect - First observed
test.run - First observed
workspace.add - First observed
workspace.list - First observed
workspace.resolve
TDQS
Each tool targets a distinct operation within its domain (bridge, file, git, process, task, workspace, etc.). Even within similar domains like file operations, tools like copy, delete, list, mkdir, move, patch, stat, and write are clearly differentiated. No two tools appear to have overlapping purposes.
All tool names follow a consistent `domain.verb_noun` pattern using lowercase and underscores (e.g., `bridge.activity`, `file.copy`, `git.diff`). This pattern is uniform across all 38 tools, making it easy to predict tool names.
With 38 tools, the server's tool count is significantly higher than the typical well-scoped range (3-15). While each tool serves a distinct purpose, the sheer number may overwhelm agents and suggests the server could benefit from consolidation or modularization.
The tool set covers a wide range of local development workflows including file management, code reading, git operations, process management, task tracking, testing, and workspace management. Minor gaps exist, such as lacking a tool for editing file permissions or handling binary files, but these are non-essential and the core lifecycle is well-covered.
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
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
An MCP server that gives your AI access to the source code and docs of all public github repos
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 gradedqualityBmaintenanceA self-hosted MCP server that gives ChatGPT a secure connection to your local machine, enabling it to read, edit, search, and run code in your projects.2,058MIT
- AlicenseNot gradedqualityCmaintenanceA self-hosted MCP server that brings a Codex-style coding workflow to ChatGPT, allowing it to read, edit, search, and run code in your local projects.MIT
- FlicenseNot gradedqualityCmaintenanceAn unofficial self-hosted MCP server that enables ChatGPT to run commands on your computer through a secure tunnel, manage processes, and work within a specified project directory.1-
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/Harzva/chatgpt2localbridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server






