Skip to main content
Glama
aimasteracc

tree-sitter-analyzer

by aimasteracc

๐ŸŒณ Tree-sitter Analyzer

English | ๆ—ฅๆœฌ่ชž | ็ฎ€ไฝ“ไธญๆ–‡

PyPI Python License Coverage Stars Works with Claude Code ยท Cursor ยท MCP

Code intelligence AI agents can trust โ€” correct cross-language structure across the supported language inventory, agent-native (MCP + CLI).

TSA indexes your codebase with tree-sitter and serves correct call graphs, symbol search, and structural queries to AI coding agents โ€” locally, with no telemetry.

Why it's different:

  • Cross-language bindings are gated by language family. A name match alone does not create a cross-language edge, and the gates that enforce this are executable tests rather than a convention.

  • Built agent-native. 8 MCP tools provide structured JSON output and verdict envelopes, with CLI access and curated workflows.

  • Broad and correctly classified. The generated support-depth inventory distinguishes pipeline evidence from unverified cross-file behavior.

Upgrading from v1.x? See docs/MIGRATION.md.


Get Started

Requires Python 3.10+ (check: python3 --version). Install from python.org if needed.

curl -fsSL https://raw.githubusercontent.com/aimasteracc/tree-sitter-analyzer/main/install.sh | bash

Auto-installs uv if missing, detects Claude Desktop / Claude Code / Cursor / VS Code, and writes the MCP entry. Run tree-sitter-analyzer --doctor to verify.

Bootstrap trust: for convenience, the command above downloads and executes the official uv installer when uv is missing or outdated. That installer is mutable and not content-bound; TSA warns before downloading it to a temporary file over TLS and performs a strict post-install version check. To avoid this unverified bootstrap, install uv >= 0.11.0 manually first, or use the secure opt-out (which exits with manual-install instructions when bootstrap is needed):

curl -fsSL https://raw.githubusercontent.com/aimasteracc/tree-sitter-analyzer/main/install.sh \
  | TSA_DISABLE_UNVERIFIED_UV_BOOTSTRAP=1 bash

Install command for Claude Code:

claude mcp add tree-sitter-analyzer \
  --env TREE_SITTER_PROJECT_ROOT="$PWD" \
  -- uvx --from "tree-sitter-analyzer[mcp]" tree-sitter-analyzer-mcp

Restart your agent, then say: "Run the index tool with action=status." CLI equivalent (no agent needed): tree-sitter-analyzer --codegraph-status

PyPI / uvx users โ€” install skills: the tsa-* skills are bundled in the wheel. Copy them once with:

tree-sitter-analyzer --install-skills              # into ./.claude/skills/ (this project)
tree-sitter-analyzer --install-skills-global       # into ~/.claude/skills/ (all projects)

Git-clone users already have them under .claude/skills/ โ€” no action needed.

Other agents (Cursor, Copilot, Cline, Continue, Claude Desktop, Roo Code) โ†’

Quick install

1. Install dependencies

# uv (required). This official convenience installer is mutable/not content-bound;
# see https://docs.astral.sh/uv/ for alternative manual installation methods.
curl -LsSf https://astral.sh/uv/install.sh | sh        # macOS / Linux
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"  # Windows

2. Install Tree-sitter Analyzer

# Standalone install (persistent CLI command):
uv tool install "tree-sitter-analyzer[all,mcp]"
# โ€” or skip installing entirely: the MCP entry below runs via uvx on demand.
# Inside a uv-managed Python project, use: uv add "tree-sitter-analyzer[all,mcp]"

3. Hook it into your agent

See Supported Agents. Most clients want this MCP server entry:

{
  "mcpServers": {
    "tree-sitter-analyzer": {
      "command": "uvx",
      "args": ["--from", "tree-sitter-analyzer[mcp]", "tree-sitter-analyzer-mcp"],
      "env": { "TREE_SITTER_PROJECT_ROOT": "/absolute/path/to/your/project" }
    }
  }
}

After restart: "Run the index tool with action=status." CLI equivalent (no agent needed): tree-sitter-analyzer --codegraph-status

Check resolver behavior on your own repository โ€” no install required:

uvx --from tree-sitter-analyzer miswire-audit .

It reports possible cross-language name collisions so you can inspect resolver behavior on your own repository. Results are diagnostic, not a competitive benchmark claim.


Related MCP server: codemap

Why Tree-sitter Analyzer

  • Structured output. MCP responses use standard JSON envelopes; payload behavior is guarded by response contract tests.

  • Verdict envelopes. Every response carries verdict: SAFE | CAUTION | UNSAFE | INFO | REVIEW | WARN | ERROR | NOT_FOUND, so orchestrators branch on outcomes without re-prompting.

  • Project health grading (Aโ€“F). TSA grades projects across size, complexity, coverage, duplication, dependencies, structure, and git hotspots.

  • Curated workflows (Skills). Pre-baked tool subsets for "find symbol", "trace call chain", "assess health", "safe-to-edit before refactor", "PR review", etc.

  • Layered safety. edit action=safe + edit action=guard + constraint DSL + edit action=impact + verdict envelopes โ€” designed so agents know before they touch.

  • Agents and shells share a query surface. The analysis primitives and the unified query DSL are available to both.


Key Features

Pre-indexed code intelligence

An agent's cost is dominated by turns, not by the size of each reply: every extra tool call re-sends the whole conversation. TSA is built so that a question is answered by a call whose response already carries the evidence needed to stop asking.

Question

TSA tool

What the response carries

Where is this symbol, and what refers to it?

nav action=navigate

definition site, references, and call hierarchy together

What breaks if I change this?

nav action=impact

transitive dependents with a risk verdict

Who calls this, and what does it call?

nav action=callers / action=callees

resolved call sites, and the sites resolution could not resolve

Find a symbol by name

search action=symbol

relevance-ranked matches (FTS5 + BM25)

Fetch related symbols with their relationship map

structure action=explore

the requested symbols and how they connect

Is the index usable right now?

index action=status

coverage, staleness, and edge count

Build or refresh the call graph

index action=auto / action=full / action=sync

index state after the run

Which tests does this change touch?

--affected FILE... (CLI)

transitively affected tests

Capabilities beyond code navigation

Capability

TSA tool

Note

BM25-ranked symbol search

all search tools

min-max normalized relevance_score on every result; sort(by='confidence') in DSL

Semantic search (BM25 pre-filtered)

search action=chain (semantic() DSL)

lexical pre-filter before cosine rerank

Project Aโ€“F health grading

health action=project

combines size, complexity, dependencies, coverage, duplication, structure, and git hotspots

JSON output

every tool, output_format: "json" (default)

standard structured response envelopes

Verdict envelopes

every tool

SAFE/CAUTION/UNSAFE/INFO/WARN/ERROR/NOT_FOUND

Safe-to-edit gate

edit action=safe / action=guard

refuses high-risk edits before they happen

Architectural constraint DSL

edit action=constraints

"module A cannot import B" โ†’ enforced

Code health (file-level)

health action=file

block/long-method/smell detection

Class hierarchy

structure action=class_tree

type-inheritance tree

Dependency matrix

health action=matrix

module-coupling matrix

Dead code

health action=dead

transitive unreachable analysis

Complexity heatmap

health action=heatmap

per-fn cyclomatic + project view

AST-structural clone detection

viz action=similarity

structural clones rather than text matches

Mermaid call-graph export

viz action=graph

paste-ready in docs

UML Mermaid export

viz action=uml

class / package / component / sequence diagrams

PR review

edit action=pr

AST-diff + semantic classify + blast radius

agent_summary

every response

next-step hint baked into the envelope

Synapse cross-file resolver

internal

import-aware name resolution across files

Temporal activation

nav action=lineage

per-symbol git-modification frequency

File orientation

project action=smart

health + exports + deps + edit-risk in a combined response

Architectural decision journal

project action=journal

persists reasoning across sessions

Skills

TSA ships curated workflows under .claude/skills/tsa-*/:

tsa-landing, tsa-find, tsa-graph, tsa-structure, tsa-deps, tsa-index, tsa-health-watch, tsa-edit-safety, tsa-edit-then-verify, tsa-constraints, tsa-pr-review, tsa-refactor-queue, tsa-temporal.

Each skill ships an allowed-tools subset + procedure recipe + decision-surface schema, so the agent doesn't have to triage 8 tools on every question.

354 CLI flags

Highlights:

tree-sitter-analyzer --table full <file>          # method/signature/complexity table
tree-sitter-analyzer --partial-read --start-line N --end-line M <file>
tree-sitter-analyzer --project-health             # A-F grade across the project
# Note: --callers / --callees require the call-graph index โ€” run --full-index first
tree-sitter-analyzer --full-index                 # build call-graph index (run once)
tree-sitter-analyzer --callers <symbol>           # who-calls
tree-sitter-analyzer --codegraph-impact <fn>      # blast radius + risk
tree-sitter-analyzer --affected <file...>         # tests transitively affected
tree-sitter-analyzer --dead-code                  # transitive unreachable
tree-sitter-analyzer --check-constraints          # architectural rules
tree-sitter-analyzer --safe-to-edit <file>        # refuse if risky
tree-sitter-analyzer --uml class                  # Mermaid UML class diagram

TSA performs indexed code search and live source verification in process. No ripgrep or fd installation is required.

search-content and find-and-grep have been removed on develop. See the migration guide and CLI codemap.


Quantitative claim governance

Public benchmark, performance, or competitive numbers are emitted only from the provenance-bound registry in benchmarks/codegraph_compare/claim_registry.json. E4 evidence must bind exact tool names and versions, measurements, corpus, benchmark date/version, and an artifact digest. Evidence below E4 remains internal and cannot emit wording. See the benchmark runbook.

The absence of a generated item means that no quantitative public claim is currently authorized. Qualitative descriptions above are bounded product capabilities, not measured superiority claims.


How It Works

Source code โ†’ tree-sitter parse โ†’ SQLite + FTS5 index (.ast-cache/index.db)
                                         โ†“
        nav (navigate) / structure (explore) / nav (callers) / ...
                                         โ†“
                            JSON response envelope
                            (verdict + agent_summary + data)
                                         โ†“
                              MCP client / CLI consumer

The 8 MCP tools expose indexed queries and direct source analysis. Build the AST index explicitly before indexed symbol/context queries with tree-sitter-analyzer --ast-cache --ast-cache-mode index --format json. Refresh it after source changes with index action=sync. Indexed queries reuse cached AST data; automatic warming is specific to individual tools.


Supported Agents

claude mcp add tree-sitter-analyzer \
  --env TREE_SITTER_PROJECT_ROOT="$PWD" \
  -- uvx --from "tree-sitter-analyzer[mcp]" tree-sitter-analyzer-mcp

Verify: claude mcp list. The bundled tsa-* skills auto-discover from .claude/skills/.

PyPI / uvx users โ€” install the bundled skills once with:

tree-sitter-analyzer --install-skills              # into ./.claude/skills/ (this project)
tree-sitter-analyzer --install-skills-global       # into ~/.claude/skills/ (all projects)

Git-clone users already have them โ€” no action needed.

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\, Linux: ~/.config/Claude/):

{
  "mcpServers": {
    "tree-sitter-analyzer": {
      "command": "uvx",
      "args": ["--from", "tree-sitter-analyzer[mcp]", "tree-sitter-analyzer-mcp"],
      "env": { "TREE_SITTER_PROJECT_ROOT": "/absolute/path/to/your/project" }
    }
  }
}

Create .vscode/mcp.json (note: servers, not mcpServers):

{
  "servers": {
    "tree-sitter-analyzer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "tree-sitter-analyzer[mcp]", "tree-sitter-analyzer-mcp"],
      "env": { "TREE_SITTER_PROJECT_ROOT": "${workspaceFolder}" }
    }
  }
}

All read the same mcpServers schema as Claude Desktop. Cursor: Settings โ†’ MCP. Cline: MCP panel โ†’ Edit settings. Continue: ~/.continue/config.json under experimental.modelContextProtocolServers. Roo Code: MCP panel โ†’ Edit MCP Settings.

The repo ships a Dockerfile that builds the MCP server (stdio transport) from source, so the image always matches the committed code.

# Build once
docker build -t tree-sitter-analyzer-mcp .

# Run against the current repo (server speaks MCP over stdio; -i keeps stdin open)
docker run --rm -i --user "$(id -u):$(id -g)" \
  -v "$PWD:/work" -w /work tree-sitter-analyzer-mcp

--user "$(id -u):$(id -g)" runs as your host UID/GID, so the .ast-cache/, decision journal, and any edit writes under the bind-mounted repo are owned by you, not root.

MCP client config (the project root inside the container is the mount point /work):

{
  "mcpServers": {
    "tree-sitter-analyzer": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "--user", "1000:1000",
        "-v", "/absolute/path/to/your/project:/work",
        "-w", "/work",
        "-e", "TREE_SITTER_PROJECT_ROOT=/work",
        "tree-sitter-analyzer-mcp"
      ]
    }
  }
}

โš ๏ธ TREE_SITTER_PROJECT_ROOT must be absolute. The server enforces a security boundary against escapes via SecurityValidator.


Supported Languages

Generated from runtime registries; see docs/CODEMAPS/languages.md for the full capability matrix. 22 plugins: 13 pipeline-registered, 3 index-admitted, 0 call-dispatch-only, 5 data/markup, 1 scaffold. pipeline_registered is registration evidence, not positive cross-file binding proof. pipeline_registered: C, C++, C#, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, Rust, Swift, TypeScript | index_admitted: Bash, Lua, Scala | call_dispatch_only: | data_markup: CSS, HTML, Markdown, SQL, YAML | scaffold: JSON

Configuration

Mostly nothing. The defaults are designed so you can hook it into your agent and forget:

  • Output format: JSON. The output_format: "json" parameter is retained for explicitness.

  • Project root: TREE_SITTER_PROJECT_ROOT (env var, MCP) or --project-root (CLI).

  • Cache location: <project>/.ast-cache/. Safe to delete โ€” auto-rebuilds.

  • Optional: TREE_SITTER_OUTPUT_PATH for large-output write target.


Quality & Testing

Metric

Value

Test suite

uv run pytest tests/ โ€” the count is whatever the current tree collects; CI owns the signal

Coverage

Coverage

Type safety

mypy

Platforms

macOS ยท Linux ยท Windows for ordinary operations; snapshot evidence has the narrower scope above

Pre-commit gates

ruff ยท bandit ยท mypy ยท pyupgrade ยท detect-secrets ยท tsa-codemap-sync

uv run pytest -q                                # bounded local quick gate
uv run pytest tests/ -q --timeout=120 -m "not e2e and not network and not benchmark"  # comprehensive local suite
PYTEST_XDIST_AUTO_NUM_WORKERS=1 uv run pytest -q --maxfail=1                  # quick gate, one worker (lower CPU load)
PYTEST_XDIST_AUTO_NUM_WORKERS=2 uv run pytest -q --maxfail=1                  # quick gate, two workers (balanced)
uv run pytest --lf --maxfail=1                  # rerun only failed tests from last run
uv run python check_quality.py --new-code-only  # quality gate

Troubleshooting

Symptom

Fix

unsupported language on .swift / .kt / .rb / .php / .cs

Update to a current supported release โ€” the missing-language gap was patched in commit 50e99a8f. Grammar modules for extras-gated languages are not bundled in the base install; run pip install "tree-sitter-analyzer[swift]" (or kotlin, ruby, php, csharp) to add them.

MCP server doesn't appear in client

TREE_SITTER_PROJECT_ROOT must be an absolute path (e.g. $(pwd) or /home/user/project); a relative path causes the server to resolve against the wrong directory. Restart the client after editing. Run tree-sitter-analyzer --doctor to verify.

database is locked

Stop any other process holding .ast-cache/index.db; if persistent, rm -rf .ast-cache && tree-sitter-analyzer --full-index.

Slow first call or missing index

Some tools warm the index automatically. Run --full-index upfront before indexed queries.

Agent picks the wrong tool

Use a tsa-* skill (/tsa-graph, /tsa-find, ...) โ€” each skill restricts the visible tool set to its dedicated workflow.


Development

git clone https://github.com/aimasteracc/tree-sitter-analyzer.git
cd tree-sitter-analyzer
uv sync --extra all --extra mcp
uv run pytest -q                                # quick gate (bounded)

See docs/CONTRIBUTING.md for the development guide.


Boundaries and Known Limits

Scope statements that would otherwise read as marketing. They are collected here so the install path above is not interrupted by them.

Response Size And Parameter Names

nav action=navigate inlines the body of every definition it matches and reports no truncation. A symbol name shared by classes in multiple files therefore returns the entire reference set in the same response. Use search action=symbol to disambiguate first, or nav action=callers / action=callees, which honor limit and set truncated.

symbol and function_name are both accepted by callers, callees, and impact. navigate and lineage require symbol; passing function_name to them raises instead of returning a verdict envelope.

Platform Scope Of Snapshot Evidence

Ordinary file analysis, index creation/update, and legacy index-backed queries are separate from certified snapshot access. Their existing Windows operational paths do not require the new private WAL snapshot kernel. They may create or update the cache; certified read-only access has a separate contract.

The snapshot implementation adds POSIX-only private database/WAL evidence capture, requiring descriptor-relative operations, O_NOFOLLOW, a safe external temporary directory, and successful source/manifest/projection checks. It does not deliver Windows read-only snapshot parity or extend the existing qualification gate for explicit access_mode="read_existing" consumers.

Windows snapshot certification was already unavailable in the develop baseline (SECURE_FD_SNAPSHOT_UNSUPPORTED). It remains unavailable in this implementation (WAL_PRIVATE_SNAPSHOT_UNSUPPORTED, completeness="unknown", no snapshot token). This is not a statement that the physical index is empty or that ordinary queries are disabled. Native Windows qualification for the new capture path has not been performed; a local capability test is not a substitute for it.

The per-file certified_at state is not a replacement for full snapshot authority. partial_at persistent history is not implemented or included in this PR. An incomplete or unverifiable projection cannot authorize a certified consumer.

Pulse / TQL / Semantic Query

These subsystems back nav actions and the internal API; they are not part of the tool surface an agent configures. Their limits are stated rather than implied:

TQL temporal selectors compare modification timestamps, not modification counts. The tql_schema action documents the window and the shared default for bare :hot and :recently_modified. Depth queries retain exact definition identity and fail explicitly when traversal limits are exceeded.

Pulse requests return snapshot-bound context. SQL reads for identity, relationships, reverse-import context and optional cached LSP enrichment share a savepoint without ending a caller-owned transaction. This is not a SQL round-trip or latency guarantee.

Pulse's Python reverse-import context uses the existing module resolver; this is not a claim of complete cross-language module resolution. Comment context requires an index rebuilt with comment extraction. Old indexes and languages without comment extraction return COMMENTS_NOT_INDEXED, rather than an empty success; explicitly omit comment context with the documented max_comments setting when it is not needed. Missing legacy commit-message projections become pending for lazy refresh; disabled activation is preserved. Legacy NULL activation states also become pending, without clearing old messages or counts. Enabled cached indexing cycles continue bounded activation refresh. Pulse exposes unavailable activation as null, while temporal queries reject incomplete activation evidence. Refresh reads real Git history through bounded batches; failed message reads retain pending work rather than claiming completion.

Semantic queries require a known stored embedding model and a consistent dimension. Mixed or unknown models are errors, with no provider fallback. Offline tests use model doubles; they do not certify live-provider quality.

Pulse batches retain successful entries but report failure if a target fails. TQL treats missing or unreadable indexes as errors, distinct from a ready index with no matches. Public request validation rejects invalid types and limits before opening the index or invoking an embedding provider.


Contributing & License

  • โญ A GitHub star helps surface this tool to other AI-agent users.

  • ๐Ÿ’– Sponsor โ€” supports continued MCP / Skills development.

  • Lead sponsor: @o93.

  • MIT licensed โ€” see LICENSE.

  • Release history: CHANGELOG.md.

Available Tools

9 tools
editB
Destructive

Code-intelligence (codegraph-compatible) safety and change-management facade. Actions: ast_diff, classify, constraints, guard, impact, mutation_probe, plan_rename, pr, refactor, release_snapshot, rename, safe, verify. Pass action=help for per-action parameters and examples. Cost: action=safe is slow.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAction sub-mode (e.g. summary|cycles).
limitNoMax results.
queryNoSearch query/pattern.
scopeNoAction discriminator (e.g. point|graph).
actionYesWhich capability to invoke. One of: ast_diff, classify, constraints, guard, impact, mutation_probe, plan_rename, pr, refactor, release_snapshot, rename, safe, verify
symbolNoSymbol/function name.
persistNoWrite evaluated violations through to the cache. Set false for RFC-0022 read-only evaluation; no database or file is created.
languageNoLanguage hint (usually auto).
file_pathNoTarget file path.
access_modeNoExplicit P0.4 zero-write access mode for routed read adapters.
scope_pathsNoPrimitive-issued frozen scope for action=constraints, or impact capture scope for action=impact.
snapshot_idNoCertified P0.1 index snapshot capability ID.
function_nameNoFunction name (alias of symbol).
output_formatNoOutput format: JSON.
route_lease_idNoOwnership token required by action=release_snapshot.
diff_snapshot_idNoRFC-0022 frozen diff ID for constraints/classify/ast_diff/release_snapshot.
modification_typeNoRequired for action=guard: type of planned modification. One of: add_feature, behavior_change, delete, fix_bug, refactor, rename, signature_change.
source_generationNoCertified P0.1/P0.2 source generation.
capture_diff_snapshotNoExplicitly produce a frozen diff ID for same-process consumers; supported only on POSIX.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation profile is known. The description adds a genuine cost disclosure ('action=safe is slow') beyond the annotations, which is useful. However, it doesn't disclose reversibility, what persists beyond the cache, or per-action side effects. No contradiction with annotations.

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?

Three sentences with no waste: purpose and action list front-loaded, the action=help pointer in the middle, and the cost warning last. The 13-action enumeration is necessarily long but earned.

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 19-parameter, 13-action facade with no output schema, the description delegates per-action parameters and examples to action=help. This pattern is workable, but it leaves the agent without any routing guidance on which action fits which use case until it makes an initial help call, so the definition is not fully self-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 description coverage is 100% โ€” all 19 parameters have descriptions in the schema, so the baseline is 3. The description adds no parameter-specific meaning, deferring to action=help for per-action parameter detail, which is acceptable given the schema already documents every field.

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 identifies a specific resource (a codegraph-compatible safety and change-management facade) and enumerates all 13 dispatchable actions, which distinguishes it from the read-oriented siblings (search, nav, structure, viz). However, because it is a broad facade, the singular verb+resource is diluted across many capabilities, so it isn't as crisp as a single-purpose tool.

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 offers 'Pass action=help for per-action parameters and examples' as the only usage guidance, and the 'safety and change-management facade' framing implies it is the mutation path relative to read-oriented siblings. But there is no explicit when/when-not routing among its own 13 actions or against alternatives like search and structure.

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

healthA
Read-onlyIdempotent

Code-intelligence (codegraph-compatible) health and analysis facade. Actions: dead, deps, file, heatmap, imports, matrix, middleware, overview, patterns, project, refactor_queue, routes, scale, self, test_gap, unreachable. Pass action=help for per-action parameters and examples. Cost: action=project is slow (prefer health action=file (one file, warm)).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAction sub-mode (e.g. summary|cycles).
limitNoMax results.
queryNoSearch query/pattern.
scopeNoAction discriminator (e.g. point|graph).
actionYesWhich capability to invoke. One of: dead, deps, file, heatmap, imports, matrix, middleware, overview, patterns, project, refactor_queue, routes, scale, self, test_gap, unreachable
symbolNoSymbol/function name.
languageNoLanguage hint (usually auto).
file_pathNoTarget file path.
function_nameNoFunction name (alias of symbol).
output_formatNoOutput format: JSON.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint, so the description is not expected to repeat that. It adds useful behavioral context: the cost difference between actions (project slow vs file warm) and the ability to get help via action=help. This goes beyond annotations and helps set expectations for performance and discoverability.

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 concise: three sentences, each with a clear purpose. The first sentence states the tool's role and lists actions; the second gives a direct tip for help; the third provides a cost guideline. It is front-loaded with the core purpose and lists actions efficiently. Minor redundancy: actions are repeated in the schema description, but in the description it is necessary for clarity.

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 10 parameters and no output schema, the description does not fully cover usage details for all actions. It provides an escape hatch ('action=help') that compensates somewhat, and the cost guidance is helpful. However, given the complexity (16 actions), a more detailed explanation of what each action does or when to use it would be expected. The description is adequate but leaves the agent reliant on the help mechanism.

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 has a description in the schema. The tool description adds little beyond the schema; it mentions the 'action' parameter lists actions and suggests 'action=help' for per-action parameters, which is a useful pointer. The description's high-level mention of actions adds context but does not significantly deepen parameter understanding beyond the schema's 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 that this is a 'code-intelligence health and analysis facade' and lists the available actions, which distinguishes it from sibling tools like 'edit' or 'index.' It explicitly mentions 'codegraph-compatible' to provide context. However, the purpose is somewhat generic ('health and analysis') and relies on the action list to convey specifics, lacking a single concise verb+resource statement.

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 by listing actions and suggesting 'action=help' for per-action details. It provides a cost hint ('project is slow, prefer file') which helps choose between actions. But it does not explicitly state when to use this tool versus alternatives like 'search' or 'structure,' nor does it mention when not to use it. The guidance is present but implicit.

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

indexC

Code-intelligence (codegraph-compatible) index lifecycle hub. Actions: auto, build, cache, full, knowledge, schema, status, sync. Pass action=help for per-action parameters and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAction sub-mode (e.g. summary|cycles).
limitNoMax results.
queryNoSearch query/pattern.
scopeNoAction discriminator (e.g. point|graph).
actionYesWhich capability to invoke. One of: auto, build, cache, full, knowledge, schema, status, sync
symbolNoSymbol/function name.
languageNoLanguage hint (usually auto).
file_pathNoTarget file path.
access_modeNoStatus-only read mode; never creates or migrates an index.read_existing
function_nameNoFunction name (alias of symbol).
output_formatNoOutput format: JSON.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations provide no useful safety profile (all hints are false/absent), so the description carries the full burden. It says 'lifecycle hub' but never discloses that build, cache, full, or sync may mutate or recreate indexes, nor what status or knowledge return. The help pointer is not a behavioral disclosure.

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, with two sentences and no obvious filler. The action list somewhat duplicates the schema enum and the help instruction is factually wrong, but structurally it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-action, 11-parameter tool with no annotations and no output schema, this description is critically incomplete. It does not explain what any action does, which parameters apply to which action, what outputs to expect, or how this relates to sibling tools. The single promised expansion path, action=help, is invalid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all parameters at 100% coverage, so the baseline is 3. However, the description adds the instruction 'Pass action=help', which contradicts the action enum and would cause a validation failure. It also provides no mapping of the 11 parameters to the eight actions.

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 identifies the tool as a code-intelligence index lifecycle hub and enumerates eight concrete actions, so an agent can infer the domain and operation set. It lacks a single verb+resource statement and does not explicitly distinguish itself from siblings like search, nav, or structure, but its scope is reasonably clear.

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 when-to-use guidance, no alternatives, and no prerequisites such as setting a project path. The only usage pointer is 'Pass action=help', which is not a valid value in the action enum and therefore cannot be followed as written.

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

projectC

Code-intelligence (codegraph-compatible) project-intelligence hub. Actions: card, doc_sync, journal, metrics, overview, parser, skills, smart, workflow. Pass action=help for per-action parameters and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAction sub-mode (e.g. summary|cycles).
limitNoMax results.
queryNoSearch query/pattern.
scopeNoAction discriminator (e.g. point|graph).
actionYesWhich capability to invoke. One of: card, doc_sync, journal, metrics, overview, parser, skills, smart, workflow
symbolNoSymbol/function name.
languageNoLanguage hint (usually auto).
file_pathNoTarget file path.
function_nameNoFunction name (alias of symbol).
output_formatNoOutput format: JSON.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations are all false, so the description carries the burden of behavioral disclosure. It does not state whether actions are read-only, whether they mutate project state, whether they require a project path to be set, or what side effects (e.g., doc_sync) may occur. The description adds no behavioral context beyond 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.

Conciseness4/5

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

The description is compact and front-loads the tool's role, then lists actions and points to help. It is efficient, though the action list is somewhat long and could be trimmed since the schema already enumerates the enum values.

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 is a multi-action hub with 10 parameters and no output schema, yet the description does not explain what each action returns, how actions relate, or what prerequisites exist (e.g., set_project_path sibling). The pointer to action=help shifts the burden to runtime help, which is not available to the agent at selection time. The description is incomplete for correct tool selection and 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 schema already documents all parameters. The description adds no parameter-level meaning beyond the schema, but the baseline of 3 applies because the schema does the heavy lifting. The description's mention of action=help is a minor addition.

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

Purpose3/5

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

The description identifies the tool as a 'project-intelligence hub' with a list of actions, which conveys a general purpose but not a specific verb+resource. It distinguishes itself from siblings only by naming its sub-actions; it doesn't state what the hub actually does (e.g., analyze, manage, or retrieve project intelligence). The action list provides some clarity but the overall purpose remains vague.

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 says to pass action=help for per-action parameters and examples, which is a useful usage pointer. However, it does not explain when to use this tool versus siblings like search, structure, or viz, nor does it describe which action to choose for which scenario. The guidance is implied rather than explicit.

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

set_project_pathA

SMART Workflow 'Set' step (FIRST): Set the project root path for security boundaries. Call this before any other tool to ensure correct file resolution and security validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYesAbsolute path to the project root

TDQS

A4/5.0
Behavior3/5

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

No annotations; description adds context about security boundaries and being the first step, but does not detail side effects, idempotency, or error handling.

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-loading purpose and usage. No 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?

Adequate for a simple setter tool: explains why it's needed (security, file resolution) and gives usage instruction. Lacks return value info but acceptable.

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 'Absolute path to the project root'. Description repeats this without adding new constraints, format, or examples.

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 'Set the project root path for security boundaries' and identifies it as the first step, distinguishing it from sibling tools which are likely not initialization tools.

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

Usage Guidelines4/5

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

Explicitly says 'Call this before any other tool', providing clear when-to-use guidance, but lacks when-not-to-use 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.

structureA
Read-onlyIdempotent

Code-intelligence (codegraph-compatible) structural analysis facade. Actions: analyze, ast_path, class_detail, class_tree, explore, outline, read, signatures, sitemap. Pass action=help for per-action parameters and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAction sub-mode (e.g. summary|cycles).
limitNoMax results.
queryNoSearch query/pattern.
scopeNoAction discriminator (e.g. point|graph).
actionYesWhich capability to invoke. One of: analyze, ast_path, class_detail, class_tree, explore, outline, read, signatures, sitemap
symbolNoSymbol/function name.
languageNoLanguage hint (usually auto).
file_pathNoTarget file path.
class_nameNoClass name for class_tree and class_detail actions.
function_nameNoFunction name (alias of symbol).
output_formatNoOutput format: JSON.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by calling it a facade and noting that action=help reveals per-action details, but it does not disclose behavior like result shape, error cases, or whether certain parameters are ignored per action.

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 and front-loads the core purpose before listing actions and the help mechanism. Every sentence earns its place; there is no filler or redundant restating beyond the action list, which is useful for orientation.

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 multi-action facade with 11 parameters and no output schema, the description gives a reasonable starting point and tells the agent how to get more detail via action=help. Still, it lacks per-action eligibility guidance, expected outputs, or any mapping of use cases to actions, so it 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?

Since schema description coverage is 100%, the schema carries most parameter meaningainer and baseline is 3. The description adds only the action=help hint rather than deeper per-action parameter semantics; it does not compensate for vague schema descriptions like 'Action sub-mode' or 'Action discriminator.'

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 labels this as 'code-intelligence (codegraph-compatible) structural analysis facade' and enumerates the nine actions, which tells an agent what domain and capabilities the tool covers. It is not a tautology and is distinct enough from siblings like search/nav/edit/viz, though it does not explicitly name those alternatives.

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 gives a clear general context (structural analysis) and the practical instruction 'Pass action=help for per-action parameters and examples,' which helps an agent begin. However, it does not explain when to use this tool instead of a specific sibling, nor does it provide an exclusion or best-fit action selection.

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

vizA
Read-onlyIdempotent

Code-intelligence (codegraph-compatible) visualization and similarity facade. Actions: graph, knowledge, similarity, uml. Pass action=help for per-action parameters and examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoAction sub-mode (e.g. summary|cycles).
limitNoMax results.
queryNoSearch query/pattern.
scopeNoAction discriminator (e.g. point|graph).
actionYesWhich capability to invoke. One of: graph, knowledge, similarity, uml
symbolNoSymbol/function name.
languageNoLanguage hint (usually auto).
file_pathNoTarget file path.
min_linesNoaction=similarity: min function body lines to consider (default: 5).
max_groupsNoaction=similarity: max clone groups to return (default: 20).
path_filterNoaction=similarity: project-relative path glob filter.
function_nameNoFunction name (alias of symbol).
output_formatNoOutput format: JSON.
min_group_sizeNoaction=similarity: min clone group size to report (default: 2).

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it is codegraph-compatible and that action=help exposes per-action behavior, but it does not disclose what each action returns or any action-specific side effects.

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

Conciseness5/5

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

Two sentences with no filler. The core purpose is front-loaded, the action list is compact, and the help instruction is placed last as a natural follow-up. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate as a starting point but relies on a separate action=help invocation to fill in per-action semantics, required parameters, and examples. Given 14 parameters and no output schema, an agent cannot confidently select and invoke the right action from the description alone.

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 14 parameters. The description adds no parameter details beyond pointing to action=help for per-action parameters and examples, which does not exceed the baseline expected when the schema is fully self-describing.

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 a code-intelligence visualization and similarity facade and enumerates the four actions (graph, knowledge, similarity, uml). This distinguishes it from sibling tools like search, nav, or structure at a high level, though 'facade' leaves the exact per-action purpose vague.

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 'visualization and similarity facade' implies when to use this tool, and 'Pass action=help' tells the agent how to discover usage details. However, there is no explicit comparison to sibling tools such as search or structure, and no stated when-not-to-use conditions.

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.

  1. 2 tool updatesv2.0.0
    • Changedproject2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: card, doc_sync, files, journal, metrics, overview, parser, skills, smart, tools, workflow"New value: +"Which capability to invoke. One of: card, doc_sync, journal, metrics, overview, parser, skills, smart, workflow"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "card",
        -  "doc_sync",
        -  "files",
        -  "journal",
        -  "metrics",
        -  "overview",
        -  "parser",
        -  "skills",
        -  "smart",
        -  "tools",
        -  "workflow"
        -]New value: +[
        +  "card",
        +  "doc_sync",
        +  "journal",
        +  "metrics",
        +  "overview",
        +  "parser",
        +  "skills",
        +  "smart",
        +  "workflow"
        +]
    • Changedsearch2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: batch, chain, query, select, semantic, subscribe, symbol, tql_execute, tql_schema, unsubscribe"New value: +"Which capability to invoke. One of: chain, query, select, semantic, subscribe, symbol, tql_execute, tql_schema, unsubscribe"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "batch",
        -  "chain",
        -  "query",
        -  "select",
        -  "semantic",
        -  "subscribe",
        -  "symbol",
        -  "tql_execute",
        -  "tql_schema",
        -  "unsubscribe"
        -]New value: +[
        +  "chain",
        +  "query",
        +  "select",
        +  "semantic",
        +  "subscribe",
        +  "symbol",
        +  "tql_execute",
        +  "tql_schema",
        +  "unsubscribe"
        +]
  2. 8 tool updatesv1.30.0
    • Changededit12 fields changed
      • addedInput schema / properties / access_mode
        Added value: +{
        +  "description": "Explicit P0.4 zero-write access mode for routed read adapters.",
        +  "enum": [
        +    "read_existing"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: ast_diff, classify, constraints, guard, impact, pr, refactor, safe"New value: +"Which capability to invoke. One of: ast_diff, classify, constraints, guard, impact, mutation_probe, plan_rename, pr, refactor, release_snapshot, rename, safe, verify"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "ast_diff",
        -  "classify",
        -  "constraints",
        -  "guard",
        -  "impact",
        -  "pr",
        -  "refactor",
        -  "safe"
        -]New value: +[
        +  "ast_diff",
        +  "classify",
        +  "constraints",
        +  "guard",
        +  "impact",
        +  "mutation_probe",
        +  "plan_rename",
        +  "pr",
        +  "refactor",
        +  "release_snapshot",
        +  "rename",
        +  "safe",
        +  "verify"
        +]
      • addedInput schema / properties / capture_diff_snapshot
        Added value: +{
        +  "description": "Explicitly produce a frozen diff ID for same-process consumers; supported only on POSIX.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / diff_snapshot_id
        Added value: +{
        +  "description": "RFC-0022 frozen diff ID for constraints/classify/ast_diff/release_snapshot.",
        +  "type": "string"
        +}
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
      • addedInput schema / properties / persist
        Added value: +{
        +  "default": true,
        +  "description": "Write evaluated violations through to the cache. Set false for RFC-0022 read-only evaluation; no database or file is created.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / route_lease_id
        Added value: +{
        +  "description": "Ownership token required by action=release_snapshot.",
        +  "type": "string"
        +}
      • addedInput schema / properties / scope_paths
        Added value: +{
        +  "description": "Primitive-issued frozen scope for action=constraints, or impact capture scope for action=impact.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / snapshot_id
        Added value: +{
        +  "description": "Certified P0.1 index snapshot capability ID.",
        +  "type": "string"
        +}
      • addedInput schema / properties / source_generation
        Added value: +{
        +  "description": "Certified P0.1/P0.2 source generation.",
        +  "type": "string"
        +}
    • Changedhealth4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: dead, deps, file, heatmap, imports, matrix, overview, patterns, project, routes, scale, test_gap"New value: +"Which capability to invoke. One of: dead, deps, file, heatmap, imports, matrix, middleware, overview, patterns, project, refactor_queue, routes, scale, self, test_gap, unreachable"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "dead",
        -  "deps",
        -  "file",
        -  "heatmap",
        -  "imports",
        -  "matrix",
        -  "overview",
        -  "patterns",
        -  "project",
        -  "routes",
        -  "scale",
        -  "test_gap"
        -]New value: +[
        +  "dead",
        +  "deps",
        +  "file",
        +  "heatmap",
        +  "imports",
        +  "matrix",
        +  "middleware",
        +  "overview",
        +  "patterns",
        +  "project",
        +  "refactor_queue",
        +  "routes",
        +  "scale",
        +  "self",
        +  "test_gap",
        +  "unreachable"
        +]
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
    • Changedindex5 fields changed
      • addedInput schema / properties / access_mode
        Added value: +{
        +  "default": "read_existing",
        +  "description": "Status-only read mode; never creates or migrates an index.",
        +  "enum": [
        +    "read_existing"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: auto, build, cache, full, knowledge, status, sync"New value: +"Which capability to invoke. One of: auto, build, cache, full, knowledge, schema, status, sync"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "auto",
        -  "build",
        -  "cache",
        -  "full",
        -  "knowledge",
        -  "status",
        -  "sync"
        -]New value: +[
        +  "auto",
        +  "build",
        +  "cache",
        +  "full",
        +  "knowledge",
        +  "schema",
        +  "status",
        +  "sync"
        +]
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
    • Changednav7 fields changed
      • addedInput schema / properties / access_mode
        Added value: +{
        +  "description": "Use only a certified existing index snapshot.",
        +  "enum": [
        +    "read_existing"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: call_path, callee_tree, callees, caller_tree, callers, co_change, context, impact, lineage, navigate, resolve, test_map, trace, xref"New value: +"Which capability to invoke. One of: call_path, callee_tree, callees, caller_tree, callers, co_change, context, impact, lineage, navigate, pulse, pulse_batch, resolve, test_map, trace, xref"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "call_path",
        -  "callee_tree",
        -  "callees",
        -  "caller_tree",
        -  "callers",
        -  "co_change",
        -  "context",
        -  "impact",
        -  "lineage",
        -  "navigate",
        -  "resolve",
        -  "test_map",
        -  "trace",
        -  "xref"
        -]New value: +[
        +  "call_path",
        +  "callee_tree",
        +  "callees",
        +  "caller_tree",
        +  "callers",
        +  "co_change",
        +  "context",
        +  "impact",
        +  "lineage",
        +  "navigate",
        +  "pulse",
        +  "pulse_batch",
        +  "resolve",
        +  "test_map",
        +  "trace",
        +  "xref"
        +]
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
      • addedInput schema / properties / snapshot_id
        Added value: +{
        +  "description": "Owner-issued certified index snapshot ID.",
        +  "type": "string"
        +}
      • addedInput schema / properties / source_generation
        Added value: +{
        +  "description": "Owner-issued certified source generation.",
        +  "type": "string"
        +}
    • Changedproject4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: doc_sync, files, journal, metrics, overview, parser, skills, smart, tools, workflow"New value: +"Which capability to invoke. One of: card, doc_sync, files, journal, metrics, overview, parser, skills, smart, tools, workflow"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "doc_sync",
        -  "files",
        -  "journal",
        -  "metrics",
        -  "overview",
        -  "parser",
        -  "skills",
        -  "smart",
        -  "tools",
        -  "workflow"
        -]New value: +[
        +  "card",
        +  "doc_sync",
        +  "files",
        +  "journal",
        +  "metrics",
        +  "overview",
        +  "parser",
        +  "skills",
        +  "smart",
        +  "tools",
        +  "workflow"
        +]
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
    • Changedsearch4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: batch, chain, content, grep, query, select, subscribe, symbol, unsubscribe"New value: +"Which capability to invoke. One of: batch, chain, query, select, semantic, subscribe, symbol, tql_execute, tql_schema, unsubscribe"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "batch",
        -  "chain",
        -  "content",
        -  "grep",
        -  "query",
        -  "select",
        -  "subscribe",
        -  "symbol",
        -  "unsubscribe"
        -]New value: +[
        +  "batch",
        +  "chain",
        +  "query",
        +  "select",
        +  "semantic",
        +  "subscribe",
        +  "symbol",
        +  "tql_execute",
        +  "tql_schema",
        +  "unsubscribe"
        +]
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
    • Changedstructure2 fields changed
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
    • Changedviz2 fields changed
      • changedInput schema / properties / output_format / description
        Previous value: -"Output format (toon|json)."New value: +"Output format: JSON."
      • addedInput schema / properties / output_format / enum
        Added value: +[
        +  "json"
        +]
  3. 2 tool updatesv1.29.1
    • Changedindex2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: auto, build, cache, full, status, sync"New value: +"Which capability to invoke. One of: auto, build, cache, full, knowledge, status, sync"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "auto",
        -  "build",
        -  "cache",
        -  "full",
        -  "status",
        -  "sync"
        -]New value: +[
        +  "auto",
        +  "build",
        +  "cache",
        +  "full",
        +  "knowledge",
        +  "status",
        +  "sync"
        +]
    • Changedviz3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Which capability to invoke. One of: graph, similarity, uml"New value: +"Which capability to invoke. One of: graph, knowledge, similarity, uml"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "graph",
        -  "similarity",
        -  "uml"
        -]New value: +[
        +  "graph",
        +  "knowledge",
        +  "similarity",
        +  "uml"
        +]
      • addedInput schema / properties / path_filter
        Added value: +{
        +  "description": "action=similarity: project-relative path glob filter.",
        +  "type": "string"
        +}
  4. 4 tool updatesv1.25.0
    • Changededit1 field changed
      • addedInput schema / properties / modification_type
        Added value: +{
        +  "description": "Required for action=guard: type of planned modification. One of: add_feature, behavior_change, delete, fix_bug, refactor, rename, signature_change.",
        +  "enum": [
        +    "add_feature",
        +    "behavior_change",
        +    "delete",
        +    "fix_bug",
        +    "refactor",
        +    "rename",
        +    "signature_change"
        +  ],
        +  "type": "string"
        +}
    • Changedsearch1 field changed
      • addedInput schema / properties / kind
        Added value: +{
        +  "description": "Symbol kind filter for action=symbol (default: any).",
        +  "enum": [
        +    "function",
        +    "method",
        +    "class",
        +    "enum",
        +    "variable",
        +    "import",
        +    "constant",
        +    "any"
        +  ],
        +  "type": "string"
        +}
    • Changedstructure1 field changed
      • addedInput schema / properties / class_name
        Added value: +{
        +  "description": "Class name for class_tree and class_detail actions.",
        +  "type": "string"
        +}
    • Changedviz3 fields changed
      • addedInput schema / properties / max_groups
        Added value: +{
        +  "description": "action=similarity: max clone groups to return (default: 20).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / min_group_size
        Added value: +{
        +  "description": "action=similarity: min clone group size to report (default: 2).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / min_lines
        Added value: +{
        +  "description": "action=similarity: min function body lines to consider (default: 5).",
        +  "type": "integer"
        +}
  5. 9 tool updatesv1.23.0
    • First observededit
    • First observedhealth
    • First observedindex
    • First observednav
    • First observedproject
    • First observedsearch
    • First observedset_project_path
    • First observedstructure
    • First observedviz

TDQS

B3.1/5.0

Scored across 9 tools

Disambiguation3/5

The facades have distinct high-level purposes (search, navigation, structure, health, edit, project, index, viz), but repeated 'code-intelligence facade' language and overlapping action names like overview, knowledge, and impact create some misselection risk. Descriptions help, but an agent still needs to know the internal action taxonomy to reliably pick the right facade.

Naming Consistency3/5

Most tools follow a single-word lowercase noun pattern, but set_project_path breaks it as a verb_noun imperative and nav/viz are abbreviations. The nested action names also mix verbs, nouns, and prefixed forms, making the naming readable but not fully consistent.

Tool Count4/5

Nine tools is a reasonable count for a code-intelligence server and sits in the well-scoped range. The count is slightly misleading because each tool is a large facade bundling many sub-actions, but no tool feels redundant enough to remove.

Completeness4/5

The tool surface covers the main code-intelligence lifecycle: indexing, search, navigation, structural analysis, health checks, edit safety, project insights, and visualization. Minor gaps, such as cross-facade diffing or detailed API-specific operations, are workable given the breadth of actions.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • 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.
    163 npm
    4
    Business Source 1.1
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for local-first code intelligence, providing structural code graph, semantic search, and impact analysis to AI agents.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Ultra-lightweight, local-first MCP server for AI-powered code intelligence, providing AST-based analysis and 20+ tools while ensuring zero data leakage.
    869 npm
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Give your AI coding agents superpowers โ€” a local MCP server for fast, token-efficient code navigation, search & analysis.
    -