Causly Server
Builds and runs containers, views logs, manages images, executes commands, and works with Docker Compose.
Provides local Git operations such as status, diff, commit, branch, merge, stash, tags, and remotes.
Manages GitHub repositories, issues, pull requests, reviews, and Actions.
Finds failing GitHub Actions workflow runs, fetches failure logs, polls workflow status, and verifies CI fixes.
Searches, reads, sends, replies to, and forwards Gmail messages.
Manages Google Calendar events, checks free/busy times, finds meeting slots, and creates, updates, or deletes events.
Provides SEO keyword ideas, page audits, draft checks, and Search Console integration.
Lists, reads, creates, updates, and comments on Linear issues.
Runs MySQL queries and inspects database schemas.
Manages Notion pages, databases, blocks, and comments.
Manages Sentry projects and issues.
Interacts with Slack channels, messages, and threads.
Manages Supabase projects and organizations and runs SQL.
Sends Telegram alerts and reads messages sent to the user's bot.
Runs Terraform init, plan, and apply; manages state and workspaces; and creates PR plan comments.
Manages Vercel projects and deployments and performs HTTP health checks.
Causly Server
The open-source MCP server that turns any AI agent into your technical co-founder.
Most agents can write text. Causly Server gives them hands: they ship code, hunt for clients, track deals, take meeting notes, handle your calendar and remind you on Telegram, all from one conversation, all on your own machine.
npm install -g causly-server
causly-server initContents
Related MCP server: jt-mcp-server
Why Causly Server
A founder's week is not only code. It is also finding clients, following up, remembering what was promised in a call, and shipping without breaking things. Causly Server puts all of that behind one MCP server.
One server for build, sell, operate and grow. Git, GitHub, CI and deploys, but also leads, a sales pipeline, meeting notes, calendar, reminders and SEO.
Memory that survives the chat. Your pipeline, meetings and reminders live in a local SQLite file, so the agent can pick up tomorrow where it stopped today.
Local-first. Keys and data stay on your machine. There is no Causly cloud in the loop.
Safe by default. Risky actions need explicit confirmation, file access can be limited to one folder, and secrets are redacted from logs.
Light on your agent's context. Tools load in packs on demand instead of flooding the agent with hundreds of definitions.
One command setup.
initfinds Claude Desktop, Cursor and Windsurf and wires them up.
Quick start
Requires Node.js 20 or newer.
1. Install
npm install -g causly-server2. Connect your editors
causly-server initinit adds Causly Server to Claude Desktop, Cursor and Windsurf, whichever you have. It also prints the one-line command for Claude Code. Restart the editor afterwards.
3. Check everything
causly-server doctor4. Add keys for the services you use (optional)
causly-server setupFiles, git, shell, Docker and Terraform work with no keys at all. Add keys only for the services you want. Each key is checked live as you enter it.
Useful init options:
causly-server init --client cursor # pick editors instead of auto-detecting
causly-server init --workspace D:\my-project # limit file tools to one folder
causly-server init --toolsets research,pipeline,meetings # choose which packs load at startupWhat you can ask
"Find companies hiring React developers and add the best three to my pipeline."
"Save notes from my call with Acme: they want a demo next week, follow up on Friday."
"What is due this week? Include meeting action items and reminders."
"Prep me for my next meeting." (needs Google Calendar)
"Transcribe this recording and list the action items." (needs a Groq key)
"Ship this change: run the checks, open a pull request, tell me when CI is green."
"Audit this page for SEO and suggest keywords."
"Find a free slot on Thursday and create the event."
How it works
Your agent talks to Causly Server over MCP (stdio). Inside the server:
Tool router.
search_tools,load_toolsetanduse_toollet the agent find a tool and call it by name. Packs load on demand, anduse_toolworks even in editors that do not refresh their tool list mid-chat, so you do not need to restart.Safety layer. Permission levels, confirmation for risky actions, an optional workspace limit, secret redaction and an activity log.
Tool packs. About 230 tools grouped into packs (below).
Local store. SQLite for pipeline, meetings and reminders in
~/.causly, encrypted secrets, and your API keys in~/.causly/.env.Your services. GitHub, Vercel, Docker, Terraform, Postgres, Slack, Notion, Linear, Gmail, Google Calendar, Telegram and more, reached with your own keys.
Tool packs
These packs load at startup by default:
Pack | Tools | What it does |
files | 9 | Read, write, edit, copy, move and inspect files |
directory | 5 | List, create and delete directories; search file names |
command | 1 | Run shell commands with safety checks |
project | 7 | Detect project type and health; run build, tests, lint and typecheck |
research | 2 | Search the web and read pages as clean text |
leads | 3 | Find companies hiring (Hacker News, remote job boards) and public company contact details |
pipeline | 9 | Local sales pipeline: leads, deals, contacts, activity log, report, CSV export |
meetings | 9 | Transcribe recordings, save summaries, track action items, link to deals and calendar, prep for calls |
reminders | 3 | Follow-ups saved locally; ask what is due |
These load on demand, or you can add them to startup with causly-server toolsets add <name>:
Pack | Tools | What it does |
calendar | 8 | Google Calendar: events, free/busy, find meeting slots, create, update, delete |
gmail | 8 | Search, read, send, reply and forward |
telegram | 5 | Alert yourself, read messages sent to your bot |
seo | 4 | Keyword ideas, page audit, draft check, Search Console |
git | 20 | Status, diff, commit, branch, merge, stash, tags, remotes |
github | 27 | Repos, issues, pull requests, reviews, Actions |
workflow | 4 |
|
vercel | 11 | Projects, deployments, HTTP health checks |
docker | 18 | Build, run, logs, images, exec, Compose |
terraform | 20 | Init, plan, apply, state, workspaces, PR plan comments |
database | 8 | Postgres and MySQL queries and schema inspection |
supabase | 6 | Projects, organizations and SQL |
slack | 8 | Channels, messages and threads |
notion | 15 | Pages, databases, blocks and comments |
linear | 7 | List, read, create, update and comment on issues |
sentry | 8 | Projects and issues |
secrets | 6 | Encrypted local secrets store |
Manage startup packs:
causly-server toolsets # show what loads at startup
causly-server toolsets add github,gmail
causly-server toolsets remove seo
causly-server toolsets reset # back to the defaultsWorkflow tools
Single tools are building blocks. These combine them into verified outcomes:
ship_change: inspects changes, creates a branch, runs project checks, commits, pushes and opens a pull request.fix_ci: finds a failing GitHub Actions run and fetches the real failure output.verify_ci_fix: commits and pushes the fix, polls the workflow and confirms CI is green.deploy_project: checks health, runs tests and build, deploys, polls, and HTTP-verifies the live URL.
flowchart TD
A["You describe a task"] --> B["Agent edits files"]
B --> C["ship_change runs checks"]
C --> D["Commit, push, open PR"]
D --> E{"CI passes?"}
E -- "No" --> F["fix_ci gets failure logs"]
F --> G["Agent fixes the code"]
G --> H["verify_ci_fix pushes and confirms CI"]
H --> E
E -- "Yes" --> I["deploy_project deploys"]
I --> J["HTTP verification"]
J --> K["Shipped"]Configuration
Settings live in ~/.causly/.env (on Windows, C:\Users\<you>\.causly\.env). Manage them with the CLI instead of editing by hand:
causly-server setup # step by step, each key checked live
causly-server keys list # which keys are set (never the full value)
causly-server keys set NAME # hidden prompt
causly-server keys unset NAME
causly-server doctor --test # check every configured service liveChanges are picked up without restarting your editor.
Service | Variables | Notes |
GitHub |
| Fine-grained token: contents, issues, pull requests |
Vercel |
| Project must be Git-linked for deploys |
Supabase |
| Management API |
Slack |
|
|
Notion |
| Share each page or database with the integration |
Linear |
| Personal API key |
Sentry |
| Add |
Gmail |
| Run |
Google Calendar |
| Same Google client as Gmail |
Telegram |
| Create a bot with @BotFather, message it, then find your chat id with |
Groq (meeting transcription) |
| Free tier available. Audio is uploaded to Groq only when you confirm a transcription |
Secrets manager |
| 32-byte hex key you generate and keep |
Timezone (optional) |
| IANA name, e.g. |
Docker and Terraform need no key, only the CLI on your PATH. Postgres and MySQL take a connection string on each call. Transcribing recordings over 25 MB needs ffmpeg on your PATH.
Google setup (Gmail, Calendar, Search Console)
Google needs a one-time OAuth client that you own. It takes about five minutes.
Open Google Cloud Console and create or pick a project.
Enable the APIs you want: Gmail API, Google Calendar API, and optionally Google Search Console API.
Open Google Auth Platform. Under Branding, fill in the app name and your support email. Under Audience, choose External and add your own Google account as a test user.
Under Clients, choose Create client and pick Desktop app. A "Web application" client fails with
redirect_uri_mismatch. Copy the client ID and secret.Save them in Causly: run
causly-server setup, orcausly-server keys set GMAIL_CLIENT_IDandcausly-server keys set GMAIL_CLIENT_SECRET.Sign in once in your browser:
causly-server login google # Gmail and Calendar
causly-server login google all # also Search ConsoleAvoid the 7-day expiry. While your Google app is in Testing, Google expires the sign-in token every 7 days. Renew it any time with causly-server login google, or stop the expiry for good: in Google Auth Platform → Audience, click Publish app (In production). The Branding page from step 3 must be filled in first. For personal use you do not need Google verification; at sign-in you will see an "unverified app" warning, which is expected for your own client: choose Advanced, then continue.
Works with
Client | Setup |
Claude Desktop |
|
Cursor |
|
Windsurf |
|
Claude Code |
|
Any MCP client or agent framework | Spawn |
Tested with Claude Desktop, Cursor and Windsurf (the same use_tool call on a real repository in each), a plain JavaScript MCP client, and LangChain (JS) through @langchain/mcp-adapters.
A minimal custom agent in JavaScript:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const client = new Client({ name: "my-agent", version: "1.0.0" });
// Find the install folder with: npm root -g
await client.connect(new StdioClientTransport({
command: "node",
args: ["<npm-root>/causly-server/index.js"],
}));
const { tools } = await client.listTools(); // search_tools, load_toolset, use_tool, ...
const result = await client.callTool({
name: "use_tool",
arguments: { tool: "git_status", arguments: { repo_path: "." } },
});
console.log(result.content[0].text);Security and privacy
Causly can touch your files, repositories and infrastructure, so the controls live in the server itself. See SECURITY.md to report a vulnerability.
Permission levels. Every tool is
READ,LOW,MEDIUM,HIGHorDESTRUCTIVE.HIGHandDESTRUCTIVEactions (deploys, merges, shell commands, deletes, raw SQL, Terraform apply and destroy, Docker removal) need an explicitconfirm: true.Workspace limit.
causly-server init --workspace <folder>restricts file and command tools to one folder.Command risk checks. Drive wipes, formatting and shutdown commands are blocked. Force-pushes,
DROP TABLE,curl | bashandsudoare flagged.Path protection. Writes and deletes inside protected system directories are blocked.
Secret redaction. Tokens, passwords and API keys are redacted before anything is written to logs.
Local encrypted secrets. The built-in secrets manager uses AES-256-GCM with a key you control. No external vault needed.
Activity log. Every call is recorded in
logs/activity.logas structured JSONL (timestamp, operation ID, risk level, status, redacted input, duration).
Privacy. Causly Server has no Causly cloud and no Causly account. Your pipeline, meetings and reminders are stored in a local SQLite file, and your keys stay in ~/.causly/.env. Data leaves your machine only when you use a service you configured, for example GitHub, Gmail, Telegram, or Groq for transcription, and only to that service.
Optional BoundaryAttest receipts for ship_change, verify_ci_fix and deploy_project are described in the docs.
Command reference
causly-server Start the MCP server (your editor runs this)
causly-server init Set up Claude Desktop, Cursor and Windsurf
--client claude|cursor|windsurf|all
--workspace <folder>
--toolsets <list>
--no-setup
causly-server status One screen: editors, keys, pipeline, reminders, backup, updates
causly-server doctor [--test] Check your setup; --test also checks every key live
causly-server setup [service] Add API keys step by step
causly-server keys list | set NAME | unset NAME | open
causly-server login google [gmail,calendar,gsc|all]
causly-server toolsets [add|remove|reset]
causly-server backup [file] Save a copy of your pipeline, meetings and reminders
causly-server restore <file> [--yes] Put a backup back (current data is kept as a copy)
causly-server remove [--client <name>] Remove it from your editors
causly-server --versionTroubleshooting
Start with causly-server doctor. It tells you what is missing.
Problem | Fix |
| Open a new terminal so your |
Editor does not show the tools after | Quit the editor completely (including the system tray) and open it again. |
The agent cannot see a tool that is not loaded | Ask it to call the tool with |
Gmail or Calendar stopped working | Your Google token expired (7 days in Testing mode). Run |
| Your OAuth client is a "Web application". Create a Desktop app client instead. |
A reminder never reached Telegram | Set both |
Transcription fails on a large file | Install |
| Quit Claude Desktop, Cursor and any app using Causly Server, then run it again. |
A file or command is refused | A workspace limit may be on. Check |
FAQ
Is it free? Yes. It is MIT licensed, including for commercial use. The services you connect have their own pricing.
Does my data go to Causly? No. There is no Causly cloud in the loop. See Security and privacy.
Do I need every key? No. Add keys only for the services you use.
Which agents work with it? Any MCP client. It is tested with Claude Desktop, Cursor, Windsurf, a plain JavaScript client and LangChain (JS).
Why is my agent not calling a tool? It may be in a pack that is not loaded. Tell the agent to use use_tool, or add the pack with causly-server toolsets add <pack>.
How do I update? npm update -g causly-server. status and doctor tell you when a new version is out.
How do I back up my data? causly-server backup saves your pipeline, meetings and reminders to a file. causly-server restore <file> puts it back.
How do I remove it? causly-server remove takes it out of your editors. Then npm uninstall -g causly-server.
Is there a hosted version? Causly Hosted is in development. Join the waitlist.
Compatibility
Status | |
Node.js | 20 or newer |
Windows | Tested |
macOS and Linux | Expected to work; not yet tested on real machines. Reports welcome. |
Editors | Claude Desktop, Cursor, Windsurf (tested); Claude Code (command printed by |
Known limitations
vercel_create_deploymentanddeploy_projectneed the Vercel project to be Git-linked already.supabase_run_sqluses the Supabase Management API; some personal access tokens get a403for SQL.slack_search_messagesneeds a Slack user token with thesearch:readscope.docker_pushneeds registry authentication already configured on the host.Sentry
resolve_issue,ignore_issueandadd_commentneed a token with theevent:writescope.
Contributing, roadmap, license
CONTRIBUTING.md explains how to add a tool pack and the manual testing checklist. Please read the Code of Conduct too.
ROADMAP.md has what is planned next. CHANGELOG.md has release history.
License: MIT.
Want something custom built on this?
Need a custom MCP server, a specific integration, or a related service for your product or team? Reach out: nihal@causly.in
Causly Hosted
Do not want to run Causly Server yourself? Causly Hosted is a managed version, currently in development.
Available Tools
25 toolscopy_fileC
Copy a single file to a new location.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about overwrite behavior if the destination exists, permission requirements, or failure modes. 'Copy a single file' also leaves unclear whether only files (not directories) are allowed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is efficient, though the terseness contributes to the semantic gaps noted elsewhere.
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 mutation tool with no annotations, no output schema, and zero parameter documentation, the description is too thin. It omits overwrite semantics, destination path interpretation, and the return/error behavior an agent needs to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It implies a source file and a destination but never clarifies whether 'destination' is a full path, a directory, or whether it may overwrite an existing file.
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?
A clear specific verb plus resource (copy, single file) with the effect stated ('to a new location'). It implicitly separates itself from move_file by using 'copy', but never explicitly contrasts the two, so an agent must infer the distinction.
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 versus move_file, read_file+write_file, or create_file. No prerequisites or exclusions are stated, 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.
create_directoryB
Create a new directory, including any missing parent directories.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses recursive parent-directory creation, but it omits important mutation behavior such as what happens if the directory already exists, permission requirements, or failure 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 efficient sentence with the core action front-loaded. It contains no redundant or wasted wording.
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 one-parameter directory-creation tool, the description covers the core action and recursive parent behavior. However, it leaves out path semantics and existing-directory behavior, which matter because there are no annotations to fill those gaps and no output schema to clarify return 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%, and the description does not mention the single 'path' parameter or explain its expected format, relative/absolute behavior, or constraints. The schema only names the parameter, so the description fails to compensate for the missing semantic 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 states a specific verb and resource: 'Create a new directory.' It also adds scope by saying it creates missing parent directories, which clearly separates it from create_file, delete_directory, and other 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 does not explain when to use this tool versus alternatives such as create_file, write_file, or run_command. It also gives no conditions for when not to use it or what prerequisites are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_fileA
Create a brand-new file. Fails if the file already exists (use write_file to overwrite).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | No | Initial file content, defaults to empty |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the key failure mode: the call fails if the file already exists. However, it does not cover permissions, parent-directory behavior, side effects, or return 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?
Two short sentences with no waste. The creation behavior and the overwrite alternative are front-loaded and easy to scan.
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 two-parameter creation tool, the description covers the main selection decision and failure mode. But with no annotations and no output schema, it should say more about path expectations and what the caller gets back.
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 only 50%, and the required path parameter has no schema description. The tool description does not explain path format, absolute vs. relative paths, or parent-directory expectations, so it does not compensate for the 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 states a specific verb and resource: create a brand-new file. It also explicitly distinguishes this from write_file, which is the sibling tool used for overwriting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit condition for this tool: use it for a new file. It also names the alternative and its condition: use write_file to overwrite an existing file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_directoryA
Delete a directory. Recursive by default so it removes nested contents too. DESTRUCTIVE — requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| confirm | No | Must be true to proceed | |
| recursive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it declares the operation DESTRUCTIVE, discloses that recursion is the default so nested contents are removed, and states the confirm: true prerequisite. It does not address irreversibility, error behavior on missing paths, or permission requirements, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the destructive warning and confirm requirement front-loaded where an agent will read them before acting.
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 mutation tool with no annotations and no output schema, the description covers the critical concerns: what is destroyed, the recursion default, and the confirmation gate. Minor gaps remain around failure modes and whether recursion can be disabled safely, but an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only confirm is documented), and the description compensates meaningfully by stating that recursive defaults to true and that confirm must be true. 'path' is self-evident. It could still clarify whether recursive can be set to false to guard against non-empty directories.
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 first sentence names a specific verb and resource ('Delete a directory'), and the implicit contrast with the sibling delete_file is clear from the resource alone. It is not spelled out which sibling to prefer when, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource type, and the confirm gate hints at the intended workflow, but the description never says when to choose this over delete_file or what happens if you need non-recursive deletion. No explicit when-not or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileA
Delete a single file. DESTRUCTIVE — requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| confirm | No | Must be true to proceed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does the most important thing: flags the operation as DESTRUCTIVE in caps and requires an explicit confirm flag. However it never says whether deletion is permanent/irreversible, what happens on a missing path, or what permissions are needed — material gaps for a delete 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?
Two short sentences with zero filler, and the destructive warning is front-loaded right after the purpose statement. Nothing could be trimmed without losing meaning.
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 two-parameter destructive tool with no output schema and no annotations, the description covers purpose, safety warning, and the required guard flag. What remains missing is reversibility and failure behavior, which is a real but modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'confirm' is documented in the schema, while 'path' is undocumented. The description compensates for 'confirm' by restating the true-required constraint and lets 'a single file' imply that path targets a file rather than a directory, but adds no syntax for path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a single file'), and the qualifier 'single' implicitly separates it from the delete_directory sibling. It stops short of naming the sibling explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, but the description does state a hard precondition ('requires confirm: true') that governs invocation. That is enough to imply usage for an agent, though not enough to route it against delete_directory or move_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
directory_treeB
Recursively build a tree view of a directory's contents (skips node_modules and .git).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_depth | No | Maximum recursion depth, default 5 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses that node_modules and .git are skipped, which is real behavioral content. It omits other important traits: whether the operation is read-only (implied but unstated), what the tree output looks like, truncation or size limits on large directories, and permission failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the scope and the notable skip rule, and zero filler. Nothing is wasted and the key information leads.
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 two-parameter read tool with no annotations and no output schema, the definition covers purpose and skip behavior but says nothing about the shape of the returned tree or how large directories are handled. Adequate to call it, incomplete for predicting its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: max_depth is documented in the schema, but path has no description and the description only weakly implies it is a directory path. It says nothing about absolute vs relative paths, trailing slashes, or how max_depth interacts with the recursion, so it does not compensate for the coverage 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?
States a specific verb and resource: 'Recursively build a tree view of a directory's contents,' which clearly distinguishes it from flat listing. However, it never names list_directory or search_files as the alternative, so differentiation must be inferred.
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?
Recursion is the implied selection criterion versus list_directory, and the skip rules hint at scope, but there is no explicit when-to-use/when-not-to-use statement or named alternative. The agent must reason about when a recursive tree beats a flat listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_fileA
Edit a file via exact string find-and-replace, without rewriting the whole file. old_str must match exactly and be unique unless replace_all is set.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| new_str | Yes | Text to replace it with | |
| old_str | Yes | Exact text to find | |
| replace_all | No | Replace every occurrence instead of requiring uniqueness |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the exact-match requirement, default uniqueness, and replace_all override, but does not cover error behavior, whether the file must already exist, permissions, or mutation side effects beyond the replacement itself.
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 mechanism and followed by the critical matching constraint. Every sentence adds useful information with no waste.
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 mutation tool with no annotations and no output schema, the description covers the central mechanics but leaves important context unstated, including what happens when old_str is absent or non-unique and whether the file must already exist.
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 75%, so the schema already explains old_str, new_str, and replace_all. The description reinforces exact matching and uniqueness semantics for old_str and replace_all, but adds little about path or failure behavior, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: exact string find-and-replace editing of a file. It also distinguishes the approach from whole-file rewriting, which implicitly contrasts with sibling write_file, though it does not name that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'without rewriting the whole file' and by the exact-match/uniqueness requirement, but there is no explicit when-to-use guidance or named alternative such as write_file. The replace_all condition is explained, but broader selection criteria are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoB
Get metadata about a file or directory: size, type, created/modified timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It names some returned metadata fields, but it does not disclose permissions requirements, path resolution behavior, symlink handling, error behavior, or whether the operation is strictly read-only.
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 definition is a single front-loaded sentence with no wasted text. It efficiently states the action and the metadata categories returned.
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 one-parameter metadata tool, the description covers the basic purpose and return categories. However, with no annotations, no output schema, and no parameter documentation, it should say more about path semantics and error behavior to be fully self-contained.
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 single required parameter is named 'path' with 0% schema description coverage, and the description does not mention it at all. It does not clarify whether the path must be absolute or relative, whether it may point to either files or directories, or how invalid paths are handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get metadata about a file or directory,' and lists the metadata fields returned. It distinguishes metadata retrieval from content retrieval implicitly, but it does not explicitly name sibling alternatives such as read_file or list_directory.
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 intended use is implied: call this when metadata rather than file contents is needed. However, there is no explicit when-to-use guidance, no exclusions, and no comparison to siblings like read_file, list_directory, or search_files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryC
List the immediate files and subfolders inside a directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. "Immediate" usefully pins down non-recursion, but nothing is said about hidden files, symlink handling, permission errors on unreadable directories, ordering, or whether results are paginated — all real concerns for a filesystem listing 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?
A single front-loaded sentence with no filler, and the key scoping constraint ("immediate") appears before the resource is named.
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 no annotations and no output schema, the description is the only disclosure channel, yet it never says what the result looks like — plain names, full paths, typed entries, sizes? For a listing tool, the return shape is exactly what an agent needs to plan a follow-up call.
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 sole parameter 'path' is entirely undocumented in the schema. The description only implies it is a directory path; it says nothing about absolute vs relative paths, home expansion, or what happens on an invalid path, so it fails to compensate for the coverage 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?
States a specific verb (list) and resource (files and subfolders), with the qualifier "immediate" that signals non-recursive behavior. It does not name the sibling directory_tree, which is the tool an agent would need to contrast with for recursive traversal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance, and no prerequisites (does the path need to exist? absolute or relative?). The word "immediate" hints at the boundary versus directory_tree, but the agent must infer that rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_toolsetA
Load one or more toolsets (e.g. 'git', 'github', 'docker') so their tools become available. Use search_tools to discover toolset names.
| Name | Required | Description | Default |
|---|---|---|---|
| toolsets | Yes | Toolset names to load |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose the core effect (tools become available), but says nothing about persistence of the load, idempotency, whether it replaces or adds to the current toolset, or what happens for invalid names.
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, zero waste, with the action and its effect front-loaded and the discovery hint second. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no annotations, the description covers what it does, the input shape, and how to source inputs. A note on return behavior (which toolsets loaded, partial failure of unknown names) would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented, so the baseline is 3. The description adds real value beyond the schema by supplying concrete example identifiers ('git', 'github', 'docker') and pointing to search_tools as the source of valid names, and it makes clear the parameter is plural.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('load') and resource ('toolsets') plus the observable effect: 'so their tools become available.' This clearly separates it from the discovery sibling search_tools, which only finds names rather than activating tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use search_tools to discover toolset names' gives explicit routing for the prerequisite step, so an agent knows how to obtain valid input. It stops short of stating when loading is unnecessary (e.g., already-loaded toolsets) or what to do on an unknown name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileC
Move or rename a file or directory.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies mutation by saying 'Move or rename', but it does not disclose overwrite behavior, permission requirements, atomicity, or what happens when the destination already exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word contributes to stating the operation and supported resource types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although this is a simple two-parameter tool, it is a mutation operation with no annotations, no output schema, and no parameter descriptions. The definition is insufficiently complete for safe invocation because key operational behavior is left undocumented.
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?
Both parameters are required strings, but schema description coverage is 0%, and the description does not clarify source/destination semantics. It does not say whether paths may be relative, whether destination can be an existing file or directory, or how conflicts are handled.
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 gives a specific verb and resource: moving or renaming a file or directory. It is clear what operation is performed, but it does not distinguish itself from close siblings such as copy_file or delete_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus copy_file, delete_file, or write_file. It also does not explain important conditions such as whether the destination may already exist or whether cross-directory moves are supported.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_detectA
Detect a project's language, framework, and package manager by inspecting its manifest files.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does some work by disclosing the mechanism (inspecting manifest files), which implies a read-only filesystem operation. However it says nothing about behavior when no manifest is found, whether it recurses into subdirectories, how multiple language signals are resolved, or what form the result takes.
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?
One sentence, no filler, and the output of the operation (language/framework/package manager) is front-loaded before the mechanism. Nothing could be removed without losing 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?
There is no output schema and no annotations, but a single-parameter detection tool needs little more than this: the description tells the agent what it produces and how. The remaining gap is the shape of the return value (a single detected stack vs. multiple candidates) and fallback behavior on undetectable projects.
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% for the single parameter 'repo_path', and the description never mentions it — it only says 'a project's ... manifest files'. It does not clarify whether repo_path is an absolute filesystem path, a relative path, or a repository identifier, which is a meaningful ambiguity for a required argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Detect') plus the exact resources produced (language, framework, package manager) and the mechanism (manifest file inspection). This clearly separates it from adjacent siblings like project_info and project_health, which describe rather than detect.
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 purpose implies usage — call it when you need to know a project's stack — but there is no explicit 'use when' trigger, no mention of when to prefer project_info or project_health instead, and no prerequisites. The reader must infer the routing from the purpose sentence alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_healthB
Get a health snapshot of a project: git cleanliness/ahead-behind, whether dependencies are installed, and which env files are present.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load. It discloses the observable facets (git state, deps, env files), which implies a read-only inspection, but it omits cost/side-effect traits an agent would want: that it shells out to git and may probe dependency installation (potentially slow), and how it behaves if repo_path is not a git repo.
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?
One sentence, front-loaded with the verb and scope, with the three checked facets compactly enumerated. No filler, nothing to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only snapshot tool with no output schema, the description usefully serves as a partial return-value summary. But it leaves repo_path semantics and failure behavior undefined, which are the main things an agent needs in order to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter repo_path has 0% schema description coverage, so the description must compensate — and it says nothing about it. No indication of whether the path must be absolute, whether it must be a git root or any subdirectory, or whether a missing/invalid path errors out gracefully.
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?
Uses a specific verb plus resource ("Get a health snapshot of a project") and enumerates the concrete facets checked: git cleanliness/ahead-behind, dependency installation, env file presence. That makes the operation unambiguous, but it never contrasts itself with the plausible sibling look-alikes (project_info, project_detect), leaving the agent to infer which one covers health vs. general metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, no prerequisites, and no named alternative. Usage is only implied by the enumerated contents — an agent can reason that this is the diagnostic call, but nothing tells it when project_info or run_tests would be the better choice instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_infoB
Get structured project info: language, framework, package manager, resolved test/lint/typecheck/build commands, and current git branch/remotes.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does signal a read-style operation and, unusually, enumerates the returned fields, which substitutes for the missing output schema. It says nothing about behavior on a non-project directory, permission needs, or whether 'resolved commands' are computed dynamically.
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 dense sentence, front-loaded with the verb and immediately followed by the concrete field list. No filler, nothing to trim.
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 return-field enumeration is exactly what's needed given there is no output schema and no annotations. The remaining gap is the lone repo_path argument and edge-case behavior for non-project paths, which the description leaves entirely implicit.
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 never mentions repo_path, so it adds no meaning: absolute vs relative, whether it must be the repo root, or what happens if the path is not a project is unspecified. With a single undocumented parameter, the description should compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Get') and enumerates exactly what the resource contains: language, framework, package manager, resolved commands, and git branch/remotes. That enumeration distinguishes it from generic siblings like list_directory, but it never explicitly contrasts with the very similar project_detect or project_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus project_detect, project_health, or the individual run_tests/run_lint/run_build tools. An agent must infer from the field list alone that this is the discovery step before running commands.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileB
Read the full text content of a single file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file | |
| encoding | No | Text encoding, defaults to utf8 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses only that the entire content is returned; it says nothing about binary files, large-file handling, truncation, error behavior on missing paths, or 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?
A single front-loaded sentence with no filler; every word contributes to the stated 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?
There is no output schema and no annotations, so the description must explain the return shape and edge cases, yet it only says 'full text content'. Adequate for a simple read, but an agent cannot tell how to handle non-text files or failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'path' and 'encoding' documented in the schema, so the baseline of 3 applies. The description adds no detail about path resolution, encoding fallback, or defaults beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (a single file) with the scope 'full text content', which implicitly distinguishes it from read_multiple_files. It does not explicitly name any sibling, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'single file' implies this is the choice when one file is needed rather than many, but the description never states when to use this versus search_files, get_file_info, or read_multiple_files, and gives no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_multiple_filesB
Read multiple files in a single call. Failures on individual files do not stop the batch.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Array of absolute file paths | |
| encoding | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely useful trait: partial failures do not abort the batch. It stops short of stating whether failures are reported per-file, what the result shape is, how missing files surface, or whether encoding applies uniformly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the core capability leads and the failure-handling caveat follows. Nothing is padded or restated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain how per-file results and errors are returned for a batch read — that is the main thing an agent needs and it is absent. The failure-tolerance statement partially covers the behavioral gap, but the return contract remains undocumented.
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 only 50%: 'paths' is documented in-schema as an array of absolute paths, but 'encoding' has no schema description and the tool description adds nothing about it. The description mentions no parameters at all, so it does not compensate for the uncovered half.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read multiple files') plus the batch scope ('in a single call'), which is enough to separate it from the singular read_file sibling. It does not name that sibling explicitly, so the differentiation is inferred rather than stated.
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?
Batch usage is implied by 'multiple files in a single call', and the failure-tolerance note hints at the batching rationale. However, there is no explicit guidance on when to prefer this over repeated read_file calls, nor any precondition such as path absoluteness being required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_buildB
Detect and run the project's build command, returning stdout/stderr/exit_code.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | ||
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the return contract (stdout/stderr/exit_code) and that the command is auto-detected, but says nothing about side effects (build artifacts written to disk), blocking duration, or what happens when detection fails or the timeout fires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states action, detection behavior, and return payload with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers what the tool does and returns for a simple two-parameter tool, but with no annotations, no output schema, and 0% parameter coverage it leaves the timeout and side-effect behavior undocumented.
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 never mentions any parameter. Neither repo_path (which directory the build runs in) nor timeout_ms (how long before the build is killed) is explained, so the agent gets no semantics beyond the bare schema 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?
States a specific verb+resource ('run the project's build command') and adds auto-detection plus the return payload (stdout/stderr/exit_code). It implicitly separates itself from run_tests/run_lint/run_typecheck by naming the build step, though it never explicitly contrasts with the generic run_command sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for compiling/building a repo. It never states when to prefer it over run_tests, run_command, or project_detect, and offers no preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_commandA
Run a shell command in a given working directory (npm install, npm run build, pip install, tests, etc.). A short list of catastrophic patterns (drive wipes, format, shutdown) is blocked; everything else executes with full permissions. HIGH risk — requires confirm: true.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory to run the command in | |
| command | Yes | The shell command to run | |
| confirm | No | Must be true to proceed | |
| timeout_ms | No | Timeout in ms, default 60000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that commands execute with full permissions, that only a short list of catastrophic patterns is blocked, and that a confirmation flag is mandatory. Missing are return semantics (stdout/stderr/exit code handling) and timeout/termination behavior, which matter for a shell executor.
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 tight sentences, front-loaded with the action and scope, followed by the safety/blocklist behavior and the confirm gate. No filler, and the risk warning is placed where it will be read before invocation.
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 high-risk, no-annotation, no-output-schema command executor, the description is adequate on safety but incomplete on results: it never says what the agent gets back (captured stdout, stderr, exit status, truncation) or how timeouts surface. It also omits routing guidance against the dedicated build/test/lint siblings, which is a real gap given this list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds genuine value by explaining why 'confirm' exists (HIGH risk gate) rather than just restating the schema's 'Must be true to proceed'. It says nothing extra about cwd or timeout_ms, but the schema already documents those fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Run a shell command in a given working directory') with concrete example activities, so the agent knows exactly what it does. It does not, however, differentiate itself from siblings like run_tests, run_build, run_lint, or run_typecheck, even though its own examples (tests, build) overlap with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly signals high risk and the 'confirm: true' prerequisite, and notes that most commands are allowed while a blocklist is refused. But there is no explicit when-to-use guidance versus the dedicated run_tests/run_build/run_lint siblings, and no guidance on when to prefer those instead; usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_lintC
Detect and run the project's lint command, returning stdout/stderr/exit_code.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | ||
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses return values (stdout/stderr/exit_code) and mentions detection, but it omits side effects, timeout behavior, permissions, and what happens if no lint command is found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the core action and return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command-execution tool with no annotations, no output schema, and 0% parameter description coverage, the description is incomplete. It mentions return values but leaves timeout semantics, failure cases, and parameter meanings undocumented.
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% for both parameters. The phrase "project's lint command" vaguely implies repo_path, but timeout_ms is completely unexplained. The description adds minimal meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: detect and run the project's lint command. It is clear what the tool does, but it does not differentiate itself from sibling tools like run_command, run_tests, run_typecheck, or run_build.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as run_command or project_health. It only implies usage for linting, without when-not conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_testsB
Detect and run the project's test command, returning stdout/stderr/exit_code.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | ||
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it does disclose the return payload (stdout/stderr/exit_code), which is real value given there is no output schema. However it omits execution semantics that matter for a process-spawning tool: what command gets detected, the working directory used, the default timeout, and what happens when the timeout fires or the command fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence stating the action and its return shape with zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero annotations, 0% parameter coverage, and no output schema, the definition covers the action and return values but leaves execution-side behavior (detection source, timeout handling, failure modes) and the meaning of timeout_ms undocumented for an operation that spawns a process.
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% for both parameters, and the description explains neither. repo_path is guessable, but timeout_ms is unaddressed—no default, units beyond the name, or behavior on expiry—leaving the agent to guess at semantics the schema does not document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb+resource ('Detect and run the project's test command') and implies auto-detection, which distinguishes it from the generic run_command and from the parallel run_lint/run_typecheck/run_build siblings. It stops short of naming any alternative explicitly, so the differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over run_command, run_build, or run_lint, and no prerequisites such as whether dependencies must be installed or whether project_detect should be called first. The agent must infer the whole usage context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_typecheckB
Detect and run the project's typecheck command, returning stdout/stderr/exit_code.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | ||
| timeout_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full load. It discloses the return shape (stdout/stderr/exit_code), which is useful, but says nothing about side effects of executing a project command, permission/tooling requirements, what happens when no typecheck command is detected, or timeout 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 front-loaded sentence with no filler; the action and return value come first.
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 an execution tool with no annotations, no output schema, and fully undocumented parameters, the description is too thin. It should at least cover repo_path semantics, timeout behavior, and what happens when detection fails.
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% for both parameters. The description adds nothing about repo_path (presumably the project root to inspect) or timeout_ms (units, default, behavior on expiry), leaving an agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain ('detect and run') plus the exact resource ('the project's typecheck command') and the return payload. The word 'typecheck' immediately distinguishes it from sibling commands like run_tests, run_lint, and run_build.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the tool name and verb; the description never says when to reach for this versus run_tests, run_lint, or a generic run_command. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesC
Recursively search for files/folders whose name contains a given pattern (case-insensitive).
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| root_path | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the match is recursive, name-only (not content), and case-insensitive — but says nothing about hidden files, permission errors, result ordering, or whether max_results truncation is signaled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the matching semantics are stated up front. It is lean to the point of under-specification, but no sentence is wasted.
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 three-parameter tool with zero annotation coverage, no output schema, and 0% schema description coverage, the description leaves too much open: max_results behavior, root_path expectations, and result shape are all unaddressed.
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 there are three parameters, yet the description explains only 'pattern' (substring, case-insensitive). root_path and especially max_results are left completely undefined in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Recursively search for files/folders') plus the matching semantics ('name contains a given pattern', case-insensitive). An agent can distinguish this from list_directory or directory_tree, though the description never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not guidance and no mention of alternatives such as list_directory, directory_tree, or read_file. The recursive-by-name scope only implicitly suggests when this tool is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsA
Find tools by keyword across ALL toolsets, including ones not loaded yet. Call with no query to list every toolset.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matches (default 15) | |
| query | No | Keywords, e.g. 'pull request' or 'docker logs' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key non-obvious behavior that results span unloaded toolsets, but it says nothing about how matches are ranked, what a result contains, or that the search itself does not load anything. The default limit lives only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, the scope constraint front-loaded, and the empty-query behavior second. Nothing is wasted and nothing needs to be re-read.
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 two-optional-parameter search tool with no output schema, the description is nearly sufficient: the agent knows what it searches and what an empty query does. The one real gap is that the shape of a match (tool name plus description? a handle for use_tool?) is never hinted at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description earns a bump by explaining the semantics of the optional query parameter: omitting it lists every toolset rather than returning nothing, which the schema's 'Keywords' wording does not imply.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (tools) and pins the scope: across ALL toolsets, including ones not loaded yet. That scope statement is exactly what distinguishes it from siblings like load_toolset and use_tool, which also deal with tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit usage mode: call with no query to list every toolset. It doesn't name the natural follow-up alternatives (load_toolset to load a hit, use_tool to invoke one), which would complete the routing story, but the when-to-use signal is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_toolA
Call any tool by name, even one that is not in your tool list yet (its toolset loads automatically). Use this when load_toolset says your client may not show new tools. Set describe=true to see a tool's parameters first.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Tool name, e.g. github_list_issues | |
| describe | No | Only show the tool's parameters, do not run it | |
| arguments | No | The tool's arguments as an object |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose key behavior: it can invoke tools not in the current list and automatically loads the relevant toolset. However, it does not explain what happens on tool errors, whether the underlying tool's side effects apply, or how results are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then the triggering condition, then the describe flag. No 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?
For a meta-invocation tool with no annotations and no output schema, the description covers the essential behavior: arbitrary tool invocation, automatic toolset loading, and parameter discovery via describe=true. Minor gaps remain around error/return behavior, but the critical calling guidance is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters. The description adds useful context for describe=true ('to see a tool's parameters first'), but otherwise the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: call any tool by name, including tools not yet listed. This clearly separates it from tools like search_tools (discovery) and load_toolset (loading), since use_tool is explicitly the invocation path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use this when load_toolset says the client may not show new tools, and set describe=true to inspect parameters first. It does not explicitly state when not to use it or name search_tools as an alternative, but the triggering condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileB
Create or completely overwrite a file with new content. Creates parent directories if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully states that existing content is completely overwritten and that parent directories are created, but it omits permission requirements, error behavior, encoding assumptions, and return semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words, and the key behavior—overwrite plus parent-directory creation—is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description covers the essential operation and directory behavior. It is still missing enough safety and return-context detail for a fully complete definition.
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 schema provides only parameter names and types. The description mentions 'file' and 'content' but does not clarify path format, whether content is raw text, encoding, or how existing file content is replaced.
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 gives a specific verb and resource: create or completely overwrite a file with new content. It also notes parent-directory creation. It does not explicitly distinguish itself from sibling tools like create_file or edit_file, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool instead of edit_file, create_file, or read_file. The phrase 'completely overwrite' hints that it is not for partial edits, but the agent must infer that from the wording.
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.
25 tool updates
v1.5.3- First observed
copy_file - First observed
create_directory - First observed
create_file - First observed
delete_directory - First observed
delete_file - First observed
directory_tree - First observed
edit_file - First observed
get_file_info - First observed
list_directory - First observed
load_toolset - First observed
move_file - First observed
project_detect - First observed
project_health - First observed
project_info - First observed
read_file - First observed
read_multiple_files - First observed
run_build - First observed
run_command - First observed
run_lint - First observed
run_tests - First observed
run_typecheck - First observed
search_files - First observed
search_tools - First observed
use_tool - First observed
write_file
TDQS
Scored across 25 tools
Most tools have clearly distinct purposes, especially the file CRUD/search operations and the run_* wrappers. A few boundaries are fuzzy: project_detect vs project_info overlap, and run_command overlaps with run_tests/run_lint/run_typecheck/run_build. search_tools, load_toolset, and use_tool are related but distinguishable.
All names use snake_case, giving a predictable surface. However, the pattern is not strictly verb_noun: directory_tree, project_info, project_health, and project_detect are noun-ish phrases while most others follow verb_noun. The deviation is minor and still readable.
Twenty-five tools is at the heavy end for this server, even though it spans filesystem operations, project automation, and dynamic toolsets. Some consolidation is possible, especially project_detect/project_info/project_health and the four run_* wrappers around run_command. The count is borderline rather than clearly wrong.
The filesystem surface covers create, read, write, edit, move, copy, delete, list, tree, search, and metadata, which is strong CRUD coverage. Project automation covers detection, health, test/lint/typecheck/build execution, and arbitrary commands. Minor gaps include directory copy and built-in git operations, though load_toolset can extend coverage.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceProduction-grade MCP server that gives AI agents safe access to your local dev environment: filesystem, databases, processes, and OpenAPI specs.1533 npm3MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that equips AI agents with dev workflow tools including GitHub project management, conventional commits, visual regression testing, Jira/Confluence integration, and a persistent memory knowledge graph.46 npmMIT
- FlicenseAqualityCmaintenanceMCP server that enables AI assistants to run multi-step agent pipelines (e.g., Issue Analyst → Code Writer → Test Runner → PR Opener) from conversations, with support for Devin, shell, Python, and HTTP agents.7-
- AlicenseNot gradedqualityDmaintenanceA free, open-source MCP server that gives AI agents real filesystem, terminal, git, and process control over your machine for inspection, diagnosis, and repair.MIT