Local DeepWiki MCP Server
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., "@Local DeepWiki MCP Serverexplain how the authentication module works in my project"
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.
Local DeepWiki MCP Server
A local, privacy-focused MCP server that generates DeepWiki-style documentation for private repositories with RAG-based Q&A capabilities.
Quickstart
Try it immediately — a pre-built wiki of this project is included:
git clone https://github.com/UrbanDiver/local-deepwiki-mcp.git
cd local-deepwiki-mcp
uv sync # Install dependencies
deepwiki serve .deepwiki # Browse the wiki at http://localhost:8080Index your own repo — requires an LLM provider (OpenAI, Anthropic, or Ollama):
export OPENAI_API_KEY="..." # Or ANTHROPIC_API_KEY for Anthropic
deepwiki init # Configure LLM + embedding providers
deepwiki config health-check # Verify providers are working
deepwiki update /path/to/repo # Index a repository and generate wiki
deepwiki serve /path/to/repo/.deepwikiRequirements: Python 3.11+, uv (see Installing uv below), and an LLM provider:
OpenAI (default) — set
OPENAI_API_KEYenvironment variableAnthropic — set
ANTHROPIC_API_KEYenvironment variableOllama (fully local, requires GPU) — install Ollama, then
ollama pull qwen3-coder:30b
Related MCP server: Documentation MCP Server
Features
Multi-language code parsing using tree-sitter (Python, TypeScript/JavaScript, Go, Rust, Java, C/C++, Objective-C, Swift, Ruby, PHP, Kotlin, C#)
AST-based chunking that respects code structure (functions, classes, methods)
Semantic search using LanceDB vector database
LLM-powered wiki generation with support for Ollama (local), Anthropic, and OpenAI
Configurable embeddings - local (sentence-transformers) or OpenAI
Incremental indexing - only re-process changed files
RAG-based Q&A - ask questions about your codebase
Architecture health - 9-dimension scoring (complexity, coupling, smells, layers, churn, cohesion, duplication, testability, maintainability)
Deep Research mode - multi-step reasoning for complex architectural questions
Web UI - browse generated wiki in your browser
Export to HTML - generate static HTML site for sharing
Export to PDF - generate printable PDF documentation with mermaid diagrams
Interactive Codemap - cross-file execution-flow visualization with Mermaid diagrams
Lazy page generation - missing wiki pages generated on demand when visited
Installation
Using uv (recommended)
cd local-deepwiki-mcp
uv syncAll LLM providers and the web UI are included by default. Optional extra for PDF export:
uv sync --extra pdf # Add WeasyPrint for PDF export
uv sync --extra all # Same as --extra pdf (all optional extras)Using pip
cd local-deepwiki-mcp
pip install -e ".[all]" # Recommended: install with all extras
# or: pip install -e . # Minimal: core onlyConfiguration
Run the init wizard to generate a config file automatically:
deepwiki init # Interactive wizard
deepwiki init --non-interactive # Auto-detect defaults (CI/CD)Or create one manually at ~/.config/local-deepwiki/config.yaml:
embedding:
provider: "local" # or "openai"
local:
model: "all-MiniLM-L6-v2"
openai:
model: "text-embedding-3-small"
llm:
provider: "openai" # or "anthropic" or "ollama"
openai:
model: "gpt-4o"
# base_url: "https://your-proxy.example.com/v1" # For OpenAI-compatible proxies
anthropic:
model: "claude-sonnet-4-20250514"
ollama:
model: "qwen3-coder:30b"
base_url: "http://localhost:11434"
parsing:
languages:
- python
- typescript
- javascript
- go
- rust
- java
- c
- cpp
max_file_size: 1048576
exclude_patterns:
- "node_modules/**"
- "venv/**"
- ".git/**"
chunking:
max_chunk_tokens: 512
overlap_tokens: 50
output:
wiki_dir: ".deepwiki"
vector_db_name: "vectors.lance"Installing uv
uv is a fast Python package manager. If you don't have it:
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or with pip
pip install uv
# Or with Homebrew
brew install uvAfter installing, restart your terminal or run source ~/.bashrc (or ~/.zshrc).
MCP Server Integration
The MCP server runs over stdio and works with any MCP-compatible AI tool. Start it manually with:
deepwiki mcpOr configure your AI tool to launch it automatically:
Claude Code
Add to ~/.claude/claude_code_config.json:
{
"mcpServers": {
"local-deepwiki": {
"command": "uv",
"args": ["run", "--directory", "/path/to/local-deepwiki-mcp", "local-deepwiki"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
}
}
}Cursor
Add to Cursor's MCP settings (Settings > MCP Servers > Add):
{
"mcpServers": {
"local-deepwiki": {
"command": "uv",
"args": ["run", "--directory", "/path/to/local-deepwiki-mcp", "local-deepwiki"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"local-deepwiki": {
"command": "uv",
"args": ["run", "--directory", "/path/to/local-deepwiki-mcp", "local-deepwiki"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
}
}
}VS Code (Copilot)
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"local-deepwiki": {
"command": "uv",
"args": ["run", "--directory", "/path/to/local-deepwiki-mcp", "local-deepwiki"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
}
}
}
}Generic (any MCP client)
The server communicates over stdio using the MCP protocol. Launch with:
uv run --directory /path/to/local-deepwiki-mcp local-deepwikiOr without uv (after pip install -e .):
local-deepwikiNote: Replace /path/to/local-deepwiki-mcp with the actual path where you cloned the repository. Add ANTHROPIC_API_KEY to the env block if using Anthropic instead of OpenAI.
MCP Tools (64 tools)
The server exposes 64 MCP tools across 8 categories. Below are the most commonly used tools with examples, followed by the full tool reference.
Core Tools
index_repository
Index a repository and generate wiki documentation.
{
"repo_path": "/path/to/repo",
"full_rebuild": false,
"llm_provider": "ollama",
"embedding_provider": "local"
}ask_question
Ask a question about the codebase using RAG.
{
"repo_path": "/path/to/repo",
"question": "How does the authentication system work?",
"max_context": 5
}deep_research
Multi-step reasoning for complex architectural questions. Performs query decomposition, parallel retrieval, gap analysis, and comprehensive synthesis.
{
"repo_path": "/path/to/repo",
"question": "How does the authentication system interact with the database layer?",
"max_chunks": 30
}Tool | Description |
| Index a repository and generate wiki documentation |
| RAG-based Q&A about the codebase |
| Multi-step reasoning with query decomposition and synthesis |
| Get the wiki table of contents |
| Read a specific wiki page |
| Semantic search across the codebase |
| Export wiki to a static HTML site |
| Export wiki to PDF with mermaid diagram rendering |
Generator Tools (12)
Tool | Description |
| Generate Mermaid diagrams (class, dependency, module, sequence) |
| Function call graph analysis |
| Searchable code entity glossary |
| Class hierarchy tree |
| Documentation coverage analysis |
| Git-based changelog generation |
| Parameter and return type extraction |
| Extract test examples for entities |
| Detect outdated wiki pages |
| Scan for hardcoded credentials |
| Repository index status and health |
| List all indexed repositories |
Analysis & Search Tools (10)
Tool | Description |
| Full-text search across wiki pages and code entities |
| Levenshtein-based name matching ("Did you mean?") |
| Imports, callers, and related files for a source file |
| Composite: glossary + call graph + inheritance + tests + API docs |
| Blast radius analysis with reverse call graph and risk level |
| Cyclomatic complexity and nesting depth via tree-sitter AST |
| Map git diff to affected wiki pages and entities |
| RAG-based Q&A about code changes |
| Parsed metadata from pyproject.toml, package.json, etc. |
| Wiki health dashboard: index, pages, coverage, status |
Architecture Health Tools (17)
Tool | Description |
| Composite health grade (A-F) across 9 dimensions |
| Rank functions by complexity, cognitive complexity, params, length, or nesting |
| Robert C. Martin coupling metrics (Ca, Ce, I, A, D) |
| Detect god classes, feature envy, long methods, etc. |
| Layer violation detection (handlers→services→core) |
| File change frequency with churn×complexity composite |
| Co-change coupling via Jaccard similarity |
| LCOM4 class cohesion and module import cohesion |
| Type 1 (exact) and Type 2 (structural) clone detection |
| Test-to-code ratio, coverage mapping, assertion density |
| Per-function Maintainability Index (Halstead + CC + LOC) |
| Prioritized refactoring suggestions with effort/impact |
| Compare health between two git refs |
| Historical health score snapshots |
| Module-scoped complexity, smells, coupling, risk |
| New developer onboarding guide |
| Interactive guided tours of the codebase |
Codemap Tools (2)
Tool | Description |
| Cross-file execution-flow maps with Mermaid diagrams and LLM narrative |
| Discover interesting entry points from call graph hubs |
Research & Progress Tools (4)
Tool | Description |
| List saved deep research checkpoints |
| Resume a previously checkpointed research session |
| Cancel an in-progress research operation |
| Check progress of long-running operations |
Agentic Tools (5)
Tool | Description |
| Context-aware suggestions for next tools to use based on recent actions |
| Run predefined multi-step workflows (e.g., full analysis, quick review) |
| Batch version of |
| Agentic RAG: grades chunk relevance, rewrites queries for better results |
| Discover relevant tools based on a natural language query |
Web Server Tools (2)
Tool | Description |
| Start the wiki web server for browsing documentation |
| Stop a running wiki web server |
CLI Commands
All commands are subcommands of the unified deepwiki CLI. Legacy entry points (deepwiki-serve, deepwiki-export, etc.) still work for backwards compatibility.
Command | Description |
| Interactive setup wizard for configuration |
| Show index health, freshness, and wiki coverage |
| Index repo and regenerate wiki (incremental) |
| Start the MCP server (for IDE integration) |
| Serve wiki with web UI |
| Watch mode - auto-reindex on file changes |
| Export wiki to static HTML |
| Export wiki to PDF |
| Configuration management (validate, show, health-check, profile) |
| Interactive fuzzy code search |
| Cache management (stats, clear, cleanup) |
# Setup
deepwiki init # Interactive wizard
deepwiki init --non-interactive # Auto-detect defaults (CI/CD)
deepwiki init --non-interactive --force # Overwrite existing config
# Indexing & status
deepwiki update # Index repo and regenerate wiki
deepwiki update --full-rebuild # Force full rebuild
deepwiki update --dry-run # Preview what would change
deepwiki status # Show index health dashboard
deepwiki status --json # Machine-readable output
deepwiki status --verbose # Detailed file-level info
# MCP server
deepwiki mcp # Start MCP server (stdio)
# Web UI & export
deepwiki serve .deepwiki --port 8080 # Browse wiki in browser
deepwiki export .deepwiki --output ./html-export # Export to static HTML
deepwiki export-pdf .deepwiki -o docs.pdf # Export to single PDF
deepwiki export-pdf .deepwiki --separate -o dir/ # Export each page as PDF
# Configuration
deepwiki config show # Show effective configuration
deepwiki config show --raw # Show raw YAML
deepwiki config validate # Check config for errors
deepwiki config health-check # Verify provider connectivity
deepwiki config profile list # List saved config profiles
deepwiki config profile save dev # Save current config as profile
deepwiki config profile use prod # Switch to a profile
# Utilities
deepwiki search # Interactive fuzzy code search
deepwiki watch /path/to/repo # Auto-reindex on file changes
deepwiki cache stats # Show cache hit rates and sizes
deepwiki cache clear --llm --embedding # Clear caches
deepwiki cache cleanup # Remove expired entriesAPI Keys
OpenAI (default)
Sign in (or create an account)
Click Create new secret key
Copy the key and set it in your environment:
export OPENAI_API_KEY="sk-..."To persist it, add the export to your ~/.zshrc or ~/.bashrc.
Anthropic
Click Create Key
Set it in your environment:
export ANTHROPIC_API_KEY="sk-ant-..."Using an OpenAI-Compatible Proxy
If your organization provides an OpenAI-compatible API endpoint (e.g., through GitHub Copilot Enterprise or a corporate proxy), set the base_url in your config:
llm:
provider: "openai"
openai:
model: "gpt-4o"
base_url: "https://your-proxy.example.com/v1"The OPENAI_API_KEY environment variable is still required for authentication.
Prerequisites
For local LLM support:
Ollama installed and running
A model pulled (e.g.,
ollama pull llama3.2)
For PDF export:
System libraries:
pango,cairo,gdk-pixbuf(WeasyPrint dependencies)macOS:
brew install pangoUbuntu/Debian:
apt install libpango-1.0-0 libpangocairo-1.0-0
Optional for mermaid diagrams:
npm install -g @mermaid-js/mermaid-cli
Troubleshooting
Ollama Connection Errors
If you see "Failed to connect to Ollama":
Ensure Ollama is running:
ollama serveVerify the model is pulled:
ollama listCheck if the default URL works:
curl http://localhost:11434/api/tagsIf using a custom port, update
config.yamlwith the correctbase_url
PDF Export Fails
"pango not found" or similar Cairo/Pango errors:
macOS:
brew install pango cairo gdk-pixbufUbuntu/Debian:
apt install libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0Fedora:
dnf install pango cairo gdk-pixbuf2
Mermaid diagrams not rendering in PDF:
Install mermaid-cli:
npm install -g @mermaid-js/mermaid-cliVerify with:
mmdc --versionWithout mermaid-cli, diagrams show as code blocks
Memory Issues on Large Repositories
For repositories with 100k+ lines of code:
Increase batch size limits in config if you have more RAM
Use
full_rebuild: falsefor incremental updates after initial indexingConsider excluding large generated files via
exclude_patternsin config
LLM Quality Issues
If wiki content has hallucinations or low quality:
Switch from Ollama to Anthropic or OpenAI for better results
Try a larger local model (e.g.,
qwen3-coder:30binstead ofllama3.2)Ensure source files are properly parsed (check supported languages)
Web UI Not Loading
Check if port 8080 is in use:
lsof -i :8080Try a different port:
deepwiki serve .deepwiki --port 8081Ensure
.deepwikidirectory exists and contains generated wiki
Example Configurations
The examples/ directory contains sample configuration files:
config-local.yaml- Fully local setup with Ollama and sentence-transformersconfig-cloud.yaml- Cloud-based setup using Anthropic/OpenAIconfig-hybrid.yaml- Local embeddings with cloud LLMroles.yaml- RBAC role configuration example
Development
# Install dev dependencies
uv sync --extra dev
# Run tests
pytest
# Run the server directly
uv run local-deepwikiArchitecture
┌─────────────────────────────────────────────────────────────────────┐
│ MCP Server (Python/FastMCP) │
├─────────────────────────────────────────────────────────────────────┤
│ 43 tools across 8 categories: │
│ Core (8) · Generators (12) · Analysis & Search (10) · Codemap (2) │
│ Research & Progress (4) · Agentic (5) · Web Server (2) │
└─────────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Tree-sitter │ │ LanceDB │ │ LLM Provider │
│ (Code Parsing) │ │ (Vector Store) │ │ (Doc Generation) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────────────────────────────────┐
│ Flask Web UI │
│ Wiki Browser · Chat (RAG Q&A) · Codemap Explorer · Search │
└──────────────────────────────────────────────────────────────────┘License
MIT
Available Tools
65 toolsanalyze_architectureARead-onlyIdempotent
Comprehensive architecture analysis in a single call. Runs health check, dependency analysis, design smell detection, and hotspot ranking, then returns a pre-synthesized markdown narrative report. No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to analyze | |
| detail_level | No | Output detail level: summary (~2K chars), standard (~6K, default), full (~12K) | |
| focus | No | Focus area: all (default), complexity, coupling, or smells |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and idempotent behavior. The description adds that it returns a pre-synthesized markdown narrative report, which is useful context. No contradictions; transparency is good but could mention if any side effects or caching occur.
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: first explains the comprehensive nature and included analyses, second adds the key usage note about no indexing. Every sentence provides value, no wasted words, 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 the tool's complexity (combining multiple analyses) and the lack of an output schema, the description adequately sets expectations: what analyses are run, output format (markdown narrative), and a prerequisite (no indexing needed). It is complete for an agent to understand and invoke correctly.
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 clear descriptions for each parameter (repo_path, detail_level with char limits, focus). The description does not add new parameter semantics beyond the schema, so 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 performs comprehensive architecture analysis by running health check, dependency analysis, design smell detection, and hotspot ranking in a single call. It distinguishes itself from sibling tools that focus on individual analyses (e.g., get_architecture_health, get_design_smells, get_hotspots).
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 notes 'No prior indexing required,' which is a key usage guideline. It implies this is the all-in-one option, but does not explicitly state when to prefer this over individual analysis tools or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_diffARead-onlyIdempotent
Analyze git diff between two refs. Supports two modes:
mode='structured' (default): Map changed files to affected wiki pages and code entities. Returns structured analysis.
mode='question': Ask questions about the diff using RAG. Combines git diff with vector search context and LLM synthesis. Requires 'question' parameter.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository (must be a git repo) | |
| mode | No | Analysis mode: 'structured' for file/entity mapping, 'question' for natural-language Q&A (default: structured) | |
| question | No | Question about the code changes (required when mode='question') | |
| base_ref | No | Git ref to diff from (default: HEAD~1) | |
| head_ref | No | Git ref to diff to (default: HEAD) | |
| include_content | No | Include diff content for each file (default: false, only for mode='structured') | |
| max_context | No | Maximum code chunks for context (default: 10, max: 30, only for mode='question') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description complements these by clarifying mode-specific behavior (e.g., include_content only for structured, max_context only for question) and that no prior indexing is required. No contradictions.
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 with two short paragraphs. The first sentence captures the core purpose. Modes are listed with bullet-like clarity. Every sentence adds information, with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and 7 parameters, the description covers modes, defaults, mode-specific parameter constraints, and the no-indexing requirement. It lacks an explicit description of the output format, but the modes imply structured or LLM-generated text. Without an output schema, the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 7 parameters. The description adds value by explaining mode-specific conditional requirements (e.g., question required when mode='question') and defaults (base_ref defaults to HEAD~1). This goes 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 clearly states the tool analyzes git diffs between two refs and details two distinct modes: structured for file/entity mapping, and question for natural-language Q&A. This distinguishes it from sibling tools like ask_about_diff.
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 explains when to use each mode (structured for mapping, question for Q&A) and notes that question mode requires the 'question' parameter. It also states 'No prior indexing required.' It lacks explicit when-not-to-use but provides clear context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_about_diffARead-onlyIdempotent
Ask questions about recent code changes using RAG. Combines git diff with vector search context and LLM synthesis to answer questions like 'What changed?', 'Are there any bugs?', or 'What's the impact?'.
Note: This is an alias for analyze_diff with mode='question'.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository (must be a git repo) | |
| question | Yes | Question about the code changes | |
| base_ref | No | Git ref to diff from (default: HEAD~1) | |
| head_ref | No | Git ref to diff to (default: HEAD) | |
| max_context | No | Maximum code chunks for context (default: 10, max: 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe, read-only behavior. Description adds that it combines git diff, vector search, and LLM synthesis, and mentions no indexing required. Adds useful context beyond annotations 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?
Concise and front-loaded: three sentences plus a note. Every sentence 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?
Describes the tool's mechanism and alias but lacks information about the return format (e.g., plain text, structured). With no output schema, the description should hint at the nature of the response. Otherwise, it adequately covers the 5 parameters and usage 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?
Input schema has 100% coverage with descriptions, so baseline is 3. Description adds context about the process (RAG, diff) but doesn't significantly enhance parameter meaning beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool answers questions about recent code changes using RAG, with concrete examples like 'What changed?' or 'Are there any bugs?'. Explicitly notes it's an alias for analyze_diff with mode='question', distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context for when to use (questions about recent code changes) and states 'No prior indexing required'. Identifies as alias for a specific mode of analyze_diff, implying alternatives. Lacks explicit when-not-to-use or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_questionARead-onlyIdempotent
Ask a question about an indexed repository using RAG. Returns an answer based on relevant code context.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "question": "How does authentication work?"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| question | Yes | Natural language question about the codebase | |
| max_context | No | Maximum number of code chunks for context (default: 10) | |
| agentic_rag | No | Enable agentic RAG: grade chunk relevance and auto-rewrite query if results are poor (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that the tool uses RAG, returns answers based on relevant code context, and explains the agentic_rag parameter's effect (relevance grading and query rewriting). This adds valuable context 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 brief (three sentences plus example), front-loaded with the core purpose, and includes necessary prerequisite and example. Every sentence adds value with no 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?
Given the tool's complexity (RAG, optional agentic mode) and lack of output schema, the description could be more complete about the return format or what the answer looks like. It vaguely says 'Returns an answer', which is sufficient but not fully informative.
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 covers 100% of parameters with descriptions. The description adds an example and explains the behavioral implication of the 'agentic_rag' parameter, which goes beyond the schema's basic description.
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 asks questions about an indexed repository using RAG and returns an answer based on code context. It uses a specific verb and resource, and while it doesn't explicitly differentiate from siblings like 'query_codebase', the RAG aspect and prerequisite distinguish it implicitly.
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 states the prerequisite 'index_repository must be called first', and provides an example. However, it lacks guidance on when not to use this tool or alternatives, which would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_explain_entitiesARead-onlyIdempotent
Explain multiple code entities in a single call. Loads the search index once and looks up each entity name. More efficient than calling explain_entity repeatedly.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| entity_names | Yes | List of entity names to explain (max 20) | |
| depth | No | Depth of explanation: 'shallow' (search index only, default) or 'full' (calls explain_entity for each) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that it loads the search index once, which is behavioral context beyond annotations. No contradictions. The requirement of prior index_repository call is also disclosed.
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 concise sentences, front-loaded with the primary action, then efficiency and prerequisite. 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?
The description covers the main purpose, efficiency benefit, and a critical prerequisite. While it does not detail return value (no output schema), the tool name and context imply textual explanations. The depth parameter is documented in schema. Could mention that 'shallow' uses only the index, but schema covers it. Overall complete enough for a batch 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 descriptions for all three parameters. The description mentions 'depth' is an enum but does not add new meaning beyond what the schema provides. Thus 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?
Clearly states it explains multiple code entities in one call, using the search index for efficiency. Distinguishes itself from the sibling 'explain_entity' by highlighting the batch nature and prerequisite.
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 states when to use: more efficient than calling 'explain_entity' repeatedly. Also specifies a clear prerequisite: 'index_repository must be called first.' No guidance on when not to use, but the efficiency claim implies it's for multiple entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_researchA
Cancel an active deep research session and save its checkpoint. The research can be resumed later using the deep_research tool with resume_research_id.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| research_id | Yes | ID of the research session to cancel (from list_research_checkpoints) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that cancellation is non-destructive (saves a checkpoint) and requires a prior index_repository call. Annotations are neutral and not contradicted; the description adds meaningful behavioral context beyond them.
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 plus a requirement line; every piece is essential and clearly front-loaded with the primary 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?
Given the tool's simplicity (2 params, no output schema), the description covers the action, follow-up, and prerequisite, leaving no obvious gaps.
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%, but the description adds value by specifying that research_id comes from list_research_checkpoints, linking to another tool. This extra context aids correct invocation.
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 cancels an active deep research session and saves a checkpoint, which is a specific and unique action among siblings like deep_research and resume_research.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool (to cancel an active session), how to resume later, and the prerequisite (index_repository must be called first). It lacks explicit negative conditions but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_architectureARead-onlyIdempotent
Compare architecture health between two git refs. Shows which metrics improved or degraded, grade changes, and new/resolved smells. Uses git worktree for safe non-destructive analysis.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository (must be a git repo) | |
| base_ref | No | Git ref for baseline (default: HEAD~1) | |
| head_ref | No | Git ref for comparison target (default: HEAD) | |
| detail_level | No | Output detail: standard (default, scores + verdict) or full (adds coupling and smell diffs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds valuable context about using git worktree for safe non-destructive analysis and no prior indexing required, which goes beyond the annotations. No contradictions.
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: two sentences cover purpose, outputs, and key behavioral notes (safe worktree, no indexing). Every word earns its place 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?
Given the 4 parameters (all described in schema) and no output schema, the description provides adequate context about purpose and safety. It hints at outputs but does not fully explain the output format or detail_level options. Slightly more output detail would be beneficial.
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. The description does not elaborate on parameter meanings or provide additional semantics beyond the schema. It mentions output specifics but not 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 clearly states it compares architecture health between two git refs, listing specific outputs like metrics, grade changes, and smells. It distinguishes from sibling tools like get_architecture_health (which likely gets current health) and analyze_architecture (which might analyze a single ref).
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 notes 'No prior indexing required,' indicating a key condition for use. However, it does not explicitly state when to use this tool over alternatives like analyze_architecture or get_architecture_trends. More explicit guidance on when to compare vs. single-ref analysis would improve this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_researchA
Perform deep research on a codebase question using multi-step reasoning. Unlike ask_question (single retrieval), this performs query decomposition, parallel retrieval, gap analysis, and comprehensive synthesis. Best for complex architectural questions. Supports checkpointing for long-running research that can be resumed if interrupted.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "question": "How is the event system architected?"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| question | Yes | Complex architectural question about the codebase | |
| max_chunks | No | Maximum total code chunks to analyze (default: 30) | |
| preset | No | Research mode preset: 'quick' (fast, fewer sub-questions), 'default' (balanced), 'thorough' (comprehensive, more analysis) | |
| resume_research_id | No | Optional checkpoint ID to resume an interrupted research session. Use list_research_checkpoints to see available checkpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations all false, so description bears the burden. Description explains multi-step process (query decomposition, parallel retrieval, gap analysis, synthesis) and checkpointing behavior. While it doesn't explicitly state read/write nature, the checkpointing implies statefulness, and the overall process is well-described.
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, front-loading the purpose, then differentiation, usage guidance, prerequisite, and example. 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?
Given the tool's complexity, the description covers key aspects: purpose, differentiation, prerequisites, and checkpointing. However, it does not describe the output format or return value, which could aid agent understanding. Nonetheless, for a research tool, the output is somewhat implied.
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 parameters are already well-documented. The description adds a usage example that demonstrates the required parameters but does not add new semantic details for optional parameters like max_chunks or preset 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 performs deep research on codebase questions using multi-step reasoning, distinguishing it from ask_question (single retrieval). It specifies the resource (codebase) and the action (deep research), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (complex architectural questions) and when not to (simple queries better suited for ask_question). States prerequisite (index_repository must be called first) and mentions checkpointing for long-running tasks, with reference to list_research_checkpoints for resumption.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_bugsARead-onlyIdempotent
Scan a repository for potential bugs using AST pattern matching. Detects bug patterns across Python, JavaScript, TypeScript, Go, Rust, Java, C, C++, C#, and Kotlin including mutable default arguments, bare excepts, unreachable code, empty catch blocks, missing breaks, and more. Set enrich=true for LLM verification.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to scan | |
| min_confidence | No | Minimum confidence threshold (default: medium) | |
| languages | No | Filter to specific languages | |
| enrich | No | Use LLM to verify and explain top findings (default: false) | |
| enrich_top_n | No | Max findings to send to LLM (default: 10, max: 50) | |
| exclude_tests | No | Exclude test files (default: true) | |
| file_path | No | Scope to a single file (relative path) | |
| top_n | No | Maximum findings to return (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: describes AST pattern matching mechanism, lists specific bug patterns, and mentions LLM verification option. No contradiction with readOnlyHint.
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 concise sentences: purpose, scope/details, and a key usage tip. Front-loaded with essential 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?
Covers purpose, languages, main feature (enrich), and a setup requirement. Could briefly mention output format but overall adequate given no 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 covers all 8 parameters; description adds clarity for the 'enrich' parameter beyond its schema description, enhancing agent understanding.
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?
Clearly states the tool scans repositories for bugs using AST pattern matching, naming specific languages and bug patterns, which distinguishes it from sibling tools like detect_secrets or analyze_architecture.
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 useful guidance like 'Set enrich=true for LLM verification' and 'No prior indexing required', but lacks explicit when-not-to-use or comparison to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_secretsARead-onlyIdempotent
Scan a repository for hardcoded credentials and secrets (API keys, tokens, passwords, private keys). Returns findings with type, location, confidence, and remediation advice.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to scan | |
| exclude_tests | No | Exclude test files from scan results (files matching test_*, *_test.*, tests/, etc.). Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds value by stating no prior indexing is needed, which is beyond annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: the first states purpose and return value, the second provides a usage note. No wasted words 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?
For a simple two-parameter tool with no output schema, the description covers purpose, return fields, and usage note. Annotations complement behavioral safety. Complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters adequately described. The description does not add further meaning to parameters, meeting the baseline for high coverage.
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 scans a repository for hardcoded credentials and secrets, returning findings with specific attributes. It distinguishes itself from sibling tools like detect_bugs and analyze_architecture.
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 notes 'No prior indexing required,' providing useful context, but it does not explicitly state when to use this tool versus alternatives 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.
detect_stale_docsARead-onlyIdempotent
Find wiki pages that may be outdated because their source files have been modified since the documentation was generated.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| threshold_days | No | Minimum days since source changed to consider stale (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds the key behavioral constraint that index_repository must be called first, which is not covered by annotations. No contradictions.
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 efficient sentences front-loading the core purpose and a crucial prerequisite. Every word earns its place 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?
The description covers purpose and a key prerequisite. No output schema exists, but the tool's return type (list of outdated pages) can be inferred from the purpose. For a simple detection tool, this is adequate.
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% description coverage for both parameters, so the description adds minimal extra meaning beyond what the schema already provides. 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 finds wiki pages that may be outdated due to source modifications, using specific verb 'find' and resource 'wiki pages'. It distinguishes from siblings like detect_bugs and detect_secrets which target different 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?
Explicitly mentions a prerequisite: 'index_repository must be called first'. This guides the agent on required prior steps. No explicit when-not-to-use or alternatives, but the prerequisite provides sufficient contextual guidance for typical usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_entityARead-onlyIdempotent
Get a comprehensive explanation of a function, class, or method by combining glossary info, call graph, inheritance tree, test examples, and API docs into a single response.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "entity_name": "MyClass"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| entity_name | Yes | Name of function, class, or method to explain | |
| include_call_graph | No | Include call graph info - callers and callees (default: true) | |
| include_inheritance | No | Include inheritance tree for classes (default: true) | |
| include_test_examples | No | Include usage examples from tests (default: true) | |
| include_api_docs | No | Include API signature details (default: true) | |
| max_test_examples | No | Max test examples to include (default: 3, range: 1-10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe, idempotent, read-only behavior. Description adds that it combines multiple data sources into a single response, which is a behavioral trait not captured by annotations. 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?
Two concise sentences plus example. Every sentence is informative. 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?
Description covers purpose and prerequisite but lacks details on output format, error conditions, or behavior when entity not found. Given no output schema, more completeness would be beneficial.
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 covers 100% of parameters with descriptions. Description provides an example but does not add significant new meaning beyond the schema. It hints at the composite nature but doesn't elaborate on parameters like max_test_examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get' and resource 'function, class, or method' and lists combined sources. Differentiates from siblings like get_call_graph or get_inheritance by being a composite.
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?
States explicit prerequisite ('index_repository must be called first'). Provides an example usage. However, it does not explicitly contrast with sibling tools or specify 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.
export_wiki_htmlAIdempotent
Export wiki documentation to static HTML files. Creates a self-contained website that can be viewed without a server.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki_path | Yes | Path to the wiki directory (typically {repo}/.deepwiki) | |
| output_path | No | Output directory for HTML files (default: {wiki_path}_html) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true, and description adds that it creates a self-contained website viewable without a server. No contradiction; disclosure of prerequisite adds 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?
Two concise sentences: first states purpose, second states prerequisite. No redundant 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?
With full schema coverage and annotations covering idempotency and safety, the description is complete for agent decision-making, including the prerequisite.
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 description does not need to elaborate on parameters. It adds no additional meaning beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Export wiki documentation to static HTML files' with a specific verb and resource, and distinguishes from siblings like export_wiki_pdf and serve_wiki.
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 mentions prerequisite: 'Requires: index_repository must be called first.' No explicit alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_wiki_pdfAIdempotent
Export wiki documentation to PDF format. Creates a printable PDF document with proper formatting, page numbers, and table of contents.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki_path | Yes | Path to the wiki directory (typically {repo}/.deepwiki) | |
| output_path | No | Output path for PDF file (default: {wiki_path}.pdf) | |
| single_file | No | If true, combine all pages into one PDF. If false, create separate PDFs for each page. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and destructiveHint=false. The description adds the prerequisite requirement but does not detail other behaviors such as file overwriting or error states. It adds some context beyond annotations but not extensively.
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 with only two sentences plus a requirement line, all front-loaded with essential information. Every sentence adds value, and there is no extraneous content.
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 covers key output features (formatting, page numbers, TOC) and the prerequisite. It lacks comparison with sibling tools and details on default output path behavior, but overall it provides sufficient context for a straightforward 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 clear descriptions for each parameter. The description does not add additional semantic 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 exports wiki documentation to PDF format, specifying key features like formatting, page numbers, and table of contents. It also distinguishes from sibling tool export_wiki_html by specifying the PDF output format.
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 states a prerequisite (index_repository must be called first), which guides usage. However, it does not provide guidance on when to use this tool versus alternatives like export_wiki_html, 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.
find_toolsARead-onlyIdempotent
Search for tools by capability description. Returns ranked matches with tool name, description, and whether indexing is required. Useful when an agent needs to discover which tool to use.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Capability description to search for (e.g., 'security scanning', 'code visualization') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that the tool returns ranked matches with tool name, description, and indexing requirement, which goes beyond the annotations that only indicate read-only and idempotent behavior.
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 three sentences that succinctly cover purpose, return value, and use case without any 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?
For a simple search tool with one parameter and no output schema, the description is fully complete, covering what it does, what it returns, and when to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides a complete description of the single parameter ('query'), and the description does not add additional semantic details beyond the schema example.
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 that the tool searches for tools by capability description and returns ranked matches, which distinguishes it from sibling tools that perform specific analysis tasks.
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 indicates it is useful for discovering which tool to use and explicitly mentions that no prior indexing is required. While it lacks explicit exclusions, the context is clear enough for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fuzzy_searchARead-onlyIdempotent
Fuzzy name matching for functions, classes, and methods using Levenshtein distance. Returns 'Did you mean?' suggestions, file locations, and similarity scores. Great for finding entities when you don't know the exact name.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| query | Yes | Name to search for (function, class, method) | |
| threshold | No | Minimum similarity score 0.0-1.0 (default: 0.6) | |
| limit | No | Maximum results to return (default: 10, max: 50) | |
| entity_type | No | Filter: 'function', 'class', 'method', or 'module' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds that it uses Levenshtein distance, returns suggestions, file locations, and similarity scores, and requires a prior index. This provides useful context beyond the annotations 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 extremely concise with two sentences and a prerequisite note. Every sentence adds value: first sentence defines purpose and output, second sentence states when to use, and the prerequisite is clearly noted. 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 absence of an output schema, the description adequately explains the return values (suggestions, file locations, similarity scores), states the prerequisite, and clarifies the intended use case. This is sufficient for a fuzzy search tool with well-documented parameters.
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% coverage with descriptions for all five parameters. The description does not add additional meaning to the parameters beyond what the schema 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 clearly states it performs fuzzy name matching for functions, classes, and methods using Levenshtein distance, and returns suggestions, file locations, and similarity scores. This specificity and resource identification distinguish it from sibling tools like search_code or index_repository.
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 indicates when to use the tool ('when you don't know the exact name') and explicitly states the prerequisite (index_repository must be called first). However, it does not explicitly exclude cases where exact names are known or suggest alternative tools like search_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_codemapARead-onlyIdempotent
Generate a Windsurf-style codemap: a focused execution-flow map with Mermaid diagram and narrative trace for a question or topic. Shows how code flows across files with file paths and line numbers. Best for understanding 'How does X work?' questions.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "query": "How does request handling work?"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| query | Yes | Question or topic to map (e.g., 'How does authentication work?', 'Trace the request handling pipeline') | |
| entry_point | No | Optional function/class to start from (e.g., 'handle_ask_question'). Auto-discovered if not provided. | |
| focus | No | Focus mode: execution_flow (calls), data_flow (transformations), dependency_chain (imports). Default: execution_flow | |
| max_depth | No | Max call graph traversal depth (default: 5, range: 1-10) | |
| max_nodes | No | Max nodes in the codemap (default: 30, range: 5-60) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true) are consistent. The description adds behavioral details: output includes Mermaid diagram and narrative trace with file paths and line numbers. No contradictions.
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 focused sentences plus an example, no unnecessary words. Structure is logical: purpose, output details, usage context and prerequisite.
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?
Adequately covers tool purpose and output, but lacks details on how focus modes affect the result, what happens with ambiguous queries, or behavior when max_depth/max_nodes are reached. Missing output schema leaves some uncertainty about return structure.
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% (all parameters have descriptions). The description provides a concrete example but doesn't add new semantic meaning 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 it generates a Windsurf-style codemap with Mermaid diagram and narrative trace for a specific question or topic. It distinguishes from siblings like get_call_graph by specifying focus on execution-flow mapping with file paths and line numbers.
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 clear context: 'Best for understanding 'How does X work?' questions', includes a prerequisite (index_repository must be called first), and an example. While it doesn't explicitly list alternatives, the usage context is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_docsARead-onlyIdempotent
Get API documentation with function signatures, parameters, return types, and docstrings for a specific file. Uses tree-sitter AST parsing for accuracy.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| file_path | Yes | File path relative to repo root to get API docs for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds that it uses tree-sitter AST parsing and requires no prior indexing, providing additional behavioral context 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 in the first sentence and a key detail in the second. No redundant 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?
Explains what the tool returns (signatures, parameters, return types, docstrings) and mentions parsing method. However, lacks details about output format and error handling, which are not covered by output schema (absent).
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 descriptions for both parameters. The description does not add further detail about parameter semantics, so baseline score applies.
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?
Clearly states it retrieves API documentation (function signatures, parameters, return types, docstrings) for a specific file using tree-sitter AST parsing. Distinct from siblings like get_file_context or get_call_graph.
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?
Only mentions 'No prior indexing required,' which implies a precondition but does not explicitly state when to use this tool versus alternatives 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.
get_architecture_healthARead-onlyIdempotent
Comprehensive architecture health check. Runs complexity hotspot analysis, coupling metrics, design smell detection, and layer dependency analysis in a single call. Returns an overall health grade (A-F), per-dimension scores, and top findings.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to analyze | |
| top_findings | No | Number of top findings per category (default: 5, max: 20) | |
| detail_level | No | Output detail level: summary (~1K chars), standard (~4K, default), full (~12K with file metrics) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), the description adds that the tool returns a health grade, per-dimension scores, and top findings, and that it requires no prior indexing. It fails to mention any potential side effects or limitations.
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: first states purpose, second lists analyses and output, third adds a important usage note. No redundancy, front-loaded with key info.
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 explains the return values (health grade, scores, findings). It covers the main purpose but could elaborate on prerequisites or performance implications.
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 description adds little beyond listing output format. The schema already describes all parameters adequately, so the 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 tool performs a comprehensive architecture health check combining multiple analyses (complexity, coupling, design smells, layer dependencies). It distinguishes from siblings like get_complexity_metrics by bundling them into a single call.
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 notes that no prior indexing is required and implies use for overall health assessment. However, it lacks explicit when-not-to-use guidance or direct comparisons to narrower sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_architecture_summaryARead-onlyIdempotent
Deprecated: use get_architecture_health with detail_level='full' instead. Returns a composite architecture overview combining health grade, layer dependency analysis, and file metrics.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, destructive, idempotent hints. The description adds that the tool returns a composite overview and does not require prior indexing, which goes beyond annotations but does not detail all behavioural aspects like potential limitations or output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the deprecation warning, and contains no superfluous information. Every word 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?
Despite no output schema, the description mentions the key components of the composite overview (health grade, layer dependency analysis, file metrics). Given the tool's simplicity and the presence of annotations, the description is sufficiently complete for an agent to understand its function and limitations.
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% as the single parameter 'repo_path' has a description in the schema. The tool description does not add additional meaning to the parameter beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is deprecated and provides a specific alternative. It also describes the output as a composite architecture overview combining health grade, layer dependency analysis, and file metrics, which is a specific verb+resource.
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 advises to use get_architecture_health with detail_level='full' instead, providing a clear when-not-to-use directive. Additionally, 'No prior indexing required' gives a usage prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_architecture_trendsARead-onlyIdempotent
View architecture health score trends over time. Returns historical snapshots with overall and per-dimension scores. Snapshots are saved automatically by 'deepwiki check' and 'deepwiki update'. No prior indexing required (reads saved history).
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| since | No | ISO date to filter from (default: last 30 days) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by explaining that snapshots are saved automatically and that no prior indexing is needed. Annotations already declare readOnlyHint and idempotentHint, which are consistent with the description. No contradictions.
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 concise sentences: first states purpose, second describes return values, third explains data source and prerequisites. 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 simple tool with 2 parameters and no output schema, the description adequately covers return values (historical snapshots with overall and per-dimension scores) and data source, making it complete for an agent to understand usage.
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 covers both parameters with descriptions (100% coverage). The description mentions 'trends over time' which aligns with the 'since' parameter but does not add significant new meaning 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 tool's purpose: 'View architecture health score trends over time. Returns historical snapshots with overall and per-dimension scores.' This distinguishes it from sibling tool get_architecture_health which likely returns current state.
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 explains that snapshots are saved automatically by 'deepwiki check' and 'deepwiki update', and that no prior indexing is required. This tells the agent when to use the tool for historical trends. However, it does not explicitly state when not to use it or list alternatives, though context from siblings implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_graphARead-onlyIdempotent
Get function call graphs showing which functions call which. Can analyze a specific file or the entire repository. Returns a Mermaid flowchart.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| file_path | No | Specific file to analyze (relative to repo root). If omitted, analyzes entire repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description adds limited behavioral context. It mentions the output format (Mermaid flowchart) and the prerequisite, which is useful but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no superfluous information. The prerequisite is stated efficiently. Excellent 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?
The description covers the core behavior, output format, and prerequisite. It misses potential details like performance or size limits, but given the moderate complexity, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description restates what the parameters do without adding new semantic details 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 clearly states the tool gets function call graphs and specifies the output as a Mermaid flowchart. It distinguishes from siblings by focusing on call graphs, which is specific among many analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists a prerequisite (index_repository must be called first), giving clear usage context. However, it does not mention when to use this vs. alternative tools like analyze_architecture or get_diagrams.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_changelogARead-onlyIdempotent
Extract recent git commit history as a formatted changelog. Groups commits by date and includes file change information.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository (must be a git repo) | |
| max_commits | No | Maximum number of commits to include (default: 30, max: 200) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds that the tool groups commits by date and includes file changes, and it explicitly states no prior indexing is needed. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long. The first sentence clearly states the purpose, and the second adds a critical usage note. No unnecessary words or 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?
No output schema exists, but the description explains the output format (changelog grouped by date with file changes). The tool has only two simple parameters, and the description covers its behavior adequately. Some may want error handling details, but overall it is 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 with descriptions for both parameters. The description does not add any additional parameter-level details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Extract'), resource ('recent git commit history'), and output ('formatted changelog'). It groups commits by date and includes file changes, distinguishing it from sibling tools that analyze architecture, diffs, or bugs.
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 states 'No prior indexing required' but does not provide explicit guidance on when to use this tool versus alternatives like 'analyze_diff' or 'get_file_context'. No when-not-to-use or comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_churn_metricsARead-onlyIdempotent
Analyze file change frequency from git history. Shows which files change most often, optionally overlaid with cyclomatic complexity to find high-risk hotspots (frequently changed + complex). Also reports churn concentration (Gini coefficient).
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| window_days | No | Days of git history to analyze (1-365, default: 90) | |
| top_n | No | Number of top results (1-100, default: 20) | |
| include_complexity | No | Include churn×complexity composite (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent. The description adds that no prior indexing is required and reports Gini coefficient, providing useful behavioral context 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 two sentences, directly states the main purpose, and includes key details without extraneous information. Perfectly 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?
Given no output schema, the description explains the tool's output (files, complexity, Gini) fairly well. It is complete for a metrics tool, though return format is not described.
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 description adds marginal value. It mentions optional complexity overlay which relates to include_complexity, but the schema already describes all parameters adequately.
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 analyzes file change frequency from git history and identifies high-risk hotspots. It distinguishes from siblings by mentioning specific output like Gini coefficient and optional complexity overlay.
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 analyzing churn and hotspots but does not explicitly state when to use this tool over siblings like get_hotspots or get_complexity_metrics. No direct alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_co_changeARead-onlyIdempotent
Find files that frequently change together in the same commits. Uses Jaccard similarity to measure co-change strength. High co-change coupling may indicate hidden dependencies or candidates for merging/splitting.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| window_days | No | Days of git history to analyze (1-365, default: 90) | |
| min_shared | No | Minimum shared commits for inclusion (1-50, default: 2) | |
| top_n | No | Number of top pairs (1-100, default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds algorithmic detail (Jaccard similarity) and a system requirement (no prior indexing), providing behavioral context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three purposeful sentences plus a clear note about indexing. No redundancy, every clause adds value. Structure is 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?
Core behavior and algorithm are clear, but the absence of output schema means the description should hint at return format (pairs, scores, etc.). It does not, leaving a gap for a data-returning 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 parameter descriptions, so baseline is 3. Description does not add additional meaning to specific parameters beyond what's 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?
Description clearly states verb 'Find' and specific resource 'files that frequently change together in the same commits', distinguishing it from generic coupling metrics tools. The method (Jaccard similarity) is explicit.
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?
Description implies usage context (co-change analysis) and mentions 'No prior indexing required', but does not explicitly compare to sibling tools like get_coupling_metrics or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cohesion_metricsARead-onlyIdempotent
Analyze class and module cohesion. Reports LCOM4 (Lack of Cohesion of Methods) for each class and internal-import ratio for each package. Classes with LCOM4 > 1 may be candidates for splitting. Modules with low cohesion ratio rely heavily on external imports.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| top_n | No | Number of top results to return (1-100, default: 20) | |
| exclude_tests | No | Exclude test files from analysis (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent behavior. The description adds value by detailing what metrics are reported (LCOM4, internal-import ratio) and that no prior indexing is required, which aligns 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?
Three short sentences: first states purpose, second gives interpretation, third is a prerequisite note. No wasted words, front-loaded with key 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?
Covers purpose, metrics, interpretation, and a prerequisite (no indexing). With no output schema, it explains what is returned. Could hint at performance for large repos, but overall adequate for a cohesion analysis 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 clear descriptions for all three parameters. The description adds marginal value by noting that no prior indexing is needed, which indirectly relates to the repo_path parameter.
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 that it analyzes class and module cohesion, reports LCOM4 and internal-import ratio. It distinguishes itself from siblings like get_complexity_metrics or get_coupling_metrics by focusing specifically on cohesion metrics.
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 context on when to use (for cohesion analysis) and gives interpretation tips (e.g., LCOM4 > 1 suggests splitting). However, it does not explicitly list alternatives or when not to use this tool among many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_complexity_metricsARead-onlyIdempotent
Analyze code complexity for a source file using tree-sitter AST parsing. Returns function/class counts, line metrics, cyclomatic complexity, nesting depth, and parameter counts.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| file_path | Yes | File path relative to repo root to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by specifying 'tree-sitter AST parsing' and the 'No prior indexing required' behavioral trait, which goes beyond annotation signals.
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: first clearly states purpose and outputs, second provides a key usage note. No superfluous information, front-loaded for quick understanding.
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 2 simple parameters, no output schema, and annotations covering safety, the description is largely complete. It could mention supported file types or behavior on missing files, but the core functionality is well described.
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 parameters are self-explanatory (repo_path, file_path). The description does not add additional meaning beyond what the schema provides, so 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?
Description clearly states the tool analyzes code complexity for a source file using specific metrics (functions, classes, cyclomatic complexity, etc.). Verb 'Analyze' and resource 'code complexity' are specific and distinct from siblings like get_cohesion_metrics or get_coupling_metrics.
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 statement 'No prior indexing required' provides a clear usage context, but there is no guidance on when not to use this tool or alternatives among the many sibling tools. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coupling_metricsARead-onlyIdempotent
Compute Robert C. Martin package-level coupling metrics per module: afferent coupling (Ca), efferent coupling (Ce), instability (I = Ce/(Ca+Ce)), abstractness (A = abstract_classes/total_classes), and distance from the main sequence (D = |A+I-1|). Modules with high distance are either too concrete-and-stable or too abstract-and-unstable.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| module_filter | No | Restrict to modules whose label starts with this prefix | |
| top_n | No | Limit output to the top N modules sorted by distance from the main sequence (default: 20, max: 500) | |
| include_leaves | No | Include modules with zero efferent coupling (default: false, excludes pure leaf modules) | |
| summary_only | No | Return only stats without individual module metrics (default: false) | |
| exclude_tests | No | Exclude test modules from metrics (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. Description adds value by explaining the meaning of 'distance from the main sequence' and confirming no prior indexing needed, 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?
Three focused sentences plus a standalone note on indexing. No fluff, metric formulas are front-loaded, and every sentence 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?
Description lists all computed metrics and provides interpretation of distance. However, since there is no output schema, the return format is not described, but the metrics and purpose are sufficiently clear for a read-only analysis 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 parameters are well-documented in schema. Description does not add extra meaning to parameters beyond what schema provides, thus baseline score 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 explicitly states it computes Robert C. Martin package-level coupling metrics and lists specific metrics (Ca, Ce, I, A, D). This distinguishes it from sibling tools like get_complexity_metrics or get_architecture_health.
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?
Description mentions 'No prior indexing required' but does not specify when to use this tool versus alternatives. No explicit exclusion or comparison to sibling tools, though the metric focus implies use for coupling analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_coverageARead-onlyIdempotent
Get documentation coverage report for an indexed repository. Shows which classes, functions, and methods have docstrings and which don't.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true) already indicate a safe read operation. The description adds the prerequisite that index_repository must be called first, which is a behavioral constraint. No contradictions exist.
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 two sentences: the first states the purpose, and the second gives the prerequisite. No extraneous information, and key details are 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 the tool's simplicity (one parameter, no output schema) and comprehensive annotations, the description covers the essential aspects: purpose, prerequisite, and output content. It lacks detail on the response format but is sufficient for an agent to use correctly.
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?
There is only one parameter (repo_path) with 100% schema description coverage. The description adds minimal extra meaning beyond the schema, only specifying that the repo must be indexed. 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 retrieves a documentation coverage report for an indexed repository, specifying that it shows which classes, functions, and methods have docstrings. This is a specific verb+resource combination and distinguishes it from sibling tools like get_complexity_metrics or get_architecture_health.
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 includes a mandatory prerequisite: 'index_repository must be called first.' This provides clear context for when the tool can be used. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., other analysis tools), leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cross_module_dependenciesARead-onlyIdempotent
Build an inter-module import graph for a Python repository. Returns module nodes (with file counts and line counts), weighted directed edges, most-depended-on and most-dependent modules, and a Mermaid graph LR diagram.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| module_filter | No | Restrict to modules whose label starts with this prefix (e.g. 'core' to scope to the core package) | |
| include_external | No | Include third-party and stdlib imports (default: false) | |
| min_edge_weight | No | Minimum import count for an edge to appear (default: 1) | |
| top_n | No | Limit output to the top N modules sorted by total edge count (default: 20, max: 500) | |
| summary_only | No | Return only stats (module/edge counts) without full lists (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the key behavioral insight 'No prior indexing required,' which goes beyond the annotations (readOnlyHint, idempotentHint) to inform the agent about prerequisites. It also outlines the return structure, though it omits potential performance considerations for large repositories.
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: two sentences that cover purpose, outputs, and a key benefit (no indexing). No redundant information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no output schema), the description provides a good overview of what the tool returns (modules, edges, diagram, stats). It lacks an example output structure but is otherwise sufficient for an agent to understand the tool's capabilities.
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?
All parameters have schema descriptions (100% coverage), so the description adds no additional parameter-level meaning. It focuses on outputs rather than parameter details, 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 explicitly states the tool builds an inter-module import graph for a Python repository, listing specific outputs (nodes, edges, stats, Mermaid diagram). This clearly differentiates it from sibling tools like get_call_graph or get_inheritance.
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 does not mention scenarios where other tools (e.g., get_call_graph for call-level analysis) would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_smellsARead-onlyIdempotent
Detect common design smells using heuristic AST-based thresholds: God Class (>15 methods AND >500 lines), Long Method (>80 lines AND cyclomatic complexity >7, or CC >15), Long Parameter List (>6 params), Feature Envy (>3 calls to another class's methods), Large File (>800 lines), Deep Nesting (>4 levels), Data Clump (3+ functions share 3+ identical parameter names). Returns smells with severity, file location, entity name, description, and refactoring suggestion.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| severity_threshold | No | Minimum severity to include (default: medium) | |
| exclude_tests | No | Exclude test files (default: true) | |
| top_n | No | Limit output to the top N smells sorted by severity (optional, returns all if omitted) | |
| summary_only | No | Return only a smells_by_type count dict instead of individual smell records (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, non-destructive, idempotent, and not open-world. The description adds behavioral detail beyond annotations by specifying the heuristic thresholds for each smell (e.g., God Class >15 methods AND >500 lines) and the return structure (severity, file location, entity name, description, refactoring suggestion). This gives the agent a clear picture of what the tool computes.
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: it opens with the tool's purpose, lists thresholds concisely, and ends with the return structure. Each sentence adds value, though the threshold list could be more compact. At 4 sentences, it is appropriately sized.
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 the detection criteria, return fields, and the prerequisite (no indexing required). No output schema exists, but the description explains what the agent can expect. For a detection tool with well-defined thresholds, this is largely complete. Minor gap: it doesn't mention if the results are cached or if repeated calls are cheap.
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 input schema fully describes all parameters. The description does not add extra meaning to individual parameters beyond what the schema provides (e.g., it doesn't explain the default values or how they affect detection). 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?
Description specifies the action (detect), the resource (design smells), and the method (heuristic AST-based thresholds). It lists specific smell types and their thresholds, making the purpose clear and distinct from siblings like detect_bugs or detect_secrets.
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 notes that no prior indexing is required, which is a useful prerequisite. However, it does not explicitly state when to use this tool versus alternative sibling tools (e.g., detect_bugs, analyze_architecture) or provide exclusions. The usage context is implied but not directly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diagramsARead-onlyIdempotent
Generate Mermaid diagrams for an indexed repository. Supports class diagrams, dependency graphs, module overviews, language distribution pie charts, and sequence diagrams.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "diagram_type": "class"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| diagram_type | No | Type of diagram to generate (default: class) | |
| entry_point | No | Entry point function name (required for sequence diagrams) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds valuable context: the prerequisite of index_repository and the supported diagram types. No contradictions; the description complements annotations well.
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 very concise: three sentences and an example, with the primary action front-loaded. Every sentence adds essential information with no 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?
Given the tool has 3 parameters, no output schema, and strong annotations, the description adequately covers the purpose, prerequisites, and supported types. It could clarify that the output is Mermaid code, but that is implied by 'generate Mermaid diagrams'. Overall complete for its 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 schema already documents all parameters. The description adds a usage example but no additional semantic meaning beyond the schema's enum and descriptions. Hence baseline score 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?
The description clearly states it generates Mermaid diagrams for an indexed repository, listing specific diagram types. This verb+resource combination is distinct from all sibling tools, which focus on other analyses like call graphs or metrics.
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 mentions the prerequisite that index_repository must be called first, providing contextual guidance. However, it does not explicitly differentiate this tool from alternatives (e.g., when to use get_diagrams vs get_call_graph), leaving the decision to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_duplication_metricsARead-onlyIdempotent
Detect code duplication using two methods: exact clones (Type 1, line-based fingerprinting) and structural clones (Type 2, AST node-type sequences). Reports duplication ratio, clone groups, and largest clone blocks.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| min_lines | No | Minimum lines for clone (3-50, default: 6) | |
| top_n | No | Number of top results (1-100, default: 20) | |
| exclude_tests | No | Exclude test files (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds the two detection methods and that no indexing is needed, but does not disclose other behavioral aspects such as resource usage or locking.
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 with two short paragraphs. The first paragraph covers the core functionality, and the second is a single sentence providing an additional constraint. No redundant 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?
The description explains the two methods and output fields, which is sufficient given reasonable complexity and good schema coverage. However, it does not describe the return format or provide examples, leaving minor gaps.
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 any details to the parameters beyond their schema definitions.
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 detects code duplication using two specific methods (exact and structural clones), and reports duplication ratio, clone groups, and largest clone blocks. It distinguishes from sibling metrics tools by specifying the exact types of duplication.
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 includes 'No prior indexing required,' which implies it can be used immediately without setup, but does not explicitly compare to siblings or state 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.
get_file_contextARead-onlyIdempotent
Get rich context for a source file: imports, callers (who uses this file), related files, and type definitions used. Helps understand a file's role in the codebase.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| file_path | Yes | File path relative to repo root (e.g., 'src/local_deepwiki/server.py') | |
| detail_level | No | Output detail: standard (default) or full (adds entities, related tests, recent commits) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the prerequisite requirement, which is a behavioral disclosure. No contradictions 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 two concise sentences that clearly convey purpose and prerequisite with 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?
Without an output schema, the description mentions what the tool returns (imports, callers, etc.), providing adequate completeness. Could include more about response structure but sufficient for 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% with detailed descriptions for all three parameters, including an enum for detail_level. The description does not add significant extra 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 clearly states the tool's purpose: to get rich context for a source file, listing specific elements (imports, callers, related files, type definitions). This distinguishes it from sibling tools like get_call_graph or get_inheritance.
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 states a prerequisite (index_repository must be called first), which provides clear usage guidance. However, it does not compare with alternative sibling tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_glossaryARead-onlyIdempotent
Get a searchable glossary of all code entities (classes, functions, methods) in an indexed repository. Useful for discovering what's in the codebase.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| search | No | Optional search term to filter entities by name or docstring | |
| file_path | No | Filter to entities from a specific file (relative path) | |
| limit | No | Maximum entities to return (default: 100, max: 5000) | |
| offset | No | Number of entities to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds the requirement of prior indexing, which is useful. However, it does not describe pagination behavior or what happens when no search term is given, though these are inferable.
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: two sentences plus a requirement line, with no unnecessary words. The purpose is immediately clear 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?
Without an output schema, the description should ideally mention the return format (e.g., list of entity names, docstrings). It does not, which leaves agents guessing. However, the core functionality is well-covered.
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 adds no extra semantics or context for parameters, just the general purpose. Baseline is 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?
The description clearly states the tool retrieves a searchable glossary of code entities (classes, functions, methods) from an indexed repository, which is specific and distinct from sibling tools that perform analysis or explain individual entities.
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 prerequisite (index_repository must be called first), but does not explicitly compare with alternative tools like search_code or explain_entity for similar tasks, leaving some ambiguity about when to use this tool specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_guided_tourARead-onlyIdempotent
Generate a guided tour of a codebase organized by topic. Returns an ordered list of file stops with explanations. Topics: architecture, data_flow, request_handling, testing, or custom:. No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| topic | No | Tour topic (default: architecture) | |
| max_stops | No | Maximum stops (default: 10, max: 30) | |
| enrich | No | Use LLM for richer explanations (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the tool is safe and non-destructive. The description adds behavioral details: the output is an ordered list of file stops with explanations, and it works without prior indexing. This supplements the annotations with concrete output behavior. No contradictions found.
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 three sentences with no fluff. First sentence states purpose, second describes output, third lists topics and a usage note. Front-loaded and efficient, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return type (ordered list of stops with explanations). It covers prerequisites ('no prior indexing'), topics, and output structure. Could mention limits like max_stops or error behavior for invalid topics, but overall sufficient for a tool of 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 coverage is 100%, so parameters are documented. However, the description adds value by listing specific topic options (architecture, data_flow, etc.) and the custom query format, which goes beyond the schema's 'Tour topic (default: architecture)'. This helps the agent understand valid inputs.
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 states 'Generate a guided tour of a codebase organized by topic' with a specific verb and resource. It clearly defines the output as an ordered list of file stops with explanations. The listed topics (architecture, data_flow, etc.) differentiate it from sibling tools like analyze_architecture which focus on analysis rather than a guided walkthrough.
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?
Description mentions 'No prior indexing required' as a precondition, implying this tool can be used without extra setup. However, it does not explicitly state when to use this tool over alternatives (e.g., when a tour is needed vs. a summary). More explicit guidance on when not to use it or which sibling to use instead would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotspotsARead-onlyIdempotent
Rank functions across an entire repository by a chosen complexity metric (cyclomatic complexity, parameter count, line length, or nesting depth). Returns top-N hotspots with full detail breakdown. Useful for prioritising refactoring efforts.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| metric | No | Metric to rank by: 'complexity' (cyclomatic), 'params' (parameter count), 'length' (line count), 'nesting' (nesting depth). Default: complexity. | |
| top_n | No | Number of top results to return (1-100, default: 20) | |
| min_threshold | No | Minimum metric value to include (optional) | |
| exclude_tests | No | Exclude test files (default: true) | |
| summary_only | No | Return only stats without individual hotspot details (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. Description adds behavioral context with 'No prior indexing required,' implying on-the-fly analysis, which goes beyond annotations. No contradictions.
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 action, no redundant words. Every sentence 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?
Given 6 parameters, rich annotations, and no output schema, description explains purpose, metric options, and a key prerequisite. Lacks details on return structure beyond 'full detail breakdown,' but adequate for typical use.
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 detailed descriptions for all 6 parameters. Description repeats metric options and top-N concept but adds no additional meaning beyond what the schema provides, meeting baseline expectation.
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 'rank functions across an entire repository by a chosen complexity metric' and 'returns top-N hotspots with full detail breakdown,' providing a specific verb and resource. It distinguishes itself from sibling tools like get_complexity_metrics by focusing on ranking and prioritizing refactoring.
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?
Description provides usage context ('useful for prioritising refactoring efforts') and a prerequisite note ('No prior indexing required'), but does not explicitly list alternative tools 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.
get_index_statusARead-onlyIdempotent
Get index statistics for a repository without re-indexing. Shows file count, chunk count, languages, and when it was last indexed.
Note: This is an alias for get_status with scope='index'.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description confirms 'without re-indexing' and lists expected output, aligning perfectly. No contradictions.
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, front-loaded with purpose. The alias note and prerequisite are relevant and concisely stated. 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 single parameter, no output schema, and complete annotations, the description covers all necessary context: what the tool returns, its alias nature, and a clear prerequisite. Comprehensive for this simple 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?
Only one parameter (repo_path) with schema coverage 100%. Description adds no additional meaning beyond the schema's 'Path to the indexed repository'. 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 explicitly states the tool retrieves index statistics without re-indexing, listing specific data (file count, chunk count, languages, last indexed time). It also clarifies it is an alias for get_status with a scope, distinguishing it from siblings.
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 clear context: it's an alias for get_status with scope='index' and requires index_repository to be called first. While it doesn't exhaustively exclude other tools, the prerequisite and alias note sufficiently guide when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inheritanceARead-onlyIdempotent
Get class inheritance hierarchy trees for an indexed repository. Shows parent-child relationships, abstract classes, and generates a Mermaid inheritance diagram.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| search | No | Filter classes by name (case-insensitive substring) | |
| limit | No | Maximum classes to return (default: 100, max: 5000) | |
| offset | No | Number of classes to skip for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds that it generates a Mermaid diagram and requires prior indexing, which is useful 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 with zero waste. First sentence states purpose and specifics, second gives a clear prerequisite. Perfectly 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 read-only query tool with full schema coverage and appropriate annotations, the description is complete. It explains the output (Mermaid diagram) and prerequisite, requiring no additional 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%, fully describing all four parameters. The description does not add any parameter-specific semantics beyond what the schema provides, meeting the 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 it retrieves class inheritance hierarchies with parent-child relationships, abstract classes, and generates a Mermaid diagram. This is specific and distinct from sibling tools like get_call_graph or get_diagrams.
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?
Explicit prerequisite 'index_repository must be called first' provides clear context. No exclusions or alternative tools mentioned, but the requirement strongly guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_layer_dependenciesARead-onlyIdempotent
Analyze architectural layer dependencies in a Python codebase. Categorizes files into layers (web, handlers, services, generators, core, providers, models) and detects upward dependency violations where lower layers import from higher layers. Returns layer file counts, dependency edges, and violations.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to analyze | |
| summary_only | No | Return only violation count without full layer details (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by stating 'No prior indexing required,' which is a useful behavioral trait beyond annotations. It does not contradict any 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, with three sentences that front-load the key purpose and details. Every sentence adds value, and there is no redundant or unnecessary content.
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 moderate complexity and 100% schema coverage, the description adequately covers what the tool does, its return values (file counts, edges, violations), and the key prerequisite (no indexing needed). No output schema exists, but the description compensates well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context about what the tool returns (file counts, edges, violations) but does not elaborate on parameter choices beyond the schema. Thus, it meets but does not exceed expectations.
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 specifies the tool's purpose: analyzing architectural layer dependencies, categorizing files into layers, and detecting upward dependency violations. It uses specific verbs and resources, and the focus on layers distinguishes it from siblings like analyze_architecture or get_cross_module_dependencies.
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 states the tool analyzes layer dependencies and mentions no prior indexing is required, which provides context. However, it does not explicitly compare itself to alternatives or specify when not to use this tool, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_maintainability_metricsARead-onlyIdempotent
Compute Maintainability Index (MI) per function across a Python repository. MI combines Halstead Volume, cyclomatic complexity, and lines of code into a 0-100 score. Returns the worst-scoring functions first. Functions with MI < 20 are hard to maintain.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| top_n | No | Number of top results to return (1-100, default: 20) | |
| exclude_tests | No | Exclude test files from analysis (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already classify the tool as read-only, non-destructive, and idempotent. The description adds important behavioral details: it computes per-function, combines specific metrics, returns worst first, and notes the threshold. This provides context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary purpose, and contains no extraneous information. Every sentence 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?
For a tool with a clear purpose and well-described parameters, the description provides sufficient context: it explains the metric, output ordering, and preconditions (no indexing required). It lacks explicit mention of return format but is otherwise 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 input schema already has 100% coverage with descriptions for all three parameters. The description does not add additional meaning to the parameters beyond what the schema provides, but it does not contradict or omit anything.
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 computes the Maintainability Index per function, combining Halstead Volume, cyclomatic complexity, and lines of code into a 0-100 score. It specifies that results are ordered worst-first and highlights the threshold for hard-to-maintain functions. This distinguishes it from sibling tools like get_complexity_metrics or get_testability_metrics.
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 indicates that no prior indexing is required, which is a key usage condition. It implicitly suggests using this tool to assess maintainability, but it does not explicitly contrast with alternative metrics tools or specify 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.
get_module_healthARead-onlyIdempotent
Deep health analysis of a single module. Shows complexity distribution, design smells, coupling metrics, dependents (who uses this module), dependencies (what it uses), and refactoring risk level.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| module_name | Yes | Module to analyze (e.g., 'core.indexer', 'generators.wiki') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true) already cover safety. The description adds that indexing is not required, which is a behavioral detail. However, it does not disclose performance implications or whether results are computed on the fly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence lists outputs, the second adds a key prerequisite. Every sentence is valuable 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?
The description lists the types of information returned, which is helpful given the lack of output schema. However, it does not specify the format or structure of results, which would aid completeness for a complex analysis tool. Adequate but minimal.
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 both parameters are adequately described in the schema. The description does not add extra semantics beyond what the schema provides, meeting the baseline for high coverage.
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 performs deep health analysis of a single module and lists specific outputs (complexity, smells, coupling, dependents, dependencies, risk). This differentiates it from sibling tools that focus on individual metrics, though explicit differentiation is absent.
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 note 'No prior indexing required' is a useful usage tip, but the description does not explain when to use this tool versus alternatives like get_complexity_metrics or get_design_smells. The usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onboarding_guideARead-onlyIdempotent
Generate a developer onboarding guide for a codebase. Returns a markdown narrative with project overview, getting started instructions, repository layout, entry points, key modules, and testing info. No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| detail_level | No | Output detail level (default: standard) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by describing the output (markdown narrative with specific sections) and the constraint of no prior indexing needed. Annotations already indicate it is safe and non-destructive, and the description aligns with 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?
The description is two sentences, front-loaded with the purpose, and every sentence adds value. 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?
Given no output schema, the description adequately explains what the tool returns (markdown with specific sections) and includes a notable behavioral note (no indexing required). It is complete for a tool with two parameters and no nested objects.
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 any additional meaning about the parameters (e.g., how detail_level affects output) beyond what is 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 clearly states the tool's purpose: generating a developer onboarding guide for a codebase, and specifies the output format (markdown narrative) and contents (overview, getting started, layout, etc.). This distinguishes it from sibling tools, as none explicitly generate an onboarding guide.
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 key usage guideline: 'No prior indexing required,' which tells the agent it can use this tool without indexing. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions or prerequisites beyond a repo path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_operation_progressARead-onlyIdempotent
Get progress for active long-running operations. Supports polling-based progress tracking for clients that cannot receive push notifications. Returns current progress, ETA, and phase information.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | No | Specific operation ID to get progress for. If not provided, returns all active operations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds behavioral details: returns progress, ETA, phase information, and supports polling. No contradictions with annotations. It could further clarify error handling for unknown operation_ids.
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 three concise sentences with no extraneous details. The first sentence front-loads the core purpose, followed by usage context and a prerequisite note. Every sentence 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?
For a simple tool with one optional parameter and no output schema, the description adequately covers purpose, usage scenario, and key return information. It lacks specification on error behavior for invalid operation IDs, but overall it is sufficient for an agent to understand and invoke the 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%, so the description adds no extra meaning to the single parameter beyond what the schema already provides. The description's mention of 'active long-running operations' implicitly clarifies optionality, but the schema explicitly states the parameter is optional.
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 retrieves progress for active long-running operations, specifying the verb 'Get' and resource 'progress for active long-running operations'. It distinguishes itself from sibling tools by focusing on progress tracking rather than status or indexing.
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 indicates this tool is for polling-based progress tracking when push notifications are unavailable. It also notes 'No prior indexing required,' setting expectations. However, it does not explicitly mention when not to use it or alternative tools for related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_manifestARead-onlyIdempotent
Get parsed project metadata from package manifest files (pyproject.toml, package.json, Cargo.toml, go.mod, etc.). Returns name, version, dependencies, scripts, tech stack summary.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| use_cache | No | Use cached manifest if available (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint. The description adds the important behavioral trait that no prior indexing is required, which is beyond the annotations. It does not contradict annotations. Some additional context about rate limits or side effects would be useful but not necessary given the safe profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, followed by return fields and a key note. Every sentence is necessary and no words are wasted. Highly concise and well-structured.
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 low complexity (2 parameters, no output schema), the description is complete. It lists the types of manifests parsed, the returned fields, and the important note about no indexing. No critical information is missing for this 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%, so the description does not need to explain parameters. The description does not add meaning beyond the schema (e.g., how use_cache behaves). 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 'Get parsed project metadata from package manifest files', listing specific manifest files and returned fields. It distinguishes itself from sibling tools by specifying its focus on manifest files and noting that no prior indexing is required. This is highly specific and leaves no ambiguity.
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 when to use (when needing manifest metadata) but does not explicitly state when not to use or provide alternatives. The note 'No prior indexing required' hints at differentiation from indexing-dependent tools, but there is no clear comparison with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsARead-onlyIdempotent
Generate prioritized refactoring recommendations from architecture health analysis. Returns actionable suggestions with effort/impact scoring. Set enrich=true for LLM-generated detailed descriptions. No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| max_items | No | Maximum recommendations (default: 10, max: 50) | |
| category_filter | No | Filter to a specific category (optional) | |
| enrich | No | Use LLM for richer descriptions (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly and idempotent. The description adds that no prior indexing is required and explains the enrich flag, providing useful behavioral context 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?
Three sentences, front-loaded with the core purpose, followed by return type and optional parameter guidance. No redundant information, every sentence 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?
The description adequately explains the tool's output (actionable suggestions with scores) and key parameter behavior. Given the complexity (4 params, no output schema) and rich annotations, it covers critical aspects without gaps.
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 reinforces schema info (e.g., enrich for LLM descriptions, max_items default/max) but does not add new parameter semantics beyond what's 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 clearly states it generates prioritized refactoring recommendations from architecture health analysis, with explicit mention of effort/impact scoring. It distinguishes from siblings like get_architecture_health and get_design_smells by focusing on actionable suggestions.
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 gives a clear context (architecture health analysis) and specific guidance for the enrich parameter. It implies use when recommendations are needed, but lacks explicit comparisons to sibling tools or conditions 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.
get_statusARead-onlyIdempotent
Get repository index status and/or wiki health dashboard.
scope='all' (default): Returns both index status and wiki stats.
scope='index': Index stats only (file count, chunks, languages).
scope='wiki': Wiki health dashboard (pages, coverage, staleness).
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| scope | No | What to return: 'all' (default), 'index' (index status only), 'wiki' (wiki stats only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds critical context: the requirement to call index_repository first, and what each scope returns (file count, chunks, languages for index; pages, coverage, staleness for wiki).
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 highly concise: a single sentence plus a bullet list of scope options and a requirement line. No redundant information, 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?
Given no output schema, the description adequately explains the main functionality, scope variations, and prerequisite. It could be slightly more explicit about the return format, but for a simple read tool with strong annotations, 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 input schema covers both parameters with enum values. The description enriches semantics by specifying default scope ('all') and describing the return content for each scope value, adding value 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 clearly states the tool retrieves repository index status and/or wiki health dashboard, with explicit scope options. It distinguishes from sibling tools like get_index_status and get_wiki_stats by offering a combined view via scope parameter.
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 explains the three scope options and the prerequisite (index_repository must be called first). It does not explicitly compare when to use this tool versus the separate sibling tools, but the scope parameter inherently covers both use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_testability_metricsARead-onlyIdempotent
Analyze testability metrics for a Python repository. Reports test-to-code ratio, matches test files to source modules, counts assertions per test, and identifies untested source files.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true etc. The description adds specific behavioral details: reports test-to-code ratio, matches test files to modules, counts assertions, identifies untested files. No contradictions.
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 key purpose. No superfluous words; each sentence adds value. 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?
For a single-parameter tool with comprehensive annotations, the description covers all needed aspects: what metrics are computed, no indexing required. Completeness is high even 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?
Only one parameter 'repo_path' with schema description 'Path to the repository'. The description does not add format or examples. Schema coverage is 100%, so baseline 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 analyzes testability metrics for Python repos, listing specific reports (test-to-code ratio, assertion counts, etc.). It distinguishes from siblings like get_coverage or get_complexity_metrics which focus on other 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 includes 'No prior indexing required' which is helpful usage context. It implies use when testability analysis is needed but does not explicitly contrast with alternatives or state 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.
get_test_examplesBRead-onlyIdempotent
Find usage examples for a function or class by searching test files in the indexed repository. Returns code snippets showing how the entity is used in tests.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| entity_name | Yes | Name of the function or class to find examples for | |
| max_examples | No | Maximum number of examples to return (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint, which the description does not contradict. It adds the prerequisite of index_repository, but does not detail return value format or behavior when no examples are found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a prerequisite line, all front-loaded and without any redundant information. Every sentence 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?
With no output schema, the description minimally states 'Returns code snippets showing how the entity is used in tests' but lacks details on format, error handling, or what happens if entity not found. It covers the basics.
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 schema already documents each parameter. The description adds no extra meaning beyond what is in 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 tool finds usage examples for a function or class by searching test files. The verb and resource are specific, but it does not differentiate from siblings like search_code or get_api_docs.
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 mentions a prerequisite (index_repository must be called first) but provides no guidance on when to use this tool versus alternatives, nor any scenarios where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wiki_statsARead-onlyIdempotent
Get a wiki health dashboard with index stats, page counts, search index size, coverage data, and wiki status - all in a single call.
Note: This is an alias for get_status with scope='wiki'.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. Description adds prerequisite and mentions it aggregates multiple data points. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a note, no redundancy. Front-loaded with primary purpose, efficiently includes prerequisite and alias 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?
Lists returned data types, prerequisite, and alias. Without an output schema, the description compensates by enumerating stats. Could mention that data comes from locally indexed repo, but overall adequate.
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 covers the one parameter with description. Description adds context that the repo path must point to an indexed repository, enhancing parameter semantics 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 it gets a wiki health dashboard with specific metrics (index stats, page counts, etc.). Explicitly identifies as an alias for get_status with scope='wiki', distinguishing it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States prerequisite (index_repository must be called first) and notes it is a single comprehensive call. Does not explicitly compare with alternatives like get_index_status, but the alias note provides differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
impact_analysisARead-onlyIdempotent
Analyze the blast radius of changes to a file or entity. Combines reverse call graph, inheritance dependents, file-level imports, and affected wiki pages to help understand impact before making changes.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "file_path": "src/auth.py"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| file_path | Yes | File path relative to repo root to analyze impact for | |
| entity_name | No | Optional: specific function/class name to narrow analysis | |
| include_reverse_calls | No | Include reverse call graph - who calls functions in this file (default: true) | |
| include_dependents | No | Include files that import from this file (default: true) | |
| include_inheritance | No | Include classes that inherit from classes in this file (default: true) | |
| include_wiki_pages | No | Include wiki pages that document this file (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description's behavioral disclosure adds limited value. It mentions the combined analysis nature and the prerequisite, but doesn't detail potential errors or output structure. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences, a prerequisite line, and an example. Every sentence adds value without redundancy. Front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema), the description adequately explains the purpose and components it combines. It could hint at the output format (e.g., report structure) but is otherwise complete for a read-only analysis 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 descriptive field descriptions. The description provides an example but doesn't add meaning beyond the schema, such as explaining how the boolean flags interact. 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 analyzes 'blast radius of changes' and lists the components it combines (reverse call graph, inheritance dependents, etc.). It distinguishes itself from siblings like get_call_graph or get_inheritance by being a composite analysis, but could be more explicit about its unique value.
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 prerequisite (index_repository must be called first) and an example, but lacks explicit guidance on when to use this vs. its many sibling tools. It implies use before making changes but doesn't state scenarios where individual tools might suffice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_repositoryAIdempotent
Index a repository and generate wiki documentation. This parses all source files, extracts semantic code chunks, generates embeddings, and creates wiki markdown files.
No prior indexing required.
Example: {"repo_path": "/path/to/repo"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Absolute path to the repository to index | |
| output_dir | No | Optional output directory for wiki (default: {repo}/.deepwiki) | |
| languages | No | Optional list of languages to include (default: all supported) | |
| full_rebuild | No | Force full rebuild instead of incremental update (default: false) | |
| llm_provider | No | LLM provider for wiki generation (default: from config) | |
| embedding_provider | No | Embedding provider for semantic search (default: from config) | |
| use_cloud_for_github | No | Use cloud LLM (Anthropic Claude) for GitHub repos. Faster and higher quality but requires API key. (default: from config) | |
| skip_wiki | No | Skip wiki page generation (index and embed only). Pages will generate on demand when read. (default: false) | |
| generation_mode | No | Override wiki generation strategy for this invocation. If not provided, uses the config file setting. | |
| prefetch_drain | No | Enable drain mode to backfill all remaining pages in the background after indexing. Most useful with 'hybrid' or 'lazy' mode. (default: from config) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which indicate idempotent and non-destructive), the description details the indexing process: parsing files, extracting chunks, generating embeddings, creating wiki markdown. It adds context about no prior indexing needed, which is helpful. However, it does not disclose potential side effects like disk usage or long run times.
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: two sentences explaining purpose and process, a key note about prior indexing, and a clear JSON example. Every sentence adds value with no waste.
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 10 parameters and no output schema, the description lacks information about what the tool returns (e.g., success status, index stats, stdout). It also doesn't explain how parameters like generation_mode or skip_wiki affect behavior. This makes it incomplete for an agent to fully understand the tool's effects.
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 all 10 parameters with descriptions (100% coverage). The description only adds value with an example using repo_path, which is already the required parameter. No additional semantics beyond the schema are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and resources: 'Index a repository and generate wiki documentation.' It clearly distinguishes from siblings like analyze_architecture or get_index_status by focusing on the indexing and wiki generation process.
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 states 'No prior indexing required' and provides an example, implying it's the primary tool for initial indexing. However, it does not explicitly mention when to use alternatives (e.g., get_index_status for checking index state) 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.
list_indexed_reposARead-onlyIdempotent
Discover all indexed repositories under a given directory. Searches for .deepwiki directories and returns index metadata for each.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| base_path | No | Base directory to search for indexed repos (default: current directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent. Description adds that it searches for .deepwiki directories and returns index metadata, plus the note about no prior indexing needed. This provides behavioral context 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 concise sentences: first states the action, second clarifies a key prerequisite. 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?
For a simple discovery tool with one optional parameter and full annotations, the description covers purpose, search mechanism, and prerequisite. Lacks details on return metadata structure, but no output schema exists to require 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 coverage is 100% and the description repeats the schema description verbatim ('Base directory to search for indexed repos (default: current directory)'), adding no new meaning beyond the structured field.
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 'Discover' and resource 'indexed repositories under a given directory', clearly distinguishing it from sibling tools like get_index_status (single repo status) and index_repository (creation).
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?
Notes 'No prior indexing required', which informs agents they can use it even if no repos are yet indexed, but does not explicitly state when to prefer this over siblings or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_research_checkpointsARead-onlyIdempotent
List all research checkpoints for a repository. Shows incomplete and cancelled research sessions that can be resumed using the deep_research tool with resume_research_id.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository to list checkpoints for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description adds value by explaining the checkpoints' role in resuming research, without contradicting 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, then usage context; 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?
For a simple list tool with one param and annotations covering safety, the description is nearly complete—prerequisite stated, return purpose clear—but could mention exact return format (e.g., checkpoint IDs).
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% with a clear parameter description, so baseline is 3; the description adds no further parameter semantics beyond the prerequisite context.
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 lists research checkpoints for a repository, specifying they are incomplete/cancelled sessions, and distinguishes from sibling tools by mentioning they can be resumed via deep_research with resume_research_id.
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 states a prerequisite ('index_repository must be called first'), giving clear context for when to use this tool, but lacks explicit when-not-to-use or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_codebaseARead-onlyIdempotent
Smart query that combines ask_question with automatic escalation to deep_research when the initial answer is insufficient. Single entry point for codebase Q&A.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| query | Yes | Natural language question about the codebase | |
| auto_escalate | No | Automatically escalate to deep_research if initial answer is insufficient (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by explaining the automatic escalation mechanism and the prerequisite. Annotations already indicate read-only and idempotent behavior, but the description clarifies the dynamic behavior of combining tools.
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 two sentences: one stating the tool's function and one providing a prerequisite. No unnecessary words, all information is front-loaded and valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, annotations, and full schema coverage, the description is complete enough. It explains behavior and prerequisites. Minor omission: how 'insufficient' is determined, but that is acceptable for a query 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%, so parameters are already well-documented. The description adds limited additional meaning beyond the schema, such as implying the auto_escalate parameter's role, but it is not necessary. 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 purpose as a smart query that combines ask_question with automatic escalation to deep_research, serving as a single entry point for codebase Q&A. This distinguishes it from sibling tools like ask_question and deep_research.
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 prerequisite (index_repository must be called first) and implies it should be used as the primary entry point for codebase queries. However, it does not explicitly state when not to use it or compare with alternatives, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_wiki_pageARead-onlyIdempotent
Read a specific wiki page content.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki_path | Yes | Path to the wiki directory | |
| page | Yes | Page path relative to wiki root (e.g., 'index.md', 'modules/auth.md') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only and idempotent hints. Description adds prerequisite context but no further behavioral details like return format.
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 succinct sentences, no wasted words, front-loaded with main 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?
All necessary info for a simple read tool: action, resource, prerequisite. No output schema needed; return content is implied.
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 covers both parameters fully (100%). Description adds no extra 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?
The description clearly states the tool reads a specific wiki page content. It distinguishes from siblings like 'read_wiki_structure' and 'search_wiki'.
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 mentions prerequisite 'index_repository must be called first', guiding when to use. No exclusions but clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_wiki_structureARead-onlyIdempotent
Get the table of contents and structure of a generated wiki.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| wiki_path | Yes | Path to the wiki directory (typically {repo}/.deepwiki) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false, idempotentHint=true) already indicate a safe read-only operation. The description adds no further behavioral details (e.g., error handling, performance implications beyond the prerequisite). With annotations present, the bar is lower, but the description could add context about what happens if the prerequisite is not met.
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 consists of two concise sentences. The first sentence clearly states the purpose, and the second provides a necessary prerequisite. There is no redundant information, and the content 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?
With one parameter and no output schema, the description should provide enough context about what the tool returns. It does not describe the return format or structure (e.g., table of contents as a tree). While the prerequisite and purpose are clear, the absence of output expectations makes it less 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 input schema has 100% coverage (parameter description provided). The tool description does not add any additional meaning beyond the schema's description. Baseline 3 is appropriate since the schema sufficiently documents the parameter.
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 'Get the table of contents and structure of a generated wiki,' using a specific verb and resource. This distinguishes it from sibling tools like read_wiki_page (reads content) and get_wiki_stats (statistics).
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 mentions a prerequisite ('Requires: index_repository must be called first'), which guides usage but does not specify when to use this tool versus alternatives (e.g., read_wiki_page) or when not to use it. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_researchA
Resume a previously interrupted deep research session from its checkpoint. This is a convenience wrapper - you can also use deep_research with resume_research_id directly.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the repository | |
| research_id | Yes | ID of the research checkpoint to resume (from list_research_checkpoints) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates this tool modifies state by resuming a session. The annotations (readOnlyHint: false) are consistent. It also clarifies it's a wrapper around deep_research, adding transparency beyond annotations. 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 very concise: two sentences and a requirement line. The purpose is front-loaded in the first sentence. No redundant 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 tool's simplicity (2 params, no output schema), the description covers the prerequisite and alternative usage. It references list_research_checkpoints for obtaining the ID, but does not mention related sibling tools like cancel_research.
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 descriptions for both parameters. The description adds value for research_id by specifying it comes from 'list_research_checkpoints'. This provides useful context 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 clearly states 'Resume a previously interrupted deep research session', which specifies the verb and resource. It also distinguishes itself from the sibling tool 'deep_research' by calling itself a convenience wrapper.
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 prerequisite ('index_repository must be called first') and an alternative usage ('you can also use deep_research with resume_research_id directly'). However, it does not explicitly state when not to use this tool or list other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_workflowARead-onlyIdempotent
Run a pre-built multi-step workflow. Available presets: 'onboarding' (project overview), 'security_audit' (secrets + complexity), 'full_analysis' (stats + coverage + stale + secrets), 'quick_refresh' (stale docs + changelog).
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "workflow": "onboarding"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| workflow | Yes | Workflow preset to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, non-destructive behavior. Description adds that it runs a multi-step workflow, implying potential runtime but not contradicting annotations. No further behavioral details needed.
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 plus an example: no fluff, front-loaded with action and presets, then requirement and example.
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?
All essential information is present: purpose, presets, prerequisite, example. No output schema needed; tool's return is implied by the workflow.
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 covers 100% with descriptions. Description adds presets list and an example JSON, providing context 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 clearly states 'Run a pre-built multi-step workflow' and enumerates specific presets, making the tool's purpose explicit and distinguishing it from single-step sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly requires `index_repository` to be called first, providing key context. Presets are listed with descriptions, aiding selection. No explicit alternatives or when-not-to-use guidance, but the requirement is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_codeARead-onlyIdempotent
Semantic search across the indexed codebase with optional fuzzy matching and filters. Returns relevant code chunks with similarity scores.
Requires: index_repository must be called first.
Example: {"repo_path": "/path/to/repo", "query": "error handling"}
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| query | Yes | Semantic search query | |
| limit | No | Maximum number of results (default: 10) | |
| language | No | Filter by programming language | |
| type | No | Filter by chunk type (e.g., function, class, method) | |
| path | No | Filter by file path pattern (e.g., 'src/**/*.py', 'tests/*') | |
| fuzzy | No | Enable fuzzy matching to improve results for exact name matches (default: false) | |
| fuzzy_weight | No | Weight for fuzzy matching score (0.0-1.0, default: 0.3). Higher values favor exact text matches over semantic similarity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent behavior. The description adds context about requiring a prior index call and that results include similarity scores. No contradictions 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 very concise: three sentences plus a one-line prerequisite and an example. It is front-loaded with the core purpose, and every part is informative 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?
Given no output schema, the description provides a high-level idea of return data (code chunks with similarity scores). It covers the essential prerequisite and gives an example. For a search tool with many filter options, a brief note on result ordering or pagination would improve completeness, but it is still adequate.
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 schema already documents all parameters. The description only mentions fuzzy matching and filters in general terms, adding little meaning beyond the schema. The example demonstrates two required params but no extra semantics.
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 'Semantic search across the indexed codebase with optional fuzzy matching and filters' and specifies it returns 'relevant code chunks with similarity scores'. This distinguishes it from sibling tools like fuzzy_search which likely performs exact text search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly notes the prerequisite 'index_repository must be called first', which is helpful. However, it does not provide guidance on when to use this tool versus alternatives like fuzzy_search or query_codebase, nor does it mention 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.
search_wikiARead-onlyIdempotent
Full-text search across wiki pages and code entities. Searches titles, headings, code terms, descriptions, and keywords. Returns ranked matches.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| query | Yes | Search query string | |
| limit | No | Maximum results to return (default: 20, max: 100) | |
| entity_types | No | Filter by type: 'page', 'function', 'class', 'method' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. Description adds behavioral context: requires prior indexing and explains the scope of search (titles, headings, etc.). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with a mandatory prerequisite note. Front-loaded with the primary action and scope. No filler or redundant 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 complexity (4 params, no output schema) and good annotations, the description covers purpose, prerequisite, and search scope. Missing return format details, but annotations compensate for read-only and idempotent nature.
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 descriptions for all 4 parameters. The description adds general context about what is searched but does not directly enhance parameter meaning 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?
Description clearly states it is for full-text search across wiki pages and code entities, listing specific fields searched. It distinguishes from siblings like fuzzy_search or search_code by specifying the scope, but does not explicitly differentiate from query_codebase.
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?
Description mentions a vital prerequisite (index_repository must be called first) but provides no when-to-use or when-not-to-use guidance relative to sibling tools. No alternatives or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serve_wikiA
Start the interactive wiki web server for a .deepwiki directory. Launches a Flask app with chat, search, codemap explorer, and research UI. The server runs as a subprocess and can be stopped with stop_wiki_server.
Requires: index_repository must be called first.
Example: {"wiki_path": "/path/to/repo/.deepwiki"}
| Name | Required | Description | Default |
|---|---|---|---|
| wiki_path | Yes | Path to the wiki directory (typically {repo}/.deepwiki) | |
| host | No | Host to bind to (default: 127.0.0.1, loopback only) | 127.0.0.1 |
| port | No | Port to bind to (default: 8080, range: 1024-65535) | |
| open_browser | No | Open the wiki in the default browser after starting (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reveals the server runs as a subprocess and can be stopped with stop_wiki_server, adding beyond annotations. Annotations indicate non-read-only, non-destructive, non-idempotent, and open-world; description aligns and adds behavioral context like subprocess launch.
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 paragraphs with front-loaded action, clear structure: main purpose, details, prerequisite, example. No filler; every sentence 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?
Covers functionality, prerequisite, example, and shutdown guidance. With no output schema, it could mention startup confirmation or error handling, but overall provides sufficient context for typical use.
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 description repeats parameter info without adding new semantics. The example provides a concrete use case but does not clarify edge cases or format 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 it starts an interactive wiki web server for a .deepwiki directory, launching a Flask app with specific UIs. It explicitly mentions the sibling tool stop_wiki_server for stopping, making purpose and differentiation clear.
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 prerequisite (index_repository must be called first) and an example, guiding when to use. It doesn't explicitly state when not to use, but the dependency and stop tool provide clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_wiki_serverA
Stop a previously started wiki web server. Gracefully terminates the server process. If no server is found on the specified port, returns a list of currently running servers.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port of the wiki server to stop (default: 8080) | |
| wiki_path | No | Optional wiki path to identify which server to stop |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses graceful termination and fallback behavior. Annotations already provide readOnlyHint=false and destructiveHint=false; description adds nuance. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with main action. Minor redundancy between first sentence and 'gracefully terminates', but overall 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?
No output schema; description does not specify return value on success, only fallback case. Open-world hint and other context partially compensate, but missing return info is a gap.
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 covers all parameters (100%), description references 'port' but adds no additional semantics beyond schema defaults and constraints.
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 stops a wiki server with graceful termination, distinguishing it from sibling tools like serve_wiki. The verb 'stop' and resource 'wiki web server' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides fallback behavior if server not found, mentions no prior indexing needed. However, lacks explicit when-to-use vs alternatives, though context with sibling tools implies stopping vs starting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_codemap_topicsARead-onlyIdempotent
Suggest interesting codemap topics for a repository based on call graph hubs, core modules, and common entry patterns. Use before generate_codemap to discover what flows are worth exploring.
Requires: index_repository must be called first.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | Yes | Path to the indexed repository | |
| max_suggestions | No | Maximum topic suggestions to return (default: 10, range: 1-30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description's main addition is stating the basis for suggestions (call graph hubs, etc.) and the prerequisite. No contradictions. Minor gap: doesn't mention any other behavioral traits like output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences plus a prerequisite line. Every sentence adds value, no redundancy. Front-loaded with the main 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?
Covers purpose, usage, prerequisite, and basis of suggestions. No output schema exists, but the tool name implies a list of topics. Minor gap: no explicit mention of return format or example, but overall complete for its 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 coverage is 100%, so the schema already documents both parameters. The description adds no additional parameter semantics beyond what is in the schema, meeting the 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?
The description clearly states the verb 'suggest', the resource 'codemap topics', and the context 'based on call graph hubs, core modules, and common entry patterns'. It also distinguishes itself from the sibling 'generate_codemap' by suggesting to use it before.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use before generate_codemap to discover what flows are worth exploring' and provides a prerequisite: 'Requires: index_repository must be called first.' This gives clear when-to-use and precondition guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_next_actionsARead-onlyIdempotent
Suggest which tools to use next based on tools already used. Returns ranked suggestions with reasons. No LLM calls - uses a static decision tree for instant responses.
No prior indexing required.
| Name | Required | Description | Default |
|---|---|---|---|
| tools_used | No | List of tool names the agent has already used in this session | |
| context | No | Optional context about what the agent is trying to accomplish | |
| repo_path | No | Path to the repository (used to check if wiki exists) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, idempotentHint=true, etc.), the description adds behavioral traits: 'No LLM calls - uses a static decision tree for instant responses' and 'No prior indexing required.' This clearly informs the agent about the tool's non-LLM nature and lack of indexing needs, which are not captured in 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 three sentences long, front-loading the core purpose and output, then clarifying key behavioral aspects (no LLM, static decision tree, no indexing). Every sentence adds value with no redundant 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?
With annotations covering safety (read-only, idempotent) and schema covering parameters, the description adds the no-LLM and no-indexing context. It lacks details on return format (e.g., structure of 'ranked suggestions') but that is partially described. Given the low complexity (3 optional params), the description 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?
Schema description coverage is 100% with clear descriptions for all three parameters (tools_used, context, repo_path). The description does not add extra parameter details beyond what the schema provides, so a baseline score of 3 is appropriate given the schema already does its job.
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: 'Suggest which tools to use next based on tools already used. Returns ranked suggestions with reasons.' This provides a specific verb and resource, and the mention of 'No LLM calls' distinguishes it from sibling tools like 'ask_question' or 'deep_research' that might involve LLM-based reasoning.
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 when to use by stating 'No LLM calls - uses a static decision tree for instant responses' and 'No prior indexing required,' suggesting it's for quick, lightweight suggestions. However, it does not explicitly state when not to use or name alternative tools, leaving some ambiguity for agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clear, distinct purposes, though some aliases (e.g., ask_about_diff for analyze_diff, get_wiki_stats for get_status) and a deprecated tool introduce minor ambiguity. Descriptions are sufficiently detailed to differentiate the many metrics and analysis tools.
Naming follows a mostly consistent verb_noun pattern (e.g., analyze_architecture, search_code, get_complexity_metrics). Some mixing of verb styles (ask, batch_explain, cancel, serve) occurs, but it's not chaotic. Aliases and deprecated items are well-documented.
With 65 tools, the surface is very large. While the domain (code analysis and documentation) could justify a broad set, many metric tools (e.g., get_churn_metrics, get_co_change) could be consolidated. This many tools may overwhelm agents and increase selection errors.
The tool set comprehensively covers indexing, searching, architecture analysis, metrics, diff analysis, research, documentation export, and more. No obvious missing operations for the stated purpose; it handles the full lifecycle of code analysis and wiki generation.
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
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
A cited wiki of your GitHub repo: search, read pages, find symbols and ask, with line citations.
Generate, search, and manage codebase documentation on DocuWriter.ai. 72 tools incl. Autopilot.
Related MCP Servers
- AlicenseAqualityBmaintenanceGenerates professional documentation for multi-language codebases with deep AST-based code analysis, supporting Docusaurus, MkDocs, and Sphinx frameworks. Includes API documentation generation, PDF export, OpenAPI spec generation, and sales-ready documentation for code marketplaces.9MIT
- AlicenseAqualityBmaintenanceGenerates professional documentation for multi-language projects with deep code analysis, supporting frameworks like Docusaurus, MkDocs, and Sphinx, including API docs, PDF export, and OpenAPI specifications.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across multiple repositories using AST-aware chunking and relationship tracking. Supports local LLM embeddings, real-time indexing, and cross-codebase dependency analysis through vector and graph databases.3MIT
- AlicenseNot gradedqualityCmaintenanceTransforms your local repository into a shared project brain using recursive reasoning and local LLMs to analyze, reason, and remember project architecture.MIT
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/UrbanDiver/local-deepwiki-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server