Skip to main content
Glama

ContextPro

Compiler-exact references and bounded source context for coding agents, in a three-tool lean profile.

ContextPro is a local MCP server for TypeScript and JavaScript repositories. When an agent asks "who calls this?", it answers with the TypeScript compiler instead of a name search: aliases, re-exports and same-named symbols are told apart, and every result states its scope and whether it was truncated. When an agent needs source, it returns budgeted slices instead of whole files.

Get started · Agent guide · Benchmarks · Documentation · Contribute · Security

What it is good at

  • Renames and refactors in TS/JS codebases. exact_references resolves bindings with the compiler and reports per-file call totals, reference kinds and truncation, so an agent knows what it has not seen.

  • Parallel agents on one repository. Indexes are scoped per Git worktree, check saved-file drift and reconcile in the background.

  • A small tool catalog. The lean profile exposes three of the 68 tools; the rest are discovered only when needed.

  • Inspectable evidence. Responses separate compiler-resolved references, textual candidates and heuristic fallbacks, and report freshness.

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

Related MCP server: codegraph-mcp

Honest results

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

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

Eight paired coding tasks, previous ContextPro build vs connected-retrieval candidate

previous build 1/8, candidate 0/8 (six on private repositories; see connected-evidence report)

Plain grep and file reads are often the cheapest choice when an agent already knows where to look. ContextPro is most useful when binding identity matters or the exact location is unknown. We welcome reproducible comparisons, including ones where another tool wins; see how we compare.

Get started

Use Node.js 24 LTS and npm. Install from source until a registry release is announced; the version in package.json is not proof of a published npm package.

git clone https://github.com/AlaeddineMessadi/contextpro-mcp.git
cd contextpro-mcp
npm ci
npm run build
node build/index.js doctor --root /absolute/path/to/your-project
node -p 'process.execPath'

Use the printed Node executable and your checkout path in the client configuration. For example, in Claude Code's project .mcp.json:

{
  "mcpServers": {
    "contextpro": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/contextpro-mcp/build/index.js", "--root", "/absolute/path/to/your-project"],
      "env": { "CONTEXTPRO_TOOL_PROFILE": "lean" }
    }
  }
}

Replace every placeholder, add .contextpro/ to the target project's .gitignore, then restart the client. Installation instructions cover Codex, Claude Code, OpenCode, indexing and native-module recovery. Project instructions teach agents when ContextPro is useful and when to verify with native tools.

Install the project instructions as well as the server: connecting MCP exposes tools, while AGENTS.md / CLAUDE.md teaches the agent when to use them. The detailed workflow is available on demand through contextpro://instructions. A separate skill is optional; it does not enable tools or repair retrieval.

A small interface for real coding work

Task

Start with

What to check

Locate unfamiliar code and read evidence

context(query:...)

Retrieval is a ranked selection, not an exhaustive search

Read several known targets

context(targets:[...])

Follow explicit omissions if more evidence is needed

Find TS/JS references

exact_references

Declared scope, reference kinds and truncation

Inspect an exported API

Discover skeleton, then use exported_only:true

Signatures do not prove behavior

Assess a change

Discover blast_radius or validate_scope

Text matches are candidates; recommended checks still need to run

Preserve a decision

Discover memory_record_task

Keep supporting evidence and revisit stale assumptions

Inspect compiler errors or rename a binding

Discover compiler_diagnostics / rename_preview

TS/JS compiler or configured Pyright; inspect before rename_apply

Record executed checks

validate_scope, then discover validation_record

Run checks in the coding host; receipts become stale when inputs change

Tool schemas are the argument reference. See the agent guide for examples, batching and context reuse.

Profile

Initial interface

lean

context, exact_references, discover_tools

workflow (default)

14 tools for discovery, reads, impact and validation

core

39 tools: common workflows plus editing and graphs

full

All 68 registered tools, including 5 deprecated aliases

Set CONTEXTPRO_TOOL_PROFILE in the server environment. discover_tools(enable:[...]) enables tools without executing them. If the client cannot refresh its catalog, use the supported discover_tools({root,call:{name,arguments}}) dispatcher with the returned expert schema.

Experimental connected retrieval (CONTEXTPRO_CONNECTED_CONTEXT=true) combines ranked source, one-hop imports/callers and relevant tests in context and task_pack. It remains opt-in while task-level performance is evaluated. Discover feature_brief for a cached, source-cited feature map; model-written interpretations require a separate opt-in. Query-based context packets accept previous_context_id while the agent still holds that packet; omit it after context loss. Exact target reads remain stateless. See configuration and freshness rules.

The optional context.intent hint (lookup, change, debug, review, overview, or auto) enables question-aware source and document retrieval for one query. Shared indexing/compiler work is also opt-in through contextpro daemon start and CONTEXTPRO_DAEMON=true. Evidence-backed memory and handoffs build on the existing SQLite/artifact architecture; experimental features such as local task coordination are documented in configuration. Configuration explains setup, limits and rollback; these features do not establish a measured coding-speed improvement.

Ask for the source you need

Pass the absolute active repository or worktree as root on every call. Query budgets use max_tokens (512–12000, default 4000; estimated UTF-8 bytes divided by four). Exact batches accept up to six targets.

This example uses ContextPro's own repository. In another project, use paths and declaration names observed in its source rather than guessed symbols.

context({
  root: "/absolute/path/to/contextpro-mcp",
  query: "src/core/agent-setup.ts mergeAgentInstructions preserve existing project rules",
  intent: "change",
  max_tokens: 2500
})
context({
  root: "/absolute/path/to/contextpro-mcp",
  targets: [{file: "src/core/agent-setup.ts", symbol: "mergeAgentInstructions"}],
  max_tokens: 1500
})
// Use compiler references when binding identity or cross-file callers matter.
exact_references({
  root: "/absolute/path/to/contextpro-mcp",
  file: "src/core/agent-setup.ts",
  symbol_name: "mergeAgentInstructions",
  limit: 20
})

These are task-dependent choices, not a checklist: stop when enough evidence is available. If a broad query favors documentation, read the discovered source symbol or a narrow line range directly. If references time out, continue with bounded source/native tracing and disclose its limits; lowering limit changes the display window, not compiler workspace scope. Read each tool's schema: max_tokens is a context budget, not an argument for status or exact_references.

Known directory prefixes and route topics help query discovery retain the requested implementation. A named component or compound error code supplies additional local text evidence. These are bounded ranking hints, not hard directory filters or compiler-resolved references; connected dependencies may still come from elsewhere. For a UI inventory, ask explicitly for an overview. For a bug, name the affected symbol and source area. Check citations and omissions, then narrow to exact targets when needed rather than repeating the same broad query.

Evidence you can inspect

ContextPro distinguishes source evidence, compiler-resolved references, textual candidates and heuristic fallbacks. Parser and TypeScript workers run in bounded child processes so a worker failure can be reported and recovered from without inherently terminating the MCP server.

Freshness checks cover saved files, not unsaved editor buffers. Per-file reconciliation is not an atomic snapshot of a repository being edited concurrently. Reference precision depends on language and scope; configured Python uses Pyright LSP, while unconfigured Python heuristics and imported SCIP data retain their distinct provenance.

Local-first does not mean sandboxed. Tools run with your user permissions. Hosted embedding or chat providers receive the inputs sent to them, and chat-assisted operations are optional. Read the security model and provider configuration before using sensitive repositories.

Build with us

Useful contributions include small bug reproductions, language fixtures, reference-completeness tests, realistic benchmarks, clearer setup guides and performance fixes with before/after evidence.

npm run build
npm test
npm run docs:check
npm run release:check
npm run pack:check

Start with CONTRIBUTING.md, open issues or the roadmap. Maintenance explains safe cleanup and runtime-specific testing.

For questions, see support. Report vulnerabilities privately through the process in SECURITY.md. Community participation follows our code of conduct.

License and origins

ContextPro began as a fork of Context+ by ForLoop and has since been largely rewritten around compiler-backed references, worktree-scoped indexes and bounded retrieval. Upstream has been quiet since July 2026, so development continues here. It is distributed under the MIT license. The original ForLoop copyright notice is preserved. See NOTICE for attribution. References to other projects do not imply endorsement.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds useful framing (retrieval of prior outputs, no regeneration cost) but says nothing about failure behavior for a missing or expired ID, which is the main behavioral risk here.

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 retrieval purpose and the regeneration-avoidance rationale both earn their words.

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

Completeness4/5

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

For a simple two-parameter read tool with complete annotations, full schema coverage, and no output schema, the description gives enough to call it correctly. Only the missing-ID behavior is arguably left unaddressed, a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, with artifact_id documented as coming from repo_map, search, task_pack, change_impact, edit_scope, or decision_brief, and root explained for worktrees. The description only echoes the 'by ID' idea, adding no meaning beyond the schema; baseline 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 and resource ('Load a previously generated context artifact by ID') and explains the artifact kinds involved (task packets, repo maps, decisions). It implicitly separates itself from generators like task_pack or repo_map, though it never names them.

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 'so agents can reuse ... without regenerating them' implies the when: call this instead of re-running a generator. However, no sibling is named and there is no explicit exclusion or precondition (e.g., what to do when the artifact_id is unknown or stale).

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. Required with linked worktrees; subagents must pass their own worktree root on every 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.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the description only needs to add what they cannot. It does: it discloses that matching is textual rather than semantic and that same-name symbols are included, warning the agent about false positives — a genuinely useful caveat beyond structured fields.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose, then the kind hint, then the sibling routing. No filler and no repetition of schema content.

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 partially compensates by mentioning counts by kind and totals behavior. It leaves the summary-vs-detailed output shape to the schema, which is acceptable, but a mutation-free read tool with 5 params could say slightly more about result structure.

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 real semantics: it explains what kind:call actually selects (call-containing lines) and that totals aggregate across all kinds. Mode, root, and file_context meaning come entirely from the schema.

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

Purpose4/5

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

The first sentence states a specific verb and resource ('find textual usage candidates with counts by kind'), which disambiguates the metaphorical tool name. It explicitly distinguishes itself from exact_references. It does not, however, differentiate from the grep/search siblings, which do similar textual lookups.

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

Usage Guidelines4/5

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

It names an alternative (exact_references) with the exact condition that selects it — binding-resolved TS/JS rename checks — and gives a concrete usage hint ('use kind:call for call-containing lines'). No guidance on when this tool is the wrong choice versus grep/search, so not a 5.

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

discover_toolsA

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. Required with linked worktrees; subagents must pass their own worktree root on every call.
limitNoMaximum discovery matches; default 5.
queryNoPurpose, e.g. rename, tests, or memory.
enableNoExact tool names to add to this session's catalog.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate the tool is not read-only and not destructive. The description adds useful context by clarifying that enabling affects the session catalog and that the fallback `call` path runs only supported read/index tools, never source edits.

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

Conciseness4/5

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

The description is short and front-loads the main capability. The second sentence is dense but still earns its place by covering the fallback behavior and edit exclusion.

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 discovery tool with a nested object and no output schema, the description covers the core behavior, fallback execution, and edit exclusion. It could be more explicit about return shape, but the schema carries most parameter detail.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter thoroughly. The description reinforces the `call` and `enable` semantics but does not add substantial meaning beyond the schema.

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

Purpose4/5

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

The description names specific actions (discover, enable, return schemas) and the resource (experts/tools), making the tool's role understandable. It does not explicitly distinguish itself from siblings like search or grep, so it stops short of 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 Guidelines3/5

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

It provides a conditional for the nested `call` parameter and a clear exclusion ('never source edits'), but gives no explicit guidance on when to use `discover_tools` versus alternatives such as `search`, `grep`, or `status`. Usage is implied rather than fully stated.

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

efficiency_reportA
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. Required with linked worktrees; subagents must pass their own worktree root on every 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

A4.2/5.0
Behavior5/5

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

Even with read-only annotations already present, the description adds important behavioral context: history stores numeric metrics only and never prompts, source code, response bodies, or file paths, and token savings are estimates rather than billing data. This gives an agent the privacy and accuracy caveats needed to invoke and interpret it correctly.

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?

It is two sentences with no wasted language, leading with what the tool reports and then immediately covering privacy and estimate caveats. Every sentence earns its place.

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

Completeness4/5

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

For a reporting tool with full parameter documentation and reliable safety annotations, the description covers purpose, privacy guarantees, and estimate caveats. The main remaining gap is that no output schema exists and the description does not explain the return structure or finalSummary output, though the schema partially mentions it.

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 parameter descriptions already explain scope windows, formatting, history limits, and cost inputs in detail. The description adds no additional parameter semantics beyond what the schema provides, so the baseline is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: reporting ContextPro's persistent, auditable context-compression estimates by tool. It is clearly distinguishable from all sibling tools, which are code-search/indexing utilities rather than reporting tools.

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 purpose implies the usage context—auditing or reporting compression estimates—but the description does not explicitly say when to call it, when not to call it, or what alternatives exist. The schema adds a useful hint to call at task completion, but the description itself provides only implied guidance.

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. Required with linked worktrees; subagents must pass their own worktree root on every call.
limitNoShown occurrences; default 100.
formatNoDefault text.
symbol_nameYes

TDQS

A3.7/5.0
Behavior4/5

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

The description adds real behavioral context beyond the read-only annotations: Python results are heuristic, imported SCIP index freshness is unverified, and callers should inspect scope, ambiguity, and warnings. These accuracy caveats are exactly what an agent needs to interpret results; it stops short of describing failure modes or fallback behavior.

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

Conciseness4/5

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

Four efficient sentences with the core purpose front-loaded and no repetition. The phrasing is somewhat telegraphic ('Check scope, ambiguity and warnings'), which costs a little clarity but wastes no space.

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 six parameters and no output schema, the description does a good job covering accuracy expectations, result labeling, per-file totals, and warnings. It is nearly complete for calling the tool correctly, missing only explicit sibling routing and return-shape detail.

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 83%, so parameter documentation is already handled by the schema, which is the correct baseline of 3. The description adds only indirect meaning ('per-file call totals before limits' touches on the limit parameter) and no syntax or format details beyond structured fields.

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 opening sentence states a specific verb and resource: 'Find who calls or references a symbol.' The clause about TS/JS compiler bindings excluding same-named unrelated symbols implicitly distinguishes it from text-search siblings like grep/search, though none are 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?

Usage guidance is implied rather than explicit: 'Check scope, ambiguity and warnings' and the mention of Python being heuristic hint at when to trust results, but the description never states when to choose this over grep or search, nor any preconditions. Most disambiguation guidance lives in the schema, not the description.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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 declare this as read-only, idempotent, non-destructive, and closed-world. The description adds useful behavioral context: symbol extraction returns code plus called functions, file mode returns a structural overview, and neither requires reading the entire file. It does not cover batch behavior or token-budget truncation, but the schema covers those details.

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

Conciseness4/5

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

The description is three tight sentences with the core purpose front-loaded and no wasted phrasing. It has minor redundancy with the schema's file and symbol descriptions, but overall it is efficiently structured.

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

Completeness3/5

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

For a seven-parameter tool with batch mode, depth, format, and worktree-root requirements, the description covers only the two primary modes. The schema and annotations carry much of the burden, but an agent still lacks description-level guidance on batching and sibling alternatives.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents file, root, depth, format, symbol, symbols, and max_tokens. The description adds mode meaning for symbol versus file, but does not explain depth, format, root requirements, batch symbols, or max_tokens beyond what the schema provides.

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

Purpose4/5

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

The description states a specific verb and resource: extract a function/class body plus dependencies without reading the whole file. It clearly distinguishes the symbol mode from the file-overview mode. It does not differentiate from siblings such as skeleton or exact_references, so it stops short of 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 Guidelines3/5

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

It explains how to trigger the two main modes: provide a symbol for code plus called functions, or provide a file path for a structural overview. It implies this is preferable to reading an entire file, but it does not give explicit when-to-use/when-not guidance against sibling tools or mention the batch symbols mode.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, yet the description still adds real value by disclosing that binary files are skipped and that .gitignore is honored through the indexed walker — scope limits an agent cannot infer from annotations. It stops short of describing how results are shaped or truncated, which leaves a small gap.

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

Conciseness5/5

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

Four compact sentences, front-loaded with what the tool does, then when to use it, then the sibling alternative, then the behavioral caveat. Nothing is repeated from the schema and no sentence is filler.

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

Completeness4/5

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

For an 11-parameter tool with no output schema, the description covers scope, filtering rules, and the alternative tool, which is most of what is needed. The remaining gap is return-value shape — the description never says results come back as file/line/column hits, leaving that to the context_lines schema text.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains glob, root, regex, context_chars, context_lines, and the match caps in detail. The description only reinforces literal-vs-regex matching and adds no format, interaction, or defaulting guidance beyond the structured fields, so 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?

Names a specific verb (search) plus the resource (indexed file set) and the two matching modes (literal or regex). It also explicitly separates itself from the semantic sibling by saying to use 'search' for intent queries, so an agent can choose 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?

Gives concrete use cases (log-message lookups, config-key searches, error-message tracing) and the decision rule: exact characters here, semantic intent in 'search'. That is both a when-to-use and a named alternative with the condition that selects it.

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

memory_record_taskA

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

NameRequiredDescriptionDefault
rootNoAbsolute project root. Required with linked worktrees; subagents must pass their own worktree root on every 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

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-idempotent, non-destructive write with closed-world scope. The description reinforces the persistence intent and lists the types of content stored, but it does not add operational details such as whether records can be updated, how supersession works, or what the tool returns. With annotations covering the safety profile, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single well-formed sentence with no wasted words. The core action and content are front-loaded, making it easy to parse quickly.

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

Completeness3/5

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

For a write tool with 11 parameters, including supersession and source-evidence linkage, the description is minimal. The schema covers parameter details and annotations cover safety, but the description does not explain the tool's return behavior or how features like supersedes and validation_refs should be used in practice. It is adequate but leaves meaningful gaps for an agent trying to use the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented in the schema. The description names several key inputs (files, assumptions, evidence, open risks) but omits others such as supersedes, source_evidence, validation_refs, root, and format. Baseline 3 is appropriate when the schema carries the parameter documentation.

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 ('Persist') and resource ('useful task outcomes') along with the kinds of content captured (files, assumptions, evidence, open risks). It is clear what the tool does, though it does not explicitly differentiate itself from any sibling tool, likely because none of the listed siblings directly overlap.

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 future sessions' implies this should be used to record outcomes that later sessions will need, but there is no explicit when-to-use or when-not-to-use guidance. No alternatives or prerequisites are mentioned, leaving the agent to infer appropriate usage.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing incremental behavior via content hash, the embedding side effect and its cost implications, the two env-var overrides, and a downstream dependency (import graph for related/test_map). It does not state what happens to stale entries or what the call returns, which keeps it from 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?

Four front-loaded sentences, each carrying distinct information (action, incrementality, embedding side effect, when to call). Slightly dense with env-var asides but 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?

No output schema exists, but the description covers the mutation semantics, cost model, and triggering conditions adequately for call. It omits what the call reports back (e.g., changed-file counts) and any runtime expectations, which would complete the picture.

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 already 100%, so the baseline is 3; the description earns a notch above by explaining the no_embed flag's interaction with CONTEXTPRO_REINDEX_NO_EMBED and clarifying the default embedding behavior. The other four parameters add no extra meaning in the description beyond their schema text.

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 precise verb sequence (re-walk, re-parse, re-index) against a specific resource (project files into the database), leaving no ambiguity about what the tool does. It does not directly name or contrast with the listed siblings (search, status, grep), so it stops short of full sibling differentiation.

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

Usage Guidelines4/5

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

Gives concrete trigger conditions: 'Use after git pull, branch switch, or external edits,' which is exactly the kind of context an agent needs. It lacks an explicit when-not-to-use or a pointer to an alternative tool for lighter-weight checks.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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 description's job is to add behavior it can't infer — and it does: signatures are normalized summaries, line ranges are included, and the output is explicitly not safe as an exact edit anchor. It doesn't cover failure modes (unsupported file types, missing paths) or output size limits, so not a 5.

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

Conciseness5/5

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

Three tight sentences: what it returns, what it returns alongside (line ranges), and the critical caveat plus alternative. The most decision-relevant constraint (not an edit anchor) is front-and-center rather than buried.

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 the return value, and it does reasonably well (signatures, methods, type definitions, line ranges). Minor gaps remain around output shape details and behavior on unsupported languages or empty files, but an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (root, file_path, exported_only) are already documented, including the worktree caveat for root. 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?

States a specific verb and resource ('Get detailed function signatures, class methods, and type definitions of a specific file') and adds a clear scope qualifier ('WITHOUT reading the full body'). An agent can distinguish this from body-reading siblings like search/grep/exact_references purely from the description.

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

Usage Guidelines5/5

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

Explicitly routes the agent: this tool is for API surface, and 'use context(targets:[{file,start,end}]) for source text before editing' names the alternative and the condition that selects it. It also warns against using the output as an edit anchor, which is a concrete when-not rule.

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. Required with linked worktrees; subagents must pass their own worktree root on every call.
formatNoReturn plain text or structured JSON. Default: text.

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description does not need to restate the safety profile. It adds real context beyond them by showing that this is a composite aggregation across the index, memory graph, and git working tree, so the agent knows one call replaces many. It does not address staleness, cost, or whether reading git state affects anything, 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.

Conciseness5/5

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

Three short sentences, front-loaded with the purpose, then the payload, then the usage trigger. No redundant or filler text.

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?

There is no output schema, so the description's enumeration of returned data carries the return-value burden well. Parameters are covered at 100% in the schema, and the annotations cover safety, so nothing an agent needs to call the tool correctly is missing.

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 both parameters (root, format) are already documented in the schema, including the nuanced guidance for linked worktrees and subagents. The description adds nothing about parameters, 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 verb ("Returns") and enumerates the exact resources: file counts, index state, memory graph stats, git branch, uncommitted changes, recent commits. That enumeration clearly separates it from siblings such as efficiency_report or reindex, which cover subsets of these areas.

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 clear trigger context for calling it. It does not name a when-not condition or point to alternatives, so it falls short of the explicit routing that a 5 requires.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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

A4.3/5.0
Behavior4/5

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

The description adds substantial behavioral flavor by detailing the complexity of the output (e.g., 'ranked files,' 'risks'). This context goes beyond the basic safety guaranteed by the annotations (readOnlyHint: true) and gives the agent a better idea of the internal data aggregation occurring.

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

Conciseness5/5

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

The definition is a single, highly dense sentence that front-loads the entire value proposition. There is zero wasted language, and the structure is maximally efficient.

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

Completeness5/5

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

Given the 100% schema coverage, the description provides the necessary conceptual framework and intent. It tells the agent *why* all those complex parameters (like `preset` or `graph_hops`) exist, making the definition functionally complete.

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

Parameters3/5

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

Since the schema description coverage is 100%, the schema itself defines the semantics of the parameters (e.g., max_tokens, graph_hops). The description doesn't add critical meaning beyond what is structurally defined in the input schema.

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

Purpose5/5

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

The description clearly defines the tool's function as assembling a complex, multi-component 'working set' (files, tests, memory, risks). It immediately distinguishes itself from granular sibling tools like search or grep by describing a holistic context-gathering operation.

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

Usage Guidelines4/5

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

The description sets a high-level context for usage, implying this tool is meant for high-level planning or synthesis before diving into granular tasks. While it doesn't explicitly state 'do not use search for this,' the scope of the description strongly guides the agent toward this specific, comprehensive use case.

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. Required with linked worktrees; subagents must pass their own worktree root on every 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

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/ idempotent/ non-destructive/ closed-world, so safety is covered. The description adds genuine behavioral context beyond them: the files-vs-task precedence rule and the post-edit sequencing. It is silent on output shape and on rate/cost characteristics of inspecting up to max_files files, which keeps it below 5.

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

Conciseness5/5

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

Two sentences, zero filler, with the workflow trigger front-loaded before the parameter-selection rule. Every clause carries decision-relevant information.

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

Completeness4/5

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

For a read-only recommender with no output schema, this is nearly sufficient: the agent knows when to call it and how to bias it. The gaps are minor but real — it never describes what a 'validation check and command' result looks like, and it omits the required context that subagents must pass their own worktree root.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the description's only parameter guidance (files precedence over task inference) is a near-restatement of what the files property already documents. Neither 'root' (worktree requirement) nor 'max_files'/'format' get added meaning in the description.

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 concrete verb+resource: 'recommend the most relevant validation checks and commands', which correctly frames this as a recommender rather than an executor despite the 'validate' name. It also anchors itself in the workflow ('After edit_scope'). It does not distinguish itself from siblings like blast_radius or explain, which could plausibly overlap.

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 clear trigger context ('After edit_scope') and a selection heuristic for the ambiguous case ('Pass files when you already know what changed; they take precedence over task inference'). No explicit when-not-to-use or named alternative sibling, so it stops short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 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 distinct roles, and potentially overlapping pairs such as search/grep, exact_references/blast_radius, and skeleton/explain are explicitly differentiated in their descriptions. A few boundaries remain soft, especially between structural overview tools and usage-analysis tools, but an agent can generally choose correctly.

Naming Consistency3/5

All names use snake_case, which keeps them readable, but the naming patterns are mixed: some are single verbs (search, grep, explain), some are nouns (skeleton, status, task_pack), some are verb_noun (discover_tools, validate_scope), and one is noun_verb_noun (memory_record_task). The set is understandable but not predictably patterned.

Tool Count5/5

With 14 tools, the server is within a well-scoped range for a code-context and indexing assistant. Each tool appears to serve a specific workflow, and the count is neither thin nor excessive.

Completeness3/5

The core code-context workflows are covered: discovery, search, references, structural explanation, reindexing, status, task packing, and memory recording. However, validate_scope references an edit_scope step that is not present, and artifact/memory surfaces are incomplete because there is no obvious way to list artifacts or query memory records directly.

Maintenance

ActivityActive
ResponsivenessNo 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.
    258 PyPI
    4
    MIT