token-pilot
Token Pilot is a token-efficient AI coding assistant MCP server that reduces context consumption by 60–95% compared to native tool calls (Read, Grep, git diff) through structural, semantic alternatives.
Code Reading & Editing
smart_read/smart_read_many— Read file structure (classes, functions, signatures) instead of raw content; batch across up to 20 filesread_symbol/read_symbols— Read one or multiple symbols by name without loading the whole fileread_range/read_section— Read a specific line range or document section (Markdown heading, YAML/JSON key)read_for_edit— Get exact raw code around a symbol, optimized for pasting into edit toolsread_diff— View only changed hunks after edits instead of re-reading the file
Project Exploration & Architecture
project_overview— Project type, framework, architecture, CI, and directory map in one calloutline/explore_area— List all symbols per directory, or combine outline + imports + tests + recent git changesexplore— One-shot ranked context + call/inheritance blast-radius for a search queryrelated_files— Ranked import graph (imports, importers, tests) scored by relevancemodule_info/module_route— Analyze module dependencies, public API, unused deps, or transitive import paths between two modules
Symbol & Reference Analysis
find_usages— Semantic symbol references grouped by definitions, imports, and usagescall_tree— Recursive depth-N caller/callee hierarchyfind_unused— Dead code detection (functions, classes, variables with no references)
Git Integration
smart_diff— Diffs with AST symbol mapping showing which functions/classes changed (up to 95% token savings)smart_log— Structured commit history with category detection, file stats, and author breakdown
Code Quality & Testing
code_audit— Find TODOs/FIXMEs, deprecated symbols, and structural patterns (bare excepts, print calls) project-widetest_summary— Run tests and get a structured pass/fail/skip summary (supports pytest, jest, vitest, go test, cargo test, and more)
Session Management
session_analytics— Token savings report with per-tool breakdown, top files, and cache hitssession_snapshot— Compact (<200 token) markdown snapshot of current session statesession_budget— Diagnostic report on Read-hook pressure, suppressed tokens, and burn fraction
PreToolUse Hooks intercept heavy native calls (Read, Grep, Bash git diff) and redirect them to token-efficient alternatives automatically. tp-* subagents (Claude Code only) provide budget-enforced AI delegates for specialized coding tasks.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@token-pilotoutline main.ts with smart_read"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Token Pilot
Token-efficient AI coding, enforced. Cuts context consumption in AI coding assistants by up to 90% without changing the way you work.
Why it matters more now: as frontier models move up in price, the tokens you don't spend reading code are worth more, not less. The savings are in tokens; the value is in tokens × price. Token Pilot keeps the expensive main thread lean so the premium model spends its budget on reasoning, not on re-reading files.
Three layers, each useful on its own, stronger together:
MCP tools — structural reads (
smart_read,read_symbol,read_for_edit, …). Ask for an outline or load one function by name instead of the whole file.PreToolUse hooks — intercept heavy native tool calls (
Readon large files, recursiveGrep, unboundedgit diff) and redirect to token-efficient alternatives.tp-*subagents — Claude Code delegates with MCP-first behaviour and tight response budgets.
How It Works
Traditional: Read("user-service.ts") → 500 lines → ~3000 tokens
Token Pilot: smart_read("user-service.ts") → 15-line outline → ~200 tokens
read_symbol("UserService.updateUser") → 45 lines → ~350 tokens
After edit: read_diff("user-service.ts") → ~20 tokensFiles under 200 lines are returned in full — zero overhead for small files.
Benchmarks
Measured on public open-source repos. Files ≥50 lines only:
Repo | Files | Raw Tokens | Outline Tokens | Savings |
token-pilot (TS) | 55 | 102,086 | 8,992 | 91% |
express (JS) | 6 | 14,421 | 193 | 99% |
fastify (JS) | 23 | 50,000 | 3,161 | 94% |
flask (Python) | 20 | 78,236 | 7,418 | 91% |
Total | 104 | 244,743 | 19,764 | 92% |
smart_readoutline savings only. Real sessions additionally benefit from session cache,read_symbol, andread_for_edit. Reproduce:npx tsx scripts/benchmark.ts.
Related MCP server: cctx-mcp
Quick Start
npx -y token-pilot initCreates (or merges into) .mcp.json with token-pilot + context-mode, then prompts to install tp-* subagents. Restart your AI assistant to activate.
What You Get
25 MCP tools — structural reads, symbol search, git analysis, module routing, session analytics → tools reference
PreToolUse hooks — block heavy
Grep/Bash/Readcalls; redirect to efficient alternatives → hooks & modes25
tp-*subagents (Claude Code only) — MCP-first delegates with haiku/sonnet model tiers and budget enforcement → agents referenceTool profiles — trim advertised
tools/listto save ~2 k tokens per session → profiles & config
Client Support Matrix
Client | MCP tools | PreToolUse hooks |
|
Claude Code | ✅ | ✅ | ✅ |
Cursor | ✅ | ✅ | ❌ |
Codex CLI | ✅ | ✅ | ❌ |
Gemini CLI | ✅ | ✅ | ❌ |
Cline (VS Code) | ✅ | ✅ | ❌ |
Antigravity | ✅ | ✅ | ❌ |
Manual config snippets for each client → installation guide
Enforcement Mode
TOKEN_PILOT_MODE controls how aggressively Token Pilot redirects heavy native tool calls:
Value | Behaviour |
| Allow all — hooks pass through, advisory notes only |
| Block heavy |
| Deny + auto-cap MCP output ( |
TOKEN_PILOT_MODE=strict npx token-pilotEcosystem
Token Pilot owns input tokens — the stuff Claude reads from files, git, search. The other half of a session (what Claude writes back, how it executes code, how it remembers state across days) is owned by separate tools. They compose cleanly:
Tool | Owns | Typical savings |
Token Pilot | code reads, git, search | 60-90% input |
Claude's response prose (terse-speak skill) | ~75% output | |
the structural indexer Token Pilot rides on | foundation | |
sandboxed shell / python / js execution | 90%+ on big stdout |
A session that pairs token-pilot + caveman typically hits ~85-90% total reduction — each cuts a different half, no overlap. Install what you need; none of them assume the others are present.
Rules of thumb: read code → smart_read/read_symbol; execute code with big output → context-mode execute; bash-only agent → ast-index CLI. Never copy the whole stack into CLAUDE.md — Token Pilot's doctor warns when CLAUDE.md exceeds 60 lines.
Supported Languages
TypeScript, JavaScript, Python, Go, Rust, Java, Kotlin, C#, C/C++, PHP, Ruby. Non-code (JSON/YAML/Markdown/TOML) gets structural summaries. Regex fallback handles most other languages.
Update / New Machine
Claude Code (plugin — recommended):
# Install on a new machine:
claude plugin marketplace add https://github.com/Digital-Threads/token-pilot
claude plugin install token-pilot@token-pilot
# Update to latest:
claude plugin update token-pilotOther clients (Cursor, Codex, Cline, …):
# Install on a new machine:
npx -y token-pilot init
# Update to latest — npx always pulls fresh, just restart your client.
# Or if installed globally:
npm i -g token-pilot@latest
npx token-pilot install-hook
npx token-pilot install-agents --scope=user --forceTips for Claude Code 2.1.139+
The May 2026 Claude Code update changed a few things that affect how token-pilot is invoked. Nothing breaks on older versions — these are quality-of-life notes for the newer ones.
Run a tp-* agent directly without the
plugin:prefix.claude --agent tp-debugger "fix the stack trace"now works the same as--agent token-pilot:tp-debugger. The Task tool dispatcher resolves the short name automatically.Cold ast-index calls — raise
MCP_TOOL_TIMEOUT. The firstfind_usages/outline/read_symbolon a large repo triggers an index build. Default per-MCP-tool timeout (60 s) is enough for ~50k-file repos; bigger ones benefit fromMCP_TOOL_TIMEOUT=120000in~/.claude/settings.json. Subsequent calls hit the cache and return in ~50 ms.Background sessions with
--mcp-config. Dispatching a worker viaclaude agentsor--bgwith--mcp-config /path/to/other.jsonswaps the MCP set for that session. Iftoken-pilotis not in the override config, MCP tools (smart_read,find_usages, …) are unavailable in that worker even though the hooks (Read / Edit / Bash / Grep / Task) still fire — hooks are project-level, MCP tools are session-level. Addtoken-pilotto the override config or skip--mcp-config.claude plugin details token-pilot. Shows the projected per-turn token cost, the hook event names, and the MCP server entry. The skill list, the agent list, and the LSP list are all auto-discovered from the canonical sub-folders.
Power-user — undocumented Claude Code features that pair with token-pilot
These fields come from reverse-engineering @anthropic-ai/claude-code@2.1.87
source (see the May 2026 Habr write-up). They work today but are
not in the official Claude Code docs, so use at your own risk.
Persistent agent memory (memory: project)
Every relevant tp-* agent (onboard, debugger, pr-reviewer,
history-explorer, audit-scanner) now ships with memory: project
in its frontmatter. Claude Code persists the agent's working notes
in the project so the agent gets faster on repeat invocations —
tp-onboard remembers your layout, tp-pr-reviewer remembers your
flagged patterns, etc. v0.35.0+.
Required MCP gating (requiredMcpServers)
Every tp-* agent declares requiredMcpServers: ["token-pilot"].
Claude Code refuses to load the agent when the MCP server isn't
configured, so a stale install never produces a "tools not found"
loop. v0.35.0+.
Bootstrap-once hook (once: true)
The plugin ships a SessionStart hook flagged once: true —
Claude Code runs it once per project then auto-removes the entry.
It surfaces friendly hints when install-agents or
install-ast-index hasn't been run yet. v0.35.0+.
Async telemetry (async: true)
PostToolUse hooks (Bash, Task) are marked async: true so they
no longer add wall-clock to the hot path — telemetry writes fire
in the background.
Auto-mode permissions (user-side)
If you want full auto-approval for safe commands, the YOLO classifier reads natural-language environment descriptions:
{
"autoMode": {
"allow": ["Bash(git status)", "Bash(npm test)", "Read", "Grep"],
"soft_deny": ["Bash(git push *)", "Bash(rm *)", "Write(.env)"],
"environmentDescription":
"This is a development laptop. Read-only ops are safe; deny anything touching credentials or production."
}
}token-pilot's enforcement still runs on top (raw Read on large files is denied first, regardless of autoMode).
Permission rule syntax cheat-sheet
Bash(npm *) # wildcard after "npm "
Bash(git commit *) # specific subcommand
Read(*.ts) # extension
Read(src/**/*.ts) # recursive + extension
Write(src/**) # recursive all files
mcp__token-pilot # all token-pilot MCP tools
mcp__token-pilot__smart_read # one specific MCP tool* matches inside word boundaries (shell-glob); ** is recursive.
The if field on hooks uses the same syntax.
Experimental: transparent Read rewrite
Set TOKEN_PILOT_HOOK_REWRITE=1 to swap the "deny + suggest" Read
hook behaviour for an updatedInput rewrite — Claude Code's
undocumented field that silently bounds the Read to its first 200
lines instead of bouncing the call. The structural summary still
rides along in additionalContext. Default OFF because the field
is undocumented and may change.
Experimental: SubagentStop budget feedback (CC 2.1.163+)
Every subagent completion already lands a task-telemetry row via the
SubagentStop hook (that's how stats --tasks knows what you
dispatched). With TOKEN_PILOT_SUBAGENT_FEEDBACK=1 the same hook also
returns additionalContext — when a token-pilot workflow fan-out is
at ≥90 % of its token ceiling, each completing agent gets a wind-down
note so a hundred-agent /workflow run stops before blowing the
budget.
Requires Claude Code 2.1.163+. Returning additionalContext from
SubagentStop is only honoured there; older Claude Code labels it a
hook error. Default OFF for that reason — enable only once
claude --version reports 2.1.163 or later.
What's new for Claude Code 2.1.151+
These notes are about behaviour you'll see automatically once you
update both Claude Code and token-pilot@latest. No extra
configuration required.
Session title badge ([TP] Nk saved)
The SessionStart hook now sets the window/tab title to the cumulative
token savings for the current project, using Claude Code 2.1.152's
hookSpecificOutput.sessionTitle field. You'll see a badge like
[TP] 1.2M saved in the title bar so you can confirm at a glance
that the plugin is doing its job.
Hardened skills (disallowed-tools)
The three bundled skills (guide, install, stats) declare
disallowed-tools (Claude Code 2.1.152+) so a runaway model can't
issue Write / Edit / Task while the skill is on display. The
install skill keeps Bash because it has to run
npx token-pilot install-ast-index; the other two have Bash
disallowed too.
Auto mode on third-party providers
Claude Code 2.1.158 opened auto mode to Bedrock / Vertex / Foundry
on Opus 4.7 + 4.8. If you're on one of those, opt in with
CLAUDE_CODE_ENABLE_AUTO_MODE=1. token-pilot's deny-Read /
deny-Bash gates still run on top — auto mode never bypasses them.
Opus 4.8 as fast-mode default
Claude Code 2.1.154 made Opus 4.8 the default for high effort. The
tp-* agents that already declared model: haiku keep their cheaper
tier (90 %+ of the agent roster); the few sonnet/opus-tier ones
ride the upgrade automatically.
Fleet workflows (v0.38.0)
When you fan a task across many subagents — via Claude Code's
/workflow, the Agent tool, or your own orchestration — token-pilot
can treat the whole run as one budgeted, telemetry-tagged unit.
token-pilot owns the workflow boundary, so this works regardless of whether Claude Code propagates a workflow id. You wrap the batch:
# Start a workflow — prints an export line you eval into your shell
eval "$(token-pilot workflow start "review every PR from last sprint" --budget=2000000)"
# ...now run your fan-out work. Every hook event is tagged with the
# workflow id automatically (TOKEN_PILOT_WORKFLOW_ID is set).
token-pilot workflow status # live budget + task counts
token-pilot workflow list # all recorded workflows
token-pilot workflow end # stamp it finished + print summaryWhile a workflow is active:
Every
event:"task"/denied/diagnosticrow inhook-events.jsonlcarriesworkflow_id, so you can slice one fan-out run out of the global log.The PreToolUse:Task hook watches the token ceiling. At ≥90 % it appends a wind-down note to its routing advice ("finish in-flight work rather than starting new branches") and logs a
workflow_near_budgetdiagnostic — visible inworkflow status. Dispatch is never hard-blocked on budget (a half-finished fan-out is worse than a small overrun).The window title switches to
[TP] wf · N tasks · X%so a long run shows live progress.
Claude Code's own /workflow (2.1.154+) does not expose a
per-workflow id env var to subagents (verified against the 2.1.161
bundle — it has only a CLAUDE_CODE_WORKFLOWS feature flag). So
token-pilot's workflows are independent: they rely on our own
TOKEN_PILOT_WORKFLOW_ID. If CC adds a per-workflow env var later,
activeWorkflowId() already probes for it — no config change needed.
Troubleshooting
npx token-pilot doctor # diagnose: ast-index, config, upstream drift
# "ast-index not found" → npx token-pilot install-ast-index
# "hooks not firing" → restart your AI assistantCredits
Built on ast-index · @ast-grep/cli · MCP SDK · chokidar
License
MIT
Available Tools
25 toolscall_treeA
Recursive depth-N call hierarchy for a function. Shows who calls who transitively — complements find_usages (flat one-level refs) by revealing full chains from leaf helpers to entry points. Use for debugging, refactor impact, and verifying reachability.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Function / method name, unqualified (e.g. `fetchUser`). | |
| depth | No | Walk-up depth. Default 3, max 6. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses recursive behavior, depth constraint (default 3, max 6), and transitive nature. However, does not explicitly confirm read-only status, performance implications, or side effects, which would be expected for a recursive 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?
Three sentences, front-loaded with purpose, then behavioral detail, then use cases. No redundant phrases; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should clarify what the tool returns. It mentions 'call hierarchy' and 'full chains' but not format (tree, list?). Otherwise complete for selection: depth limit, relationship to sibling, use cases.
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 schema already describes parameters. Description adds context about depth (walk-up, default, max) and purpose (leaf helpers to entry points), but this is marginal beyond schema. 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?
Description clearly states the tool generates a recursive depth-N call hierarchy for a function, distinguishing it from the sibling find_usages (flat one-level refs). Specific verb 'shows' and resource 'call hierarchy' with transitive property.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States specific use cases (debugging, refactor impact, verifying reachability) and explicitly complements find_usages. Lacks explicit when-not-to-use or alternatives beyond the one mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_auditA
Find code quality issues: TODO/FIXME comments, deprecated symbols, structural code patterns (bare except:, print() calls). Use for project-wide audits.
| Name | Required | Description | Default |
|---|---|---|---|
| check | Yes | What to check: "pattern" (structural search via ast-grep, e.g. "except:", "print($$$ARGS)"), "todo" (TODO/FIXME comments), "deprecated" (deprecated symbols), "annotations" (find by decorator name), "all" (todo + deprecated summary) | |
| pattern | No | Code pattern for check="pattern". ast-grep syntax: "except:" finds bare excepts, "print($$$ARGS)" finds print calls. | |
| name | No | Decorator/annotation name for check="annotations". Example: "Deprecated", "Controller" | |
| lang | No | Language filter for check="pattern" (e.g., "python", "typescript") | |
| limit | No | Max results (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It lists the types of checks but does not disclose whether the tool is read-only, its potential impact, or any prerequisites like permissions, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and every sentence adds value without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool performs project-wide audits with no output schema, the description does not specify the return format (e.g., file paths, line numbers, severity) which would help the AI interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions and enum values for all 5 parameters, so the description adds minimal additional meaning. The examples of 'bare except:' and 'print() calls' are also covered in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds code quality issues like TODO/FIXME comments, deprecated symbols, and structural patterns, which distinguishes it from sibling tools like find_usages or outline that serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description recommends 'Use for project-wide audits,' providing clear context. However, it does not explicitly state when not to use it or mention alternatives among the extensive sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exploreA
One-shot ranked context + call/inheritance graph blast-radius for a query. Returns ranked symbols, the source heads of the top-ranked files, graph neighbours (callers + subclasses — the blast radius), and related test files in a single compact block. Use INSTEAD OF separate find_usages + read_symbol + call_tree when you need to understand an area fast — cheaper than chaining those three.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms (the binary splits the string into terms itself), e.g. "AstIndexClient buildIndex" | |
| max_files | No | Cap on the number of source file heads returned (default: binary's own limit) | |
| graph | No | Include call/inheritance graph neighbours (blast radius). Default: true. Set false to skip the graph walk. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool's behavior: it performs a one-shot operation returning a compact block with ranked symbols, source heads, graph neighbours, and test files. It implies no destructive side effects, but could explicitly state it's read-only. With no annotations, this is good but not perfect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste: first sentence defines the output, second sentence provides usage context. Front-loaded with the core 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?
The description lists return items (ranked symbols, source heads, graph neighbours, test files) and parameter behavior. It doesn't detail pagination or limits, but as a one-shot tool it's sufficiently complete for its complexity.
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 value by explaining that query is split into terms by the binary, and graph controls including neighbours. This goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: one-shot exploration returning ranked context and call/inheritance graph blast-radius. It distinguishes from sibling tools by explicitly offering an alternative to chaining find_usages, read_symbol, and call_tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool instead of separate calls, stating it's cheaper and faster for understanding an area. This provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explore_areaA
One-call exploration of a directory: outline (all symbols), imports (external deps + who imports this area), tests (matching test files), recent git changes. Use INSTEAD OF separate outline + related_files + git log calls. Default since v0.30.0 returns only outline+changes — telemetry showed the all-4 default producing negative token reduction for small areas. Opt into imports/tests explicitly via include when you need them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory path (or file path — will use its parent directory) | |
| include | No | Sections to include. Default: ["outline","changes"]. Add "imports" for dep graph, "tests" to map test files — both can be heavy on large areas. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it performs exploration (non-destructive), returns multiple sections, and warns that 'imports' and 'tests' can be 'heavy on large areas'. While it doesn't explicitly state read-only, the context implies it. No annotation contradiction 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 concise (5 sentences), front-loaded with the core purpose, and each sentence adds unique value. No wasted words; structure efficiently conveys purpose, usage, and behavior.
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 no output schema, the description explains what sections are returned. It covers default behavior, optional inclusions, and performance considerations. A minor gap is the lack of return format details (e.g., JSON structure), but overall it is complete enough for a tool with two simple parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already describes parameters (path, include) with 100% coverage. The description adds value by explaining the default of include (['outline','changes']) and the rationale behind it, plus more detail on what each section entails. This goes beyond the schema's basic enum listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'One-call exploration of a directory' and lists specific outputs (outline, imports, tests, changes). It distinguishes itself from sibling tools by suggesting 'Use INSTEAD OF separate outline + related_files + git log calls', making the unique value proposition explicit.
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 explicit usage guidance: when to use this tool (instead of separate calls), when to opt into optional sections, and even references telemetry data explaining the default behavior change. This helps the agent make informed decisions about using the tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_unusedA
Find dead code — functions, classes, and variables with no references across the project. Use for cleanup and refactoring.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Filter by module path (e.g., "src/services/") | |
| export_only | No | Only check exported (capitalized) symbols | |
| limit | No | Max results (default: 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It indicates a project-wide search but does not mention read-only nature, performance implications, or return format. Adequate for a simple find operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. Front-loaded with the action and target. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could mention the return format (e.g., symbols with locations). However, for a straightforward find tool, it provides sufficient context for an agent to understand its use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all three parameters with descriptions (100% coverage). The description adds context about what is being found but does not elaborate on parameter specifics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find dead code — functions, classes, and variables with no references across the project.' It specifies both the verb and the resource, distinguishing it from siblings like find_usages.
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 includes a usage directive: 'Use for cleanup and refactoring.' It implies when to use but does not explicitly state when not to use or mention alternatives. However, the context of sibling tools provides implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_usagesA
Use INSTEAD OF Grep for finding symbol references. Semantic search — groups by: definitions, imports, usages. Supports scope, kind, limit, lang filters. Use context_lines to include surrounding code. HINT: for very short / generic symbols (≤4 chars like id, err, Cmd, db) Grep is usually cheaper than find_usages — the semantic grouping doesn't pay off when the symbol resolves ambiguously across thousands of files.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol name to find usages of | |
| scope | No | Filter results by path prefix (e.g., "src/Domain/") | |
| kind | No | Show only specific section (default: "all") | |
| limit | No | Max results per category (default: 50, max: 500) | |
| lang | No | Filter by language/extension (e.g., "php", "typescript") | |
| context_lines | No | Lines of source context around each match (0-10). When set, shows surrounding code — saves follow-up read_symbol calls. | |
| mode | No | Output mode: full (with context, default), list (file:line only, 5-10x smaller for initial discovery) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses key behavioral traits: semantic grouping, support for scope/kind/limit/lang filters, context_lines for surrounding code, and mode options. It also warns about cost implications for short symbols, aiding agent decision-making.
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?
Extremely concise: two sentences plus a hint. Front-loaded with the most important usage guidance. Every sentence contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters (1 required) and no output schema, the description covers all parameters sufficiently. It explains the purpose of each optional parameter and provides a usage hint. Could mention return format, but minimal gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond schema by explaining that context_lines 'saves follow-up read_symbol calls' and that list mode is '5-10x smaller for initial discovery.' This adds practical value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds symbol references using semantic search, grouping by definitions, imports, and usages. It explicitly distinguishes itself from Grep, making its purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use INSTEAD OF Grep for finding symbol references.' Includes a concrete hint about when Grep is preferable (for short/generic symbols), giving clear context for choosing this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_infoB
Analyze module dependencies, dependents, public API, and unused deps. Use for architecture understanding and dependency cleanup.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes | Module name or path pattern (e.g., "auth", "src/Domain/") | |
| check | No | What to check: "deps" (dependencies), "dependents" (who depends on this), "api" (public symbols), "unused-deps" (dead dependencies), "all" (everything). Default: "all" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It discloses the types of checks performed but does not mention whether the tool is read-only, requires project setup, or has any side effects. Important behavioral traits are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no fluff. The first sentence states the action, the second gives purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description covers the input semantics adequately but omits any description of the return format or structure. Given low complexity (2 params), it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description lists the check types, which aligns with the enum, but does not add extra meaning about the 'module' parameter (e.g., pattern syntax, root context). No significant enhancement over schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool analyzes module dependencies, dependents, public API, and unused deps, specifying the verb 'analyze' and the resource. However, it does not explicitly differentiate from sibling tools like find_unused or call_tree, which share similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a high-level use case ('architecture understanding and dependency cleanup'), but there is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. This leaves the agent without criteria for selection among related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
module_routeA
Show the transitive dependency path(s) between two modules — how module A reaches module B through the import graph. Use to answer 'how does X depend on Y?', trace coupling, or generate a dependency diagram. format='mermaid'/'dot' emits a diagram; default text lists the hops.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Source module — the one whose dependencies are followed (name or path, e.g. "auth", "apps/api") | |
| to | Yes | Target module to reach | |
| all | No | Show all simple paths instead of just the shortest (default: false) | |
| maxPaths | No | Cap on number of paths returned (default: 50, max: 200) | |
| maxDepth | No | Cap on path length in hops (default: 20, max: 50) | |
| viaKind | No | Restrict traversal to a dependency kind (default: "all") | |
| format | No | Output format: "text" (default, hop listing), "json", "mermaid" or "dot" (dependency diagram) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It explains traversal of import graph and output formats (text, json, mermaid, dot). Does not mention error handling or what happens if no path exists, but adequate for most uses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and usage, no wasted words. Includes example usage in quotes and key format options efficiently.
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 7 parameters all described in schema, description covers purpose, output format implications, and typical use cases. Minor gap: no mention of behavior when from==to or no path found, but these are edge cases. Output schema absent but not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. Description adds context like 'all simple paths instead of just shortest' and format output types, but mostly reinforces schema. No significant new information beyond parameter names and types.
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?
Clear verb-resource pairing: 'Show the transitive dependency path(s) between two modules' and distinguishes from sibling tools like call_tree, find_usages, and module_info by focusing on dependency paths through the import graph.
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?
Explicit use cases: 'use to answer how does X depend on Y? trace coupling, or generate a dependency diagram.' Lacks when-not-to-use or alternatives, but the sibling list shows many different tools so context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
outlineA
Use INSTEAD OF listing dir + reading each file. One call returns all symbols (classes, functions, methods, routes) for every code file in a directory. Supports recursive with max_depth.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory path | |
| recursive | No | Recursively outline subdirectories (default: false) | |
| max_depth | No | Max recursion depth when recursive=true (default: 2, max: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that it returns symbols and supports recursion, but doesn't discuss performance, side effects (likely read-only), or error cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with key information front-loaded. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and description does not specify the format or structure of the returned symbols. For a tool that returns structured data, this is a significant 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 covers all three parameters with descriptions (100% coverage). Description adds 'Supports recursive with max_depth' but doesn't provide significant additional meaning beyond what schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to return all symbols in a directory, and distinguishes it from the alternative of listing and reading each file individually.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use INSTEAD OF listing dir + reading each file', providing clear when-to-use guidance. It also mentions recursive support, but doesn't explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_overviewA
START HERE for unfamiliar codebases. Shows project type, architecture, framework detection, quality tools, CI, directory map. Use include filter for specific sections.
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Sections to include (default: all). Use ["stack"] for quick type check, ["quality","ci"] for tooling overview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It lists what the tool shows but does not explicitly state it is read-only, non-destructive, or describe any side effects. The user must infer it's safe, but transparency could be improved.
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: first sentence clearly states purpose and outputs; second sentence provides parameter guidance. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists sections but does not describe output format (e.g., summary, JSON). It is sufficient for a one-parameter tool with clear purpose, but could hint at return type for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The include parameter is fully described in the schema (100% coverage), providing enum values. The description adds value by giving usage examples ('Use ["stack"] for quick type check'), enhancing semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'START HERE for unfamiliar codebases' and lists specific outputs (project type, architecture, framework detection, quality tools, CI, directory map), distinguishing it from sibling tools like 'explore' or 'code_audit'.
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 explicit guidance: 'START HERE for unfamiliar codebases' and gives examples for include parameter (['stack'], ['quality','ci']). It lacks explicit 'when not to use' or alternatives, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_diffA
Use INSTEAD OF re-reading whole file after edits. Shows only changed hunks. REQUIRES: call smart_read or read_for_edit BEFORE editing to create baseline snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| context_lines | No | Lines of context around changes (default: 3) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description fully covers behavior: it shows only changed hunks (read-only), requires a baseline snapshot, and implies no side effects. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus a required precondition line. Every sentence serves a purpose: purpose, usage guidance, prerequisite. Front-loaded with the key substitution advice.
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 diff viewing tool with no output schema, the description is complete. It explains input (path, context lines), output (changed hunks), and prerequisites. No missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for both parameters ('path' and 'context_lines' with descriptions). The description adds little beyond 'shows only changed hunks', which is already implied. 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 clearly states the tool's purpose: to show changed hunks instead of re-reading the whole file after edits. It uses specific verb 'show' and resource 'changed hunks', distinguishing it from re-reading the entire 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?
Explicitly says 'Use INSTEAD OF re-reading whole file after edits' and provides a requirement ('call smart_read or read_for_edit BEFORE editing to create baseline snapshot'). This gives clear when-to-use and prerequisites, with implied alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_for_editA
Use INSTEAD OF Read when preparing an EDIT. Returns exact RAW code around a symbol or line — copy directly as old_string for Edit tool. Supports batch: pass "symbols" array to get multiple edit contexts in one call. Unlike read_symbols (for reading/understanding), this returns unformatted code optimized for copy-paste into Edit. Optional: include_callers, include_tests, include_changes for enriched context.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| symbol | No | Symbol name to edit (e.g. "UserService.updateUser") | |
| symbols | No | Array of symbol names for batch edit context (max 10). Alternative to single "symbol" — returns all symbols in one call. | |
| line | No | Line number to edit (alternative to symbol) | |
| context | No | Lines of context around target (default: 5) | |
| include_callers | No | Show top callers of this symbol (saves a separate find_usages call) | |
| include_tests | No | Show related test file and test names | |
| include_changes | No | Show recent git changes in the target region | |
| section | No | Section to edit: heading (Markdown), top-level key (YAML/JSON), or "rows:1-50" (CSV). Returns raw section content for Edit old_string. |
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 discloses that the output is raw/unformatted code, supports batch, and includes optional enrichment flags. It does not mention error handling, rate limits, or idempotency, but for a read-focused tool the description is sufficiently transparent.
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 paragraph with a clear front-loaded purpose, followed by concise details on batch usage, comparison with siblings, and optional parameters. Every sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description explains the return format (raw code for copy-paste). With 9 parameters and 25 sibling tools, the description provides enough context to differentiate and use the tool correctly for its intended purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage). The description adds significant value: explains that the output is meant to be used directly as old_string for the Edit tool, clarifies that 'symbols' enables batch mode (max 10), and distinguishes the purpose of include_callers, include_tests, include_changes as saving separate API calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for preparing edits, returning raw code for use as old_string in an Edit tool. It distinguishes itself from generic Read and read_symbols, which are for reading/understanding, providing a specific verb+resource+use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Use INSTEAD OF Read when preparing an EDIT.' Contrasts with read_symbols ('Unlike read_symbols (for reading/understanding), this returns unformatted code optimized for copy-paste into Edit'). Also describes batch usage and optional enriched context parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_rangeB
Read a specific line range from a file. Use when you know exact lines — lighter than reading the whole file.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| start_line | Yes | Start line (1-indexed) | |
| end_line | Yes | End line (1-indexed, inclusive) | |
| session_id | No | Optional Claude Code session_id for cross-restart dedup (see smart_read). | |
| force | No | Bypass dedup (see smart_read.force). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic action and a performance hint ('lighter'), but does not disclose read-only nature, error behavior, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two short sentences, front-loaded with the main action and use context. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should explain return values or structure, but it does not. It also lacks details on error handling for invalid line ranges, making it incomplete for an agent.
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%, meaning the schema already describes all parameters. The description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'specific line range from a file'. It provides a use case guidance ('when you know exact lines') but does not explicitly distinguish from sibling tools such as smart_read, read_section, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a clear usage guideline: 'Use when you know exact lines — lighter than reading the whole file.' This implies when to use, but does not explicitly state when not to use or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sectionA
Read a specific section from Markdown, YAML, JSON, or CSV files. Markdown: by heading name. YAML/JSON: by top-level key. CSV: by row range (rows:1-50). Much cheaper than reading the whole file. DOCS/DATA ONLY — heading is required; this does NOT read code by line/symbol. For source files use read_range (line range) or read_symbol (one symbol).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to .md, .yaml, .yml, .json, or .csv file | |
| heading | Yes | Section heading (Markdown), top-level key (YAML/JSON), or row range "rows:1-50" (CSV). Case-insensitive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the tool is read-only, cheap, and does not read code. It explains case-insensitivity and required heading parameter. Minor omission: no mention of error behavior if section is missing, but overall sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. Every sentence adds value, including format-specific details, cost hint, and exclusions. No waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is largely complete given no output schema or annotations. It covers file types, input format, case sensitivity, cost, and provides alternatives. A minor gap is the lack of explicit information about the return format, but the purpose is clear enough.
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 parameter descriptions in the schema are already very detailed (e.g., explaining heading types). The tool description adds usage context but does not significantly extend parameter semantics beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads sections from Markdown, YAML, JSON, or CSV files, specifying the extraction method for each format. It also distinguishes from siblings by explicitly naming alternatives (read_range, read_symbol) for source files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use this tool (for document/data files) and when not to (for source files). It explicitly mentions alternatives and notes that it's cheaper than reading the whole file, aiding decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_symbolA
Read source code of ONE specific function/method/class — INSTEAD OF reading the whole file. Supports Class.method syntax.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| symbol | Yes | Symbol name, e.g. "UserService.updateUser" | |
| context_before | No | Lines of context before (default: 2) | |
| context_after | No | Lines of context after (default: 0) | |
| show | No | Display mode: full (all lines), head (first 50), tail (last 30), outline (head + methods + tail). Default: auto (full ≤300 lines, outline >300) | |
| include_edit_context | No | Append raw code block for Edit old_string (saves a read_for_edit call) | |
| session_id | No | Optional Claude Code session_id for cross-restart dedup (see smart_read). | |
| force | No | Bypass dedup (see smart_read.force). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It describes the basic action (read source code) but does not disclose dedup behavior, error handling (e.g., symbol not found), or any side effects. The parameter descriptions in the schema hint at dedup features, but the description itself is silent on behavioral nuances.
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, front-loaded sentences: first sentence states the core action and differentiates from whole-file reads; second sentence adds syntax support. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal for a tool with 8 parameters. It does not explain return format, error scenarios, or how the dedup-related parameters (force, session_id) affect behavior. Given the lack of output schema, more context would be helpful.
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 value by clarifying that the 'symbol' parameter supports Class.method syntax, which is not in the schema description. This extra context helps the agent use the parameter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it reads source code of ONE specific symbol (function/method/class) and explicitly contrasts with reading the whole file. It also mentions support for Class.method syntax, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'INSTEAD OF reading the whole file', guiding the agent to use this tool for targeted symbol retrieval rather than whole-file reads. It does not, however, mention when to use siblings like 'read_for_edit' or 'read_range', leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_symbolsA
Batch read MULTIPLE symbols from ONE file — saves N-1 round-trips vs calling read_symbol N times. BEST FIT: 3–8 symbols in one file when you need their bodies. For 1–2 symbols use read_symbol (simpler). If you'd request ≥70% of the file's symbols, the handler refuses and points you to smart_read — that's cheaper than a large batch. For edit preparation use read_for_edit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path | |
| symbols | Yes | Array of symbol names (max 10), e.g. ["UserService.create", "UserService.update", "UserService.delete"] | |
| context_before | No | Lines of context before each symbol (default: 2) | |
| context_after | No | Lines of context after each symbol (default: 0) | |
| show | No | Display mode for each symbol (default: auto) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, but description covers key behavioral traits: batching behavior (saves round trips), refusal threshold (≥70% symbols) and redirection to smart_read. Does not mention error handling or performance guarantees, but sufficient for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: purpose+benefit, best-fit, alternatives. Front-loaded with core action. Every sentence adds distinct value; no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but tool name and display modes (full/head/tail/outline) imply return structure. Could explicitly mention output format or reference read_symbol for details. Generally complete given sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described). Description adds business logic (max 10 symbols, default display mode 'auto') and usage context (example symbol names). Provides incremental value beyond 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?
Clearly states verb (batch read) and resource (multiple symbols from one file). Distinguishes from sibling read_symbol by highlighting efficiency (saves N-1 round trips).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies best-fit range (3-8 symbols), when to use simpler alternative (1-2 symbols -> read_symbol), when handler refuses (≥70% of file's symbols -> smart_read), and for edit preparation (read_for_edit).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_analyticsA
Show token savings report: calls, tokens saved, per-tool breakdown, top files, cache hits. Use verbose=true for full breakdown (per-intent, decision insights, savings by category).
| Name | Required | Description | Default |
|---|---|---|---|
| verbose | No | Show detailed breakdown: per-intent, savings by category, decision insights (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It clearly describes the tool as generating a read-only report with no mention of destructive actions. While it does not explicitly state it is read-only, the nature of analytics and the sibling tools imply safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey the tool's purpose and a key usage option. No wasted words; the information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the report contains (specific metrics). It does not cover pagination or limits, but for a simple reporting tool with one optional parameter, this is sufficient.
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% with a well-described boolean parameter. The description adds the same information as the schema's description, plus a usage suggestion. This provides marginal extra value, meeting the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool shows a token savings report with specific metrics (calls, tokens saved, per-tool breakdown, top files, cache hits). The verb 'show' and resource 'token savings report' are clear, and it naturally distinguishes from sibling tools focused on other aspects like budgets or snapshots.
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?
Guidance is provided for when to use verbose=true vs false, which helps the agent decide. However, it does not explicitly mention when not to use this tool or suggest alternatives for related tasks (e.g., session_budget, session_snapshot).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_budgetA
META / info-only: reports Read-hook pressure for this session (suppressed tokens, reference budget, burn fraction, effective denyThreshold). Does NOT save tokens itself — this is diagnostic, use to decide when to tighten before a big read. NOTE: burnFraction measures hook activity, not actual context-window occupancy.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | Claude Code session_id (same id that appears in hook-events.jsonl). Pass "" to read with no session filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses behavior: it is read-only, does not save tokens, and clarifies that burnFraction measures hook activity not context-window occupancy. No annotations exist to contradict this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two sentences and a note, each sentence providing essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple with one parameter and no output schema, the description fully explains what it reports (suppressed tokens, reference budget, burn fraction, denyThreshold) and clarifies a common misunderstanding, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by explaining that sessionId can be empty to read without filter and that it matches hook-events.jsonl ids, which enriches the schema's parameter 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?
The description clearly states the tool is a diagnostic that reports read-hook pressure for a session, distinguishing it from other tools by labeling it as 'META / info-only' and specifying it does not save tokens.
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 provides explicit guidance on when to use the tool ('use to decide when to tighten before a big read'), but does not explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_snapshotA
Capture current session state as a compact markdown block (<200 tokens). Call before compaction, when switching direction, or periodically in long sessions. Model provides the facts, tool formats them.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Session goal — what and why | |
| decisions | No | Key decisions made and why (e.g., "removed sysfee step — caused double counting"). Prevents revisiting rejected approaches. | |
| confirmed | No | Established facts (what has been verified) | |
| files | No | Relevant file paths | |
| blocked | No | Current blocker or obstacle | |
| next | No | Next step to take |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It discloses output as a compact markdown block and clarifies the tool's role as a formatter. However, it doesn't specify whether the snapshot is stored or ephemeral, a minor gap.
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, both essential: first defines purpose and constraints, second gives usage guidance and role. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 6 parameters, no output schema, and no annotations, the description covers purpose, format, usage timing, and model-tool division. It is self-contained and sufficient for a formatting tool with clear parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 6 parameters described. The description adds minimal meaning beyond the schema, only implicitly referencing parameters via 'goal, decisions, confirmed, files, blocked, next' in the usage context. Baseline for high coverage is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Capture', resource 'session state', and specific format 'compact markdown block (<200 tokens)'. It distinguishes from sibling tools like session_analytics and session_budget by focusing on state capture rather than analysis or budgeting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use instructions: 'Call before compaction, when switching direction, or periodically in long sessions.' Also explains the model-tool division: 'Model provides the facts, tool formats them.' This gives clear context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_diffA
Use INSTEAD OF raw git diff. Shows changed files with AST symbol mapping — which functions/classes were modified/added/removed. Small diffs include hunks, large diffs show summary.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Diff scope (default: "unstaged") | |
| path | No | Filter to specific file or directory | |
| ref | No | Git ref — required for scope="commit" (commit hash) or scope="branch" (branch name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses output behavior for small vs large diffs and mentions AST symbol mapping, but does not explicitly state if the tool is read-only (though inferred).
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 efficient sentences, front-loading the key usage instruction and then detailing output. No superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, scope, and size-dependent output. It does not detail the summary format, but this is acceptable given no output schema and parameter descriptions covering the rest.
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 description does not need to add parameter details. The description adds no extra semantic value beyond what the schema already provides for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows changed files with AST symbol mapping, using specific verbs and resources. It also explicitly distinguishes itself from raw git diff, making its purpose unmistakable.
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 instructs to 'use instead of raw git diff', providing clear context for when to use this tool over a sibling. However, it does not mention when not to use it or alternatives among other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_logA
Use INSTEAD OF raw git log. Structured commit history with category detection (feat/fix/refactor/docs), file stats, author breakdown. Filters by path and ref. HEADS UP: two verification runs measured this tool at ~39% token reduction (borderline — vs 95-99% for outline/smart_diff). Cumulative data being gathered — tool may be dropped or redesigned in v0.30.0 if numbers don't improve. Prefer scoping with path or count to tighten savings.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Filter to specific file or directory | |
| count | No | Number of commits (default: 10, max: 50) | |
| ref | No | Git ref — branch, tag, or commit (default: HEAD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses token reduction (~39%), borderline performance, and possibility of being dropped. Good behavioral context beyond default expectations, though no mention of read-only nature (no annotations to rely on).
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?
Description is slightly long but well-organized with clear sections (purpose, guidelines, heads-up). Every sentence adds value, though minor redundancy in token reduction mention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage alternatives, behavioral notes, and parameter guidance adequately. No output schema, but description doesn't need to detail return values; however, could mention that return is structured.
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 3. Description adds value by explaining that path and count tighten token savings and specifies count's default (10) and max (50), exceeding schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Use INSTEAD OF raw git log' and describes structured commit history with category detection, file stats, author breakdown. Distinguishes from raw git log and provides filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly compares to raw git log, advises scoping with path and count for token savings, and warns about potential deprecation. Provides clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_readA
Use INSTEAD OF Read/cat for code files. Returns code structure (classes, functions, methods with signatures and line ranges) — 60-80% fewer tokens than raw content. Use read_symbol() to drill into specific code.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path (absolute or relative to project root) | |
| show_imports | No | Include import details (default: true) | |
| show_docs | No | Include doc comments (default: true) | |
| depth | No | Max depth for nested symbols (default: 2) | |
| scope | No | Output scope: full (default, all details), nav (names + lines only, 2-3x smaller), exports (public API only) | |
| max_tokens | No | Token budget. If output exceeds this, auto-downgrades: full → outline → compact. Use for context-constrained sessions. | |
| session_id | No | Optional Claude Code session_id. When provided, dedup state (already-loaded files) persists across MCP server restarts and /clear, tied to that session. Omit to use ephemeral process-scoped dedup. | |
| force | No | Bypass dedup — return full content even if the same path was already loaded earlier in this session. Use when the prior result was compacted out of context. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates the tool is a read-only replacement for read/cat, returns structured output, and is token-efficient. It doesn't fully disclose all behavioral traits (e.g., error handling, dedup behavior) but the core behavior is clear.
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, front-loaded with the most critical information (purpose and when to use). Every sentence adds value; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with 8 parameters and no output schema, the description covers purpose, usage context, token efficiency, and references a related tool. It is sufficient for an agent to understand when and how to invoke it, though it doesn't describe the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond what the schema already provides for each parameter. It does not enrich parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is for code files, returns code structure (classes, functions, methods with signatures and line ranges), and explicitly differentiates from raw read/cat with token savings. It also names read_symbol as a complementary tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use ('Use INSTEAD OF Read/cat for code files') and when to use an alternative ('Use read_symbol() to drill into specific code'). Provides clear context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_read_manyA
Batch smart_read for multiple files at once — INSTEAD OF calling Read on each file. Returns structure for each file. Max 20 files.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Array of file paths | |
| max_tokens | No | Token budget per file. If a file exceeds this, auto-downgrades to compact outline. | |
| session_id | No | Optional Claude Code session_id for cross-restart dedup (see smart_read). | |
| force | No | Bypass dedup (see smart_read.force). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses batch operation, auto-downgrade on token limit, dedup via session_id and force, and max files. However, it doesn't explicitly state read-only nature or error handling, though the name implies reading.
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 concise sentence with purpose, alternative, and key constraint (max 20). Every word is informative with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality, constraints, and parameter behaviors. Lacks explicit note on return structure format and error handling, but sufficient for a batch read tool. References sibling tool for deeper dedup details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value beyond schema by explaining auto-downgrade for max_tokens, dedup purpose for session_id, and bypass for force, plus references to smart_read for details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States 'Batch smart_read for multiple files at once — INSTEAD OF calling Read on each file' with specific verb and resource, and distinguishes from the alternative of calling Read individually, plus mentions max 20 files limit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use this tool instead of calling Read on each file, and includes a maximum file limit, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_summaryA
Run tests and return structured summary: total/passed/failed/skipped + failure details. 200 lines of raw output → 10-15 lines. Supports vitest, jest, pytest, phpunit, go test, cargo test.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Test command to run (e.g., "npm test", "pytest", "go test ./...") | |
| runner | No | Force specific parser (auto-detected if omitted) | |
| timeout | No | Timeout in ms (default: 60000, max: 300000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions output reduction (200 to 10-15 lines) but does not warn that executing test commands can have side effects (e.g., modifying state, running arbitrary scripts). This is a significant omission for a tool that runs user-provided commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the core purpose and output, followed by a brief list of supported runners. Every word is necessary, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description adequately explains the output content (total/passed/failed/skipped + failure details) and the input reduction. However, it lacks details on output structure (e.g., JSON format) and error handling, which would be helpful for a complete understanding.
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 limited value beyond the schema: it lists a subset of supported runners (already in the enum) and implies auto-detection, which is already stated in the schema's runner description. No new parameter semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'run tests' and the resource 'tests', and details the output format (total/passed/failed/skipped + failure details). It distinguishes this tool from sibling tools (no other test runners) and lists supported runners, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by listing supported test runners (vitest, jest, etc.) and mentioning auto-detection when the runner is omitted. However, it does not explicitly state when not to use this tool or provide alternatives, though sibling tools are sufficiently distinct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
25 tool updates
v0.47.0- First observed
call_tree - First observed
code_audit - First observed
explore - First observed
explore_area - First observed
find_unused - First observed
find_usages - First observed
module_info - First observed
module_route - First observed
outline - First observed
project_overview - First observed
read_diff - First observed
read_for_edit - First observed
read_range - First observed
read_section - First observed
read_symbol - First observed
read_symbols - First observed
related_files - First observed
session_analytics - First observed
session_budget - First observed
session_snapshot - First observed
smart_diff - First observed
smart_log - First observed
smart_read - First observed
smart_read_many - First observed
test_summary
TDQS
Each tool has a clearly distinct purpose with detailed usage guidance, preventing confusion even among similar-sounding tools (e.g., explore vs explore_area).
All tools use snake_case with a consistent verb_noun pattern (e.g., find_usages, read_symbol, smart_diff), making the naming predictable and intuitive.
25 tools cover a wide range of code exploration tasks without oversaturation; each tool adds unique value and avoids redundancy.
The tool surface covers the full code exploration workflow: project overview, exploration, reading, editing context, diff analysis, session management, and testing. Only minor gaps exist (e.g., no dedicated grep tool), but the documentation provides workarounds.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for AI agent profiles and smart notes. 60+ coding prompt packs with expert personas.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseBqualityAmaintenanceAgent-optimized MCP server that replaces built-in file, search, exec, and git tools with compact, structured JSON equivalents. Benchmarked 20–45% token savings for AI coding agents.202MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides structure-aware code analysis (symbol trees, dependencies, docs) to reduce AI agent token consumption by up to 99%, along with Git commit intelligence.MIT
- AlicenseAqualityBmaintenanceAn AST-based MCP server that provides token-efficient codebase skeletons to LLM agents, reducing context token usage by 80-95% by exposing structural information instead of full source files.5162MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that reduces token usage by injecting graph-ranked repo maps, decision logs, and diff-only output into AI coding tool requests.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Digital-Threads/token-pilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server