Context Engine MCP Server
The Context Engine MCP Server is a local-first, agent-agnostic platform for workspace indexing, semantic search, AI-assisted planning, code review, memory management, and security validation.
Workspace Indexing & Retrieval
Index 50+ file types for semantic search (
index_workspace,semantic_search,codebase_retrieval)Retrieve full/partial file contents (
get_file) and token-aware context for AI prompts (get_context_for_prompt)Enhance simple prompts into detailed, codebase-aware prompts (
enhance_prompt)Manage index health: check status, reindex, or clear (
index_status,reindex_workspace,clear_index)
Memory Management
Persist preferences, architecture decisions, and project facts across sessions (
add_memory,list_memories)
Planning & Execution
Generate AI-powered implementation plans with dependency graphs, risk assessments, and Mermaid diagrams (
create_plan,refine_plan,visualize_plan)Execute plan steps with AI-generated code changes, preview or apply (
execute_plan)Save, load, list, and delete plans (
save_plan,load_plan,list_plans,delete_plan)Track step-by-step progress and version history; roll back plan versions (
start_step,complete_step,fail_step,view_progress,view_history,compare_plan_versions,rollback_plan)Gate execution with human approval workflows (
request_approval,respond_approval)
Code Review
AI-powered review of diffs or git changes with structured findings (P0–P3 priority, confidence scores) (
review_changes,review_diff,review_git_diff,review_auto)Reactive PR review with parallel execution, session management, commit-aware caching, and telemetry (
reactive_review_pr,get_review_status,pause_review,resume_review,get_review_telemetry)Deterministic invariant checks against YAML-defined rules (
check_invariants) and static analysis via TypeScript/Semgrep (run_static_analysis)
Security & Validation
Detect and mask 15+ secret types before sending content to an LLM (
scrub_secrets)Multi-tier content validation: bracket balancing, JSON structure, TODO detection, hardcoded URLs, and automatic secret scrubbing (
validate_content)
Tool Discovery
Inspect all available server tools and capabilities (
tool_manifest)
Provides comprehensive tools for automatic retrieval and review of code changes, including staged, unstaged, branch, and commit-level diffs.
Enables the visualization of structured execution plans by generating and displaying Mermaid-formatted diagrams.
Integrates with local static analysis tools like tsc to provide deterministic feedback and analysis during the code review process.
Supports deterministic invariant checking using YAML-based rule files to enforce project-specific constraints during reviews.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Context Engine MCP Serverfind where the user authentication logic is implemented"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Context Engine MCP Server
A local-first, agent-agnostic Model Context Protocol (MCP) server for workspace indexing, retrieval, planning, and review workflows, with a setup path that works well for Codex and other OpenAI-powered agents.
New here? Start with the beginner quick start below.
If you want client-specific setup help, see docs/MCP_CLIENT_SETUP.md.
If you are on Windows, see docs/WINDOWS_DEPLOYMENT_GUIDE.md.
Historical docs live in docs/archive/INDEX.md if you need the old planning and migration notes.
OpenAI / Codex Showcase
If you want to see what this project demonstrates for OpenAI-style agent workflows, start here:
Local workspace indexing and retrieval
Review and planning workflows layered on top of the same MCP server
Beginner-friendly install and client setup
Windows support and copy-paste setup examples
AI-agent-friendly instructions for self-setup
Why This Matters
It shows how an OpenAI-powered agent can connect to a real workspace and start using tools right away.
It combines retrieval, review, and planning in one MCP server instead of relying on one-off scripts.
It gives both humans and AI agents a simple, repeatable setup path, which makes demos and onboarding easier.
Fastest demo path:
npm install
npm run build
codex mcp add context-engine -- node dist/index.jsThen in Codex, confirm the tools are visible and try:
use semantic_search to find authentication logicRelated MCP server: LLM Memory MCP Server
Beginner Quick Start
If you just want to get Context Engine running locally, follow these steps:
Install Node.js 18+.
Clone this repository and open it in a terminal at the repo root.
Install dependencies:
npm installBuild the server:
npm run buildRun the verification checks:
npm run verifyStart the MCP server:
node dist/index.jsBy default, Context Engine now resolves the workspace like this:
explicit
--workspacewinsotherwise it uses the current folder
if you launched from a nested folder inside a git repo, it falls back to the nearest git root
if no git root exists, it stays on the current folder and logs a warning
On first run, if the index is missing or stale, startup can kick off background indexing automatically. The server still starts first, but the first query may be slower until indexing finishes.
Connect It To Your MCP Client
The server speaks MCP over stdio, so most clients can launch it with the same command.
First-Time Setup vs Daily Use
Use this mental model:
First-time setup: Register the MCP server once in your client.
Daily use: Open any repo and let the server resolve the workspace automatically.
Override only when needed: Pass
--workspace <absolute-path>if the client launches from the wrong folder or you want a different repo on purpose.
Codex CLI
codex mcp add context-engine -- node dist/index.jsWindows example
codex mcp add context-engine -- node "D:\GitProjects\context-engine\dist\index.js"Claude Code, Claude Desktop, Cursor, Antigravity
See docs/MCP_CLIENT_SETUP.md for copy-paste config examples for each client.
Ready-to-use sample config files live in examples/mcp-clients/. Optional skill packages for AI workflows live in examples/skills/.
If an AI agent is setting this up
Paste this into the agent if you want it to do the setup for you:
Set up Context Engine MCP for this workspace.
Run
npm installandnpm run build.Register the MCP server once with
node dist/index.js.Confirm the client launches the MCP server from the repo I am working in.
If the client launches from the wrong folder, add
--workspace <absolute-path-to-workspace>as an override.Confirm the server appears in the client and that
tool_manifest()or an equivalent tool list works.Run one quick retrieval test, for example
semantic_search, to confirm the connection is working.If startup says the workspace is unindexed or stale, let the background indexing finish or run
index_workspacemanually.If the client is Codex CLI, use:
codex mcp add context-engine -- node dist/index.js
Startup Behavior
When the server starts without --workspace, it tries to be repo-aware:
repo root launch: uses that repo
nested repo folder launch: upgrades to the nearest git root
non-git folder launch: stays on the current folder and warns clearly
If startup auto-index is enabled, missing or stale workspaces start background indexing automatically.
Operator override:
disable startup auto-index with
CE_AUTO_INDEX_ON_STARTUP=falseforce a specific workspace with
--workspace "D:\path\to\repo"
Architecture
This implementation follows a clean 5-layer architecture:
┌────────────────────────────┐
│ Coding Agents (Clients) │ Layer 4: Codex, Claude, Cursor, etc.
│ Codex | Claude | Cursor │
└────────────▲───────────────┘
│ MCP (tools)
┌────────────┴───────────────┐
│ MCP Interface Layer │ Layer 3: server.ts, tools/
│ (standardized tool API) │
└────────────▲───────────────┘
│ internal API
┌────────────┴───────────────┐
│ Context Service Layer │ Layer 2: serviceClient.ts
│ (query orchestration) │
└────────────▲───────────────┘
│ domain calls
┌────────────┴───────────────┐
│ Retrieval + Review Engine │ Layer 1: local-native runtime
│ (indexing, retrieval) │
└────────────▲───────────────┘
│ storage/state
┌────────────┴───────────────┐
│ Local State / Artifacts │ Layer 5: workspace state + evidence
│ (index, cache, receipts) │
└────────────────────────────┘Layer Responsibilities
Layer 1: local-native indexing, retrieval, review support, and provider orchestration
Layer 2: context assembly, snippet formatting, deduplication, limits, and caching
Layer 3: MCP tools, validation, and request/response contracts
Layer 4: coding agents and MCP clients that consume the tools
Layer 5: persisted index state, caches, rollout receipts, and generated artifacts
Features
MCP Tools
The server exposes tools across these areas:
Core context and retrieval
Memory
Planning and execution
Plan management
Code review
Reactive review
Use tool_manifest() in the MCP server to inspect the current tool inventory directly.
Key Characteristics
Local-first runtime for indexing and retrieval, with OpenAI-backed planning/review workflows layered on top
Agent-agnostic MCP interface
Local-native retrieval provider as the active runtime
Thin
context-engine-mcplauncher for convenience; it starts the same server and does not add featuresPersistent state and evidence artifacts for rollout-proof workflows
Planning, review, and validation workflows built into the server
Optional benchmarking, parity, and governance gates for safer changes
Quick Start
npm install
npm run build
npm run verify
node dist/index.jsOptional validation commands:
npm run ci:check:no-legacy-provider
npm run ci:check:legacy-capability-parity
npm run ci:check:legacy-capability-parity:strictDocumentation Quick Links
Docs Map: docs/README.md
Setup: docs/MCP_CLIENT_SETUP.md
Windows Deployment: docs/WINDOWS_DEPLOYMENT_GUIDE.md
Troubleshooting: docs/archive/TROUBLESHOOTING.md
Testing: docs/archive/TESTING.md
Architecture: ARCHITECTURE.md
Memory Operations: docs/MEMORY_OPERATIONS_RUNBOOK.md
Archive: docs/archive/INDEX.md
Current Status
Retrieval is local-native and index-backed
Planning and review use the OpenAI session path
Legacy-provider references that remain are historical docs, tests, or migration guardrails
Current hardening focuses on fast paths, cancellation, and prompt efficiency rather than provider replacement
Available Tools
28 toolsadd_memoryAdd MemoryA
Store a memory for future sessions. Memories are persisted as markdown files and automatically retrieved via semantic search when relevant.
Categories:
preferences: Coding style, tool preferences, personal workflow choicesdecisions: Architecture decisions, technology choices, design rationalefacts: Project facts, environment info, codebase structure
Examples:
Add preference: "Prefers TypeScript strict mode"
Add decision: "Chose JWT for authentication because..."
Add fact: "API runs on port 3000"
Optional metadata fields improve ranking and traceability across sessions:
subtype: finer-grained label such asreview_findingorfailed_attemptpriority:critical,helpful, orarchivetags,source,linked_files,linked_plans,evidence,owner, timestamps
Memories are stored in .memories/ directory and indexed for semantic retrieval.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional tags to support filtering and ranking | |
| owner | No | Optional owner for memory maintenance | |
| title | No | Optional title for the memory (useful for decisions) | |
| source | No | Optional source path or identifier | |
| content | Yes | The memory content to store (max 5000 characters) | |
| subtype | No | Optional subtype label (for example: review_finding, failed_attempt, incident) | |
| category | Yes | Category of memory: preferences (coding style), decisions (architecture), or facts (project info) | |
| evidence | No | Optional evidence reference (commands, receipts, or docs) | |
| priority | No | Optional priority used for memory ranking | |
| created_at | No | Optional ISO timestamp for when this memory was first created | |
| updated_at | No | Optional ISO timestamp for the most recent update | |
| linked_files | No | Optional file paths related to this memory | |
| linked_plans | No | Optional plan identifiers related to this memory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses persistence as markdown files, automatic semantic retrieval, storage directory '.memories/', indexing, and maximum content length (5000 chars). Annotations are minimal, so description carries full burden and does so excellently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (purpose, categories, examples, optional metadata, storage). Front-loaded with core action. Slightly verbose but every section adds value for a parameter-rich tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, categories, examples, metadata fields, storage behavior. No output schema, but return type is not critical for a write tool. Could mention success confirmation, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, but description adds value by grouping optional metadata fields and explaining their purpose (ranking, traceability). Examples illustrate content and category usage, exceeding baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Store a memory for future sessions' with specific verb and resource. Categories and examples further clarify purpose. Distinguishes from sibling 'list_memories' (store vs. list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides categories and examples guiding appropriate usage. Does not explicitly state when not to use or name alternatives, but context is clear enough for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_relationshipsCall RelationshipsARead-onlyIdempotent
Return deterministic local callers and/or callees of a known function or method symbol.
Use this tool when you need to:
See which functions invoke a given symbol (callers) and where
Inspect which identifiers a function invokes inside its own body (callees)
Complement symbol_definition (single declaration site) and symbol_references (non-declaration usages)
Caller heuristic: lines containing ( that are not declaration-like; the nearest enclosing declaration is reported as callerSymbol when detectable. Callee heuristic: locates the symbol's definition and scans the brace-delimited body for identifiers followed by '('. Brace-language only in v1; non-brace bodies (e.g., Python) yield empty callees.
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No | Maximum entries per side (1-100). Defaults to 20. | |
| symbol | Yes | Function or method identifier whose call relationships you want to inspect. | |
| direction | No | Which side of the call graph to compute. Defaults to both. | both |
| bypass_cache | No | When true, bypass caches for this call. | |
| exclude_paths | No | Optional workspace-relative glob filters to exclude matching paths after include filtering. | |
| include_paths | No | Optional workspace-relative glob filters to include matching paths only. | |
| language_hint | No | Optional language hint (currently advisory; reserved for future use). | |
| workspacePath | No | Optional workspace path. Defaults to the current workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| callees | Yes | |
| callers | Yes | |
| metadata | Yes | |
| direction | Yes | |
| schema_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds valuable behavioral details: the heuristic for callers and callees, brace-language limitation for callees, and that non-brace bodies yield empty callees. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and front-loads the main action. It is slightly lengthy but every sentence earns its place by providing essential heuristic details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown but indicated), so return values are documented externally. The description explains heuristic limitations and complements siblings, providing sufficient context for a complex call-graph tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 8 parameters with 100% description coverage. The tool description does not add significant meaning beyond the schema, except for contextualizing the 'symbol' parameter via the heuristic explanation. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns 'deterministic local callers and/or callees of a known function or method symbol.' It uses specific verbs (Return, See, Inspect) and distinguishes from siblings symbol_definition and symbol_references by noting they are complementary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use (e.g., 'when you need to see which functions invoke a given symbol') and mentions complementing sibling tools. It does not explicitly state when not to use, but the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_indexClear IndexADestructive
Remove saved index state and clear caches without rebuilding.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include destructiveHint=true, but the description adds specific behavioral context: it clears caches and does not rebuild. This provides more detail than annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence with no unnecessary words, front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is sufficient, but could mention that the action does not affect other data (e.g., memories) for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%, so baseline is 4. Description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Remove' and clearly identifies the resource ('saved index state') and action ('clear caches without rebuilding'), effectively distinguishing it from tools like reindex_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when clearing is needed without rebuilding, but lacks explicit guidance on when to use versus alternatives (e.g., reindex_workspace) or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_stepComplete StepC
Mark a step as completed with optional notes.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Completion notes | |
| plan_id | Yes | Plan ID | |
| step_number | Yes | Step number to complete | |
| files_modified | No | List of files actually modified |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations for readOnlyHint or destructiveHint, so the description must disclose behavior. It only states 'mark as completed' which implies a state change but does not mention reversibility, triggers, permissions, or side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks structure. It covers the basic function but could include more detail without becoming verbose. Not all necessary information is front-loaded; it's minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and no annotations, the description fails to provide adequate context. It does not mention return values, side effects, or prerequisites. A mutation tool like this needs more thorough description to be complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents each parameter. The description adds 'optional notes' which correlates to the notes parameter, but does not explain other parameters like files_modified beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool marks a step as completed with optional notes, using a specific verb and resource. However, it does not differentiate from sibling tools like fail_step or start_step, but the purpose is still evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as fail_step. There are no explicit conditions, prerequisites, or when-not-to-use information. The usage context is entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_planDelete PlanBDestructive
Delete a saved plan from storage.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description confirms the destructive nature of the tool ('Delete'), which aligns with the 'destructiveHint' annotation. However, it adds minimal behavioral context beyond the annotation, such as whether the deletion is permanent or reversible, or if it affects related data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the action and resource. No extraneous information is present, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with one parameter and a destructive annotation, the description is adequate. However, it could be more complete by noting that the deletion is permanent and irreversible, which would help the agent assess risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the single parameter 'plan_id' with a description. The tool description adds no additional semantics beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' and clearly identifies the resource as 'a saved plan from storage'. This distinguishes it from sibling tools like 'load_plan' and 'refine_plan', which have different verbs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, consequences, or situations where deletion is appropriate, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fail_stepFail StepB
Mark a step as failed with error details.
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | Skip this step and continue | |
| error | Yes | Error message | |
| retry | No | Whether to retry the step | |
| plan_id | Yes | Plan ID | |
| step_number | Yes | Step number that failed | |
| skip_dependents | No | Skip all steps that depend on this one |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With minimal annotations (only title), the description should disclose behavioral traits like side effects on the plan, retry logic, or skip behavior. It only states the basic action without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 7 words, very concise and front-loaded. While efficient, it could benefit from slightly more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (3 required), no output schema, and sparse annotations, the description is too minimal. It does not explain the overall effect (e.g., plan termination, retry, dependency skipping) or interaction with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to add parameter details. However, it adds no value beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Mark' and the resource 'a step as failed with error details', which is specific and distinguishes it from siblings like 'complete_step' and 'start_step'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any conditions or prerequisites. The user is left to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_callersFind CallersARead-onlyIdempotent
Return deterministic callers of a known function or method symbol.
This tool prefers persisted graph call edges and falls back explicitly when graph coverage is unavailable or incomplete.
Use when you want call sites for one symbol without the broader combined output of call_relationships.
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No | Maximum callers to return (1-100). Defaults to 20. | |
| symbol | Yes | Function or method identifier whose callers you want to inspect. | |
| bypass_cache | No | When true, bypass caches for this call. | |
| exclude_paths | No | Optional workspace-relative glob filters to exclude matching paths after include filtering. | |
| include_paths | No | Optional workspace-relative glob filters to include matching paths only. | |
| language_hint | No | Optional language hint (currently advisory). | |
| workspacePath | No | Optional workspace path hint. Present for parity with other navigation tools. |
Output Schema
| Name | Required | Description |
|---|---|---|
| symbol | Yes | |
| callers | Yes | |
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond the annotations (readOnlyHint, idempotentHint) by stating it prefers persisted graph call edges and falls back when coverage is unavailable, which is useful context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: stating the function, describing behavior, and providing usage guidance. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers purpose, behavior, and usage context. It leaves no major gaps for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant new meaning to parameters beyond what the schema already provides, though it does mention the fallback behavior in a general sense.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns deterministic callers of a known function or method symbol, and it distinguishes itself from the sibling tool 'call_relationships' by specifying it returns call sites for a single symbol without the broader combined output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool when wanting call sites for one symbol without the combined output of call_relationships, providing clear guidance on when to use it versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_review_telemetryGet Review TelemetryARead-onlyIdempotent
Get detailed telemetry data for a review session.
Returns:
Token usage statistics
Cache hit/miss rates
Execution timing per step
Reactive configuration in use
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | The session ID to get telemetry for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's disclosure of returned data categories adds some value. However, it does not detail any potential limitations, error conditions, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with a clear one-line purpose followed by a compact bulleted list of return items. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read-only nature, annotations, and complete schema coverage, the description provides adequate context. It could mention that results are for a single session and note any pagination or size limits, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'session_id' is fully described in the input schema (100% coverage). The description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'review telemetry', with a bulleted list of return categories. It distinguishes from sibling tools like review_changes or review_diff, which focus on code changes rather than telemetry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention context, prerequisites, or exclusions, leaving the agent to infer from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_statusIndex StatusARead-onlyIdempotent
Retrieve current index health metadata (status, last indexed time, file count, staleness).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| guidance | Yes | |
| composite | No | |
| freshness | Yes | |
| components | No | |
| schema_version | Yes | |
| embeddingRuntime | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and idempotentHint=true. Description adds value by detailing the specific metadata fields returned, enhancing understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste, front-loaded with verb and resource. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, comprehensive annotations, and an output schema presumably defining return values, the description provides sufficient context for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in schema; baseline 4. Description does not need to add parameter information, and it correctly avoids redundant details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'retrieve' and resource 'index health metadata', listing concrete attributes (status, last indexed time, file count, staleness). Clearly distinguishes from sibling tools like clear_index or reindex_workspace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no exclusions or context provided. The description only states what the tool does without explaining appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_memoriesList MemoriesARead-onlyIdempotent
List all stored memories, optionally filtered by category.
Shows file stats, entry counts, and content preview for each memory category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional: Filter to a specific category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent behavior. The description adds value by detailing that it shows file stats, entry counts, and content preview per category, going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by concise behavioral detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description sufficiently explains what the tool returns (file stats, entry counts, content preview), making it complete for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter that has enum and description. The description simply reiterates 'optionally filtered by category', adding no new meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all stored memories with optional filtering, using a specific verb and resource. It distinguishes from the sibling 'add_memory' which is a write operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing memories, optionally filtered. While no explicit alternatives or when-not-to-use are given, the context of being the only list tool for memories makes it adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_planLoad PlanBRead-onlyIdempotent
Load a previously saved plan by ID or name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Plan name to load (alternative to plan_id) | |
| plan_id | No | Plan ID to load |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds minimal context (identification by ID or name), but does not disclose what happens when both parameters are provided, error behavior, or retrieval scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence with no redundant words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema, so the description should indicate what 'loading' returns (e.g., plan data). Without this, the agent cannot determine the tool's effect. The description is too sparse given the absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description merely paraphrases 'by ID or name', adding no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'load' and resource 'plan', and identifies the lookup keys (ID or name). It clearly distinguishes from sibling tools like view_history or visualize_plan, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. Given the large set of sibling tools, this is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reactive_review_prReactive Review PRA
Start a reactive PR code review session.
This tool initiates an AI-powered code review with advanced features:
Commit-aware caching: Caches context by commit hash for efficiency
Parallel execution: Reviews multiple files concurrently
Session management: Pause, resume, and track progress
Telemetry: Token usage, cache hit rates, execution timing
Environment Variables:
REACTIVE_ENABLED=true: Master switch for reactive features
REACTIVE_PARALLEL_EXEC=true: Enable parallel execution
REACTIVE_MAX_WORKERS=3: Maximum concurrent workers
Returns: Session ID for tracking. Use get_review_status to monitor progress.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | PR title for context | |
| author | No | PR author for context | |
| base_ref | Yes | Base branch reference (e.g., "main", "develop") | |
| additions | No | Number of line additions in the PR | |
| deletions | No | Number of line deletions in the PR | |
| commit_hash | Yes | Git commit hash for the PR head | |
| max_workers | No | Maximum number of parallel workers for this review session | |
| changed_files | Yes | Changed files as comma-separated list or JSON array |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), so the description carries full burden. It discloses key behaviors: commit-aware caching, parallel execution, session management, telemetry, and return of a session ID. It also references get_review_status for follow-up. However, it does not mention potential side effects like resource creation or cleanup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise with bullet points and clear sections. It front-loads the purpose in the first sentence. However, it includes environment variables and a list of features that, while useful, add length. Could be trimmed slightly without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters (3 required) and no output schema, the description covers the return value (session ID) and directs to get_review_status for progress. It explains advanced features and environment configuration. However, it lacks preconditions such as needing an existing PR or valid git repository.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema; it reiterates that parameters like 'changed_files' can be a CSV or JSON array, which is already in the schema. No additional format or usage constraints are explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Start a reactive PR code review session.' It is a specific verb+resource combination. However, it does not differentiate from sibling tools like review_auto or review_changes, which may perform similar functions without reactive features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description mentions advanced features and environment variables but does not specify scenarios where this tool is preferred over others, nor does it give prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refine_planRefine PlanA
Refine an existing implementation plan based on feedback or clarifications.
Use this tool to iterate on a plan after reviewing it or answering clarifying questions.
When to use this tool:
After reviewing a plan and wanting adjustments
To answer questions the plan raised
To add more detail to specific steps
To change the approach based on new information
Input:
The current plan (JSON from a previous create_plan call)
Your feedback or clarifications
Optionally, specific steps to focus on
| Name | Required | Description | Default |
|---|---|---|---|
| feedback | No | Your feedback on the current plan - what to change, add, or remove | |
| focus_steps | No | Specific step numbers to focus refinement on | |
| current_plan | Yes | The current plan as a JSON string (from the Full Plan JSON output of create_plan) | |
| clarifications | No | Answers to clarifying questions as JSON object (e.g., {"question1": "answer1"}) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only title), so the description must disclose behavioral traits. It mentions inputs and purpose but does not specify whether the tool mutates the plan or returns a new one, nor any side effects or safety concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a brief definition, a 'When to use' list, and an 'Input' list. Every sentence is substantive and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should explain what the tool returns. It does not mention return value or behavior when refinement succeeds or fails. The tool also assumes a pre-existing plan but doesn't explicitly state prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some context (e.g., 'JSON from previous create_plan call') but largely mirrors the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool refines an implementation plan based on feedback or clarifications. It provides specific use cases, distinguishing it from other plan tools like delete_plan or load_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool clearly enumerates when to use it (after reviewing, to answer questions, add detail, change approach). It doesn't explicitly say when not to use it, but the context is sufficient for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reindex_workspaceReindex WorkspaceA
Clear current index state and rebuild it from scratch.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | Return a task ID and track reindexing progress without blocking the tool call | |
| background | No | Run reindexing in the background without blocking the tool call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool clears and rebuilds the index, which implies a destructive action. However, it does not detail side effects (e.g., temporary unavailability, performance impact), required permissions, or whether the operation is reversible. Annotations provide no behavioral hints (no readOnlyHint or destructiveHint), so the description carries the burden but provides only minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded. Every word is necessary and adds value. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a reindex operation (potentially heavy, long-running), the description is minimal. It does not mention what 'current index state' means, what triggers reindexing, or what happens to in-flight searches. The output schema is absent, so return values are not explained. However, with sibling tools like index_status, basic context is available. The description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage; both parameters (task, background) are clearly documented with default values and behavior (return task ID or run in background). The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: clearing the current index state and rebuilding from scratch. It uses a specific verb ('clear', 'rebuild') and identifies the resource (index state of workspace). This distinguishes it from sibling tools like clear_index, which likely only clears without rebuilding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like clear_index or index_status. There is no mention of prerequisites, use cases, or when to avoid using it (e.g., during peak hours). The agent is left to infer from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_approvalRequest ApprovalB
Create an approval request for a plan or specific steps.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID to request approval for | |
| step_numbers | No | Optional specific step numbers to approve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states action without disclosing side effects, permissions, or consequences. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, very concise. However, it may be too minimal given the operation's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal annotations, description lacks details about workflow, return value, or how the approval request is processed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description does not add significant meaning beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb ('Create') and resource ('approval request'), and distinguishes from sibling 'respond_approval'. Also mentions 'plan or specific steps' which matches schema parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage (when approval is needed) but no explicit when/when-not guidance or mention of alternatives like 'respond_approval'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
respond_approvalRespond ApprovalA
Respond to a pending approval request (approve, reject, or request modifications).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to take | |
| comment | No | Optional comment | |
| request_id | Yes | Approval request ID | |
| modifications | No | Requested modifications (if action is request_modification) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates mutation (respond) but lacks detail on side effects, permissions, or result format. Annotations provide minimal info, so description carries moderate burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded with purpose, containing no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core action and parameters, but missing return value info (no output schema) and behavioral context for mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds little beyond listing actions, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'respond', the resource 'approval request', and lists the possible actions (approve, reject, request modifications), distinguishing it from the sibling 'request_approval'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for pending approval requests but does not explicitly state when to use versus alternatives (e.g., request_approval) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_autoReview AutoARead-onlyIdempotent
Smart wrapper that chooses review_diff when a diff is provided; otherwise chooses review_git_diff for the current git workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Base ref for git comparisons (review_git_diff only) | |
| diff | No | Unified diff content (selects review_diff in auto mode) | |
| task | No | Return a task ID and track review progress without blocking (default: false) | |
| tool | No | Force tool selection. One of: 'auto', 'review_diff', 'review_git_diff'. Default: auto. | auto |
| target | No | Git target to review (review_git_diff only). Default: 'staged'. | |
| background | No | Run review without blocking the tool call (default: false) | |
| changed_files | No | Optional list of changed files (review_diff only) | |
| include_patterns | No | File globs to include (review_git_diff only) | |
| response_version | No | Response shape version. Default is v1. | v1 |
| review_diff_options | No | Options passed through to review_diff (advanced/CI-oriented) | |
| review_git_diff_options | No | Options passed through to review_git_diff (same as review_changes options) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds the routing behavior and does not contradict annotations. It provides transparency about the auto-selection logic beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single, clear sentence that immediately communicates the core behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a wrapper with no output schema and rich parameter descriptions, the description sufficiently covers the main logic. It could optionally mention it's for code review, but the sibling names imply that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage. Description adds value by explaining how 'diff' and 'tool' parameters relate to the routing logic, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool is a smart wrapper that automatically selects between review_diff and review_git_diff based on input. It distinguishes from siblings by describing the routing logic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains when each sub-tool is selected (diff provided vs current workspace). Implicitly guides when to force a specific tool via the 'tool' parameter. No explicit when-not-to-use, but the automatic selection covers common cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_changesReview ChangesARead-onlyIdempotent
Review code changes from a diff using AI-powered analysis.
This tool performs a structured code review on a unified diff, identifying issues across correctness, security, performance, maintainability, style, and documentation.
Key Features:
Structured output with findings, priority levels (P0-P3), and confidence scores
Changed lines filter: focuses on modified code (can be toggled)
Confidence scoring: each finding has a 0-1 confidence score
Actionable suggestions: includes fix suggestions where applicable
Priority Levels:
P0 (Critical): Must fix before merge - bugs, security vulnerabilities
P1 (High): Should fix before merge - likely bugs, significant issues
P2 (Medium): Consider fixing - code smells, minor issues
P3 (Low): Nice to have - style issues, minor improvements
Categories:
correctness: Bugs, logic errors, edge cases
security: Vulnerabilities, injection risks, auth issues
performance: Inefficiencies, memory leaks, N+1 queries
maintainability: Code clarity, modularity, complexity
style: Formatting, naming conventions
documentation: Comments, docstrings, API docs
Output Schema: Returns JSON with: findings[], overall_correctness, overall_explanation, overall_confidence_score, changes_summary, and metadata.
Usage Examples:
Basic review: Provide diff content
Focused review: Set categories="security,correctness"
Strict review: Set confidence_threshold=0.8
Include context lines: Set changed_lines_only=false
| Name | Required | Description | Default |
|---|---|---|---|
| diff | Yes | The unified diff content to review (from git diff, etc.) | |
| base_ref | No | Optional base branch or commit reference for context | |
| categories | No | Comma-separated categories to focus on. Options: correctness, security, performance, maintainability, style, documentation | |
| max_findings | No | Maximum number of findings to return. Default: 20 | |
| file_contexts | No | Optional JSON object mapping file paths to file contents for additional context | |
| llm_timeout_ms | No | Optional AI timeout override in milliseconds for this review call (1000-1800000). | |
| exclude_patterns | No | Comma-separated glob patterns for files to exclude (e.g., "*.test.ts,*.spec.js") | |
| changed_lines_only | No | Only report issues on changed lines. Default: true | |
| custom_instructions | No | Custom instructions for the reviewer (e.g., "Focus on React best practices") | |
| confidence_threshold | No | Minimum confidence score (0-1) to include findings. Default: 0.7 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: it explains the structured output with findings, priority levels (P0-P3), confidence scores, categories, and features like changed_lines_only. No contradiction with annotations (readOnlyHint=true, idempotentHint=true).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headers, bullet points, and examples. Every section serves a purpose: purpose, key features, priority levels, categories, output schema reference, and usage examples. No unnecessary content, clear and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers usage, parameters, and output comprehensively for a complex tool with 10 parameters. It mentions output schema in text (though context indicates no formal output schema). Minor gaps: no mention of prerequisites (e.g., needing git diff) or rate limits, but overall it's thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the description could rest on the schema. However, it adds significant meaning by explaining categories, priority levels, and default values (e.g., confidence_threshold=0.7) that go beyond the schema. It enriches understanding but some parameters (base_ref, file_contexts) rely mainly on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Review code changes from a diff using AI-powered analysis.' It specifies the verb (review), resource (code changes/diff), and provides structured details on output, categories, and priority levels. This differentiates it from sibling tools like review_diff and review_auto.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage examples and context on when to use the tool (e.g., basic review, focused review). However, it does not explicitly state when not to use this tool or compare it to alternatives like review_diff or reactive_review_pr, leaving the agent without guidance on choosing among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_diffReview DiffBRead-onlyIdempotent
Enterprise-grade diff-first review with deterministic preflight and structured JSON output.
| Name | Required | Description | Default |
|---|---|---|---|
| diff | Yes | Unified diff content | |
| task | No | Return a task ID and track review progress without blocking (default: false) | |
| options | No | ||
| base_sha | No | Optional base commit SHA | |
| head_sha | No | Optional head commit SHA | |
| background | No | Run review without blocking the tool call (default: false) | |
| changed_files | No | Optional list of changed file paths |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds 'deterministic preflight and structured JSON output,' which provides some behavioral context but does not elaborate on auth needs, rate limits, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core purpose, no redundant words. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite complex nested parameters and no output schema, the description only gives a vague 'structured JSON output.' It omits details about the multi-phase process (LLM, static analysis, etc.) that are hinted at in the schema descriptions. Incomplete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents most parameters. The description adds no parameter-specific details beyond the high-level 'diff-first review.' At high coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a diff-first review tool with deterministic preflight and structured JSON output. It gives a specific verb and resource, but does not explicitly distinguish from sibling tools like review_auto or review_changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as review_auto or review_changes. The description lacks context for choosing among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_static_analysisRun Static AnalysisARead-onlyIdempotent
Run local static analyzers (tsc and optional semgrep) and return structured findings.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | Return a task ID and track analysis progress without blocking (default: false) | |
| options | No | ||
| background | No | Run static analysis without blocking the tool call (default: false) | |
| changed_files | No | Optional list of file paths to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, making the tool's nondestructive nature clear. The description adds context that it runs specific analyzers and returns findings, which is consistent and slightly enriches transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the verb and main purpose, containing no fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description only vaguely mentions 'structured findings'. For a tool with many sibling tools, more context on return format or when to use vs. alternatives would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the description does not need to add much. However, it adds no extra meaning beyond listing 'tsc and optional semgrep'; parameter details are left to the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'run' and the resource 'local static analyzers (tsc and optional semgrep)', and specifies the action 'return structured findings'. This distinguishes it from sibling tools which are unrelated or focus on reviews/visualization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for static analysis but lacks explicit guidance on when to use this tool over sibling review tools like 'review_auto' or 'reactive_review_pr'. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrub_secretsScrub SecretsARead-onlyIdempotent
Scrub secrets from content before sending to LLM.
Detects and masks 15+ types of secrets:
AWS keys, OpenAI/Anthropic API keys
GitHub tokens, Stripe keys, Firebase/Supabase keys
Private keys (PEM), JWTs, connection strings
Generic API keys and passwords
Use this before including user content in prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to scrub secrets from | |
| show_end | No | Characters to show at end of masked secret (default: 0) | |
| show_start | No | Characters to show at start of masked secret (default: 4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating no side effects. The description adds value by detailing the types of secrets detected and masked, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a primary sentence, a bulleted list of secret types, and a usage instruction. It is front-loaded with the core purpose, with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters (1 required), high schema coverage, and annotations, the description is sufficiently complete. It explains purpose, usage, and secret types, although it does not describe return values (acceptable without output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description lists secret types but does not add parameter-specific semantics beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Scrub secrets from content before sending to LLM.' It lists specific secret types, distinguishing it from sibling tools like add_memory or clear_index which have no secret-scrubbing functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends using this tool 'before including user content in prompts,' providing clear usage guidance. It does not mention alternatives or exclusions, but the context is sufficient for this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_stepStart StepB
Mark a step as in-progress to begin execution.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID | |
| step_number | Yes | Step number to start |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations beyond title, the description carries the full burden but only states 'begin execution', omitting side effects, permission requirements, or state implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no unnecessary words, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and absence of output schema, the description is minimal but covers the basic action; however, it lacks state machine context (e.g., prerequisites, reversibility).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and descriptions are adequate; the description adds no extra meaning beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('mark as in-progress') and identifies the resource ('step'), clearly distinguishing it from sibling tools like complete_step and fail_step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., complete_step, fail_step), nor are there any prerequisites or context for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
symbol_definitionSymbol DefinitionARead-onlyIdempotent
Return the single best deterministic declaration site for a known identifier.
Use this tool when you need to:
Jump straight to the canonical declaration of a function, class, type, interface, or constant
Get one definitive answer (file, line, kind, snippet) rather than a ranked list
Complement symbol_search (ranked) and symbol_references (non-declaration usages)
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Identifier whose declaration site you want to locate. | |
| bypass_cache | No | When true, bypass caches for this call. | |
| exclude_paths | No | Optional workspace-relative glob filters to exclude matching paths after include filtering. | |
| include_paths | No | Optional workspace-relative glob filters to include matching paths only. | |
| language_hint | No | Optional language hint (currently advisory; reserved for future use). | |
| workspacePath | No | Optional workspace path. Defaults to the current workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | |
| kind | No | |
| line | No | |
| found | Yes | |
| score | No | |
| column | No | |
| symbol | Yes | |
| snippet | No | |
| diagnostics | Yes | |
| schema_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds behavioral context: the tool returns a single deterministic declaration site (file, line, kind, snippet), and mentions caching via the bypass_cache parameter. This covers the main behavioral traits without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single introductory sentence followed by three bullet points. It front-loads the core purpose and uses structured bullets for clarity. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description adequately covers the tool's purpose, behavior, and use cases without requiring return value details. It mentions the output components (file, line, kind, snippet) and references sibling tools, providing sufficient context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add significant new semantics beyond the schema descriptions for individual parameters. The overall context helps understand parameter usage (e.g., path filters), but no specific parameter details are enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Return the single best deterministic declaration site for a known identifier.' It uses a specific verb ('Return') and resource ('declaration site'), and distinguishes from siblings by contrasting with symbol_search (ranked) and symbol_references (non-declaration usages).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists three bullet-pointed use cases, including 'Jump straight to the canonical declaration' and 'Get one definitive answer rather than a ranked list.' It also explicitly mentions complementing sibling tools symbol_search and symbol_references, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tool_manifestTool ManifestARead-onlyIdempotent
Discover available tools and capabilities exposed by the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| version | Yes | |
| features | Yes | |
| capabilities | Yes | |
| discoverability | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint as true, so the description carries minimal burden. The description accurately conveys a safe, read-only discovery operation with no side effects, fully consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence with no unnecessary words. It is front-loaded with the key action and resource, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no input parameters, annotations covering safety, and an output schema (as indicated in context), the description is completely adequate. It tells the agent exactly what the tool does without needing further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, so the description needs to add no parameter information. According to the rubric, baseline for 0 params is 4, which is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Discover available tools and capabilities exposed by the server' clearly states the verb (Discover) and resource (tools and capabilities). It distinguishes from siblings, which are specific functional tools, by indicating this is a meta-tool for listing available capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: an agent should use this tool to learn what other tools are available. While it does not explicitly state when not to use or provide alternatives, the simplicity of the tool makes the context clear. No exclusion guidance is needed given the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_contentValidate ContentARead-onlyIdempotent
Run multi-tier validation on content.
Tier 1 (Deterministic):
Balanced brackets/braces
Valid JSON structure
Non-empty content
Tier 2 (Heuristic):
TODO/FIXME detection in code
Console statement detection
Hardcoded URL detection
Line length checks
Also scrubs secrets automatically (can be disabled).
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Content to validate | |
| file_path | No | Optional file path for context | |
| content_type | No | Type of content for context-aware validation | raw_text |
| scrub_secrets | No | Enable secret scrubbing (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds that secret scrubbing is automatic and can be disabled, which is a behavioral trait. However, there is a potential contradiction: scrubbing secrets may imply modification, conflicting with readOnlyHint, but it could be interpreted as a pure transformation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with bullet points for the two tiers. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description thoroughly explains the tool's functionality, it does not mention what the tool returns (e.g., a validation report or success status). Given no output schema, this is a gap for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter already has a description. The description adds no additional meaning beyond listing the validation tiers, which do not map directly to parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Run multi-tier validation on content', specifying a clear verb and resource. It then details two tiers of checks, distinguishing it from sibling tools like 'run_static_analysis' or 'scrub_secrets' which focus on specific aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies general validation usage but does not explicitly state when to use this tool versus alternatives like 'run_static_analysis' or 'scrub_secrets'. No exclusions or context for selection are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_historyView HistoryBRead-onlyIdempotent
View version history for a plan.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of versions to retrieve | |
| plan_id | Yes | Plan ID | |
| include_plans | No | Include full plan content in each version |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's value is limited. It adds that the tool retrieves version history, but does not disclose other behaviors like pagination, error handling, or response format. Given annotations, the description 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 6 words, extremely concise with no wasted text. However, it could benefit from slightly more structure or elaboration without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is minimally sufficient. However, it lacks details about the output format (e.g., ordering, limits) and does not mention any edge cases. With no output schema, the description should provide more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the input schema already describes all three parameters with descriptions. The description does not add any additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool views version history for a plan. It uses a specific verb and resource, and while it doesn't explicitly differentiate from siblings, the action is distinct from other tools like load_plan or view_progress.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description lacks context about prerequisites, exclusions, or when other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_progressView ProgressBRead-onlyIdempotent
View execution progress for a plan.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | Plan ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so safety profile is covered. The description adds no extra behavioral context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, straightforward sentence with no fluff. Could be more detailed without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, yet the description does not hint at what 'progress' information is returned. Lacks necessary context for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description adds no additional meaning beyond the schema's 'Plan ID'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'View' and resource 'execution progress for a plan'. It is specific enough to distinguish from sibling tools like view_history or index_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of requisite context or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_planVisualize PlanARead-onlyIdempotent
Generate diagrams from an implementation plan.
Use this to visualize the plan's structure in different ways.
Diagram types:
dependencies: Shows step dependencies as a DAG (who blocks whom)
architecture: Shows the architecture diagram if one was generated
gantt: Shows steps as a Gantt chart timeline
Returns Mermaid diagram code that can be rendered.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | The plan as a JSON string | |
| diagram_type | No | Type of diagram to generate (default: dependencies) | dependencies |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safety. The description adds important behavioral detail: 'Returns Mermaid diagram code that can be rendered,' which is non-obvious and beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-sentence purpose, a usage line, a bullet list of diagram types, and a closing sentence about output. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, no output schema, and annotations covering safety, the description fully explains the tool's purpose, parameter semantics, and output format. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides good descriptions (100% coverage), but the description adds meaningful context by explaining each diagram type in detail, noting the default value, and clarifying the format of the 'plan' parameter (JSON string).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate diagrams from an implementation plan' and lists three specific diagram types (dependencies, architecture, gantt), distinguishing it from sibling tools which are not visualization-related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case ('visualize the plan's structure') and explains each diagram type, implicitly guiding when to use which. However, it does not explicitly state when not to use this tool or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
29 tool updates
v1.9.1- Added
add_memory - Removed
compare_plan_versions - Removed
create_plan - Added
delete_plan - Added
fail_step - Removed
find_callees - Removed
get_file - Removed
get_review_status - Removed
impact_analysis - Added
index_status - Added
list_memories - Removed
list_plans - Added
load_plan - Removed
pause_review - Added
refine_plan - Added
request_approval - Removed
resume_review - Added
review_auto - Added
review_changes - Removed
review_git_diff - Removed
review_memory_suggestions - Removed
rollback_plan - Removed
save_plan - Added
symbol_definition - Removed
trace_symbol - Added
validate_content - Added
view_history - Added
visualize_plan - Removed
why_this_context
34 tool updates
v1.9.1- Removed
add_memory - Added
call_relationships - Removed
check_invariants - Removed
codebase_retrieval - Changed
create_plan10 fields changed- added
Input schema / properties / auto_scopeAdded value: +{ + "default": true, + "description": "Automatically infer likely include paths when no explicit scope is provided (default: true)", + "type": "boolean" +} - changed
Input schema / properties / context_token_budget / defaultPrevious value: -12000New value: +8000 - changed
Input schema / properties / context_token_budget / descriptionPrevious value: -"Token budget for context retrieval (default: 12000)"New value: +"Token budget for context retrieval (default: 8000)" - added
Input schema / properties / depthAdded value: +{ + "default": "auto", + "description": "Explicit planning depth/budget mode (default: \"auto\"). \"auto\" infers depth from task breadth (architecture/migration/multi-step signals) and from requested context limits; broad requests are never silently downgraded to a compact outline. \"compact\" forces a lightweight local outline. \"deep\" forces full AI-backed planning regardless of task brevity.", + "enum": [ + "auto", + "compact", + "deep" + ], + "type": "string" +} - added
Input schema / properties / exclude_pathsAdded value: +{ + "description": "Optional workspace-relative glob filters to exclude matching paths after include filtering.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / generate_diagrams / defaultPrevious value: -trueNew value: +false - changed
Input schema / properties / generate_diagrams / descriptionPrevious value: -"Generate architecture diagrams in the plan (default: true)"New value: +"Generate architecture diagrams in the plan when requested (default: false)" - added
Input schema / properties / include_pathsAdded value: +{ + "description": "Optional workspace-relative glob filters to include matching paths only.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / max_context_files / defaultPrevious value: -10New value: +8 - changed
Input schema / properties / max_context_files / descriptionPrevious value: -"Maximum number of files to include in context analysis (default: 10)"New value: +"Maximum number of files to include in context analysis (default: 8)"
- Removed
delete_plan - Removed
enhance_prompt - Removed
execute_plan - Removed
fail_step - Added
find_callees - Added
find_callers - Removed
get_context_for_prompt - Added
impact_analysis - Removed
index_status - Removed
index_workspace - Removed
list_memories - Removed
load_plan - Changed
reactive_review_pr1 field changed- added
Input schema / properties / max_workersAdded value: +{ + "description": "Maximum number of parallel workers for this review session", + "type": "number" +}
- Removed
refine_plan - Changed
reindex_workspace2 fields changed- added
Input schema / properties / backgroundAdded value: +{ + "default": false, + "description": "Run reindexing in the background without blocking the tool call", + "type": "boolean" +} - added
Input schema / properties / taskAdded value: +{ + "default": false, + "description": "Return a task ID and track reindexing progress without blocking the tool call", + "type": "boolean" +}
- Removed
request_approval - Removed
review_auto - Removed
review_changes - Changed
review_diff3 fields changed- added
Input schema / properties / backgroundAdded value: +{ + "default": false, + "description": "Run review without blocking the tool call (default: false)", + "type": "boolean" +} - added
Input schema / properties / options / properties / llm_timeout_msAdded value: +{ + "description": "Optional AI timeout override in milliseconds for this review call (1000-1800000).", + "maximum": 1800000, + "minimum": 1000, + "type": "number" +} - added
Input schema / properties / taskAdded value: +{ + "default": false, + "description": "Return a task ID and track review progress without blocking (default: false)", + "type": "boolean" +}
- Changed
review_git_diff1 field changed- added
Input schema / properties / options / properties / llm_timeout_msAdded value: +{ + "description": "Optional AI timeout override in milliseconds for this review call (1000-1800000).", + "maximum": 1800000, + "minimum": 1000, + "type": "number" +}
- Added
review_memory_suggestions - Changed
run_static_analysis2 fields changed- added
Input schema / properties / backgroundAdded value: +{ + "default": false, + "description": "Run static analysis without blocking the tool call (default: false)", + "type": "boolean" +} - added
Input schema / properties / taskAdded value: +{ + "default": false, + "description": "Return a task ID and track analysis progress without blocking (default: false)", + "type": "boolean" +}
- Removed
semantic_search - Changed
tool_manifest1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": false, + "properties": { + "capabilities": { + "items": { + "type": "string" + }, + "type": "array" + }, + "discoverability": { + "additionalProperties": true, + "type": "object" + }, + "features": { + "additionalProperties": true, + "type": "object" + }, + "tools": { + "items": { + "type": "string" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "required": [ + "version", + "capabilities", + "tools", + "discoverability", + "features" + ], + "type": "object" +}
- Added
trace_symbol - Removed
validate_content - Removed
view_history - Removed
visualize_plan - Added
why_this_context
42 tool updates
v1.9.0- First observed
add_memory - First observed
check_invariants - First observed
clear_index - First observed
codebase_retrieval - First observed
compare_plan_versions - First observed
complete_step - First observed
create_plan - First observed
delete_plan - First observed
enhance_prompt - First observed
execute_plan - First observed
fail_step - First observed
get_context_for_prompt - First observed
get_file - First observed
get_review_status - First observed
get_review_telemetry - First observed
index_status - First observed
index_workspace - First observed
list_memories - First observed
list_plans - First observed
load_plan - First observed
pause_review - First observed
reactive_review_pr - First observed
refine_plan - First observed
reindex_workspace - First observed
request_approval - First observed
respond_approval - First observed
resume_review - First observed
review_auto - First observed
review_changes - First observed
review_diff - First observed
review_git_diff - First observed
rollback_plan - First observed
run_static_analysis - First observed
save_plan - First observed
scrub_secrets - First observed
semantic_search - First observed
start_step - First observed
tool_manifest - First observed
validate_content - First observed
view_history - First observed
view_progress - First observed
visualize_plan
TDQS
Most tools have distinct purposes, but pairs like call_relationships/find_callers and clear_index/reindex_workspace are closely related, potentially causing confusion. Overall descriptions help differentiate, but minor overlaps exist.
The majority use verb_noun snake_case (e.g., add_memory, complete_step), but a few use noun_noun (index_status, symbol_definition) or adjective_noun (reactive_review_pr), creating slight inconsistency. The pattern is largely predictable.
At 28 tools, the server is borderline heavy for a single purpose. The broad 'context engine' scope partially justifies the count, but it feels overloaded compared to well-scoped servers.
Notable gaps exist: no create_plan tool despite load/delete/refine, and get_review_status is referenced in reactive_review_pr but not provided. Missing lifecycle operations hinder agent workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP memory server. One memory your agents share — across models, devices and apps.
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseBqualityCmaintenanceA local-first MCP server that provides AI agents with safe codebase access through file discovery, hybrid lexical-semantic search, and project introspection. It features durable local memory and semantic indexing while keeping all data and processing entirely on your local machine.74296MIT
- FlicenseNot gradedqualityFmaintenanceA local-first, team-ready MCP server providing durable memory for LLM-based coding workflows with multiple storage backends and fast search.4-
- AlicenseNot gradedqualityAmaintenanceMCP server for local-first code intelligence, providing structural code graph, semantic search, and impact analysis to AI agents.2MIT
- AlicenseNot gradedqualityBmaintenanceLocal-first MCP server for AI coding agents that provides isolated code search, memory ledger, context rot detection, and cost governance.202MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kirachon/context-engine'
If you have feedback or need assistance with the MCP directory API, please join our Discord server