Skip to main content
Glama

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:

  1. 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.

  2. PreToolUse hooks — intercept heavy native tool calls (Read on large files, recursive Grep, unbounded git diff) and redirect to token-efficient alternatives.

  3. 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 tokens

Files 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_read outline savings only. Real sessions additionally benefit from session cache, read_symbol, and read_for_edit. Reproduce: npx tsx scripts/benchmark.ts.

Related MCP server: cctx-mcp

Quick Start

npx -y token-pilot init

Creates (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/Read calls; redirect to efficient alternatives → hooks & modes

  • 25 tp-* subagents (Claude Code only) — MCP-first delegates with haiku/sonnet model tiers and budget enforcement → agents reference

  • Tool profiles — trim advertised tools/list to save ~2 k tokens per session → profiles & config

Client Support Matrix

Client

MCP tools

PreToolUse hooks

tp-* subagents

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

advisory

Allow all — hooks pass through, advisory notes only

deny (default)

Block heavy Grep/Bash patterns; intercept large Read calls

strict

Deny + auto-cap MCP output (smart_read ≤ 2 000 tokens, find_usages → list mode, smart_log → 20 commits)

TOKEN_PILOT_MODE=strict npx token-pilot

Full hook & mode docs

Ecosystem

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

caveman

Claude's response prose (terse-speak skill)

~75% output

ast-index

the structural indexer Token Pilot rides on

foundation

context-mode

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.

full ecosystem map

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-pilot

Other 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 --force

Tips 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 first find_usages / outline / read_symbol on a large repo triggers an index build. Default per-MCP-tool timeout (60 s) is enough for ~50k-file repos; bigger ones benefit from MCP_TOOL_TIMEOUT=120000 in ~/.claude/settings.json. Subsequent calls hit the cache and return in ~50 ms.

  • Background sessions with --mcp-config. Dispatching a worker via claude agents or --bg with --mcp-config /path/to/other.json swaps the MCP set for that session. If token-pilot is 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. Add token-pilot to 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 summary

While a workflow is active:

  • Every event:"task" / denied / diagnostic row in hook-events.jsonl carries workflow_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_budget diagnostic — visible in workflow 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 assistant

Credits

Built on ast-index · @ast-grep/cli · MCP SDK · chokidar

License

MIT

Available Tools

25 tools
call_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesFunction / method name, unqualified (e.g. `fetchUser`).
depthNoWalk-up depth. Default 3, max 6.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkYesWhat 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)
patternNoCode pattern for check="pattern". ast-grep syntax: "except:" finds bare excepts, "print($$$ARGS)" finds print calls.
nameNoDecorator/annotation name for check="annotations". Example: "Deprecated", "Controller"
langNoLanguage filter for check="pattern" (e.g., "python", "typescript")
limitNoMax results (default: 50)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch terms (the binary splits the string into terms itself), e.g. "AstIndexClient buildIndex"
max_filesNoCap on the number of source file heads returned (default: binary's own limit)
graphNoInclude call/inheritance graph neighbours (blast radius). Default: true. Set false to skip the graph walk.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path (or file path — will use its parent directory)
includeNoSections to include. Default: ["outline","changes"]. Add "imports" for dep graph, "tests" to map test files — both can be heavy on large areas.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoFilter by module path (e.g., "src/services/")
export_onlyNoOnly check exported (capitalized) symbols
limitNoMax results (default: 30)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesSymbol name to find usages of
scopeNoFilter results by path prefix (e.g., "src/Domain/")
kindNoShow only specific section (default: "all")
limitNoMax results per category (default: 50, max: 500)
langNoFilter by language/extension (e.g., "php", "typescript")
context_linesNoLines of source context around each match (0-10). When set, shows surrounding code — saves follow-up read_symbol calls.
modeNoOutput mode: full (with context, default), list (file:line only, 5-10x smaller for initial discovery)

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleYesModule name or path pattern (e.g., "auth", "src/Domain/")
checkNoWhat to check: "deps" (dependencies), "dependents" (who depends on this), "api" (public symbols), "unused-deps" (dead dependencies), "all" (everything). Default: "all"

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesSource module — the one whose dependencies are followed (name or path, e.g. "auth", "apps/api")
toYesTarget module to reach
allNoShow all simple paths instead of just the shortest (default: false)
maxPathsNoCap on number of paths returned (default: 50, max: 200)
maxDepthNoCap on path length in hops (default: 20, max: 50)
viaKindNoRestrict traversal to a dependency kind (default: "all")
formatNoOutput format: "text" (default, hop listing), "json", "mermaid" or "dot" (dependency diagram)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesDirectory path
recursiveNoRecursively outline subdirectories (default: false)
max_depthNoMax recursion depth when recursive=true (default: 2, max: 5)

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeNoSections to include (default: all). Use ["stack"] for quick type check, ["quality","ci"] for tooling overview.

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path
context_linesNoLines of context around changes (default: 3)

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path
symbolNoSymbol name to edit (e.g. "UserService.updateUser")
symbolsNoArray of symbol names for batch edit context (max 10). Alternative to single "symbol" — returns all symbols in one call.
lineNoLine number to edit (alternative to symbol)
contextNoLines of context around target (default: 5)
include_callersNoShow top callers of this symbol (saves a separate find_usages call)
include_testsNoShow related test file and test names
include_changesNoShow recent git changes in the target region
sectionNoSection to edit: heading (Markdown), top-level key (YAML/JSON), or "rows:1-50" (CSV). Returns raw section content for Edit old_string.

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path
start_lineYesStart line (1-indexed)
end_lineYesEnd line (1-indexed, inclusive)
session_idNoOptional Claude Code session_id for cross-restart dedup (see smart_read).
forceNoBypass dedup (see smart_read.force).

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to .md, .yaml, .yml, .json, or .csv file
headingYesSection heading (Markdown), top-level key (YAML/JSON), or row range "rows:1-50" (CSV). Case-insensitive.

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path
symbolYesSymbol name, e.g. "UserService.updateUser"
context_beforeNoLines of context before (default: 2)
context_afterNoLines of context after (default: 0)
showNoDisplay mode: full (all lines), head (first 50), tail (last 30), outline (head + methods + tail). Default: auto (full ≤300 lines, outline >300)
include_edit_contextNoAppend raw code block for Edit old_string (saves a read_for_edit call)
session_idNoOptional Claude Code session_id for cross-restart dedup (see smart_read).
forceNoBypass dedup (see smart_read.force).

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path
symbolsYesArray of symbol names (max 10), e.g. ["UserService.create", "UserService.update", "UserService.delete"]
context_beforeNoLines of context before each symbol (default: 2)
context_afterNoLines of context after each symbol (default: 0)
showNoDisplay mode for each symbol (default: auto)

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNoShow detailed breakdown: per-intent, savings by category, decision insights (default: false)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesClaude Code session_id (same id that appears in hook-events.jsonl). Pass "" to read with no session filter.

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesSession goal — what and why
decisionsNoKey decisions made and why (e.g., "removed sysfee step — caused double counting"). Prevents revisiting rejected approaches.
confirmedNoEstablished facts (what has been verified)
filesNoRelevant file paths
blockedNoCurrent blocker or obstacle
nextNoNext step to take

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoDiff scope (default: "unstaged")
pathNoFilter to specific file or directory
refNoGit ref — required for scope="commit" (commit hash) or scope="branch" (branch name)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoFilter to specific file or directory
countNoNumber of commits (default: 10, max: 50)
refNoGit ref — branch, tag, or commit (default: HEAD)

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path (absolute or relative to project root)
show_importsNoInclude import details (default: true)
show_docsNoInclude doc comments (default: true)
depthNoMax depth for nested symbols (default: 2)
scopeNoOutput scope: full (default, all details), nav (names + lines only, 2-3x smaller), exports (public API only)
max_tokensNoToken budget. If output exceeds this, auto-downgrades: full → outline → compact. Use for context-constrained sessions.
session_idNoOptional 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.
forceNoBypass 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

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesArray of file paths
max_tokensNoToken budget per file. If a file exceeds this, auto-downgrades to compact outline.
session_idNoOptional Claude Code session_id for cross-restart dedup (see smart_read).
forceNoBypass dedup (see smart_read.force).

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesTest command to run (e.g., "npm test", "pytest", "go test ./...")
runnerNoForce specific parser (auto-detected if omitted)
timeoutNoTimeout in ms (default: 60000, max: 300000)

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 25 tool updatesv0.47.0
    • First observedcall_tree
    • First observedcode_audit
    • First observedexplore
    • First observedexplore_area
    • First observedfind_unused
    • First observedfind_usages
    • First observedmodule_info
    • First observedmodule_route
    • First observedoutline
    • First observedproject_overview
    • First observedread_diff
    • First observedread_for_edit
    • First observedread_range
    • First observedread_section
    • First observedread_symbol
    • First observedread_symbols
    • First observedrelated_files
    • First observedsession_analytics
    • First observedsession_budget
    • First observedsession_snapshot
    • First observedsmart_diff
    • First observedsmart_log
    • First observedsmart_read
    • First observedsmart_read_many
    • First observedtest_summary

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with detailed usage guidance, preventing confusion even among similar-sounding tools (e.g., explore vs explore_area).

Naming Consistency5/5

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.

Tool Count5/5

25 tools cover a wide range of code exploration tasks without oversaturation; each tool adds unique value and avoids redundancy.

Completeness5/5

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

ActivityMaintained
ResponsivenessUnresponsive

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

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Agent-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.
    20
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An 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
  • A
    license
    A
    quality
    B
    maintenance
    An 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.
    5
    16
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that reduces token usage by injecting graph-ranked repo maps, decision logs, and diff-only output into AI coding tool requests.
    1
    MIT

Latest Blog Posts

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