Skip to main content
Glama

Malong LiuHe(码龙·六合工具)

LLM-Native Code Operations Toolkit — Code tooling reinvented for the LLM that has no hands, no eyes, and no memory.

English | 简体中文 | Docs | GitHub

wulun811/LiuHe MCP server tests tools languages read write memory concurrency throughput token license version commits

Malong LiuHe is a toolkit built for LLMs rather than humans. It ships two components:

  • malong/ — an MCP toolset (44 tools): symbol read/write, indexing, impact analysis, reference tracing, call graphs, dead-code detection, code review, security scanning, atomic batch editing, test orchestration, pipeline verification — served to the LLM over MCP (JSON-RPC over stdio).

  • malong-parse/ — a Rust parsing service: a tree-sitter-based multi-language symbol extraction engine (JavaScript/TypeScript/TSX/Python/Go/Rust/C/C++/Java/Bash), talking to the toolset over a Unix socket, with an LRU tree cache and batched parallel extraction.

Core Idea

Traditional tools (git, sed, IDE) assume a user with hands, eyes, and memory. An LLM has none of these. Malong LiuHe is redesigned around that fact:

Missing

Design Consequence

No hands

Operations must be atomic, undoable, retryable (edit_transaction with rollback and undo journal)

No eyes

Output must be structured and self-explanatory (JSON for direct consumption; errors carry suggestion/next_action)

No memory

Every call is self-contained (takes workspace_dir); optimistic concurrency with version anchors (read_symbolwrite_symbol(base_version) conflict state machine)

Related MCP server: code-analyze-mcp

Performance (Measured)

Metric

Value

Note

Small-file read P95

1ms

50 runs, warmed

Small-file write P95

7ms

30 runs, incl. post-write re-index

repo_map

98ms

down from tens of seconds (SQLite index + Rust parsing)

Memory

RSS 134MB / 26%

under a real docker --memory=512m cgroup limit

Concurrency

128 concurrent / 256 in-flight requests, zero OOM

32-way mixed read+write on one hot file, no tearing, DB integrity_check PASS

Throughput

~588 calls/s

single-threaded ceiling — 60–600× real LLM demand

Token savings

↓65.3%

same task 7673 → 2662 est. (primitives)

Call reduction

↓50.0%

6 calls (legacy) → 3 calls (primitives)

Tool-description compression

44 tools ≈ 1.33k tokens

tiered: core kept, low-freq ≤70 chars, verbose ≤230; detail flows via next_step hints

Index throughput

538 files / 7s

scoped reindex, measured

dry_run fidelity

47/47

golden-hash comparison across 3 languages, 100%

Concurrent writes to same symbol

16/16

exactly one winner + one conflict, zero silent overwrites

Language Support

Language

Symbol Extraction

Reference Extraction

JavaScript / TypeScript / TSX / JSX / MTS / CTS

Python

Go

Rust (impl blocks / trait / enum semantics)

C / C++ (incl. headers)

Java

Bash

Tool Overview

Category

Tools

I/O primitives

read_symbol (symbol read + version), write_symbol / write_symbols (safe write: conflict state machine + atomic write + undo)

Index & search

reindex, symbol_search, code_search (keyword + regex intent patterns — NOT semantic search), repo_map (98ms file map; skeleton pagination: page/page_size/prefix — truncated output always carries the full top-level skeleton with page numbers)

Analysis

impact_analysis (blast radius + risk), call_chain, references, dep_graph, inspect (outline + refs + call chain in one), trace_symbol (constant tracing + hardcoded copies)

Editing

edit_batch, edit_transaction (atomic txn + rollback + cross-session lock), edit_collision_guard (write conflict detection), edit_sandbox (pre-write validation), diff_facts (symbol changes + test sync), rename_symbol (atomic cross-file rename), git_worktree (isolated branch + verify + merge)

Quality gates

code_review, security_review (regex security patterns), code_quality (5-dim probe), style_sniffer, guard_patterns, naming_consistency, exception_guard, config_drift, dependency_gatekeeper, fix_imports, sweep_dead_code, mock_sync — all pure regex/AST, zero LLM calls, deterministic

Engineering

test_bridge (run/suggest/discover), find_tests, verify_pipeline (lint/test/typecheck stages), debug_runner (error analysis), patch_parser (SEARCH/REPLACE), tsc_check, spec_gen, active_todos

System

health, gc, feedback

Architecture

┌─────────────────────────┐     ┌──────────────────────────────┐
│  LLM Client (MCP)       │     │  malong-parse (Rust daemon)  │
│  malong/ 44 tools       │◄───►│  tree-sitter, 10 languages   │
│  SQLite index (per ws)  │     │  LRU tree cache 50MB / batch │
│  Unix socket client     │     │  catch_unwind crash recovery │
└─────────────────────────┘     └──────────────────────────────┘
  • All parsing is done by the Rust service (zero tree-sitter bindings on the Node side)

  • Index is SQLite (WAL mode, multi-process safe), isolated per workspace

  • LRU tree cache (50MB / 5min TTL), batched extraction 50 files/batch

  • Daemon multi-session safety: circuit breaker + liveness probe + cross-session coordinated restart (O_EXCL lock) — a slow request in one session never stalls others

Self-Hosting (Dogfooding)

30+ rounds of "Malong reviews Malong": the toolset audits and fixes its own code, with dozens of real bugs fixed and locked by tests — including directory-scope filtering gaps, false dead-code reports for registration patterns, lost constant read-sites, and SQL parameterization cleanup. Every round grew the assertion count (now 2231 across 86 JS test files, full chain 0 failures, measured 2026-08-24).

Scan Boundaries (limits acknowledged; committed within)

Deterministic scanners only — regex pattern matching and reference graphs. No control-flow, data-flow, or cross-module semantic coverage. 0 findings ≠ clean; high scores ≠ healthy.

  • security_review scans: injection (eval/Function-ctor, exec/spawn string building, template ${}, $() substitution, SQL concat), XSS, hardcoded secrets, CORS *, timing/insecure compare, dotenv. Not scanned: SSRF, XXE, deserialization, auth/logic flaws, control-flow defects.

  • sweep_dead_code reference scope: import graph + fixed text-ref fallback (.sh/.json/.md etc.); CLI-string references count as alive (miss-over-delete). Not scanned: dynamic/reflection wiring.

  • Commitment: issues in scope get fixed; covered patterns are test-locked; new rules must stay within committed categories.

Quick Start

npm ci installs better-sqlite3 (the full SQLite backend); this is the default recommended path:

# 1) Get the parsing daemon — download a prebuilt binary from releases/, or build:
cd malong-parse && cargo build --release && cp target/release/malong-parse ~/.local/bin
malong-parse &                                   # start the daemon (Unix socket)

# 2) Install the toolset (npm ci installs the full better-sqlite3 backend)
cd ../malong && npm ci

# 3) Register the MCP server (works with any MCP client, e.g. opencode / Claude Desktop)
#    opencode (project-root opencode.json; Windows paths use double backslashes, Linux/macOS forward slashes):
#    {
#      "mcp": {
#        "malong": {
#          "type": "local",
#          "command": ["node", "--max-old-space-size=512", "N:\\repo\\liuhe\\malong\\mcp-server.js", "--workspace", "N:\\repo\\liuhe"],
#          "enabled": true
#        }
#      }
#    }
#    Claude Desktop (verified on Windows: %APPDATA%\Claude\claude_desktop_config.json):
#    {
#      "mcpServers": {
#        "malong": { "command": "node", "args": ["/path/to/malong/mcp-server.js"] }
#      }
#    }

# 4) Ask your LLM: "search for the symbol 'handle' in my workspace"

#    DeepSeek Harness (dsh web) — auto session-workspace convenience (extra, optional):
#    Run once on the dsh host (Linux/macOS):
#      Option A (npm, one line — full backend + platform binary included):
#        dsh plugin --profile web add @jieai/dsh-malong-bridge
#        pkill -f "dsh web"; dsh web --port 3456 --host 0.0.0.0 --trusted-host <LAN IP>
#      Option B (script, points at a checkout of this repo):
#        bash malong/dsh/install-dsh.sh         # idempotent; edits ~/.dsh/profiles/web/cordis.patch.yml with backup
#    The bridge registers all 44 tools as malong__* and auto-fills workspace_dir from the
#    current conversation's workspace (no per-call path needed; explicit paths still win).
#    Full guide incl. index rules: malong/dsh/DSH-INTEGRATION.md
#    Troubleshooting: if EVERY malong__* call hangs until timeout, the bridge's
#    mcp-server subprocess is gone. The bridge now auto-restarts it (exponential
#    backoff, pending calls fail fast with "restarting — retry shortly"); if that
#    keeps failing, restart dsh web: kill <dsh web pid> && dsh web --port 3456 ...

SQL backend note: the default is the full better-sqlite3 backend. If npm install fails (offline / no build toolchain / Node < 20), the server automatically degrades to the vendored sql.js WASM sandbox backend (malong/vendor/, zero-dependency, no network) — the startup log shows which backend is active and the upgrade command. Data files are fully compatible between backends (both are SQLite).

Zero-build deployment (degraded path: sandbox / offline environments)

For environments with Node >= 20 and no npm access (no npm ci, no native compilation), everything runs from the repo files as-is (Linux/Windows — the prebuilt binaries are linux-x86_64 and windows-x86_64). On this path SQLite runs on the sql.js sandbox backend (degraded):

# 0) Clone, then enter the toolset directory:
git clone <repo-url> liuhe && cd liuhe/malong

# 1) Parse daemon — prebuilt binary from releases/ (no cargo needed):
mkdir -p ~/.local/bin
tar -xzf ../releases/malong-liuhe-0.4.7-linux-x86_64.tar.gz
cp malong-parse/target/release/malong-parse ~/.local/bin
malong-parse &                                   # start the daemon (socket: /tmp/malong-parse-$UID.sock)

# 2) Run the toolset — zero npm install:
node --max-old-space-size=4096 mcp-server.js --workspace /path/to/project
# vendored SQLite (sql.js WASM) auto-enabled when better-sqlite3 is unavailable

# 3) Self-check (30s, optional):
node tests/test-db-adapter.js   # 22 assertions: sql.js backend + persistence
node tests/test-mcp-server.js   # 25 assertions: MCP stdio + daemon round-trip

Windows users: use releases/malong-liuhe-0.4.7-windows-x86_64.tar.gz (contains malong-parse.exe), extract and put it on PATH; the MCP server auto-starts the daemon, so step 1's malong-parse & is not required. The mkdir -p/tar -xzf above are Unix syntax — on Windows use any extractor (tar -xzf works on Win10+).

Note: if the daemon is not running, parse-dependent tools (symbol extraction etc.) degrade; the SQLite-backed tools (repo-map / code-index / health-check) still work.

  • See THIRD_PARTY_NOTICES.md for the vendored component.

What the LLM sees back:

{
  "results": [
    { "name": "handle", "type": "function", "start_line": 6, "end_line": 12, "file": "app.js" },
    { "name": "handle_login", "type": "function", "start_line": 5, "end_line": 9, "file": "src/auth.py" }
  ],
  "count": 2,
  "next_step": "Before modifying found symbols, check blast radius: impact_analysis(...)"
}

Build the Rust parsing service

cd malong-parse
cargo build --release
cp target/release/malong-parse ~/.local/bin/   # or add to PATH
malong-parse &                                   # daemon (Unix socket: /tmp/malong-parse-$(id -u).sock)

Prebuilt binaries for Linux x86_64 are committed under releases/ (with .sha256 checksums) — pick one up instead of building if you prefer.

Platforms: Linux and macOS use the Unix socket; on Windows the daemon listens on TCP 127.0.0.1:31001 (set MALONG_PORT to override) — the MCP server probes and auto-starts malong-parse.exe on startup, so no manual launch is needed (if you use the parse-client API directly outside MCP, start it manually). Set MALONG_SOCKET to override the Unix socket path.

Install the toolset

cd malong
npm ci
npm test          # 2231 assertions (daemon must be running)

Start the MCP server

cd malong
node --max-old-space-size=512 mcp-server.js --workspace /path/to/project

Register the MCP server with any MCP-capable LLM client and the tools become available. For opencode, register in the project root opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "malong": {
      "type": "local",
      "command": ["node", "--max-old-space-size=512", "malong/mcp-server.js", "--workspace", "."],
      "enabled": true
    }
  }
}

Windows note: relative paths in --workspace and malong/mcp-server.js resolve against the directory where opencode is launched; pass absolute paths (escape backslashes as \\ in JSON) if you start it elsewhere. The daemon is auto-started by the MCP server — no need to launch malong-parse.exe manually.

Configuration (environment variables)

All optional — sensible defaults apply when unset.

Variable

Default

Purpose

MALONG_STATE_DIR

~/.config/malong

Where usage / feedback / edit-stats files are written. Override to redirect state (tests, sandboxed hosts). Reads fall back to the legacy ~/.config/opencode/ so pre-0.3.37 data is not lost.

MALONG_SOCKET

/tmp/malong-parse-$(id -u).sock

Unix socket path to the parse daemon (Linux / macOS).

MALONG_PORT

31001

TCP port for the parse daemon (Windows).

MALONG_PARSE_BIN

npm platform pkg / ~/.local/bin

Binary used when the client auto-starts the daemon. Resolution order: this env → @jieai/malong-parse-<os>-<arch> npm platform package (installed as an optional dependency of @jieai/dsh-malong-bridge) → ~/.local/bin/malong-parsemalong-parse/target/release (dev tree).

MALONG_PARSE_MODE

rust-service

Parse transport. Only rust-service is supported (builtin / shadow are rejected).

MALONG_WS_GC_DAYS

14

Days a workspace index cache may sit untouched before health cleanup prunes it; 0 disables.

Suppressing security false positives

security_review is deliberately conservative, so benign patterns (a hash used as a cache key, process.exit in a CLI entry) can trip it. Two explicit, auditable suppression mechanisms exist — neither ever auto-suppresses injection rules.

Inline — append malong-ignore to a line to suppress all findings on it, or malong-ignore[eval,exec-cmd] for specific rules (a reason after : is encouraged):

const id = crypto.createHash('md5').update(p).digest('hex') // malong-ignore: cache-dir name, not security

Config — add a securityIgnore array to .ai-patterns.json (the same file guard_patterns reads). Each entry takes files (* / ** globs) and/or rules; omit one side to match all:

{ "securityIgnore": [ { "files": ["**/mcp-server.js"], "rules": ["process-exit"] } ] }

Suppressed findings are dropped from the score but counted in the summary's suppressed field, so nothing is hidden silently. Injection rules (eval / exec / SQL / spawn) are only ever suppressed by an explicit marker or entry you authored — never heuristically.

Journal auto-cleanup

Every safe write (write_symbol / write_symbols / edit_batch) leaves an undo journal under .malong/journal/. Terminal transactions (committed / rolled_back / abandoned / failed) older than a TTL (default 24h, configurable) are pruned automatically — throttled to at most one scan per hour per workspace, so it costs nothing. In-flight (created / staged) and needs_review (external change awaiting human review) journals are never auto-deleted. This only ever touches the tool's own rollback backups — never your source files.

Using with Claude Code

Verified end-to-end with Claude Code 2.x. The MCP layer is standard JSON-RPC over stdio, so any MCP client (Claude Code, codex, opencode, Claude Desktop…) connects the same way.

1) Prerequisites — Node >= 20 and the parsing daemon running (see the Zero-build deployment or Build the Rust parsing service sections above).

2) Install Claude Code

npm install -g @anthropic-ai/claude-code

3) Point Claude Code at an Anthropic-compatible provider

Claude Code needs an LLM backend. Any Anthropic-compatible endpoint works — set the variables below (or manage them with cc-switch):

export ANTHROPIC_BASE_URL="https://your-provider/anthropic"   # any Anthropic-compatible endpoint
export ANTHROPIC_AUTH_TOKEN="your-api-key"                     # never commit this
export ANTHROPIC_MODEL="your-model"                            # a model your provider serves

With cc-switch: npm i -g @cc-switch/cli, cc-switch new my-provider (fill in the same ANTHROPIC_* keys under env), cc-switch switch my-provider, then eval $(cc-switch export).

4) Register the MCP server

claude mcp add liuhe -- node /path/to/malong/mcp-server.js --workspace /path/to/project
claude mcp list        # → "liuhe … ✔ Connected"

5) Use it — start claude in your project and ask, or run headless:

claude -p "index the workspace with reindex, then find createDb with symbol_search" \
  --allowedTools "mcp__liuhe__reindex" "mcp__liuhe__symbol_search"

Tools are exposed as mcp__liuhe__<tool> (e.g. mcp__liuhe__health, mcp__liuhe__symbol_search, mcp__liuhe__repo_map). Run reindex (optionally blocking=true) once per workspace first, so symbol search / impact analysis have an index to query.

Using with codex

Verified end-to-end with codex (same JSON-RPC-over-stdio MCP layer).

Version note: recent codex releases force the OpenAI Responses API (wire_api = "responses"). Use a version that still supports wire_api = "chat" together with MCP — verified with 0.50.0: npm install -g @openai/codex@0.50.0.

1) Prerequisites — Node >= 20 and the parsing daemon running (see above).

2) Configure ~/.codex/config.toml — point codex at any OpenAI-compatible provider (example below: OpenCode Zen) and register the MCP server:

model = "deepseek-v4-flash"
model_provider = "opencode-zen"

[model_providers.opencode-zen]
name = "OpenCode Zen"
base_url = "https://opencode.ai/zen/go/v1"   # any OpenAI-compatible endpoint
wire_api = "chat"
env_key = "OPENCODE_ZEN_API_KEY"             # codex reads the API key from this env var

[mcp_servers.liuhe]
command = "node"
args = ["/path/to/malong/mcp-server.js", "--workspace", "/path/to/project"]

3) Run — export the API key, then start codex:

export OPENCODE_ZEN_API_KEY="your-api-key"   # never commit this
codex exec "index the workspace with reindex, then find createDb with symbol_search"

Tools are exposed as liuhe.<tool> (e.g. liuhe.health, liuhe.symbol_search, liuhe.repo_map). Run reindex once per workspace first so symbol search has an index to query.

Testing

  • Rust: cargo test (92 assertions: per-language extraction + protocol framing/decoding + cache LFU + server dispatch/priority queue + batch_extract + deep-nesting guards + hello handshake)

  • JS: 86 test files, 2231 assertions. npm test runs the full chain (primitives / embedded / mvp-batch / tool-registry / repo-map / handler-smoke / patch-parser / file-collector / code-search / health-check / db-adapter dual-backend / write-runtime / host-config / mcp-server / security-review-rules / journal-prune / gatekeeper-golden / debug-runner / edit-collision-guard / fix-imports / symbol-search / naming-consistency / call-chain / edit-transaction-ext / batch-edit-write / verify-pipeline / dep-graph-project / code-quality / tsc-spec / batch-edit-tocou / workflow-closure / variable-refs / output-budget / read-symbols-batch / feedback-list / test-bridge-run / mock-syncer-truncation / r54-p0 / r54-p1 / r54-p2 / r8 / r9 / crash-injection / r10 / dogfood-r12); test-dogfood-r14…r30 (end-to-end against a real daemon) run separately

  • Total: 2231 assertions across 86 JS test files (plus cargo tests)

  • One-shot: ./scripts/ci.sh (self-contained: cargo test + npm test + dogfood; reuses or auto-starts the daemon)

License

MIT

Changelog

See CHANGELOG.md for the full release history.

Available Tools

44 tools
active_todosA

Scan TODO/FIXME/XXX/HACK, prioritize by current work. Pure regex, no index. Pass current_files to boost.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScan scope: directory or file path relative to workspace_dir (default: ".")
current_filesNoFiles currently being edited (boosts priority)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses important behavioral traits: it is a pure regex scan with no index, implying potential performance characteristics, and it prioritizes results based on current_files. This adds useful context beyond a simple 'scan' statement, though it does not explicitly mention that it is read-only or describe exact output behavior.

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, consisting of three short sentences that each add value: purpose, method, and usage tip. It is front-loaded with the core function and contains no redundant or unnecessary 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?

Given the tool's simplicity, the description is mostly complete: it conveys purpose, method, and usage guidance, while the schema fully documents parameters. The main gap is that there is no output schema and the description does not describe the return format or ordering, but the tool name and purpose strongly imply a list of TODOs, so it remains adequate.

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%, with all three parameters described in the schema. The tool description adds little beyond reinforcing current_files ('Pass current_files to boost'), which is already captured in the schema. The description does not introduce new parameter semantics, so 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 action ('Scan TODO/FIXME/XXX/HACK') and its purpose ('prioritize by current work'). It is specific and distinguishes this tool from siblings like code_quality or code_review, which focus on broader analysis rather than TODO scanning.

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 clear context by explaining the tool's lightweight nature ('Pure regex, no index') and suggests boosting via current_files. However, it does not explicitly state when NOT to use it or name alternative tools, so it lacks explicit exclusions. Still, the usage context is clear for a TODO scanner.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

call_chainA

Callers/callees at a line; use when you know line, not symbol name. Symbol-level? impact_analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path relative to workspace_dir (e.g. "src/auth.py")
lineNoLine number. OR symbol (at least one required).
depthNoCall chain depth (default: 2, max: 10)
symbolNoSymbol name. OR line. Both? symbol wins.
max_calleesNoMax callees to return (default: 20)
max_callersNoMax callers to return (default: 20)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the behavioral disclosure burden. It explains that the tool works at a line level and returns callers/callees, but does not detail return format, pagination, or any potential side effects. For a simple query tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using two short sentences with no fluff. It front-loads the core purpose and immediately provides usage context. Every word contributes to clarity.

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 tool's moderate complexity (7 parameters, no output schema), the description is largely sufficient. It explains the core use case and points to a sibling for symbol-level queries. However, it omits any mention of return structure or behavior details like depth limits, which are in the schema but not described. Still, it is reasonably complete for a query tool.

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 baseline is 3. The description adds little to parameter understanding beyond what is already in the schema. The line/symbol relationship is already captured in the schema's anyOf and descriptions. No additional semantic meaning is 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 states the tool's function: 'Callers/callees at a line'. It specifies the resource (line) and the operation (retrieving callers and callees). It also distinguishes itself from the sibling tool impact_analysis by explicitly noting the line-based vs symbol-based 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?

The description provides explicit guidance: 'use when you know line, not symbol name' and direct the user to impact_analysis for symbol-level queries. This clearly indicates when to use this tool versus an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

code_qualityA

Read-only 5-dim JSON scores (techDebt/archViolation/blastRadius/overEngineering/paradigmFit). Findings? code_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile to probe, relative to workspace_dir
workspace_dirYesREQUIRED: project root (abs).

TDQS

A4/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 explicitly states the tool is read-only, which is a key behavioral trait not evident from the schema. It also discloses the output format (5-dim JSON with named dimensions). No annotations are present to contradict these claims.

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: one sentence plus a short conditional clause. It front-loads the most important information (read-only, 5-dim JSON scores) and uses minimal words to convey scope and alternatives. Every phrase earns its place.

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 tool with two required params and no output schema, the description covers the essential purpose, output structure, and a pointer to related functionality. However, it does not explain the meaning or scale of the scores, which could be unclear in some contexts. Still, it is reasonably complete for a focused tool.

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% for both parameters, so the schema already documents them. The description adds no additional meaning about the parameters, such as format constraints or relationships to the output dimensions, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates the tool returns a 5-dimensional JSON quality score with specific dimensions, and distinguishes itself from code_review by pointing to that tool for findings. However, it lacks an explicit verb like 'computes' or 'returns,' making it slightly less direct than ideal.

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 explicitly mentions an alternative tool ('Findings? code_review'), which provides clear guidance on when to use this tool vs. code_review. It does not discuss other sibling tools, but the specific conditional alternative is valuable and sufficient for common cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

code_reviewA

Shape-level code check (deterministic regex, zero LLM): naming, comment coverage, long functions, duplicated blocks, diff review (SEARCH/REPLACE). Clears shallow noise before deep review — not a correctness verdict.

ParametersJSON Schema
NameRequiredDescriptionDefault
diffNoPatch to review block-by-block: SEARCH/REPLACE (<<<<<<< SEARCH ... ======= ... >>>>>>> REPLACE) or unified diff (--- a/x.js / +++ b/x.js / @@ hunks). Pass one of file/source/diff; diff wins over source/file
fileNoFile path relative to workspace_dir to review (reads from disk)
sourceNoSource code text to review (mutually exclusive with file; source wins if both passed)
max_issuesNoMax issues to return (default: 50)
workspace_dirYesREQUIRED: absolute path of the project root to review code in

TDQS

A3.7/5.0
Behavior3/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 discloses deterministic regex, zero LLM, and the shape-level scope, which are valuable behavioral traits. Yet it omits side effects (e.g., whether it reads or writes files), permission requirements, or return format, which are important for a tool with no output schema.

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 front-load the essential qualifier ('Shape-level code check, deterministic regex, zero LLM') and include avoidable filler. Every phrase adds value, such as 'clears shallow noise before deep review.'

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 tool has 5 parameters and no output schema, so the description must carry more weight. It explains purpose and scope, and the 'max_issues' parameter implies a list of issues is returned, but the return structure and interpretation guidance are not described. This is adequate but not comprehensive.

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 baseline is 3. The description adds context about the types of checks performed (naming, comments, etc.) that map to expected outputs, but it does not clarify parameter precedence or add meaning beyond the schema's own descriptions.

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 it performs a 'shape-level code check' covering naming, comment coverage, long functions, duplicated blocks, and diff review. It distinguishes itself from correctness-focused tools by noting it is 'not a correctness verdict,' but does not explicitly contrast with siblings like 'code_quality' or 'style_sniffer.'

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 gives clear usage context: use it to 'clear shallow noise before deep review,' implying it is a preliminary check. It also excludes correctness judgments. However, no alternative tool names are mentioned, so guidance on when not to use specific siblings is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

config_driftA

Detect env vars/DB tables/services in code missing from .env.example/docker-compose. Pairs with exception_guard.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoFile to check (relative to workspace_dir). Omit to scan all source files.
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a read-only operation via 'Detect', and the schema adds a prerequisite to reindex if the workspace is new. However, it does not explicitly state that no modifications are made, nor does it describe output format or permission requirements. With no annotations provided, these behavioral details are missing, leaving some gaps.

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, consisting of a single clear sentence stating the purpose and a brief note about pairing with exception_guard. It is front-loaded with the core action and contains no filler or redundant information.

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?

This simple detection tool has a complete parameter schema but no output schema and no annotations. The description does not explain what the tool returns or what the agent should expect as a result, which is a significant gap given the lack of output schema. The crucial prerequisite about reindexing is only present in the schema, not the main description, and overall the description could provide more context 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?

The input schema fully documents both parameters (workspace_dir and file), including a required flag and a clear description for file with the option to omit for full scan. The tool description itself does not add parameter-specific meaning, but with 100% schema description coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool detects env vars, DB tables, and services missing from .env.example or docker-compose, using the specific verb 'Detect'. It also notes a pairing with exception_guard, which adds context and helps distinguish it from sibling tools like code_quality or security_review.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an implied usage context for detecting config drift and hints at a complementary relationship with exception_guard. However, it lacks explicit guidance on when to use this tool versus alternatives, when not to use it, or any exclusions. The guidance is minimal and somewhat vague.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

debug_runnerA

Run command/script/test and analyze failures: 14 error types, 4-language stack traces, suggested actions. script mode auto-picks runtime (js/py/go/rs/sh). Deterministic, zero LLM.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoOptional working directory relative to workspace_dir (e.g. "0FTYcloud"). Scripts that must run in a subdirectory no longer need cd workarounds.
testNoTest command to run in workspace_dir (e.g. "npm test", "pytest")
scriptNoScript path relative to workspace_dir to run + auto-analyze (js/mjs/py/go/rs/sh by extension). Pass exactly one of command/script/test; script wins over command
commandNoShell command to run (e.g. "node src/main.js")
timeoutNoTimeout in ms (default: 30000, min 1000)
workspace_dirYesREQUIRED: absolute path of the project root to run in

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It adds meaningful behavior details: 'Deterministic, zero LLM', script-mode auto-runtime selection, and 14 error types with 4-language stack traces. However, it does not mention potential side effects of running arbitrary commands (e.g., file modifications, network access), which would be important for a command execution 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?

The description is three concise sentences with no fluff. The first sentence fronts the primary purpose and outputs, while the second adds a key behavioral detail (script mode runtime selection) and the third states determinism. Every sentence contributes 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?

Given no output schema, the description compensates by detailing the analysis output (14 error types, 4-language stack traces, suggested actions) and key behavior (deterministic, zero LLM). It lacks a bit on success-handling or side effects, but the core context is covered, especially with rich parameter descriptions in the schema.

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%, and the schema already documents each parameter thoroughly (e.g., script auto-picks runtime, pass exactly one of command/script/test). The description does not add significant parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a command/script/test and analyzes failures, with specific features like 14 error types and 4-language stack traces. This verb+resource combination distinguishes it from sibling tools (e.g., test_bridge, tsc_check) by emphasizing execution plus automated failure analysis.

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?

There is no explicit guidance on when to use this tool versus alternatives such as test_bridge or find_tests. The description implies general debugging use but does not provide exclusions or compare against sibling tools, leaving the agent to infer applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dependency_gatekeeperC

Imports vs manifests: undeclared deps + install hints (Py/JS/Go/Rust). Pairs with guard_patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesSource file to check (relative to workspace_dir)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, but it only vaguely indicates a read/check operation ('Imports vs manifests', 'undeclared deps'). It does not mention side effects, permissions, reindex requirements, or output format. The schema hints at reindexing but the description itself is insufficient.

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?

The description is extremely concise, using a compact phrase that conveys core purpose and supported languages. It is front-loaded and has no wasted words, though it may be too terse for full clarity, it is appropriately sized for the limited content.

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?

For a tool with no output schema, the description must explain return values and expectations, but it says nothing about what results look like or how 'install hints' are presented. It also does not mention prerequisites beyond implicit reindexing. The description is too incomplete for an agent to confidently invoke and 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?

Schema description coverage is 100%, so the baseline is 3. The description adds context about the tool's purpose but does not provide specific parameter-level details beyond what the schema already states; it merely implies the file parameter is source code and workspace_dir is the root.

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 tool's function: comparing imports against manifests to list undeclared dependencies and provide install hints, while listing supported languages (Py/JS/Go/Rust). It distinguishes itself by mentioning the relationship with guard_patterns, although it does not fully separate it from other siblings.

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?

No explicit guidance on when to use this tool versus alternatives. The phrase 'Pairs with guard_patterns' hints at a complementary relationship, but there is no concrete when-to-use or when-not-to-use instruction, leaving the agent to infer usage from the terse description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dep_graphA

Import dependency graph of a file (transitive N levels) or the whole project (scope=project → nodes/edges/cycles). Circular deps? fix_imports. Changing a dep? impact_analysis first.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoFile path relative to workspace_dir (e.g. "scripts/lib/tools/spawn.mjs"). Omit or use scope=project for whole-project graph.
depthNoTransitive depth (default 3, max 10). File mode only.
scopeNoB13: scope=project → whole-project module graph {nodes, edges, cycles}. Mutually exclusive with file.
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

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 full responsibility for behavioral disclosure. It implies a read-only operation via 'import' and describes output for project mode, but it does not explicitly state read-only status, side effects, or prerequisites like reindexing. This leaves some 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?

Two concise, information-dense sentences that front-load the primary purpose and immediately provide alternative tool pointers. No wasted words; every phrase earns its place.

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 the main use cases, project output structure, and alternative tools. It omits file-mode output specifics, but given the schema's completeness, this is sufficient. The complexity level is moderate and well-addressed.

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 the baseline is 3. The description largely restates schema information (file, depth, scope) without adding new semantics. It clarifies the two modes, but that is already present 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's function: generating an import dependency graph. It specifically distinguishes between file-level (transitive N levels) and project-level (nodes/edges/cycles) use cases, making it distinct from sibling tools like fix_imports and impact_analysis.

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?

Explicit usage guidance is provided: 'Circular deps? fix_imports. Changing a dep? impact_analysis first.' This tells the user when not to use this tool and points to specific alternatives, which is excellent contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diff_factsA

Post-edit_transaction: AST changes + caller/test sync (JSON). Stale tests? test_bridge.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo"last_txn" (default) or "txn:<id>" (get id from edit_transaction action=begin)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

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 mentions the output format (JSON) and the content (AST changes + caller/test sync), but does not disclose whether the tool is read-only, has side effects, or requires any special setup beyond being post-edit_transaction.

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 and information-dense. Every part serves a purpose: the timing, the content, the format, and the pointer to an alternative. No wasted words.

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 provides the essential context (when to use, what it returns, format, alternative), but it remains cryptic. It doesn't explain what 'caller/test sync' entails or the structure of the JSON, leaving ambiguity for an agent without domain knowledge.

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 input schema provides 100% coverage with descriptions for both parameters. The tool description adds no additional parameter-specific meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates the tool provides AST changes and caller/test sync information in JSON format, specifically after an edit_transaction. It distinguishes itself from sibling tools by referencing test_bridge for stale tests, but it lacks an explicit verb like 'get' or 'list'.

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?

It explicitly states the timing ('Post-edit_transaction') and provides an alternative tool for a specific condition ('Stale tests? test_bridge.'). This gives clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_batchA

MUST USE for all file edits. PREFERRED single-file edit path. Read first, then edit. Multiple edits, atomic, dry_run previews diff. Rollback/multi-file? edit_transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesPath to the file to edit, relative to workspace_dir (e.g. "src/auth.py")
editsYesArray of edits to apply. Example: [{"old_string": "foo", "new_string": "bar"}]
dry_runNoPreview changes as unified diff, do not apply
partialNoApply successful edits even if some fail (returns applied/failed indices)
verboseNoReturn original_content/final_content full text (default: false — diff only)
file_pathNoDEPRECATED: abs path alias, only inside workspace
workspace_dirNoREQUIRED: project root (abs). reindex first if new.

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 burden. It discloses atomicity of multiple edits, dry-run preview capability, and the read-first requirement. However, it does not explicitly warn about file modification side effects or partial-failure behavior, though these are evident from the schema and the word 'edit'.

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 short, dense sentences that front-load the must-use directive and immediately capture purpose, usage, and alternatives. Every sentence earns its place with zero filler.

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 single-file edit tool with a detailed schema, the description covers the essential behavioral context: atomicity, dry-run preview, and the alternative path for other scenarios. It doesn't mention return values or partial-failure handling, but the schema fills those gaps, and the tool is relatively straightforward.

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 schema already documents all parameters. The description adds minimal parameter-specific insight beyond the schema, mainly tying dry_run to diff preview and emphasizing atomic multi-edit behavior, but no new semantic 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?

The description explicitly says 'MUST USE for all file edits' and 'PREFERRED single-file edit path', naming the resource (files) and the action (edit). It also distinguishes itself from edit_transaction, which is for rollback/multi-file scenarios, making it clear among siblings.

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?

It provides explicit when-to-use guidance ('MUST USE for all file edits'), a prerequisite ('Read first, then edit'), and names an alternative for other cases ('Rollback/multi-file? edit_transaction').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_collision_guardA

Two-step guard: record_read (snapshot) after reading, check before editing. Detects external edits. Pairs edit_transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path relative to workspace_dir
actionYesrecord_read: snapshot after reading; check: verify before editing
session_idNoOptional session ID for multi-agent isolation (default: "default")
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A3.9/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 behavioral burden. It discloses the two-step workflow and the fact that external edits are detected, but does not explain what happens on detection, where snapshots are stored, or whether the guard has side effects. The integration hint with edit_transaction is vague.

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 sentences convey the core workflow and purpose without wasted words. The structure is front-loaded with the tool's purpose and steps, making it easy to scan.

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?

Despite having no output schema or annotations, the description explains the core workflow but omits return values, failure behavior, and session handling implications. Given the tool's relatively low complexity, this is adequate but leaves gaps that an agent would need to infer or discover.

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 the baseline is 3. The description's 'record_read (snapshot) after reading, check before editing' essentially restates the exact semantics already in the action parameter's enum descriptions, adding no new information for parameter use.

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 defines a two-step guard mechanism with specific actions (record_read and check) and its purpose of detecting external edits before modifying a file. Distinguishes itself from siblings by explicitly pairing with edit_transaction.

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?

Provides explicit timing guidance: record_read after reading, check before editing. Mentions pairing with edit_transaction, giving contextual fit. Does not mention alternatives or exclusions, but the usage pattern is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_transactionA

DEFAULT multi-file edit path with rollback/preview/undo (begin→edit→commit). Use when unsure about changes. Single-file? edit_batch. For string params containing double quotes/backslashes, keep JSON escaping consistent across the whole string (escape uniformly or prefer full-width quotes), otherwise client-side parameter parsing fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoSingle file path relative to workspace_dir (required for action=edit).
nameNoTransaction name (required for action=begin).
editsNoArray of {old_string,new_string}. Required for edit.
filesNoMultiple file paths relative to workspace_dir. Same edits applied to all (broadcast mode).
actionYesTransaction action to perform.
atomicNoFor edit_multi: all-or-nothing (default: true).
txn_idNoTransaction ID (required for edit, edit_multi, commit, undo_commit, rollback, info).
file_editsNoPer-file edits for edit_multi: [{file, edits}]. Overrides files+edits.
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the transactional workflow (begin→edit→commit) and mentions rollback/preview/undo, indicating state management. It also warns about JSON escaping inconsistencies causing client-side parsing failures. While not detailing every side effect, it provides meaningful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, followed by usage guidance and a technical caution. 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 complex tool with 9 parameters and 7 actions, the description leverages the schema's parameter descriptions and adds the core workflow and usage context. While an example would be helpful, the combination of schema and description is sufficient for a capable agent.

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 covers 100% of parameters, but the description adds workflow context linking actions (begin→edit→commit) and practical guidance on consistent JSON escaping for string parameters containing quotes or backslashes. This goes beyond schema 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?

Clearly states it is the default multi-file edit path with transactional operations (begin, edit, commit, rollback/undo). Explicitly distinguishes from edit_batch for single-file edits, providing a specific verb+resource and sibling differentiation.

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 when unsure about changes' and directs single-file edits to edit_batch. This gives clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

exception_guardB

Check raise/throw uses project exceptions vs builtins, module-scoped (falls back to project scope). Fix → verify test_bridge. Pairs config_drift.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile to check (relative to workspace_dir)
workspace_dirYesREQUIRED: project root (abs).

TDQS

B3.4/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 burden of behavioral disclosure. It reveals module/project scoping and suggests a fix capability via 'Fix → verify test_bridge'. However, it is ambiguous whether the tool actually modifies files or only reports, and it does not disclose side effects, permissions, or failure modes.

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?

The description is extremely concise, fitting purpose, scope, workflow, and a sibling reference into one sentence. It is front-loaded with the main verb and resource. The arrow notation is compact but slightly ambiguous, though it earns its place by conveying multiple pieces of information efficiently.

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 two-parameter tool with no output schema or annotations, the description provides a reasonable overview. It explains the check scope, hints at fix verification, and pairs a related tool. However, it leaves significant gaps: what the output looks like, whether fixes are direct file modifications, and how to interpret results. The mention of test_bridge is vague without explaining what it does.

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 descriptions for both workspace_dir and file, so the baseline is 3. The description adds context about module scoping that relates to how the file parameter is interpreted, but it does not directly add semantics to the parameters themselves beyond what the schema provides.

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 tool's primary function: 'Check raise/throw uses project exceptions vs builtins'. This is a specific verb+resource that distinguishes it from generic checking tools. However, it does not explicitly contrast with sibling tools like guard_patterns, only pairing with config_drift, so it's clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage contexts through 'module-scoped (falls back to project scope)' and the workflow 'Fix → verify test_bridge'. It also pairs with config_drift, giving hints about when to use. However, it lacks explicit 'use this when' or 'instead of' guidance, so usage is inferred rather than clearly prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

feedbackB

Report malong tool issues/errors/ideas; collected locally.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoAdditional context or suggestion
toolYesTool name that triggered the feedback
issueYesWhat went wrong or could be improved
error_codeNoError code encountered, if any

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It adds the behavioral detail that reports are 'collected locally,' which informs the agent about data handling. However, it does not disclose whether the operation is persistent, what response to expect, or any side effects beyond collection.

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 compact sentence with no unnecessary words. It front-loads the action and includes a key detail (local collection) with minimal verbosity. The minor typo 'malong' does not warrant a reduction.

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?

For a simple feedback tool with no output schema, the description provides the core purpose and a local-collection detail, but it omits return behavior and leaves 'malong' unexplained. Given the simplicity, it should at least mention what happens after reporting. This is a clear 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?

The input schema provides full descriptions for all four parameters (tool, issue, note, error_code), so baseline is 3. The description does not add any parameter-specific meaning beyond the 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?

The description clearly states the tool's purpose: reporting issues/errors/ideas. The verb 'Report' and resource 'tool issues/errors/ideas' are specific, and no sibling tools serve a similar function. However, the term 'malong' is ambiguous and not defined, slightly reducing clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when encountering tool issues/errors/ideas, but does not explicitly state when-to-use vs alternatives. Since no sibling tools are similar, it's acceptable, but there is no guidance on prerequisites or what qualifies as feedback.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_testsA

Find test files for a source file (naming + import reverse lookup). Run them? test_bridge. AUTO-FRESH: files modified after last index are re-indexed automatically on read — explicit reindex only needed for brand-new workspaces/files.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesSource file path relative to workspace_dir (e.g. "src/auth.py")
symbolNoOptional: narrow to tests referencing a specific symbol
workspace_dirYesREQUIRED: project root (abs).

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 full responsibility for behavioral disclosure. It reveals the auto-fresh re-indexing behavior and notes when explicit reindex is needed, which is useful. However, it doesn't explicitly state whether the operation is read-only, what side effects occur during auto-fresh, or what return format to expect, leaving gaps in transparency.

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 only two sentences, with the purpose stated first and the essential behavioral note (auto-fresh) in the second. Every word earns its place; there is no fluff or redundancy.

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?

This tool has no output schema and no annotations, so the description should cover key context. It explains what it does and the auto-fresh behavior, and points to test_bridge. However, it lacks any mention of return format (e.g., paths) and what 'import reverse lookup' entails, which could be important for an agent to gauge if the tool meets its needs. Given the simple scope, this is adequate but not 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 the baseline is 3. The description's phrase 'naming + import reverse lookup' adds semantic nuance to how the 'file' parameter is used, but it doesn't elaborate on 'symbol' or 'workspace_dir' beyond schema. It adds marginal value without compensating for any missing parameter 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?

The description uses the specific verb 'Find' with a clear resource ('test files for a source file') and explains the mechanism ('naming + import reverse lookup'). It also distinguishes itself from test_bridge, a sibling tool, by explicitly pointing to test_bridge for running tests.

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 explicitly says 'Run them? test_bridge', which tells the agent to use test_bridge for execution, providing a clear when-not-to-use and alternative. It also gives context about when explicit reindex is needed (brand-new workspaces/files) and that auto-fresh handles modified files, informing usage decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fix_importsC

Detect unused imports, undefined symbols, circular deps. auto_fix applies.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path relative to workspace_dir (e.g. "src/new_feature.py")
auto_fixNoAuto-fix issues when possible (default: false)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
max_candidatesNoMax candidate symbols per undefined symbol (default: 10)

TDQS

C2.9/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 the full burden. It mentions 'auto_fix applies' but does not explicitly disclose that files may be modified when auto_fix is true, nor does it describe output format, side effects, or prerequisites like reindexing.

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?

The description is very concise and front-loaded, but the second sentence 'auto_fix applies' is incomplete and could be integrated more clearly. Overall, it wastes no words but could be structured more effectively.

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?

Given the lack of annotations and output schema, the description is too sparse. The tool can modify files (via auto_fix), but the description does not explain return values, side effects, or when to use it, making it incomplete for safe invocation.

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 the baseline is 3. The description adds no extra meaning about parameters; 'auto_fix applies' simply echoes the auto_fix parameter without elaborating on candidate handling or defaults.

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 identifies the tool's purpose: detecting unused imports, undefined symbols, and circular dependencies, with an auto-fix option. It uses specific verbs and resources, but does not explicitly state the scope (e.g., per file vs project) or differentiate from similar sibling tools like dep_graph or code_quality.

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?

There is no guidance on when to use this tool versus alternatives such as dep_graph, sweep_dead_code, or code_quality. The description only states what it does, leaving the agent to infer appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gcA

Trigger manual GC (needs --expose-gc). Use when memory is high.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It mentions the prerequisite --expose-gc but does not indicate side effects (e.g., blocking, cost, or that it forces a full GC). This leaves the agent uncertain about what actually happens.

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 short sentences with no filler. It is front-loaded with the action and immediately follows with a usage condition, making it efficient and easy to parse.

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 zero-parameter tool with no output schema, the description covers the core purpose and usage context. However, it omits behavioral details like what triggers the GC or any return value, which would make it fully complete for an agent.

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 tool has zero parameters, and the schema is complete (100% coverage). The description adds no parameter-specific information, so the baseline of 4 applies as no parameters need explanation.

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 action ('Trigger manual GC') and includes a necessary prerequisite ('needs --expose-gc'). It is specific and distinct from sibling tools, which are unrelated development utilities.

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 a clear usage condition ('Use when memory is high') but does not mention when not to use it or alternative tools. This is good context but lacks exclusions or alternatives for a top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_worktreeA

Multi-file changes on isolated git branch: zero working-tree pollution, auto commit + ff-merge, verify_cmd. Rollback on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
changesYesREQUIRED: list of file changes to apply transactionally
messageNoCommit message (default: tongtian: multi-file change (N files))
timeoutNoGit command timeout in ms (default: 30000, min 1000)
verify_cmdNoOptional shell command run in the worktree before commit; non-zero exit aborts and rolls back
workspace_dirYesREQUIRED: project root (abs). Must be a git repository.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses key behaviors: changes are made on an isolated branch, committed and fast-forward merged, verification via verify_cmd can abort and rollback on failure. This is substantial disclosure for a mutation tool, though it doesn't detail rollback mechanics or return values.

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 concise sentence with a colon and list, conveying purpose, benefits, and safety features. Every phrase adds value, with 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?

The description covers the core workflow (multi-file changes, commit, merge, verify, rollback) but doesn't specify the return value or the exact lifecycle of the worktree/branch. Given no output schema or annotations, this is a minor gap but overall 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%, so baseline is 3. The description mentions verify_cmd and rollback, but the schema already documents each parameter thoroughly. The description adds no new parameter meaning 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 applies multi-file changes on an isolated git branch with auto commit and ff-merge, including verification and rollback. It distinguishes itself from generic edit tools by specifying the worktree isolation and safety mechanisms.

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 implies usage for transactional multi-file changes that should not pollute the working tree, with verification via verify_cmd. It doesn't explicitly name alternatives or exclusions, but the mention of isolated branch and zero pollution provides clear context for when to prefer this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

guard_patternsA

AST rules: no bare-except/debugger/eval. Custom via .ai-patterns.json. Pre-commit gate with dependency_gatekeeper.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile to check (relative to workspace_dir)
rulesetNoOptional ruleset path relative to workspace_dir (default: .ai-patterns.json + built-in)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A3.5/5.0
Behavior3/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 of behavioral disclosure. It does add context about the specific AST rules, custom config, and its role as a pre-commit gate. However, it does not state whether the tool is read-only, what it returns (e.g., a pass/fail report, violations list, exit codes), or any side effects. This is a notable gap for a tool without annotations, but the provided context is not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise fragments that are front-loaded with 'AST rules' to immediately convey the core purpose. Each sentence adds distinct value: what rules are enforced, how to customize, and how it integrates as a pre-commit gate. There is no redundancy or filler.

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 tool is relatively simple with only three parameters and no output schema, but the description does not explain what the tool returns or the effects of a violation (e.g., blocking a commit). The integration note about dependency_gatekeeper is vague. The schema covers parameters, but the description should at least hint at the tool's output or behavior when a pattern is found; it falls short of that.

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 input schema provides detailed descriptions for all three parameters (file, ruleset, workspace_dir), giving 100% coverage. The description adds no parameter-specific information beyond what the schema already contains. Since the schema carries the load, a baseline score 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 identifies the tool as enforcing AST rules for specific forbidden patterns (bare-except, debugger, eval), and mentions custom rules via .ai-patterns.json. The verb 'guard' is implied by the name and reinforced by 'Pre-commit gate', but it does not explicitly contrast with sibling tools like code_quality or style_sniffer, so it loses a point for lack of sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a pre-commit gate, especially 'with dependency_gatekeeper', and suggests customization via a config file. However, it does not provide explicit when-to-use vs alternatives, exclusions, or prerequisites (e.g., needing to reindex first, as hinted in workspace_dir description). This is implied usage, not explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

healthB

System check + self-healing: DB integrity, tools, memory, semaphore. actions: check/restart/cleanup.

ParametersJSON Schema
NameRequiredDescriptionDefault
statsNoUsage stats: calls, success rate, tokens saved
actionNocheck (default) / restart (soft-recover) / cleanup (prune stale caches)
dry_runNoFor action='cleanup': report what would be pruned without deleting (default false).
max_age_daysNoFor action='cleanup': prune workspace caches not accessed within this many days (default 14).

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It mentions 'self-healing' and actions like restart/cleanup, implying mutating behavior, but does not disclose potential destructive consequences, permission requirements, or what 'restart' entails. The description does not go beyond what a reader would infer from the action names.

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 just two short sentences, front-loaded with the core purpose and followed by the action list. Every phrase contributes meaning, with no filler or redundancy.

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 tool has four optional parameters and no output schema or annotations, so the description needs to provide sufficient context. It gives a solid high-level overview but omits details like what 'restart' actually does, what 'tools' refers to, and whether the tool returns a report. The schema covers parameter specifics, but the description is not fully complete for a self-healing tool.

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 input schema provides 100% coverage of all four parameters with detailed descriptions, so the baseline is 3. The description's mention of action names adds no additional meaning beyond the schema's already-documented definitions of check, restart, and cleanup.

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 tool performs a 'system check + self-healing' covering DB integrity, tools, memory, and semaphore, and lists actions check/restart/cleanup. This distinguishes it from many sibling tools focused on code analysis, though it does not explicitly contrast with overlapping tools like 'gc' or 'reindex'.

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?

No guidance is provided on when to use this tool versus alternatives such as 'gc' or 'config_drift'. The action list implies some usage context, but there are no explicit conditions, exclusions, or alternative tool mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

impact_analysisA

BEFORE modifying/renaming: callers (blast radius), callees, risk (caller-count blast). Line-level? call_chain. Simple edit? read_symbol+write_symbol. AUTO-FRESH: files modified after last index are re-indexed automatically on read — explicit reindex only needed for brand-new workspaces/files.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesPath rel to root (not absolute, not a dir)
depthNoIndirect caller BFS depth (default: 2, max: 10). Only used when symbol is provided.
symbolNoSymbol to analyze (fn/class/method/var). Omit → file-level. Use symbols[] for batch.
symbolsNoMultiple symbol names to analyze in one call. Returns array of results. Mutually exclusive with symbol.
change_typeNoChange type. Affects risk threshold (default: modify)
max_callersNoMax callers to return (default: 20). caller_count always includes full counts. Backward-compat alias for max_results.
max_resultsNoY002-S4 output budget: max results to return (default 20, 0=unlimited). max_callers is a backward-compat alias.
context_modeNoY002-S4 output budget: caller context granularity. none=no context (cheapest), snippet, full (default).
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.1/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 of behavioral disclosure. It adds useful context about auto-reindexing and the risk metric, but it doesn't state whether the operation is read-only, potential side effects, or error conditions. The provided details are valuable but not comprehensive.

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?

The description is compact and front-loaded, using shorthand to convey multiple key points in two sentences. Every phrase earns its place, though the telegraphic style ('BEFORE modifying/renaming:', 'Line-level? call_chain. Simple edit? read_symbol+write_symbol.') sacrifices a bit of readability.

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?

Despite having 9 parameters and no output schema, the description provides essential context: primary use case, alternatives, auto-fresh indexing behavior, and core outputs (callers, callees, risk). It doesn't describe the return format in detail, but the schema covers parameters, and the description covers the decisions an agent needs to know when to choose this tool.

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 input schema already documents all 9 parameters with 100% coverage, so the baseline is 3. The description adds minimal parameter-specific semantics beyond mentioning blast radius and risk, but it does not explain any parameter nuances that aren't in the schema. It does not need to, given the schema's thoroughness.

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: perform impact analysis before modifying or renaming by showing callers (blast radius), callees, and risk based on caller-count. It also distinguishes itself from siblings by explicitly directing line-level analysis to call_chain and simple edits to read_symbol+write_symbol, leaving no ambiguity about what this tool provides.

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 guidance ('BEFORE modifying/renaming') and contrasts with alternatives ('Line-level? call_chain. Simple edit? read_symbol+write_symbol.'). It also clarifies the auto-fresh indexing behavior, indicating when an explicit reindex is needed. This is exemplary usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspectA

Outline + references + call chain in one call (replaces read_outline/references/call_chain).

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path relative to workspace_dir
symbolYesSymbol name to inspect
include_refsNoInclude cross-file references (default: true)
include_chainNoInclude call chain (default: true)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
include_outlineNoInclude file outline (default: true)

TDQS

A4.2/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 full burden of behavioral disclosure. It explains that the tool aggregates three outputs, but does not explicitly state it is read-only, nor does it mention prerequisites (e.g., reindexing) or output format caveats. Some useful context is present, but gaps remain.

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, well-structured sentence that immediately conveys the tool's function and its relationship to sibling tools. It is concise with 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?

Given the schema covers all parameters and the description explains the high-level purpose, the tool is adequately described for selection and invocation. The lack of an output schema is partly mitigated by naming the three components, though a more detailed description of the combined return structure would improve completeness.

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?

All six parameters are documented in the schema with descriptions, and the description does not add meaning beyond what the schema already provides. The mention of 'outline + references + call chain' maps to the boolean parameters, but the schema already covers this, so the baseline score of 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 combines outline, references, and call chain in a single call, and explicitly mentions it replaces read_outline/references/call_chain. This makes the purpose immediately clear and distinguishes it from sibling tools.

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 phrase 'replaces read_outline/references/call_chain' explicitly tells the agent when to use this tool instead of those alternatives. This is clear, actionable guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mock_syncA

Detect mock/patch mismatches after signature changes. Pairs rename_symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesSource file path (relative to workspace_dir)
functionYesFunction name to check mocks for
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the tool is read-only, what output or side effects occur, or any required permissions or preconditions beyond the schema's reindex notice. This is a significant gap for a tool that detects issues.

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 short, front-loaded sentences with no redundant words. 'Detect mock/patch mismatches after signature changes' immediately states the core purpose, and 'Pairs rename_symbol' adds workflow context with minimal verbosity.

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, no annotations, and the description does not explain what the tool returns, whether it modifies anything, or the exact scope of 'mock/patch mismatches.' The 'Pairs rename_symbol' hint is useful, but the overall context is incomplete for an agent to safely and effectively invoke the tool.

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 input schema has 100% description coverage, and the parameters are clearly documented (e.g., 'REQUIRED: project root (abs). reindex first if new.'). The tool description adds no additional parameter-level meaning, so the baseline of 3 is appropriate since the schema already provides sufficient semantics.

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 function: 'Detect mock/patch mismatches after signature changes.' This uses a specific verb ('detect') and resource ('mock/patch mismatches'), and the phrase 'after signature changes' connects it to a specific workflow, distinguishing it from siblings like rename_symbol.

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 clear usage context: 'after signature changes' and 'Pairs rename_symbol' explicitly links it to a workflow step. However, it does not explicitly state when not to use it or mention alternative tools, though the sibling context makes the pairing clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

naming_consistencyC

New symbol names vs project style (snake/camel/Pascal) + verb consistency. Index required.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesTarget file for language detection (relative to workspace_dir)
langNoOptional: python|javascript|typescript|go|rust|java (default: by extension)
new_symbolsYesREQUIRED: array of new symbol names to check (e.g. ["getUser", "queryAll"])
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It mentions 'Index required,' which is a dependency, but does not indicate whether the tool is read-only, what it returns, or any side effects. This is insufficient for an agent to understand the tool's behavior.

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?

The description is very concise, consisting of one sentence and a fragment. It is front-loaded with the core purpose and does not waste words. However, it is slightly terse and could be clearer, but overall appropriately sized for a simple tool.

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 description lacks essential context such as return values, operational effects, and usage examples. There is no output schema, so the description should explain what the tool returns (e.g., violations list). It also does not clarify read-only behavior, making it incomplete for an AI 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?

The schema covers all 4 parameters with 100% coverage, so the schema already provides parameter descriptions. The description adds the 'Index required' note, which is a prerequisite but not directly about parameter semantics. Thus, it meets the baseline but does not significantly enhance parameter understanding.

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 states the tool checks new symbol names against project naming style (snake/camel/Pascal) and verb consistency, which is a specific function. It differentiates from siblings like style_sniffer and code_quality by focusing on symbol naming consistency, though it could be more explicit about comparing to existing conventions.

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?

No guidance is provided about when to use this tool versus alternatives like style_sniffer or code_quality. The only usage hint is 'Index required,' which is a prerequisite but not a usage context. There is no mention of scenario fit or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_parserA

Parse SEARCH/REPLACE patch text (text=...), dry-run apply. For external patch blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoFile path relative to workspace_dir
textYesSEARCH/REPLACE
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A3.7/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. 'Dry-run apply' discloses that the tool is non-destructive, which is a key behavioral trait. However, it omits expected return values, error handling, and any side effects, leaving ambiguity about what happens after parsing.

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 sentences, no filler. Each clause delivers essential information: the action, the resource, the dry-run behavior, and the intended context. Ideal economy.

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 tool is simple and the schema covers parameters, but with no output schema and no annotations, the description does not explain what the tool returns on success or failure. It is sufficient to invoke but not to interpret results, leaving a completeness 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?

The schema covers 100% of parameters with descriptions, so the baseline is 3. The description merely repeats that the 'text' parameter contains SEARCH/REPLACE content, adding no extra semantic value 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 parses SEARCH/REPLACE patch text and dry-run applies it. 'For external patch blocks' distinguishes this from sibling tools that likely perform actual edits, providing a clear scope and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'For external patch blocks' implies usage context, but no explicit alternatives or when-not-to-use guidance is given. The condition is stated but not elaborated with exclusions or related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_outlineA

File structure: functions/classes/signatures, no full read. depth=hierarchy nesting, NOT call depth. Known symbol? read_symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path relative to workspace_dir (e.g. "src/auth.py")
depthNoHierarchy depth: 0=top-level only, 1=class+methods, 2=full recursive (default: 1)
max_itemsNoMax top-level items to return (default: 50)
include_refsNoInclude reference counts per symbol (default: false)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
include_test_refsNoInclude test reference counts (default: false)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses the key behavioral limitation ('no full read') and clarifies depth semantics, adding value beyond the schema. Yet it does not mention whether the tool is purely read-only, whether it requires indexing, or what the return format is, leaving some behavioral aspects undisclosed.

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, packing critical info into two short sentences and a question. It is front-loaded with the core purpose and every clause adds value 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?

For a read tool with 6 parameters, the description gives a clear outline of purpose and a sibling pointer. It lacks explicit mention of call depth alternatives and return details, but the schema covers parameters and the tool name implies read-only behavior. Overall, it is adequate but could slightly expand on when to use call_chain.

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 each parameter is already documented. The description adds a useful clarification that depth means hierarchy nesting, not call depth, but this largely reinforces the schema's existing 'Hierarchy depth' description. 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 reads file structure (functions/classes/signatures) rather than full content, and explicitly distinguishes from read_symbol. The phrase 'no full read' clarifies scope, matching the tool name.

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?

Provides clear guidance for the known-symbol case ('Known symbol? read_symbol'), and 'depth=hierarchy nesting, NOT call depth' implicitly directs call-depth analysis elsewhere. However, it does not explicitly name call_chain or other alternatives for full reads, so some usage context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_symbolA

MUST READ BEFORE WRITE. Symbol body + version (base_version for writes). Resolves by symbol_id or name+file. Full file? read_outline. AUTO-FRESH: files modified after last index are re-indexed automatically on read — explicit reindex only needed for brand-new workspaces/files.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNocore (default): body+version. rich: +outline+navigation.
sourceNolive (default): current file+staleness. indexed: read-only snapshot, never for write.
locatorNoSymbol anchor: {symbol_id} or {file_path}+{name} (single read)
locatorsNoY002-S5 batch entry: array of locators, parallel read-only, per-entry failure non-blocking. Use instead of locator for multi-symbol reads.
budget_hintNoMax body chars to return; must truncate, not hint (default 1200)
on_ambiguousNofail (default): return candidates, never silently pick.
context_linesNoContext lines around symbol (default 0 — context_lines does not affect slicing; symbol body is returned as indexed)
outline_depthNoOutline depth (default 1)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
include_outlineNoForce include file outline (off in core by default)

TDQS

A4.7/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 auto-fresh re-indexing behavior, resolution modes (symbol_id or name+file), and base_version relevance for writes. However, it does not describe error handling or the exact return payload beyond 'body + version', preventing a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, each earning its place: prerequisite, core function, and alternatives/auto-fresh. No fluff or redundancy, well front-loaded.

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 10-parameter tool with no output schema, the description covers the key decisions: what it reads, how to resolve symbols, when to use read_outline, and reindex behavior. The schema details the rest, so the description is complete enough for an agent to select and invoke the tool correctly.

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 description coverage is 100%, so baseline is 3. The description adds value by explaining resolution via symbol_id or name+file, and mentions base_version for writes, which is not in the schema. This raises it to a 4.

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 symbol body and version, resolves by symbol_id or name+file, and explicitly distinguishes from read_outline for full files. The verb 'read' is explicit and the resource is a symbol, with sibling differentiation.

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 'MUST READ BEFORE WRITE', provides an alternative ('Full file? read_outline'), and clarifies when reindexing is needed (brand-new workspaces/files). This gives clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

referencesA

Cross-file usages of a symbol, incl. usage counts. Use full member path (obj.method). Prefer over grep. AUTO-FRESH: files modified after last index are re-indexed automatically on read — explicit reindex only needed for brand-new workspaces/files.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoRestrict to file rel to root; not a dir; omit = project-wide
kindNoY002-S4 kind filter: comma-separated call/import/use/assign/extends/implements. Invalid kinds ignored with kind_filter_note.
symbolYesSymbol name / call target to find references for
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses the AUTO-FRESH re-indexing behavior and the need for explicit reindex only for new workspaces/files. It also mentions usage counts. 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?

The description is extremely concise: two sentences plus a brief auto-fresh note. Purpose is front-loaded, all sentences carry meaning, and there is zero 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?

For a simple query tool with full schema coverage, this is quite complete. It explains the core behavior, usage counts, path requirement, and indexing behavior. However, it does not describe the return format or possible failure modes, which would be needed for a 5.

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 the full member path requirement for the symbol parameter and clarifying workspace_dir reindex behavior, which goes beyond schema descriptions.

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 tool's function: 'Cross-file usages of a symbol, incl. usage counts.' This is a specific verb+resource pairing. However, it does not explicitly differentiate from sibling tools like trace_symbol or call_chain, though 'cross-file usages' is distinct enough.

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?

Provides clear usage context: 'Use full member path (obj.method).' and 'Prefer over grep.' It gives a practical comparison and a requirement, but does not explicitly mention when not to use or name specific sibling alternatives, which would make it a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reindexA

MUST run FIRST: index workspace before ALL other malong tools. Over-threshold workspaces require two-step confirm (call → get token → confirm). blocking/force options. malong = LLM-native toolset.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoMark ALL files dirty + re-extract (ignore mtime). Use to purge stale index. Default: incremental.
confirmNoSecond-step confirmation token from a previous needs_review response (TTL 10 min). REQUIRED to start indexing when total_files > threshold. NEVER invent a token — re-call reindex to get a fresh one.
blockingNoIf true, wait for indexing to complete before returning (default false = async).
maxFilesNoIndex upper bound (default 5000): after confirmation, indexing stops at this many files and warns (truncated). Raise it or use ignoreDirs to index everything.
skipDirsNoSkip specific directories by relative path, e.g. ["runtime1", "0通天/eval-cases"]. Useful when pre-check says too many files.
thresholdNoPre-check warning line (default 2000): workspaces with more files return needs_review + confirm_token before indexing (no silent skip).
ignoreDirsNoAdditional directory names to skip globally (e.g. ["deps", "archive"]). Combined with built-in defaults.
workspace_dirNoProject root (abs). Omit to check indexing status.

TDQS

A4/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 discloses the two-step confirmation, blocking/force options, and its prerequisite nature, but does not mention side effects (e.g., overwriting index), whether it's a write operation, timeout behavior, or what happens if run without confirmation. Some transparency is provided, but gaps remain.

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?

The description is short and front-loads the critical 'MUST run FIRST' directive. However, it is fragmented into three rough segments with some redundancy ('MUST run FIRST' and 'before ALL other malong tools' overlap). Still, it earns its place without excess.

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 workflow is complex (8 optional params, no output schema), and the description covers the crucial confirm process and prerequisite status. However, it doesn't describe return values (e.g., needs_review response with token), explain why indexing is required, or state what happens if skipped. It's adequate but not 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 the baseline is 3. The description mentions 'blocking/force options' and the confirm flow, but these are already captured in the schema. It adds no new meaning about parameters (e.g., force semantics, maxFiles upper bound).

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 indexes a workspace and positions it as the mandatory first step for all malong tools. The verb 'index' and resource 'workspace' are explicit, and the phrase 'before ALL other malong tools' distinguishes its role from siblings.

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 instructs to run FIRST, provides the two-step confirm procedure for over-threshold workspaces, and mentions blocking/force options. This gives clear when-to-use guidance and preconditions, though it doesn't name alternatives (none needed for a prerequisite).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_symbolA

Execute a cross-file symbol rename (edit_transaction-based). Word-boundary, string/comment-aware. dry_run previews. To see what a rename would affect FIRST, use impact_analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile where the symbol is defined (relative to workspace_dir)
symbolYesCurrent symbol name to rename
dry_runNoPreview changes without writing (default: true)
new_nameYesNew symbol name
workspace_dirYesREQUIRED: project root (abs).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors: 'Word-boundary, string/comment-aware' explains the matching semantics, reducing risk of unintended replacements. 'dry_run previews' explains the behavior of the dry_run parameter. It also notes the transaction-based nature. These details are essential since no annotations are provided.

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 exceptionally concise: three sentences, each packed with information. It front-loads the core purpose and uses no filler words, making it easy for an agent to parse quickly.

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 potentially destructive cross-file rename tool, the description provides context about word-boundary awareness and dry_run, and directs to impact_analysis for preview. It doesn't explain return values or error handling, but the existence of sibling tools like edit_transaction and sandbox_validate likely covers those aspects. Given its complexity, the description is mostly 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?

The input schema already contains complete parameter descriptions (100% coverage), so the tool description adds limited additional meaning. The description's mention of 'dry_run previews' reinforces the dry_run parameter's purpose but doesn't clarify formats or relationships 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 function: 'Execute a cross-file symbol rename (edit_transaction-based).' It specifies the verb (execute), resource (symbol rename), and scope (cross-file), and differentiates it from related tools like read_symbol and write_symbol by focusing on renaming and mentioning the edit_transaction basis.

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: 'To see what a rename would affect FIRST, use impact_analysis.' This directs the agent to use a preview tool before executing a rename, which is an alternative context. However, it doesn't explicitly mention when not to use this tool or compare with other sibling tools like edit_batch or edit_transaction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

repo_mapA

Project code map: files ↔ symbols. For 100+ file codebases. focused+relevantEntities for token efficiency.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNoSubdirectory to map (default: workspace_dir)
focusedNoLimit output ~2000 tokens. Combine with relevantEntities.
relevantFilesNoOnly include these files (rel to root)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
relevantEntitiesNoOnly include files that contain these top-level symbols (e.g. ["spawnFixer", "agentLoop"])

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the transparency burden. It adds useful context about token efficiency and scale, but does not disclose whether the tool is read-only, requires indexing, or what the output structure looks like. This is partial coverage beyond the structured fields.

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, consisting of two short fragments with no redundant words. It front-loads the purpose and ends with a practical usage hint.

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 provides the core mapping concept and a key usage tip, but lacks explicit information about return format, side effects, or prerequisites like reindexing. Given no output schema and no annotations, this is adequate but leaves notable gaps.

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 description coverage is 100%, so baseline is 3. The description adds the combined usage tip 'focused+relevantEntities for token efficiency', which is not present in the schema and explains how to use two parameters together for a specific purpose.

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 'Project code map: files ↔ symbols', indicating a mapping operation between files and symbols. It distinguishes itself from sibling tools by positioning as a repository-scale overview ('For 100+ file codebases'), though it doesn't explicitly contrast with symbol_search or dep_graph.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'For 100+ file codebases' implies intended use on large repositories, which provides some context. However, there is no explicit mention of alternatives or when not to use, and the 'focused+relevantEntities' tip is about parameter usage rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sandbox_validateA

Pre-validate edits: pass file + new_content (full new text), dry-run syntax check. Then edit_transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesTarget file path (relative to workspace_dir)
new_contentYesFull file content after edits (or the edited section)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.1/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 burden. 'Dry-run' implies no side effects, which is a key behavioral trait. However, it does not disclose what happens on failure (e.g., does it throw an error, return a report?), nor whether it accesses the filesystem beyond reading. The description is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two short sentences. The main purpose is front-loaded ('Pre-validate edits'), followed by essential guidance. Every word earns its place, with no fluff or repetition.

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 tool is relatively simple, but there is no output schema, so the description should explain return behavior or error handling. It does not describe what the dry-run returns (e.g., success/failure, syntax errors). It also doesn't mention side effects or workspace directory requirements, although the schema covers parameters. For a pre-validation step, agents may need to know how to interpret results, so this is a notable 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 value by clarifying that new_content is 'full new text', reinforcing that it should be the entire file content, which is a useful nuance beyond the schema's 'or the edited section'. It also names the two key parameters directly, tying them to the validation purpose.

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: 'Pre-validate edits' with a 'dry-run syntax check'. It identifies the specific resource (file edits) and action (validate), and distinguishes itself from the sibling 'edit_transaction' by explicitly directing the user to use that afterward. The verb 'pre-validate' is 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this tool before edit_transaction, as indicated by 'Then edit_transaction.' It implies this is a pre-flight check for edits. However, it does not explicitly state when not to use it or mention alternatives like edit_collision_guard, so it's slightly lacking in exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

security_reviewA

Scan for security patterns: injection (eval/exec/spawn/SQL/template), XSS, secrets, CORS*, insecure compare. Severity-graded, zero LLM. Suppress via malong-ignore or .ai-patterns.json. Out of scope: SSRF/XXE/deserialization/auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoFile path relative to workspace_dir to scan (reads from disk)
scopeNoDirectory relative to workspace_dir to scan recursively (default: none, single file only). scope wins over file/source if both passed
sourceNoSource code text to scan (mutually exclusive with file)
max_findingsNoMax findings per file to return (default: 50)
workspace_dirYesREQUIRED: absolute path of the project root to scan

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 that results are severity-graded, that the tool uses zero LLM, and mentions suppression via malong-ignore or .ai-patterns.json. It doesn't detail return format or side effects, but this is reasonable context for a scan 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?

The description is two sentences, starts with the main action and scope, and packs additional info (suppression, out-of-scope, zero LLM) into a structured list. There is no wasted verbiage, making it highly scannable.

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 and moderate complexity (5 params), the description covers the essential context: what patterns are scanned, exclusions, suppression, and the zero-LLM behavior. It doesn't describe return structure beyond 'severity-graded,' but it is sufficiently complete for an agent to invoke correctly.

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 the schema already documents all five parameters. The description mentions 'severity-graded' and suppression but does not add parameter-specific meaning beyond what the schema provides. 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 opens with a specific verb ('Scan') and a concrete resource ('security patterns') followed by a detailed list of pattern categories (injection, XSS, secrets, CORS*, insecure compare). This clearly distinguishes it from sibling tools like code_review or code_quality, which would target broader or different concerns.

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 lists what is covered (injection, XSS, secrets, CORS*, insecure compare) and what is out of scope (SSRF/XXE/deserialization/auth), which gives clear when-to-use and when-not-to-use guidance. It stops short of naming alternative tools directly, but the exclusions imply the boundary well.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spec_genA

Generate module/API spec from source symbols; returns in-memory spec, never writes files.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesSource file (relative to workspace_dir) to generate spec for
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses a key behavior: 'never writes files', which is useful. However, it does not mention required preconditions (e.g., reindexing), permission needs, or error behavior. The in-memory return is a significant safety trait but additional behavioral context would strengthen the description.

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, front-loaded with a clear verb, and no redundant words. Every phrase earns its place, efficiently conveying both purpose and a key behavioral guarantee.

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 tool is simple (2 params, no output schema), and the description covers purpose and a critical safety trait. It lacks details on return structure or prerequisites, but these are minor gaps for a spec generator with good schema coverage. Slightly more behavioral context (e.g., side-effect-free in more detail) would make it 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 the baseline of 3 applies. The description adds minimal parameter context beyond 'from source symbols', which hints at the file's role but does not explain the parameters in depth. The schema descriptions already clarify both parameters adequately.

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 verb 'generate' is specific and the resource is clearly defined as 'module/API spec from source symbols'. It distinguishes from siblings like write_symbols (writes symbols) and read_symbol (reads symbols). The phrase 'never writes files' further clarifies its non-mutating role.

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 implies a safe, read-only operation by stating 'returns in-memory spec, never writes files'. This gives clear context but does not explicitly name alternative tools or state when not to use it. It could benefit from an explicit reference to a sibling like write_symbols, but the context is strong enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

style_snifferB

Sniff project code style from samples → PROJECT_RULES.md content (returns text; output dir optional).

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverwrite existing PROJECT_RULES.md when output is set (default: false)
scopeNoScan scope: directory relative to workspace_dir (default: ".")
outputNoDirectory to write PROJECT_RULES.md into (default: none, returns content only). Will NOT overwrite an existing file unless force=true
workspace_dirYesREQUIRED: absolute path of the project root to sniff style in

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It mentions that output is optional and returns text, but it does not disclose that setting an output directory writes a file (potentially overwriting unless force=true). This significant side effect is only revealed in the schema, not the description.

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 concise sentence front-loading the core action. Every phrase contributes to understanding the tool's function and output, with no filler or unnecessary details.

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 covers the high-level purpose and return behavior but omits details about file-writing side effects, the force parameter's overwrite behavior, and when to use this tool. Given no annotations or output schema, it is somewhat incomplete but sufficient for a basic 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 description coverage is 100%, so the baseline is 3. The description adds little beyond the schema, only noting that output is optional. It does not provide additional semantic context for required workspace_dir or the force/scope parameters.

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 tool sniffs project code style from samples and generates PROJECT_RULES.md content, with an optional output directory. The verb 'sniff' and resource are specific, and it distinguishes the tool's purpose from generic code-quality tools, though it does not explicitly differentiate from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when style rules need to be extracted from existing code, but it does not explicitly say when to use this tool versus alternatives or when not to use it. No exclusions or comparable tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sweep_dead_codeA

Detect dead code: unused imports/functions, orphan files, unused_guard signal. Text-reference fallback counts CLI-string refs as alive (miss-over-delete bias). Remove via edit_transaction. Out of scope: dynamic/reflection wiring.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScan scope: directory relative to workspace_dir (default: ".")
include_filesNoAlso detect orphan files (default: false)
workspace_dirYesREQUIRED: project root (abs).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with no annotations, the description discloses the critical behavioral trait: 'Text-reference fallback counts CLI-string refs as alive (miss-over-delete bias)'. This is an honest limitation that helps the agent calibrate expectations. Also clarifies it is detection-only, pointing removal elsewhere, and states an exclusion.

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 sentences, front-loaded with the purpose, and every phrase earns its place: categories, bias, removal path, and scope exclusion. 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 tool with no output schema and a moderate parameter set, the description provides sufficient context: what it detects, its detection bias, how to act on results, and what is out of scope. It could mention the return format or signal structure, but that is a minor gap given the clarity of the description and schema.

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 the schema already documents all three parameters. The description adds no parameter-specific detail beyond what the schema provides, but it does mention 'unused_guard signal' as an output concept, not a parameter explanation. Baseline 3 is appropriate because the description doesn't need to compensate.

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: 'Detect dead code' and enumerates specific categories (unused imports/functions, orphan files). This is a specific verb+resource combination that distinguishes it from sibling tools like dep_graph or references.

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 gives clear context for use: detection of dead code with a bias toward false negatives. It explicitly notes out-of-scope cases (dynamic/reflection wiring) and points to edit_transaction for removal. However, it does not explicitly name alternative detection tools or state when to prefer this over dep_graph or references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_bridgeA

Run tests, parse output, enrich failures with context. actions: run/suggest/discover. Find tests? find_tests.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileNoFor action=suggest/discover: source file path relative to workspace_dir
scopeNoTest scope: 'tests/', 'tests/test_a.py', 'tests/test_a.py::test_x', '.'
actionYesrun: execute tests; suggest: recommend tests after changes; discover: find available tests
symbolNoFor action=suggest: narrow to a specific symbol
timeoutNoTest execution timeout in seconds (default: 60)
frameworkNoOverride: pytest/jest/vitest/go_test/cargo_test/maven/gradle
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A3.8/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 discloses that the tool parses output and enriches failures, adding behavioral insight beyond simple test execution. It does not mention side effects, environment requirements, or return format, leaving some transparency gaps.

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 key information (purpose and actions) front-loaded. Every word adds value, and the pointer to find_tests is a useful, compact addition.

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?

Despite having 7 parameters, no output schema, and no annotations, the description is minimal. It does not describe the return value, the precise difference between 'discover' and find_tests, or how actions affect behavior. This leaves significant context gaps for an agent to invoke it correctly.

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 the baseline is 3. The description itself adds no new parameter semantics beyond what the schema already provides; it only echoes the action enum.

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: 'Run tests, parse output, enrich failures with context.' It also enumerates the three actions (run/suggest/discover), and explicitly points to find_tests for test discovery, distinguishing it from that sibling.

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 usage context by listing actions and redirecting test discovery to find_tests. However, it does not explain when to prefer this over other test-related siblings like debug_runner or verify_pipeline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace_symbolA

Trace constant values + hardcoded copies (magic numbers). Function impact? impact_analysis. Rename? rename_symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile rel to root where symbol is defined
symbolYesSymbol name to trace (e.g. "MAX_RETRY_COUNT")
max_resultsNoMax results per section (default: 30)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
include_literalsNoSearch for hardcoded literal values across the project (default: false, slower)

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, any side effects, performance implications, or return format. The only hints come from parameter descriptions in the schema, not from the main description.

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 short sentences) and front-loaded with the core purpose. It avoids fluff and efficiently points to alternatives, achieving maximum clarity per word.

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 covers the core purpose and alternatives, and the schema documents all parameters. However, without an output schema or annotations, the description doesn't convey what results to expect or how to interpret them. It's adequate for a simple trace tool but lacks some 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 description coverage is 100%, so the baseline is 3. The description adds minimal semantic value; it hints at the tool's purpose (tracing constants) which clarifies the symbol parameter, but it doesn't explain parameter interactions or specifics 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 function: tracing constant values and hardcoded copies (magic numbers). It also distinguishes itself from siblings by explicitly pointing to alternatives (impact_analysis for function impact, rename_symbol for renaming), making its scope 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?

The description explicitly tells the agent when to use this tool (for value tracing) versus when to use alternatives: 'Function impact? impact_analysis. Rename? rename_symbol.' This provides clear exclusion guidance and alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tsc_checkA

TS type-check via tsc --noEmit -> {status,errorCount}; timeout 60s default; dir = subdir.

ParametersJSON Schema
NameRequiredDescriptionDefault
dirNosubdir
timeoutNotsc run timeout in ms (default 60000)
workspace_dirYesREQUIRED: project root (abs).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses the command, output shape, timeout, and directory behavior, but it does not explicitly state that this is a read-only operation or mention potential side effects (e.g., creation of incremental cache files).

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?

The description is a single sentence with no waste, but 'dir = subdir' is a bit terse. It is front-loaded with the main action and output format.

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 simple tool with no output schema and no annotations, the description provides enough context: it states the command, output shape, timeout, and directory scoping. Missing an explicit safety note, but this is a type-check tool and non-mutating behavior is implied.

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% with parameter descriptions, so baseline is 3. The description adds value by clarifying that `dir` refers to a subdirectory and confirming the timeout default (`60s`), which enriches 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?

Clearly states the tool runs TypeScript type-checking via `tsc --noEmit` and summarizes the output as `{status,errorCount}`. The verb and resource are specific, and it is distinct from sibling tools like code_quality or code_review.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for type-checking a subdirectory, but it does not explicitly state when to use it over alternatives like code_quality or sandbox_validate. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_pipelineA

Run lint/test/typecheck from package.json. WARNING: MCP requests have a 120s hard timeout; default is 30s per stage (3 stages = 90s). Large test suites will time out — prefer stages=lint or test_bridge(action=run) for full test runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
stagesNoComma-separated: lint|test|typecheck (default all)
timeoutNoPer-stage timeout in ms (default 30000)
workdirNoOptional subdir to run in (default workspace_dir)
workspace_dirYesREQUIRED: project root (abs). reindex first if new.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It discloses the critical timeout behavior, including the hard 120s limit and per-stage defaults, and warns about timeouts for large test suites. It does not specify return format or potential side effects of running scripts, but the most important behavior is covered.

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, with the purpose in the first sentence and crucial warnings/alternatives in the following two. Each sentence earns its place, no filler.

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 4-param tool with no output schema and no annotations, the description provides clear purpose, timeout warnings, and alternatives. It could mention what the return value looks like (e.g., logs, exit codes), but the absence is not critical given the tool's nature. The 'reindex first if new' tip is present in the schema, so it's covered.

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 covers all parameters with descriptions, so baseline is 3. The description adds value by elaborating on the timeout parameter's default (30s per stage) and suggesting stage filtering for time-sensitive runs, complementing the schema's field-level details.

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 states a specific action: 'Run lint/test/typecheck from package.json.' It clearly identifies the resource and scope, and distinguishes from test_bridge by naming it as an alternative for full test runs. However, it does not explicitly differentiate from tsc_check, which could overlap with the 'typecheck' stage.

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 states when to use alternatives: 'Large test suites will time out — prefer stages=lint or test_bridge(action=run) for full test runs.' Also provides context about the 120s hard timeout and per-stage defaults, giving clear situational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_symbolA

Guarded write path (one symbol) — vs edit_batch: index-aware with version/lock/undo, for symbol-level refactors. Read first (read_symbol) for base_version. For string params containing double quotes/backslashes, keep JSON escaping consistent across the whole string (escape uniformly or prefer full-width quotes), otherwise client-side parameter parsing fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchNoRequired when edit_mode=patch
safetyNoSafety knobs
contentYesNew content (full symbol or body per boundary)
dry_runNoValidate and produce diff without writing (default false)
locatorYesSymbol anchor: {symbol_id} or {file_path}+{name}. Read first via read_symbol.
boundaryNofull (default): replace whole symbol. body: keep signature line, replace the rest.
edit_modeNoreplace_symbol (default) / patch (sub-symbol old_string→new_string) / insert_after_symbol
base_versionYesREQUIRED: version from read_symbol. Conflict anchor.
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
preserve_decoratorsNoWarn if content drops decorators that exist above the symbol (default true)
allow_unsafe_no_baseNoBypass base_version requirement (audited). Only for deliberate full-file overwrites.

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 transparency burden. It discloses guarded write semantics, version/lock/undo, base_version requirement, and a client-side JSON escaping pitfall. It doesn't detail permissions or side effects, but adds meaningful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences, each earning its place: purpose/vs-alternative, read-prerequisite, and a critical parameter formatting caveat. No fluff, well 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?

For a complex 11-parameter tool with nested objects and no output schema, the description provides the key mental model, prerequisite, and a critical gotcha. It doesn't explain all edit modes or safety knobs, but those are documented in the schema. Lacks explicit success/failure behavior, though.

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 the JSON escaping requirement for string parameters and reinforcing that base_version comes from read_symbol, which is not fully obvious from the schema alone.

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 identifies this as a guarded write path for a single symbol with version/lock/undo, and explicitly distinguishes it from edit_batch for symbol-level refactors. The resource (one symbol) and operation type are 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?

It gives a direct comparison to edit_batch, stating this is for symbol-level refactors with index-aware version/lock/undo. It also instructs to read_symbol first for base_version, providing a clear prerequisite. It doesn't enumerate all alternatives but offers key exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_symbolsA

Guarded write path (batch). All-or-nothing across files, deadlock-safe. Multi-file refactor? Use instead of N×write_symbol. New symbols: reindex first. For string params containing double quotes/backslashes, keep JSON escaping consistent across the whole string (escape uniformly or prefer full-width quotes), otherwise client-side parameter parsing fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
policyNo{all_or_nothing: true} (default) | {false} best-effort
safetyNoSafety profile: fast|standard|strict (default standard)
writesYesREQUIRED: Array of writes. Grouped by file internally.
workspace_dirYesREQUIRED: project root (abs). reindex first if new.
allow_unsafe_no_baseNoBypass base_version requirement for all writes (audited).

TDQS

A4.4/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 transparency burden. It discloses key behaviors: atomicity ('All-or-nothing across files'), concurrency safety ('deadlock-safe'), and a client-side parsing pitfall (JSON escaping). These go beyond what the schema conveys, though it doesn't describe error handling beyond the atomicity trait.

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 three sentences, each earning its place: purpose+behavior, usage guidance+alternative, and a specific parameter caveat. It is front-loaded with the most important info and contains no 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?

For a complex tool with 5 parameters and nested objects, the description covers the essential contextual aspects: atomicity, deadlock-safety, usage trigger, and a real-world pitfall. It does not explain return values, but no output schema exists, so that's less critical. Given the rich schema, the description is sufficiently complete.

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 a valuable parameter-related nuance: the JSON escaping warning for string params, which is not present in the schema's per-parameter descriptions. This extra guidance justifies a 4.

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 a 'Guarded write path (batch)' with 'All-or-nothing across files', specifying both the verb (write) and resource (batch of files). It distinguishes itself from the sibling tool write_symbol by explicitly recommending 'Multi-file refactor? Use instead of N×write_symbol'.

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 explicitly gives a when-to-use scenario ('Multi-file refactor?') and an alternative ('Use instead of N×write_symbol'). It also adds a prerequisite ('New symbols: reindex first'). However, it does not explicitly state when NOT to use it or mention other alternatives like edit_batch, so it falls short of a 5.

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. 9 tool updatesv0.4.5-post9
    • Changedcode_quality2 fields changed
      • addedInput schema / properties / file / description
        "File to probe, relative to workspace_dir"
      • addedInput schema / properties / workspace_dir / description
        "REQUIRED: project root (abs)."
    • Changedcode_search2 fields changed
      • addedInput schema / properties / limit / description
        "Max results (default 30)"
      • addedInput schema / properties / workspace_dir / description
        "REQUIRED: project root (abs). reindex first if new."
    • Changedpatch_parser2 fields changed
      • addedInput schema / properties / file / description
        "File path relative to workspace_dir"
      • addedInput schema / properties / workspace_dir / description
        "REQUIRED: project root (abs). reindex first if new."
    • Changedread_symbol1 field changed
      • addedInput schema / properties / locator / description
        "Symbol anchor: {symbol_id} or {file_path}+{name} (single read)"
    • Changedspec_gen2 fields changed
      • addedInput schema / properties / file / description
        "Source file (relative to workspace_dir) to generate spec for"
      • addedInput schema / properties / workspace_dir / description
        "REQUIRED: project root (abs). reindex first if new."
    • Changedtsc_check2 fields changed
      • addedInput schema / properties / timeout / description
        "tsc run timeout in ms (default 60000)"
      • addedInput schema / properties / workspace_dir / description
        "REQUIRED: project root (abs)."
    • Changedverify_pipeline4 fields changed
      • addedInput schema / properties / stages / description
        "Comma-separated: lint|test|typecheck (default all)"
      • addedInput schema / properties / timeout / description
        "Per-stage timeout in ms (default 30000)"
      • addedInput schema / properties / workdir / description
        "Optional subdir to run in (default workspace_dir)"
      • addedInput schema / properties / workspace_dir / description
        "REQUIRED: project root (abs). reindex first if new."
    • Changedwrite_symbol1 field changed
      • addedInput schema / properties / locator / description
        "Symbol anchor: {symbol_id} or {file_path}+{name}. Read first via read_symbol."
    • Changedwrite_symbols2 fields changed
      • addedInput schema / properties / policy / description
        "{all_or_nothing: true} (default) | {false} best-effort"
      • addedInput schema / properties / safety / description
        "Safety profile: fast|standard|strict (default standard)"
  2. 44 tool updates
    • First observedactive_todos
    • First observedcall_chain
    • First observedcode_quality
    • First observedcode_review
    • First observedcode_search
    • First observedconfig_drift
    • First observeddebug_runner
    • First observeddep_graph
    • First observeddependency_gatekeeper
    • First observeddiff_facts
    • First observededit_batch
    • First observededit_collision_guard
    • First observededit_transaction
    • First observedexception_guard
    • First observedfeedback
    • First observedfind_tests
    • First observedfix_imports
    • First observedgc
    • First observedgit_worktree
    • First observedguard_patterns
    • First observedhealth
    • First observedimpact_analysis
    • First observedinspect
    • First observedmock_sync
    • First observednaming_consistency
    • First observedpatch_parser
    • First observedread_outline
    • First observedread_symbol
    • First observedreferences
    • First observedreindex
    • First observedrename_symbol
    • First observedrepo_map
    • First observedsandbox_validate
    • First observedsecurity_review
    • First observedspec_gen
    • First observedstyle_sniffer
    • First observedsweep_dead_code
    • First observedsymbol_search
    • First observedtest_bridge
    • First observedtrace_symbol
    • First observedtsc_check
    • First observedverify_pipeline
    • First observedwrite_symbol
    • First observedwrite_symbols

TDQS

B3.4/5.0
Disambiguation2/5

Numerous tools have heavily overlapping responsibilities: multiple edit paths (write_symbol, write_symbols, edit_batch, edit_transaction, sandbox_validate, edit_collision_guard), overlapping search tools (symbol_search, code_search, references), and redundant inspection tools (inspect explicitly replaces read_outline/references/call_chain but they still exist). While descriptions attempt to differentiate them, the boundaries are often subtle, making tool selection error-prone.

Naming Consistency4/5

The vast majority of tool names follow a clear verb_noun pattern in snake_case (e.g., find_tests, fix_imports, rename_symbol, read_symbol, write_symbol). A few outliers like 'gc', 'health', and 'inspect' break the pattern but are still intuitively named and do not introduce mixing of styles.

Tool Count2/5

44 tools is far beyond the typical 3-15 well-scoped range and even exceeds the 25-tool threshold for 'too many'. The server attempts to cover an extremely broad domain, but the high count primarily reflects tool proliferation rather than genuinely distinct capabilities, overwhelming agents.

Completeness4/5

The toolset covers the full lifecycle of code development: indexing, searching, reading, editing, refactoring, testing, security review, quality analysis, and dependency management. Obvious gaps are few (e.g., no standalone git history/commit tool beyond git_worktree), and most workflows have a dedicated path. The redundancy slightly undermines usability but not coverage.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    CodeGraph — Open-source code intelligence MCP server. Builds a semantic graph of your codebase (functions, classes, imports, call chains) and exposes it through 31 tools. Callers, callees, impact analysis, complexity metrics, unused code detection, AI context assembly, persistent memory, cross-project search. 15 languages via tree-sitter. Single Rust binary, local-first.
    481
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Standalone MCP server for code structure analysis using tree-sitter. Directory trees, symbol definitions, and call graphs without reading raw source files. Supports Rust, Python, Go, Java, TypeScript, Fortran, JavaScript, C/C++, and C#. Benchmarked up to 68% fewer tokens vs native tools.
    5
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    An MCP code-intelligence server for AI agents with pre-indexed AST cache, 62 MCP tools, and TOON-compressed output, enabling token-efficient code analysis and project health grading entirely locally.
    9
    48
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Token-efficient code intelligence MCP server that indexes codebases with tree-sitter AST parsing and provides 150 tools for AI agents, using 61-95% fewer tokens than traditional grep/Read workflows.
    380
    4
    Business Source 1.1

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/wulun811/LiuHe'

If you have feedback or need assistance with the MCP directory API, please join our Discord server