tree-sitter-analyzer
The server is a code-intelligence MCP backend that indexes source code with tree-sitter and exposes structured JSON tools for searching, navigating, analyzing, editing safely, and visualizing codebases.
search: symbol/function search with actions like chain, query, select, semantic, symbol, and TQL (subscribe/execute/schema) for relevance-ranked and semantic lookup.
nav: code navigation and dependency tracing — callers/callees, call paths, caller/callee trees, impact, lineage, co-change, xref, pulse, resolve, and test mapping.
structure: structural analysis — class trees/details, outlines, signatures, AST paths, sitemaps, and relationship exploration.
health: project and file health grading — dead code, dependency matrices, heatmaps, imports, patterns, refactor queue, test gaps, routes, and unreachable code.
edit: safe-change workflow — plan rename, verify, guard, constraints, impact, mutation probe, PR review, AST diff, classify, refactor, and snapshot release.
project: project-level intelligence — overview cards, decision journal, metrics, skills, smart workflow, and docs sync.
index: index lifecycle management — build, full, sync, cache, status, auto, knowledge, and schema inspection.
viz: visualization and similarity — Mermaid graphs/UML, structural clone detection, and knowledge views.
set_project_path: security boundary setup — must be called first to set the absolute project root.
Provides AI agents like GitHub Copilot with code intelligence capabilities for navigating, analyzing, and refactoring codebases.
Allows exporting call graphs and UML diagrams (class, package, component, sequence) in Mermaid format for documentation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tree-sitter-analyzerfind all callers of calculateTotal"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🌳 Tree-sitter Analyzer
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.
Automated install (recommended)
curl -fsSL https://raw.githubusercontent.com/aimasteracc/tree-sitter-analyzer/main/install.sh | bashAuto-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
uvinstaller whenuvis 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, installuv >= 0.11.0manually 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-mcpRestart 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? |
| definition site, references, and call hierarchy together |
What breaks if I change this? |
| transitive dependents with a risk verdict |
Who calls this, and what does it call? |
| resolved call sites, and the sites resolution could not resolve |
Find a symbol by name |
| relevance-ranked matches (FTS5 + BM25) |
Fetch related symbols with their relationship map |
| the requested symbols and how they connect |
Is the index usable right now? |
| coverage, staleness, and edge count |
Build or refresh the call graph |
| index state after the run |
Which tests does this change touch? |
| 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) |
| lexical pre-filter before cosine rerank |
Project A–F health grading |
| combines size, complexity, dependencies, coverage, duplication, structure, and git hotspots |
JSON output | every tool, | standard structured response envelopes |
Verdict envelopes | every tool |
|
Safe-to-edit gate |
| refuses high-risk edits before they happen |
Architectural constraint DSL |
| "module A cannot import B" → enforced |
Code health (file-level) |
| block/long-method/smell detection |
Class hierarchy |
| type-inheritance tree |
Dependency matrix |
| module-coupling matrix |
Dead code |
| transitive unreachable analysis |
Complexity heatmap |
| per-fn cyclomatic + project view |
AST-structural clone detection |
| structural clones rather than text matches |
Mermaid call-graph export |
| paste-ready in docs |
UML Mermaid export |
| class / package / component / sequence diagrams |
PR review |
| 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 |
| per-symbol git-modification frequency |
File orientation |
| health + exports + deps + edit-risk in a combined response |
Architectural decision 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.
361 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 diagramTSA 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 consumerThe 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-mcpVerify: 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_ROOTmust be absolute. The server enforces a security boundary against escapes viaSecurityValidator.
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_PATHfor large-output write target.
Quality & Testing
Metric | Value |
Test suite |
|
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 gateTroubleshooting
Symptom | Fix |
| Update to a current supported release — the missing-language gap was patched in commit |
MCP server doesn't appear in client |
|
| Stop any other process holding |
Slow first call or missing index | Some tools warm the index automatically. Run |
Agent picks the wrong tool | Use a |
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 toolseditBDestructive
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 with target_action for an exact action schema. Cost: action=safe is slow.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: ast_diff, classify, constraints, guard, help, impact, mutation_probe, plan_rename, pr, refactor, release_snapshot, rename, safe, verify | |
| symbol | No | Symbol/function name. | |
| persist | No | Write evaluated violations through to the cache. Set false for RFC-0022 read-only evaluation; no database or file is created. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| access_mode | No | Explicit P0.4 zero-write access mode for routed read adapters. | |
| scope_paths | No | Primitive-issued frozen scope for action=constraints, or impact capture scope for action=impact. | |
| snapshot_id | No | Certified P0.1 index snapshot capability ID. | |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. | |
| route_lease_id | No | Ownership token required by action=release_snapshot. | |
| diff_snapshot_id | No | RFC-0022 frozen diff ID for constraints/classify/ast_diff/release_snapshot. | |
| modification_type | No | Required for action=guard: type of planned modification. One of: add_feature, behavior_change, delete, fix_bug, refactor, rename, signature_change. | |
| source_generation | No | Certified P0.1/P0.2 source generation. | |
| capture_diff_snapshot | No | Explicitly produce a frozen diff ID for same-process consumers; supported only on POSIX. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds context beyond annotations by describing the facade nature, listing supported actions, and noting the cost of action=safe. It does not detail side effects or which actions are destructive, but the annotations carry that burden and there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences cover scope, actions, discovery mechanism, and a cost warning with no filler. It is compact and scannable, though the dense action list makes it slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (20 parameters, 14 actions, no output schema), the description is not fully self-contained. It compensates by directing the agent to action=help for exact schemas, but it still lacks per-action summaries, selection guidance, and side-effect context, so it is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds one useful link between action=help and target_action, but it does not explain which parameters apply to which actions or clarify the action-specific parameter combinations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a code-intelligence 'safety and change-management facade' and enumerates 14 concrete actions, which separates it from the read-oriented sibling tools. It does not reach 5 because the action names are cryptic and their individual purposes are not explained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent to pass action=help with target_action to get the exact action schema, and warns that action=safe is slow. However, it does not state when to use this tool versus siblings or how to choose among the listed actions, so the guidance is useful but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
healthARead-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 with target_action for an exact action schema. Cost: action=project is slow (prefer health action=file (one file, warm)).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: dead, deps, file, heatmap, help, imports, matrix, middleware, overview, patterns, project, refactor_queue, routes, scale, self, test_gap, unreachable | |
| symbol | No | Symbol/function name. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior; the description adds a performance cost warning (project is slow, file is warm) and the help-introspection mechanism. It does not detail response shapes, but with annotations present the added behavioral context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the action list, then the help mechanism, then the cost caveat. The action enumeration is long but earns its place for a facade with many subcommands; slight redundancy with the enum prevents a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action facade with no output schema, the description supplies a bootstrap mechanism (help + target_action) to obtain exact action schemas and warns about the expensive action. It does not spell out every action's meaning or return format, but the help mechanism and complete parameter schema make it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by explaining the target_action parameter in conjunction with action=help and by highlighting project versus file cost behavior. This goes beyond the generic property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a code-intelligence/analysis facade and enumerates its concrete actions, so an agent can see it is a read-only analysis dispatcher rather than a search or edit operation. It stops short of explicitly contrasting these actions with sibling tools like search or project, but the action list provides enough differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable usage guidance: use action=help with target_action to get an exact schema, and prefer action=file over slow action=project. It does not explicitly state when to use this facade versus siblings, so it misses the 'alternatives' part of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indexB
Code-intelligence (codegraph-compatible) index lifecycle hub. Actions: auto, build, cache, full, knowledge, schema, status, sync. Pass action=help with target_action for an exact action schema.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: auto, build, cache, full, help, knowledge, schema, status, sync | |
| symbol | No | Symbol/function name. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| access_mode | No | Status-only read mode; never creates or migrates an index. | read_existing |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all four annotations false, the description carries the behavioral burden; it discloses the help/discovery behavior and implies mixed read/write operations via verbs like build/cache/sync versus status/schema. However, it does not state which actions mutate state, what side effects build or cache have, or any prerequisites. It does not contradict the annotations, but disclosure is thinner than the tool's complexity warrants.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource identity before the action list and help pointer. The action list partially duplicates the schema's action enum, but it serves as a useful at-a-glance summary. No wasted words or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, 9-action dispatcher with no output schema and uninformative annotations, the description is thin: it never maps parameters to actions or describes side-effect profiles per action. The action=help discovery mechanism is a genuine mitigation that gives the agent a path to exact action schemas, which justifies an average rather than low score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and all 12 parameters are already documented in the schema. The description adds modest value by wiring action=help together with target_action as the discovery combination, though the schema's target_action field already says 'Business action to describe when action is help.' No other parameter semantics are added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource domain ('code-intelligence index lifecycle hub') with a 'codegraph-compatible' qualifier that anchors it apart from siblings like search or viz. The action menu (auto/build/cache/full/knowledge/schema/status/sync) makes the dispatch verbs explicit. It misses a 5 because the actions are bare names with no definitions, leaving what each capability actually does opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one practical usage hint: 'Pass action=help with target_action for an exact action schema,' telling the agent how to discover per-action parameters. It never states when to select this tool over siblings such as search, nav, or health, nor gives exclusions or prerequisites. Usage context is implied by the 'index lifecycle' framing rather than explicitly stated.
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 with target_action for an exact action schema.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: card, doc_sync, help, journal, metrics, overview, parser, skills, smart, workflow | |
| symbol | No | Symbol/function name. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false and provide no safety profile, so the description carries the burden. It lists actions and a help mechanism, but discloses no side effects, mutability, output shape, permissions, or per-action behavior for a multi-action tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two crisp sentences, front-loaded with the hub role and an actionable discovery instruction; no filler. The action list is dense but necessary given the tool's design.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity 10-action tool with no output schema, the description relies on the action=help escape hatch rather than documenting behaviors. This makes it minimally usable but incomplete for selecting the right action without an extra help call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds only the hint that target_action is used with action=help, which the schema already states; it adds no extra meaning to the 11 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a 'project-intelligence hub' and enumerates ten action names, but it never states a concrete verb+resource or what the tool actually accomplishes. It is distinguishable from siblings only by the action names, not by an explicit statement of purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to invoke this hub versus sibling tools like search, edit, or index. The only directive, 'Pass action=help with target_action', explains schema discovery, not usage conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchARead-onlyIdempotent
Code-intelligence (codegraph-compatible) search facade. Actions: chain, query, select, semantic, subscribe, symbol, text, tql_execute, tql_schema, unsubscribe. Pass action=help with target_action for an exact action schema.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Symbol kind filter for action=symbol (default: any). | |
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: chain, help, query, select, semantic, subscribe, symbol, text, tql_execute, tql_schema, unsubscribe | |
| symbol | No | Symbol/function name. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. |
TDQS
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 well covered. The description adds some interaction context, such as the help mechanism and the facade-style action routing, but it does not disclose additional behavioral traits like result shapes, subscription side effects, or permission requirements. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences. The first front-loads the tool's identity and available actions; the second gives the essential discovery path for exact action schemas. No filler, repetition beyond the action list, or unnecessary background is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a high-complexity facade with 12 parameters, 11 actions, and no output schema. The description would normally be too thin, but the explicit instruction to call action=help with target_action for exact action schemas meaningfully compensates by giving the agent a reliable discovery path. Still, it does not summarize return values or per-action parameter requirements, so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains all 12 parameters and their enums. The description adds one useful parameter-related instruction—combining action=help with target_action—but this is largely a restatement of the schema's target_action description. It does not meaningfully extend parameter understanding beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a code-intelligence/codegraph-compatible search facade and lists the specific actions it supports. It is not a tautology and gives enough resource and operation context to distinguish it from navigation, edit, and project tools, though it does not explain what each action does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides actionable discovery guidance: passing action=help with target_action returns the exact action schema. However, it does not state when to use this search facade versus sibling tools like nav, structure, viz, or edit, nor does it give exclusions or preference rules. Usage context is mostly implied through the action list.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | Absolute path to the project root |
TDQS
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.
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.
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.
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.
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.
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.
structureBRead-onlyIdempotent
Code-intelligence (codegraph-compatible) structural analysis facade. Actions: analyze, ast_path, class_detail, class_tree, explore, outline, read, signatures, sitemap. Pass action=help with target_action for an exact action schema.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: analyze, ast_path, class_detail, class_tree, explore, help, outline, read, signatures, sitemap | |
| symbol | No | Symbol/function name. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| class_name | No | Class name for class_tree and class_detail actions. | |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'codegraph-compatible' context and the help mechanism for obtaining action schemas, which gives some behavioral guidance beyond annotations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the purpose, listing the actions compactly. It avoids unnecessary fluff and is appropriately sized for a facade tool, though the 'codegraph-compatible' jargon may be slightly opaque.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, 10 actions), the description is not fully self-contained but offers a clear path to completeness via the help action. It does not describe return values, but with no output schema and the help mechanism, it provides an adequate entry point for an agent to discover details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for all 12 parameters, so the schema already documents each parameter. The description adds the specific instruction that action=help with target_action returns an exact action schema, which adds meaning to those parameters, but it does not elaborate on other parameters beyond the schema, keeping it at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a 'structural analysis facade' for code intelligence and lists the supported actions (analyze, ast_path, class_detail, etc.), giving a clear sense of its purpose. It distinguishes itself from siblings by the codegraph-compatible facade framing, but it does not explain what 'structural analysis' entails beyond the action names, so it is not fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no comparison with sibling tools (search, nav, health, edit, etc.) or guidance on when to choose this facade over alternatives. The only usage hint is 'Pass action=help with target_action for an exact action schema,' which tells how to discover details but not when to use the tool contextually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vizBRead-onlyIdempotent
Code-intelligence (codegraph-compatible) visualization and similarity facade. Actions: graph, knowledge, similarity, uml. Pass action=help with target_action for an exact action schema.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Action sub-mode (e.g. summary|cycles). | |
| limit | No | Max results. | |
| query | No | Search query/pattern. | |
| scope | No | Action discriminator (e.g. point|graph). | |
| action | Yes | Which business capability to invoke, or help for discovery. One of: graph, help, knowledge, similarity, uml | |
| symbol | No | Symbol/function name. | |
| language | No | Language hint (usually auto). | |
| file_path | No | Target file path. | |
| min_lines | No | action=similarity: min function body lines to consider (default: 5). | |
| max_groups | No | action=similarity: max clone groups to return (default: 20). | |
| path_filter | No | action=similarity: project-relative path glob filter. | |
| function_name | No | Function name (alias of symbol). | |
| output_format | No | Output format: JSON. | |
| target_action | No | Business action to describe when action is help. | |
| min_group_size | No | action=similarity: min clone group size to report (default: 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already label the tool readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds that it is a facade and that help can be requested per action, which is useful, but it discloses little else about behavior such as output structure or action-specific effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first establishes domain and actions, the second points to self-discovery. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 15 parameters, 5 actions, and no output schema, yet the description leaves the semantics of each action undefined. The help pointer is useful but shifts the burden onto a preliminary help call; for such a high-complexity tool, more context about action behavior and result types is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema carries the parameter documentation burden. The description adds only the cross-parameter hint that target_action is used when action is help, which the schema already states. No additional meaning beyond the schema is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a 'code-intelligence ... visualization and similarity facade' and enumerates its actions: graph, knowledge, similarity, uml. It is specific enough to convey that this is a dispatcher for code analysis, but it does not distinguish itself from siblings like search or structure beyond the facade framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'Pass action=help with target_action for an exact action schema,' which is a discovery instruction rather than guidance on when to use this tool versus alternatives. No conditional context, exclusions, or sibling routing is provided.
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.
8 tool updates
v2.2.0- Changed
edit3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: ast_diff, classify, constraints, guard, impact, mutation_probe, plan_rename, pr, refactor, release_snapshot, rename, safe, verify"New value: +"Which business capability to invoke, or help for discovery. One of: ast_diff, classify, constraints, guard, help, impact, mutation_probe, plan_rename, pr, refactor, release_snapshot, rename, safe, verify" - changed
Input schema / properties / action / enumPrevious value: -[ - "ast_diff", - "classify", - "constraints", - "guard", - "impact", - "mutation_probe", - "plan_rename", - "pr", - "refactor", - "release_snapshot", - "rename", - "safe", - "verify" -]New value: +[ + "ast_diff", + "classify", + "constraints", + "guard", + "help", + "impact", + "mutation_probe", + "plan_rename", + "pr", + "refactor", + "release_snapshot", + "rename", + "safe", + "verify" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
health3 fields changed- changed
Input schema / properties / action / descriptionPrevious 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"New value: +"Which business capability to invoke, or help for discovery. One of: dead, deps, file, heatmap, help, imports, matrix, middleware, overview, patterns, project, refactor_queue, routes, scale, self, test_gap, unreachable" - changed
Input schema / properties / action / enumPrevious value: -[ - "dead", - "deps", - "file", - "heatmap", - "imports", - "matrix", - "middleware", - "overview", - "patterns", - "project", - "refactor_queue", - "routes", - "scale", - "self", - "test_gap", - "unreachable" -]New value: +[ + "dead", + "deps", + "file", + "heatmap", + "help", + "imports", + "matrix", + "middleware", + "overview", + "patterns", + "project", + "refactor_queue", + "routes", + "scale", + "self", + "test_gap", + "unreachable" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
index3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: auto, build, cache, full, knowledge, schema, status, sync"New value: +"Which business capability to invoke, or help for discovery. One of: auto, build, cache, full, help, knowledge, schema, status, sync" - changed
Input schema / properties / action / enumPrevious value: -[ - "auto", - "build", - "cache", - "full", - "knowledge", - "schema", - "status", - "sync" -]New value: +[ + "auto", + "build", + "cache", + "full", + "help", + "knowledge", + "schema", + "status", + "sync" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
nav3 fields changed- changed
Input schema / properties / action / descriptionPrevious 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"New value: +"Which business capability to invoke, or help for discovery. One of: call_path, callee_tree, callees, caller_tree, callers, co_change, context, help, impact, lineage, navigate, pulse, pulse_batch, resolve, test_map, trace, xref" - changed
Input schema / properties / action / enumPrevious value: -[ - "call_path", - "callee_tree", - "callees", - "caller_tree", - "callers", - "co_change", - "context", - "impact", - "lineage", - "navigate", - "pulse", - "pulse_batch", - "resolve", - "test_map", - "trace", - "xref" -]New value: +[ + "call_path", + "callee_tree", + "callees", + "caller_tree", + "callers", + "co_change", + "context", + "help", + "impact", + "lineage", + "navigate", + "pulse", + "pulse_batch", + "resolve", + "test_map", + "trace", + "xref" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
project3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: card, doc_sync, journal, metrics, overview, parser, skills, smart, workflow"New value: +"Which business capability to invoke, or help for discovery. One of: card, doc_sync, help, journal, metrics, overview, parser, skills, smart, workflow" - changed
Input schema / properties / action / enumPrevious value: -[ - "card", - "doc_sync", - "journal", - "metrics", - "overview", - "parser", - "skills", - "smart", - "workflow" -]New value: +[ + "card", + "doc_sync", + "help", + "journal", + "metrics", + "overview", + "parser", + "skills", + "smart", + "workflow" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
search3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: chain, query, select, semantic, subscribe, symbol, tql_execute, tql_schema, unsubscribe"New value: +"Which business capability to invoke, or help for discovery. One of: chain, help, query, select, semantic, subscribe, symbol, text, tql_execute, tql_schema, unsubscribe" - changed
Input schema / properties / action / enumPrevious value: -[ - "chain", - "query", - "select", - "semantic", - "subscribe", - "symbol", - "tql_execute", - "tql_schema", - "unsubscribe" -]New value: +[ + "chain", + "help", + "query", + "select", + "semantic", + "subscribe", + "symbol", + "text", + "tql_execute", + "tql_schema", + "unsubscribe" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
structure3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: analyze, ast_path, class_detail, class_tree, explore, outline, read, signatures, sitemap"New value: +"Which business capability to invoke, or help for discovery. One of: analyze, ast_path, class_detail, class_tree, explore, help, outline, read, signatures, sitemap" - changed
Input schema / properties / action / enumPrevious value: -[ - "analyze", - "ast_path", - "class_detail", - "class_tree", - "explore", - "outline", - "read", - "signatures", - "sitemap" -]New value: +[ + "analyze", + "ast_path", + "class_detail", + "class_tree", + "explore", + "help", + "outline", + "read", + "signatures", + "sitemap" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
- Changed
viz3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: graph, knowledge, similarity, uml"New value: +"Which business capability to invoke, or help for discovery. One of: graph, help, knowledge, similarity, uml" - changed
Input schema / properties / action / enumPrevious value: -[ - "graph", - "knowledge", - "similarity", - "uml" -]New value: +[ + "graph", + "help", + "knowledge", + "similarity", + "uml" +] - added
Input schema / properties / target_actionAdded value: +{ + "description": "Business action to describe when action is help.", + "type": "string" +}
2 tool updates
v2.0.0- Changed
project2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious 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" +]
- Changed
search2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious 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" +]
8 tool updates
v1.30.0- Changed
edit12 fields changed- added
Input schema / properties / access_modeAdded value: +{ + "description": "Explicit P0.4 zero-write access mode for routed read adapters.", + "enum": [ + "read_existing" + ], + "type": "string" +} - changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious 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" +] - added
Input schema / properties / capture_diff_snapshotAdded value: +{ + "description": "Explicitly produce a frozen diff ID for same-process consumers; supported only on POSIX.", + "type": "boolean" +} - added
Input schema / properties / diff_snapshot_idAdded value: +{ + "description": "RFC-0022 frozen diff ID for constraints/classify/ast_diff/release_snapshot.", + "type": "string" +} - changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +] - added
Input schema / properties / persistAdded 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" +} - added
Input schema / properties / route_lease_idAdded value: +{ + "description": "Ownership token required by action=release_snapshot.", + "type": "string" +} - added
Input schema / properties / scope_pathsAdded value: +{ + "description": "Primitive-issued frozen scope for action=constraints, or impact capture scope for action=impact.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / snapshot_idAdded value: +{ + "description": "Certified P0.1 index snapshot capability ID.", + "type": "string" +} - added
Input schema / properties / source_generationAdded value: +{ + "description": "Certified P0.1/P0.2 source generation.", + "type": "string" +}
- Changed
health4 fields changed- changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious 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" +] - changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +]
- Changed
index5 fields changed- added
Input schema / properties / access_modeAdded value: +{ + "default": "read_existing", + "description": "Status-only read mode; never creates or migrates an index.", + "enum": [ + "read_existing" + ], + "type": "string" +} - changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious value: -[ - "auto", - "build", - "cache", - "full", - "knowledge", - "status", - "sync" -]New value: +[ + "auto", + "build", + "cache", + "full", + "knowledge", + "schema", + "status", + "sync" +] - changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +]
- Changed
nav7 fields changed- added
Input schema / properties / access_modeAdded value: +{ + "description": "Use only a certified existing index snapshot.", + "enum": [ + "read_existing" + ], + "type": "string" +} - changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious 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" +] - changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +] - added
Input schema / properties / snapshot_idAdded value: +{ + "description": "Owner-issued certified index snapshot ID.", + "type": "string" +} - added
Input schema / properties / source_generationAdded value: +{ + "description": "Owner-issued certified source generation.", + "type": "string" +}
- Changed
project4 fields changed- changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious 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" +] - changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +]
- Changed
search4 fields changed- changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious value: -[ - "batch", - "chain", - "content", - "grep", - "query", - "select", - "subscribe", - "symbol", - "unsubscribe" -]New value: +[ + "batch", + "chain", + "query", + "select", + "semantic", + "subscribe", + "symbol", + "tql_execute", + "tql_schema", + "unsubscribe" +] - changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +]
- Changed
structure2 fields changed- changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +]
- Changed
viz2 fields changed- changed
Input schema / properties / output_format / descriptionPrevious value: -"Output format (toon|json)."New value: +"Output format: JSON." - added
Input schema / properties / output_format / enumAdded value: +[ + "json" +]
2 tool updates
v1.29.1- Changed
index2 fields changed- changed
Input schema / properties / action / descriptionPrevious 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" - changed
Input schema / properties / action / enumPrevious value: -[ - "auto", - "build", - "cache", - "full", - "status", - "sync" -]New value: +[ + "auto", + "build", + "cache", + "full", + "knowledge", + "status", + "sync" +]
- Changed
viz3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Which capability to invoke. One of: graph, similarity, uml"New value: +"Which capability to invoke. One of: graph, knowledge, similarity, uml" - changed
Input schema / properties / action / enumPrevious value: -[ - "graph", - "similarity", - "uml" -]New value: +[ + "graph", + "knowledge", + "similarity", + "uml" +] - added
Input schema / properties / path_filterAdded value: +{ + "description": "action=similarity: project-relative path glob filter.", + "type": "string" +}
4 tool updates
v1.25.0- Changed
edit1 field changed- added
Input schema / properties / modification_typeAdded 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" +}
- Changed
search1 field changed- added
Input schema / properties / kindAdded value: +{ + "description": "Symbol kind filter for action=symbol (default: any).", + "enum": [ + "function", + "method", + "class", + "enum", + "variable", + "import", + "constant", + "any" + ], + "type": "string" +}
- Changed
structure1 field changed- added
Input schema / properties / class_nameAdded value: +{ + "description": "Class name for class_tree and class_detail actions.", + "type": "string" +}
- Changed
viz3 fields changed- added
Input schema / properties / max_groupsAdded value: +{ + "description": "action=similarity: max clone groups to return (default: 20).", + "type": "integer" +} - added
Input schema / properties / min_group_sizeAdded value: +{ + "description": "action=similarity: min clone group size to report (default: 2).", + "type": "integer" +} - added
Input schema / properties / min_linesAdded value: +{ + "description": "action=similarity: min function body lines to consider (default: 5).", + "type": "integer" +}
9 tool updates
v1.23.0- First observed
edit - First observed
health - First observed
index - First observed
nav - First observed
project - First observed
search - First observed
set_project_path - First observed
structure - First observed
viz
TDQS
Scored across 9 tools
The facades have broadly overlapping exploration duties: search, nav, and structure all feel like code-navigation surfaces, and shared action names such as impact, overview, and knowledge appear in multiple tools. An agent would struggle to pick a tool without first querying action=help, since the boundary between facades is not clear from the names or action lists alone.
The eight codegraph facades follow a consistent lowercase single-word naming style (search, nav, structure, health, edit, project, index, viz), which is predictable across the set. The exceptions are the verb-noun set_project_path and the abbreviations nav/viz, which are minor deviations rather than a chaotic mix.
Nine tools is a well-scoped count for a code-intelligence suite: setup, indexing, searching, navigation, structural analysis, health, editing, project intelligence, and visualization each have a dedicated facade. Each tool bundles many actions but remains a single cohesive entry point, so the count feels intentional rather than excessive or thin.
The surface covers the full expected lifecycle for a code analyzer: project initialization, index management, code search, navigation, AST/structural analysis, health analysis, safe refactoring/editing, project metrics, and visualization. The edit facade even includes verification and mutation-probe actions, and health/test-gap covers quality checking, leaving no obvious dead end or missing major capability.
Maintenance
Related MCP Connectors
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceToken-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.91 npm4Business Source 1.1
- AlicenseNot gradedqualityBmaintenanceMCP server for local-first code intelligence, providing structural code graph, semantic search, and impact analysis to AI agents.2MIT
- AlicenseNot gradedqualityAmaintenanceUltra-lightweight, local-first MCP server for AI-powered code intelligence, providing AST-based analysis and 20+ tools while ensuring zero data leakage.52 npm10MIT
- FlicenseNot gradedqualityDmaintenanceGive your AI coding agents superpowers — a local MCP server for fast, token-efficient code navigation, search & analysis.-