Skip to main content
Glama

ContextPro

npm version CI License: MIT

Exact find-all-references for your coding agent on TypeScript/JavaScript repos — answered by the TypeScript compiler, not grep.

ContextPro is a local MCP server for agents such as Claude Code, Codex, Cursor and OpenCode. Its compiler-backed "find all references" means a rename or refactor is far less likely to miss callers that import the function under another name or through a re-export (within the files the compiler can check). It also serves source reads with a size limit, so the agent gets the lines it needs instead of whole files. It runs on your machine and needs no API key.

Quick start

Requirements: Node.js 20–26 (24 LTS recommended). No API key or Ollama needed. For compiler references, install the target project's dependencies first (npm install); otherwise files can't be checked.

Fastest try (Claude Code):

cd your-project
claude mcp add contextpro -e CONTEXTPRO_TOOL_PROFILE=lean -- npx -y contextpro-mcp
claude mcp list   # contextpro: ... ✔ Connected

Keep the server name before -e, which would otherwise swallow it.

Claude Code, whole team (commits .mcp.json plus agent instructions in AGENTS.md and CLAUDE.md):

npx -y contextpro-mcp init claude
claude   # start it in the repository root and approve "contextpro" once

Codex:

codex mcp add contextpro --env CONTEXTPRO_TOOL_PROFILE=lean -- npx -y contextpro-mcp

Codex starts the server in the folder where you start codex, so start it in your project.

Cursor: run npx -y contextpro-mcp init cursor in your project. It writes .cursor/mcp.json with the workspace folder as the root.

Other clients that read mcpServers JSON (in the project's own config file):

{ "mcpServers": { "contextpro": {
    "command": "npx",
    "args": ["-y", "contextpro-mcp"],
    "env": { "CONTEXTPRO_TOOL_PROFILE": "lean" } } } }

Never put a fixed --root in a global config: every project would then use that one repository.

OpenCode: run npx -y contextpro-mcp init opencode, then opencode mcp list.

Try it. Ask your agent:

  • "Use contextpro to find every caller of <function> in <file>."

  • "Use contextpro to show me how <feature> works."

INSTALL.md covers VS Code, team approval, a smoke test that works without any client, running from source and troubleshooting.

Related MCP server: codegraph-mcp

What it is good at

  • Safe renames and refactors. The compiler tells apart aliased imports, re-exports and different functions that share a name, and the answer says how many results exist and whether any were cut off.

  • Reading just enough source. The agent asks for a file, a symbol or a line range under a size budget and is told what was left out.

  • Several agents on one repository. Each Git worktree gets its own index, kept up to date as files change.

  • A small tool list. The recommended lean setup shows the agent three tools (context, exact_references and discover_tools); the other 65 stay hidden until the agent asks for them.

Python references work through a configured Pyright; other languages fall back to structural and text search.

Honest results

ContextPro has not been shown to make agents finish tasks faster. Our own trials, published in docs/benchmarks, include the losses.

It is worth trying for renames and refactors where aliased or re-exported callers matter, or when you don't know where the code lives.

Measured

Result

Compiler reference checks on two fixtures (barrel aliases, same-named bindings)

24 of 24 timed queries passed

Response size on six retrieval tasks vs a scripted rg/git baseline

about 41% fewer response tokens, but about 6.8× slower per call

Matched agent trials (2 read-only tasks), lean profile vs native tools

23.8% more total input, 19.2% more wall time

Matched agent trials (2 read-only tasks), workflow profile vs native tools

128.7% more total input

For simple lookups, plain grep is cheaper. We welcome reproducible comparisons, including ones where another tool wins; see how we compare.

Learn more

License and origins

ContextPro began as a fork of Context+ by ForLoop and has since been largely rewritten. It is distributed under the MIT license; the original ForLoop copyright notice is preserved, see NOTICE.

Available Tools

14 tools
artifact_readA
Read-onlyIdempotent

Load a previously generated context artifact by ID so agents can reuse earlier task packets, repo maps, and decisions without regenerating them.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
artifact_idYesArtifact ID returned by repo_map, search, task_pack, change_impact, edit_scope, or decision_brief.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world scope, so the safety profile is fully covered structurally. The description adds the useful framing that artifacts are reusable outputs of prior tools, but says nothing about behavior such as an unknown/expired artifact ID or whether reads are cached.

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?

A single well-formed sentence with the load action front-loaded and the motivation trailing. No filler, no redundancy with structured fields.

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

Completeness4/5

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

For a simple two-parameter read tool with full schema coverage, complete annotations, and no output schema requirement, this description covers what the tool is and why an agent would call it. Only edge-case behavior (missing artifact) is unaddressed, which is minor.

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 both parameters are already documented, including which tools return valid artifact IDs and the root scoping rule for subagents. The description's 'by ID' adds nothing beyond the schema, so the baseline of 3 applies.

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?

States a specific verb ('Load') and resource ('previously generated context artifact by ID') and enumerates what an artifact can be (task packets, repo maps, decisions). It's clearly a retrieval tool, though it never names or distinguishes itself from siblings like memory_record_task or task_pack.

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 clause 'so agents can reuse earlier task packets... without regenerating them' implies the when-to-use case (reuse vs. regenerate), but there is no explicit when-not, no prerequisite call ordering, and no named alternative. Usage is inferable rather than specified.

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

blast_radiusA
Read-onlyIdempotent

Find textual usage candidates with counts by kind. Use kind:call for call-containing lines. Includes same-name symbols; use exact_references for binding-resolved TS/JS rename checks.

NameRequiredDescriptionDefault
kindNoReturn only this usage kind; totals still show all kinds.
modeNoSummary groups usages by containing symbol (default); detailed returns every matching line.
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
symbol_nameYesThe function, class, or variable name to trace across the codebase.
file_contextNoThe file where the symbol is defined. Excludes the definition line from results.

TDQS

A4.7/5.0
Behavior4/5

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

Beyond the read-only and non-destructive annotations, it discloses the important behavioral limitation that results are textual candidates and can include unrelated same-name symbols. It also explains the count-by-kind behavior, though it does not mention possible result limits, truncation, or search-scope exclusions.

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

Conciseness5/5

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

Three compact sentences front-load the purpose, then provide a practical filtering tip and an important limitation with an alternative. Every sentence contributes actionable information without repetition or unnecessary background.

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

Completeness5/5

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

Together with the fully documented schema and safety annotations, the description supplies what an agent needs to select and invoke this read-only search correctly. It covers the matching model, aggregate counts, a key filtering use case, and the appropriate sibling for precision-sensitive rename analysis.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is already adequate, but the description adds useful semantics for kind:call by specifying call-containing lines. The same-name warning also clarifies that symbol_name is matched textually rather than resolved to a particular binding.

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

Purpose5/5

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

The description uses a specific verb and resource: it finds textual usage candidates for a symbol and provides counts by usage kind. It also distinguishes the tool from exact_references by identifying its textual, same-name matching rather than binding-resolved analysis.

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

Usage Guidelines5/5

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

It explicitly directs agents to use kind:call when they need call-containing lines. It also gives a clear alternative and condition: use exact_references for binding-resolved TS/JS rename checks.

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

discover_toolsB

Discover or enable experts and return their schemas. If the client cannot refresh its catalog, call runs a supported read/index tool; never source edits.

NameRequiredDescriptionDefault
callNoIf the client cannot refresh tools, execute a supported read/index tool using its discovered schema. Pass root outside call; source edits are excluded.
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
limitNoMaximum discovery matches; default 5.
queryNoPurpose, e.g. rename, tests, or memory.
enableNoExact tool names to add to this session's catalog.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds a genuinely useful constraint beyond them: the fallback execution path only runs read/index tools and excludes source edits, which explains why the tool is non-read-only yet non-destructive. It does not state that enabling mutates the session catalog or whether that change persists, leaving the main mutation under-explained.

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

Conciseness3/5

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

The purpose is front-loaded in the first sentence, but the second sentence is telegraphic and awkwardly compressed ('call runs a supported read/index tool; never source edits'), which forces the reader to reparse it. No sentence is purely filler, but the phrasing costs 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?

With five parameters including a nested free-form `call` object and no output schema, the description covers the discovery contract but not the interaction between query, limit, and enable, nor what the returned schemas look like or how they should be applied. Annotations exist, so the safety gap is partially covered, but the execution fallback deserves more explanation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds only the read/index-only restriction on `call` and the schema-return notion; it contributes nothing on `query`, `limit`, or `enable` beyond what the schema already says.

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 names a specific verb set and resource — 'Discover or enable experts and return their schemas' — so an agent knows this tool both lists and activates tools and returns schema payloads. It does not, however, differentiate itself from siblings like status, search, skeleton, or explain, and the term 'experts' is never grounded in the sibling catalog.

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?

One conditional is spelled out: if the client cannot refresh its catalog, use the `call` parameter to invoke a supported read/index tool. That is real when-to-use guidance for one path, but there is no guidance on when to discover versus enable, how to choose `query` values, or when to prefer a sibling tool over this one.

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

efficiency_reportB
Read-onlyIdempotent

Report ContextPro's persistent, auditable context-compression estimates by tool. History stores numeric metrics only—never prompts, source code, response bodies, or file paths. Token savings are estimates, not billing data.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
scopeNoHistory window. Default: this MCP session. Call at task completion and quote finalSummary.
formatNoReturn plain text or JSON. Default: text.
history_limitNoMaximum recent saving events. Use 0 for totals only; default 10.
contextpro_cost_usdNoOptional known ContextPro operating cost for this window; deducted only when supplied. Never guess.
input_cost_per_millionNoOptional model input price in USD per million tokens. When provided, returns a clearly-labelled hypothetical cost estimate.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare this a read-only, idempotent, closed-world, non-destructive operation, so the safety bar is met. The description still adds real value beyond them: it discloses what the history does and does not retain (numeric metrics only, never prompts, code, response bodies, or file paths) and warns that savings are estimates rather than billing data — a caveat that directly affects how results should be reported.

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 short sentences, front-loaded with purpose and followed by the two caveats that matter most. Slightly dense phrasing ('persistent, auditable context-compression estimates') but nothing is padding.

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?

With six optional parameters and no output schema, the definition needs to describe what the report actually contains, but it never says what fields or sections a caller will get back (totals, per-tool events, cost figures). Privacy and estimate caveats are well covered, yet an agent still can't predict the response shape before calling.

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% across all six optional parameters, so the schema already carries per-parameter meaning, including the cost and hypothetical-pricing inputs. The description adds no parameter-level detail (nothing on root, scope windows, format, or history_limit), so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: report context-compression / token-savings estimates, broken down by tool, from a persistent history. That is clear enough to act on, but it never distinguishes this from look-alike siblings such as status, explain, or task_pack, which also surface session/project information.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance appears in the description, and no alternative is named. The only timing instruction ('call at task completion and quote finalSummary') lives inside the scope parameter schema, so the description itself leaves invocation context to inference.

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

exact_referencesA
Read-onlyIdempotent

Find who calls or references a symbol. TS/JS compiler bindings exclude same-named unrelated symbols; results label calls/imports and give per-file call totals before limits. Check scope, ambiguity and warnings. Python is heuristic; imported SCIP freshness is unverified.

NameRequiredDescriptionDefault
fileNoDefinition file; omit to infer.
lineNo1-based symbol line. Omit to infer a declaration; when several match, the response warns about the chosen candidate. Pass file and line to disambiguate.
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
limitNoShown occurrences; default 100.
formatNoDefault text.
symbol_nameYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds real behavioral context beyond them: language-dependent precision (compiler bindings for TS/JS, heuristic for Python), staleness of imported SCIP data, that results label calls vs imports, and that truncation happens after per-file totals. It does not discuss permissions, project-size limits, or failure modes when no definition is found.

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?

Front-loaded with the core purpose in the first sentence, followed by precision and caveat notes in a compact, dense style. Sentences are telegraphic ('Check scope, ambiguity and warnings') but every one carries information; nothing is redundant.

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

Completeness4/5

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

For a six-parameter, read-only analysis tool with no output schema, the description covers precision characteristics, result labelling, truncation behavior, and a data-freshness caveat, which is what an agent needs to trust and interpret the output. It lacks explicit routing guidance against the sibling reference/blast-radius tools, which is the main remaining gap.

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

Parameters4/5

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

With 83% schema coverage the baseline is 3, and the description adds meaning on top: 'per-file call totals before limits' clarifies how the limit parameter is applied to results, and 'warnings' on ambiguity links to the line-inference behavior documented in the schema. It does not explain the root-requirement or format trade-offs, which remain schema-only.

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?

States a specific verb and resource: 'Find who calls or references a symbol.' That is unambiguous and an agent can distinguish it from grep/search-style siblings by the call-reference framing. It stops short of naming a contrasting sibling (e.g. blast_radius or grep), so it does not earn a 5.

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?

'Check scope, ambiguity and warnings' plus the note that TS/JS bindings exclude same-named unrelated symbols tells the agent when this tool is the right, precise choice over text search. There are no explicit exclusions ('do not use for X, use Y instead'), so it lands at 4 rather than 5.

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

explainA
Read-onlyIdempotent

Extract a specific function/class body with its dependencies, without reading the entire file. Provide symbol name to get its code + called functions. Provide file path for a structural overview.

NameRequiredDescriptionDefault
fileNoFile to explain (overview mode if no symbol given).
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
depthNoHow many levels of called functions to include. Default: 1. Use 0 for just the symbol.
formatNosource: body and location only, no callers/tests/dependencies. Default full.
symbolNoFunction, class, or variable name to explain.
symbolsNoBatch independent symbols in one call, instead of repeated reads. Use instead of symbol/file.
max_tokensNoBatch response byte/4 budget; default 4000. Whole omitted bodies are reported.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add behavioral context. It does so by framing the tool as a token-efficient partial read ('without reading the entire file') and by describing what the result contains (body plus called functions, or a structural overview), which goes beyond the 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 short sentences, front-loaded with the core capability and the efficiency rationale, with no filler. The parallel 'Provide X to get Y' phrasing is easy to scan, though the repeated structure costs a few words.

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

Completeness3/5

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

With seven parameters and no output schema, the description should carry more weight. It explains the two primary modes and roughly what comes back, but omits the batch symbols path (explicitly encouraged by the schema to avoid repeated reads) and the root requirement, leaving meaningful gaps for a multi-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented, and the description mostly restates the schema's symbol/file mode split. It adds a little meaning by clarifying that the symbol mode returns 'code + called functions', but says nothing about depth, format, max_tokens, or the batch symbols parameter.

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?

States a specific verb and resource: 'Extract a specific function/class body with its dependencies.' The phrase 'without reading the entire file' implicitly distinguishes it from a full file read (artifact_read) and hints at a structural alternative (skeleton), but no sibling is named explicitly.

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?

Gives clear mode-selection guidance for two parameters: symbol for code plus called functions, file for a structural overview. It never says when to prefer this over siblings like skeleton, exact_references, or search, and it omits the batch (symbols) path entirely, leaving the agent to infer it from the schema.

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

grepA
Read-onlyIdempotent

Fast literal or regex string search across the project's indexed file set. Use this for log-message lookups, config-key searches, error-message tracing, or any time you know the exact characters you want to find. Use 'search' instead for semantic intent queries. Skips binary files; respects .gitignore via the indexed walker.

NameRequiredDescriptionDefault
globNoOptional file glob filter, e.g. "src/**/*.ts" or "*.md". Comma-separated for multiple.
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
regexNoTreat pattern as a line-based regular expression (set true for A|B alternation). Default: false, literal match.
patternYesLiteral string to search for (or regex when regex=true).
target_pathNoOptional subdirectory to scope the search.
context_charsNoCharacter window within the matched line; surrounding lines are clipped to this width. 40–400, default: 160. Use context_lines for nearby lines.
context_linesNoLines before and after each match (0–10, default: 0). Overlapping ranges are deduplicated; L<line>- marks context, L<line>:<column> marks a hit.
case_sensitiveNoMatch case-sensitively. Default: false.
max_file_bytesNoSkip files larger than this (bytes). Default: 1000000.
max_total_matchesNoMax total matches across all files. Default: 200.
max_matches_per_fileNoMax matches per file. Default: 10.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds real behavior beyond that: binary files are skipped and .gitignore is respected via the indexed walker, which tells the agent what results it will not see. It stops short of describing result ordering, truncation behavior, or output shape, which keeps it below a 5.

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

Conciseness4/5

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

Three sentences, front-loaded with the core capability and closed with the key behavioral caveats (binary skip, gitignore). The middle sentence's list of example use cases is slightly padded but still earns its place as routing guidance.

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

Completeness4/5

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

For an 11-parameter read tool with full schema coverage and no output schema, the description covers purpose, routing, and search-scope caveats adequately. The only gap is return-format expectations, but the context_lines parameter description already explains the L<line> marker convention, so the burden is largely met elsewhere.

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

Parameters3/5

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

Schema description coverage is 100% and all 11 parameters are individually documented in the schema, so the baseline is 3. The description only echoes the pattern/regex duality and adds no syntax, format, or default guidance beyond what the schema already states.

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

Purpose5/5

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

The description opens with a specific verb and resource ("Fast literal or regex string search across the project's indexed file set") and immediately scopes it to indexed files, which distinguishes it from a filesystem-wide grep. It also names the sibling tool it is not ("Use 'search' instead for semantic intent queries"), so an agent can route between them without opening either schema.

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

Usage Guidelines5/5

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

It gives concrete when-to-use cases (log-message lookups, config-key searches, error-message tracing, known exact characters) and an explicit when-not-to-use with the named alternative, 'search', for semantic intent queries. That is the full routing rule, not an implication.

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

memory_record_taskB

Persist useful task outcomes with linked files, assumptions, evidence, and open risks for future sessions.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
taskYesTask or issue name.
filesNoFiles touched or relevant to the task.
formatNoReturn plain text or structured JSON. Default: text.
summaryYesWhat changed or was learned.
evidenceNoEvidence supporting the outcome.
open_risksNoRisks that remain unresolved.
supersedesNoPrevious memory IDs explicitly superseded; history is retained.
assumptionsNoAssumptions made during the task.
source_evidenceNoSource supporting this memory. Whole-file hashes are captured and rechecked on retrieval.
validation_refsNoValidation result artifact IDs; host-reported status is checked for current applicability.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the write profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description only adds the cross-session persistence intent. It does not disclose that repeated calls are non-idempotent and can create duplicate memories, nor does it explain the effect of supersedes on history, which is a meaningful behavioral gap for a write tool.

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?

A single well-formed sentence with the verb and core payload front-loaded and zero filler. The enumeration of field names mildly duplicates what the schema already lists, which keeps it just short of ideal.

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 an 11-parameter mutation tool, the description is thin: it omits duplicate-creation behavior, the meaning of supersedes for history, and any notion of the returned result (no output schema exists). The fully documented schema and safety annotations compensate for much of this, but an agent still learns little about consequences 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 coverage is 100%, with every parameter individually described including root's subagent requirement and source_evidence's hash rechecking, so the schema carries the semantic load. The description's field enumeration maps onto schema property names without adding syntax, format, or prioritization guidance, making the baseline 3 correct.

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?

States a specific verb ("persist") and resource ("task outcomes") and enumerates the payload categories it stores (files, assumptions, evidence, open risks). It is clearly distinguishable from read-oriented siblings like artifact_read, search, or grep, though it never explicitly names an alternative to contrast against.

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?

"For future sessions" implies the trigger point — recording outcomes so later sessions can recall them — but there is no explicit when-to-use/when-not or any routing to siblings such as task_pack (which likely produces the task context this tool records). Usage is inferable rather than stated.

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

reindexA

Re-walk, re-parse, and re-index project files into the database. Detects changed files via content hash and only re-processes what changed. Eagerly populates file and identifier embeddings unless no_embed=true or CONTEXTPRO_REINDEX_NO_EMBED is set. Use after git pull, branch switch, or external edits. Builds the import graph for related/test_map tools.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
forceNoForce re-process all files, ignoring cache. Default: false.
no_embedNoSkip corpus embedding generation. Search does not generate corpus embeddings; it uses existing vectors or lexical fallback. Configure an embedding provider and run reindex with no_embed:false to populate vectors (also unset CONTEXTPRO_REINDEX_NO_EMBED). Default: false.
auto_hubsNoGenerate feature-hub labels (one chat-model call per hub). Off by default to keep reindex fast and free. Or set CONTEXTPRO_AUTO_HUBS=1.
target_pathNoScope reindex to a specific directory (relative to root).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare the safety profile (non-read-only, non-destructive, non-open-world), so the description's job is to add behavior, and it does: content-hash change detection means partial work, embeddings are populated eagerly by default, and the import graph is rebuilt as a side effect other tools depend on. It does not estimate cost/duration or say whether concurrent edits during a run are safe.

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?

Four front-loaded sentences with the core action first, then caching behavior, then embedding side effects, then the downstream artifact. Every sentence carries information, though the embedding sentence is dense enough to require a second read.

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

Completeness4/5

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

For a five-parameter mutation tool with no required inputs and no output schema, the description covers trigger conditions, incremental semantics, expensive side effects, and downstream consumers. A reader still lacks a sense of runtime cost or what the tool returns, but the essentials for correct invocation are present.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the field docs by framing no_embed as a default-on embedding pass and by tying the env var override to that default. It says nothing extra about root, force, auto_hubs, or target_path, which is acceptable given full schema coverage.

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

Purpose5/5

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

"Re-walk, re-parse, and re-index project files into the database" gives a specific verb triad plus the resource and destination. It also names distinct sub-behaviors (import graph build, embedding population) so an agent can tell this apart from read-only siblings like search, grep, or skeleton.

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?

"Use after git pull, branch switch, or external edits" states concrete triggering conditions rather than leaving timing to inference. There is no explicit when-not or named alternative, but no sibling tool overlaps enough to need one.

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

skeletonA
Read-onlyIdempotent

Get detailed function signatures, class methods, and type definitions of a specific file WITHOUT reading the full body. Shows the API surface and line ranges. Signatures are normalized summaries, not exact edit anchors; use context(targets:[{file,start,end}]) for source text before editing.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
file_pathYesPath to the file to inspect (relative to project root).
exported_onlyNoOnly public declarations (TS/JS). Default: false.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds genuinely new behavioral context by warning that signatures are normalized summaries and not exact edit anchors, and that line ranges are returned. It does not state language coverage beyond the schema's TS/JS hint on exported_only, or how unparseable files are handled.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the capability and capped by the editing caveat. Every sentence carries information the agent needs; there is no filler.

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

Completeness4/5

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

With no output schema, the description does the work of describing the return shape (signatures, methods, type definitions, API surface, line ranges) and flags the key caveat about edit anchors. Minor gaps remain around supported languages and behavior on non-code or partially parseable files.

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 root, file_path, and exported_only are already fully documented in structured data. The description reinforces 'of a specific file' but adds no filtering or path-resolution semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (Get) and a specific resource (function signatures, class methods, type definitions of a file), and explicitly contrasts the scope with reading the full body. An agent can immediately tell this is an API-surface/outline tool rather than a content reader like search or grep.

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

Usage Guidelines5/5

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

Gives a positive use case (inspect API surface without reading the body) and an explicit exclusion plus the alternative: use context(targets:[{file,start,end}]) for source text before editing. The alternative is named with concrete call syntax, leaving nothing to inference.

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

statusA
Read-onlyIdempotent

Project overview dashboard. Returns file counts, index state, memory graph stats, git branch, uncommitted changes, and recent commits. One call for complete situational awareness at the start of a session.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
formatNoReturn plain text or structured JSON. Default: text.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds value by disclosing the aggregate read-only payload it assembles across several subsystems, which explains the cost profile of a single call. It says nothing about error handling or behavior on a bad root, which keeps it at 4.

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

Conciseness5/5

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

Three short sentences, front-loaded with the identity of the tool and followed by the payload contents and then the usage cue. Every sentence earns its place and nothing is repeated from annotations or schema.

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?

With no output schema, the description carries the burden of explaining return values and does so by enumerating the six data groups. Combined with fully-described parameters and annotations covering side effects, an agent has enough to call it correctly; only error/edge-case behavior is unstated.

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

Parameters3/5

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

Schema description coverage is 100% and the two parameters (root, format) are fully documented in the schema, including the important caveat about omitting root only at session start. The description adds no parameter-level meaning, so the baseline 3 applies.

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

Purpose5/5

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

The description names a specific resource (project overview dashboard) and enumerates exactly what it returns: file counts, index state, memory graph stats, git branch, uncommitted changes, recent commits. That content list makes it clearly distinguishable from siblings like efficiency_report, reindex, or search without opening any schema.

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?

"One call for complete situational awareness at the start of a session" gives a concrete usage context and implies it is a cheap first step rather than a targeted query. It does not name an alternative tool or state when not to use it, so it falls short of a full routing instruction.

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

task_packA
Read-onlyIdempotent

Assemble the minimum useful working set for a task: ranked files, nearby tests, recent diffs, memory, and risks.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
taskYesTask description or engineering objective.
formatNoReturn plain text or structured JSON. Default: text.
presetNobalanced (default) or keyword_only for zero-provider lexical discovery.
max_filesNoMaximum ranked files to include. Default: 8.
graph_hopsNoRelated import context: 0, 1 or 2 hops. Default 1 with CONTEXTPRO_CONNECTED_CONTEXT=true, otherwise 0. Relationships are heuristic.
max_memoryNoMaximum memory hits to include. Default: 3, max: 10.
max_tokensNoFinal response budget estimated as UTF-8 bytes/4, not tokenizer tokens. Default: 3000.
include_testsNoInclude nearby tests. Default: true.
include_memoryNoInclude project memory hits. Default: true.
graph_max_filesNoMaximum additional graph-related file pointers. Default: 4.
previous_context_idNoContext ID from a previous packet you still hold; return a delta. Omit after context loss to recover full context.
include_recent_diffsNoInclude recent file-level diffs. Default: true.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered structurally. The description adds value by disclosing the packet composition (files, tests, diffs, memory, risks), which stands in for the absent output schema. It says nothing about cost, provider dependency, or delta semantics from previous_context_id.

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?

A single front-loaded sentence with no filler; the resource and its contents come first and every clause adds information. Nothing is redundant with the schema or the title.

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

Completeness4/5

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

For a 13-parameter aggregator with no output schema, the description names the return contents, which is the most important missing piece. Remaining gaps are usage routing (this vs. search/grep) and the root/delta calling conventions, both of which the schema documents on its own.

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

Parameters3/5

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

Schema coverage is 100%, and every parameter carries a substantive inline description including defaults, ranges, and the token-estimation caveat, so the schema does the heavy lifting. The description contributes no additional parameter meaning, which is the expected baseline here.

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?

Uses a specific verb ("assemble") plus a defined artifact ("minimum useful working set for a task") and enumerates its contents: ranked files, nearby tests, recent diffs, memory, risks. An agent can picture the output. It stops short of naming sibling tools it supersedes (search, grep, exact_references, skeleton), so differentiation relies on inference.

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

Usage Guidelines3/5

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

The phrase "for a task" implies context-gathering at task start, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many retrieval siblings. An agent must guess whether to call task_pack or fall back to search/grep.

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

validate_scopeA
Read-onlyIdempotent

After edit_scope, recommend the most relevant validation checks and commands. Pass files when you already know what changed; they take precedence over task inference.

NameRequiredDescriptionDefault
rootNoAbsolute project root. Omit only where this session started; required elsewhere and on every subagent call.
taskYesTask description or intended change.
filesNoFiles already changed or known to be in scope. These take precedence over task inference.
formatNoReturn plain text or structured JSON. Default: text.
max_filesNoMaximum files to inspect when building validation guidance. Default: 5.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description usefully adds that the tool recommends rather than executes checks, and that explicit files override inference, but says nothing about scope of inspection, cost, or how many checks are returned.

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

Conciseness5/5

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

Two short sentences, zero filler, with the sequencing trigger front-loaded ahead of the parameter hint. Nothing could be removed without losing information.

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

Completeness5/5

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

Covers what the tool returns (validation checks and commands) and the one non-obvious calling rule, and the remaining parameters are fully documented in schema. With no output schema, a brief return-value statement would help, but this is a minor gap rather than a missing one.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter including root, format and max_files is already documented, establishing a baseline of 3. The description's files-precedence note merely restates the schema text for that property and adds no syntax or format detail beyond it.

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

Purpose4/5

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

States a specific verb and output ("recommend the most relevant validation checks and commands") plus a sequencing cue ("After edit_scope"). The agent knows this produces validation guidance rather than performing edits, but no sibling in the provided list is named as an alternative, so differentiation relies on inference.

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?

Gives a clear invocation point ("After edit_scope") and a decision rule for the optional files parameter ("Pass files when you already know what changed; they take precedence over task inference"). No when-not-to-use guidance or explicit alternative tool is offered.

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. 14 tool updatesv1.6.0
    • Changedartifact_read1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedblast_radius1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changeddiscover_tools1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedefficiency_report1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedexact_references1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedexplain1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedgrep1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedmemory_record_task1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedreindex1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedsearch1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedskeleton1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedstatus1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedtask_pack1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
    • Changedvalidate_scope1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Absolute project root. Required with linked worktrees; subagents must pass their own worktree root on every call."New value: +"Absolute project root. Omit only where this session started; required elsewhere and on every subagent call."
  2. 14 tool updatesv1.4.0
    • First observedartifact_read
    • First observedblast_radius
    • First observeddiscover_tools
    • First observedefficiency_report
    • First observedexact_references
    • First observedexplain
    • First observedgrep
    • First observedmemory_record_task
    • First observedreindex
    • First observedsearch
    • First observedskeleton
    • First observedstatus
    • First observedtask_pack
    • First observedvalidate_scope

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct roles: grep vs search vs blast_radius vs exact_references are explicitly differentiated by literal/semantic/binding behavior, and status/reindex/task_pack cover separate lifecycle stages. There is still some conceptual overlap among skeleton, explain, artifact_read, and task_pack as ways to retrieve context, but the descriptions give enough guidance to select between them.

Naming Consistency3/5

All names use snake_case casing, but the semantic pattern is mixed: some are verbs (search, grep, reindex, explain), some are nouns (skeleton, status, task_pack), and others are noun_verb or verb_noun compounds (artifact_read, memory_record_task). The names remain readable, but there is no single predictable verb_noun convention throughout.

Tool Count5/5

At 14 tools, the set is well within a reasonable range for a code-context and analysis server. Each tool appears to serve a distinct workflow: indexing, search, symbol analysis, task packaging, memory, validation, and reporting.

Completeness4/5

The surface covers index lifecycle, semantic and literal search, reference analysis, symbol extraction, task context assembly, and memory persistence, which is broad for the domain. There are minor gaps: no explicit artifact write/list operation, no direct source-reading/context tool despite being referenced in descriptions, and no separate memory recall/list tool beyond task_pack.

Maintenance

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to explore TypeScript, JavaScript, and Prisma projects through local symbol, call, and model-usage graphs, while recalling persistent project-scoped decisions and returning focused source context.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to interrogate a local repository deterministically for symbols, dependencies, call paths, routes, tests, and Git impact, returning verified structured evidence with exact line citations instead of requiring the whole codebase to be read.
    56 PyPI
    4
    MIT