mcp-server-tree-sitter
The MCP Tree-sitter Server provides code analysis capabilities using tree-sitter, enabling AI assistants to intelligently explore and analyze codebases. Key capabilities include:
Project Management: Register and manage multiple code projects
Code Exploration: Examine files, extract content, and retrieve metadata
Syntax Analysis: Get Abstract Syntax Trees (AST) with customizable depth and identify specific nodes
Pattern Search: Search for text patterns or run tree-sitter queries to find code patterns
Symbol Extraction: Identify and analyze functions, classes, imports and other code symbols
Complexity Analysis: Calculate code metrics for files
Dependency Tracking: Find and analyze code dependencies and imports
Query Building: Create, adapt, and use predefined tree-sitter queries across languages
Similar Code Detection: Find similar code snippets and symbol usage locations
Cache Management: Optimize performance through parse tree caching
Configuration: Customize server behavior through YAML configs and environment variables
AI Assistance: Generate predefined prompts for code review and explanation
State Persistence: Maintain registered projects and cached data
Integrates with Git repositories by recognizing and excluding .git directories from analysis
Provides language-specific code parsing and analysis for JavaScript files, with symbol extraction and AST-based understanding
Enables analysis of Julia code with tree-sitter parsing, symbol extraction, and dependency analysis
Supports parsing and analysis of Kotlin code with tree-sitter for symbol extraction and AST generation
Offers language-specific code parsing and analysis for Python files, including symbol extraction, AST generation, and complexity analysis
Enables analysis of Rust codebases with capabilities for symbol extraction, dependency analysis, and AST generation
Provides code analysis for Swift files with tree-sitter parsing and structure-aware code exploration
Supports TypeScript code analysis with tree-sitter, including syntax tree generation and structure-aware code exploration
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., "@mcp-server-tree-sitteranalyze the main function in my Python 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.
MCP Tree-sitter Server
A Model Context Protocol (MCP) server that provides code analysis capabilities using tree-sitter, designed to give AI assistants intelligent access to codebases with appropriate context management. Claude Desktop is the reference implementation target.
Features
🔍 Flexible Exploration: Examine code at multiple levels of granularity
🧠 Context Management: Provides just enough information without overwhelming the context window
🌐 Language Agnostic: Supports many programming languages including Python, JavaScript, TypeScript, Go, Rust, C, C++, C#, Swift, Java, Kotlin, Dart, Julia, and APL via tree-sitter-language-pack
🌳 Structure-Aware: Uses AST-based understanding with efficient cursor-based traversal
🔎 Searchable: Find specific patterns using text search and tree-sitter queries
🔄 Caching: Optimized performance through parse tree caching
🔑 Symbol Extraction: Extract and analyze functions, classes, and other code symbols
📊 Dependency Analysis: Identify and analyze code dependencies and relationships
🧩 State Persistence: Maintains project registrations and cached data between invocations
🔒 Secure: Built-in security boundaries and input validation
For a comprehensive list of all available commands, their current implementation status, and detailed feature matrix, please refer to the FEATURES.md document.
Related MCP server: @lex-tools/codebase-context-dumper
Installation
Prerequisites
Python 3.10+
Tree-sitter language parsers for your preferred languages
Basic Installation
pip install mcp-server-tree-sitterDevelopment Installation
git clone https://github.com/wrale/mcp-server-tree-sitter.git
cd mcp-server-tree-sitter
pip install -e ".[dev]"Quick Start
Running with Claude Desktop
You can make the server available in Claude Desktop either through the MCP CLI or by manually configuring Claude Desktop.
Using MCP CLI
Register the server with Claude Desktop:
mcp install mcp_server_tree_sitter.server:mcp --name "tree_sitter"Manual Configuration
Alternatively, you can manually configure Claude Desktop:
Open your Claude Desktop configuration file:
macOS/Linux:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Create the file if it doesn't exist.
Add the server to the
mcpServerssection:{ "mcpServers": { "tree_sitter": { "command": "python", "args": [ "-m", "mcp_server_tree_sitter.server" ] } } }Alternatively, if using uv or another package manager:
{ "mcpServers": { "tree_sitter": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT", "run", "-m", "mcp_server_tree_sitter.server" ] } } }Note: Make sure to replace
/ABSOLUTE/PATH/TO/YOUR/PROJECTwith the actual absolute path to your project directory.Save the file and restart Claude Desktop.
The MCP tools icon (hammer) will appear in Claude Desktop's interface once you have properly configured at least one MCP server. You can then access the tree_sitter server's functionality by clicking on this icon.
Configuring with Released Version
If you prefer not to manually install the package from PyPI (released version) or clone the repository, simply use the following configuration for Claude Desktop:
Open your Claude Desktop configuration file (same location as above).
Add the tree-sitter server to the
mcpServerssection:{ "mcpServers": { "tree_sitter": { "command": "uvx", "args": [ "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT", "mcp-server-tree-sitter" ] } } }Save the file and restart Claude Desktop.
This method uses uvx to run the installed PyPI package directly, which is the recommended approach for the released version. The server doesn't require any additional parameters to run in its basic configuration.
State Persistence
The MCP Tree-sitter Server maintains state between invocations. This means:
Projects stay registered until explicitly removed or the server is restarted
Parse trees are cached according to configuration settings
Language information is retained throughout the server's lifetime
This persistence is maintained in-memory during the server's lifetime using singleton patterns for key components.
Running as a standalone server
There are several ways to run the server:
Using the MCP CLI directly:
python -m mcp run mcp_server_tree_sitter.serverUsing Makefile targets:
# Show available targets
make
# Run the server with default settings
make mcp-run
# Show help information
make mcp-run ARGS="--help"
# Show version information
make mcp-run ARGS="--version"
# Run with custom configuration file
make mcp-run ARGS="--config /path/to/config.yaml"
# Enable debug logging
make mcp-run ARGS="--debug"
# Disable parse tree caching
make mcp-run ARGS="--disable-cache"Using the installed script:
# Run the server with default settings
mcp-server-tree-sitter
# Show help information
mcp-server-tree-sitter --help
# Show version information
mcp-server-tree-sitter --version
# Run with custom configuration file
mcp-server-tree-sitter --config /path/to/config.yaml
# Enable debug logging
mcp-server-tree-sitter --debug
# Disable parse tree caching
mcp-server-tree-sitter --disable-cacheUsing with the MCP Inspector
Using the MCP CLI directly:
python -m mcp dev mcp_server_tree_sitter.serverOr using the Makefile target:
make mcp-devYou can also pass arguments:
make mcp-dev ARGS="--debug"Usage
Register a Project
First, register a project to analyze:
register_project_tool(path="/path/to/your/project", name="my-project")Explore Files
List files in the project:
list_files(project="my-project", pattern="**/*.py")View file content:
get_file(project="my-project", path="src/main.py")Analyze Code Structure
Get the syntax tree:
get_ast(project="my-project", path="src/main.py", max_depth=3)Extract symbols:
get_symbols(project="my-project", path="src/main.py")Search Code
Search for text:
find_text(project="my-project", pattern="function", file_pattern="**/*.py")Run tree-sitter queries:
run_query(
project="my-project",
query='(function_definition name: (identifier) @function.name)',
language="python"
)Analyze Complexity
analyze_complexity(project="my-project", path="src/main.py")Direct Python Usage
While the primary intended use is through the MCP server, you can also use the library directly in Python code:
# Import from the API module
from mcp_server_tree_sitter.api import (
register_project, list_projects, get_config, get_language_registry
)
# Register a project
project_info = register_project(
path="/path/to/project",
name="my-project",
description="Description"
)
# List projects
projects = list_projects()
# Get configuration
config = get_config()
# Access components through dependency injection
from mcp_server_tree_sitter.di import get_container
container = get_container()
project_registry = container.project_registry
language_registry = container.language_registryConfiguration
Create a YAML configuration file:
cache:
enabled: true # Enable/disable caching (default: true)
max_size_mb: 100 # Maximum cache size in MB (default: 100)
ttl_seconds: 300 # Cache entry time-to-live in seconds (default: 300)
security:
max_file_size_mb: 5 # Maximum file size to process in MB (default: 5)
excluded_dirs: # Directories to exclude from processing
- .git
- node_modules
- __pycache__
allowed_extensions: # Optional list of allowed file extensions
# - py
# - js
# Leave empty or omit for all extensions
language:
default_max_depth: 5 # Default max depth for AST traversal (default: 5)
preferred_languages: # List of languages to pre-load at startup for faster performance
- python # Pre-loading reduces latency for first operations
- javascript
log_level: INFO # Logging level (DEBUG, INFO, WARNING, ERROR)
max_results_default: 100 # Default maximum results for search operationsLoad it with:
configure(config_path="/path/to/config.yaml")Logging Configuration
The server's logging verbosity can be controlled using environment variables:
# Enable detailed debug logging
export MCP_TS_LOG_LEVEL=DEBUG
# Use normal informational logging (default)
export MCP_TS_LOG_LEVEL=INFO
# Only show warning and error messages
export MCP_TS_LOG_LEVEL=WARNINGFor comprehensive information about logging configuration, please refer to the logging documentation. For details on the command-line interface, see the CLI documentation.
About preferred_languages
The preferred_languages setting controls which language parsers are pre-loaded at server startup rather than on-demand. This provides several benefits:
Faster initial analysis: No delay when first analyzing a file of a pre-loaded language
Early error detection: Issues with parsers are discovered at startup, not during use
Predictable memory allocation: Memory for frequently used parsers is allocated upfront
By default, all parsers are loaded on-demand when first needed. For optimal performance, specify the languages you use most frequently in your projects.
You can also configure specific settings:
configure(cache_enabled=True, max_file_size_mb=10, log_level="DEBUG")Or use environment variables:
export MCP_TS_CACHE_MAX_SIZE_MB=256
export MCP_TS_LOG_LEVEL=DEBUG
export MCP_TS_CONFIG_PATH=/path/to/config.yamlEnvironment variables use the format MCP_TS_SECTION_SETTING (e.g., MCP_TS_CACHE_MAX_SIZE_MB) for section settings, or MCP_TS_SETTING (e.g., MCP_TS_LOG_LEVEL) for top-level settings.
Configuration values are applied in this order of precedence:
Environment variables (highest)
Values set via
configure()callsYAML configuration file
Default values (lowest)
The server will look for configuration in:
Path specified in
configure()callPath specified by
MCP_TS_CONFIG_PATHenvironment variableDefault location:
~/.config/tree-sitter/config.yaml
For Developers
Diagnostic Capabilities
The MCP Tree-sitter Server includes a diagnostic framework to help identify and fix issues:
# Run diagnostic tests
make test-diagnostics
# CI-friendly version (won't fail the build on diagnostic issues)
make test-diagnostics-ciDiagnostic tests provide detailed information about the server's behavior and can help isolate specific issues. For more information about the diagnostic framework, please see the diagnostics documentation.
Type Safety Considerations
The MCP Tree-sitter Server maintains type safety when interfacing with tree-sitter libraries through careful design patterns and protocols. If you're extending the codebase, please review the type safety guide for important information about handling tree-sitter API variations.
Available Resources
The server provides the following MCP resources:
project://{project}/files- List all files in a projectproject://{project}/files/{pattern}- List files matching a patternproject://{project}/file/{path}- Get file contentproject://{project}/file/{path}/lines/{start}-{end}- Get specific lines from a fileproject://{project}/ast/{path}- Get the AST for a fileproject://{project}/ast/{path}/depth/{depth}- Get the AST with custom depth
Available Tools
The server provides tools for:
Project management:
register_project_tool,list_projects_tool,remove_project_toolLanguage management:
list_languages,check_language_availableFile operations:
list_files,get_file,get_file_metadataAST analysis:
get_ast,get_node_at_positionCode search:
find_text,run_querySymbol extraction:
get_symbols,find_usageProject analysis:
analyze_project,get_dependencies,analyze_complexityQuery building:
get_query_template_tool,list_query_templates_tool,build_query,adapt_query,get_node_typesSimilar code detection:
find_similar_codeCache management:
clear_cacheConfiguration diagnostics:
diagnose_config
See FEATURES.md for detailed information about each tool's implementation status, dependencies, and usage examples.
Available Prompts
The server provides the following MCP prompts:
code_review- Create a prompt for reviewing codeexplain_code- Create a prompt for explaining codeexplain_tree_sitter_query- Explain tree-sitter query syntaxsuggest_improvements- Create a prompt for suggesting code improvementsproject_overview- Create a prompt for a project overview analysis
Feedback & Community
We'd love to hear how you're using mcp-server-tree-sitter and what would make it more useful for your workflow.
Questions & Feature Requests: GitHub Discussions
Bug Reports: GitHub Issues
License
MIT
Available Tools
26 toolsadapt_queryC
Adapt a query from one language to another.
Args:
query: Original query string
from_language: Source language
to_language: Target language
Returns:
Adapted query
| Name | Required | Description | Default |
|---|---|---|---|
| from_language | Yes | ||
| query | Yes | ||
| to_language | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool adapts queries but doesn't explain how the adaptation works (e.g., translation, syntax conversion), what errors might occur, or any performance considerations. This leaves significant gaps in understanding the tool's 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 front-loaded with the core purpose, followed by structured parameter and return details. It's efficient with minimal waste, though the parameter explanations could be more integrated into the main text rather than in a separate Args/Returns block.
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 3-parameter tool with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose and parameters but lacks details on adaptation mechanics, error handling, or output format. Given the complexity, it's incomplete but not entirely inadequate.
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 description lists the three parameters (query, from_language, to_language) and their roles, adding meaning beyond the schema's 0% coverage. However, it doesn't specify language formats (e.g., SQL, Python) or query constraints, leaving some ambiguity. With low schema coverage, this partial compensation earns a baseline score.
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: 'Adapt a query from one language to another.' It specifies the verb ('adapt') and resource ('query'), making the function unambiguous. However, it doesn't explicitly distinguish this from sibling tools like 'build_query' or 'run_query', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'adapt_query' over 'build_query' or 'run_query', nor does it specify prerequisites or exclusions. The usage context is implied but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_complexityC
Analyze code complexity.
Args:
project: Project name
file_path: Path to the file
Returns:
Complexity metrics
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'Returns: Complexity metrics' but doesn't disclose behavioral traits like whether this is a read-only operation, computational cost, rate limits, or what happens with invalid inputs. The description is minimal and lacks essential operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the main purpose. The Args/Returns structure is clear, though the content within is sparse. No redundant sentences are present, making it efficient but under-specified.
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 (code analysis with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'complexity metrics' entail, how they're computed, or provide enough context for reliable agent use, falling short of minimum viability.
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 0%, so the description must compensate. It lists parameters 'project' and 'file_path' with brief labels but adds minimal meaning beyond the schema's titles. No details on format, constraints, or examples are provided, leaving significant gaps in 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?
The description states the tool's purpose as 'Analyze code complexity', which is clear but vague. It specifies the action ('analyze') and resource ('code complexity'), but doesn't distinguish it from potential siblings like 'analyze_project' or provide specific details about what complexity analysis entails.
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. With siblings like 'analyze_project' and 'get_ast' that might relate to code analysis, the description lacks any context about appropriate use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_projectC
Analyze overall project structure.
Args:
project: Project name
scan_depth: Depth of detailed analysis (higher is slower)
ctx: Optional MCP context for progress reporting
Returns:
Project analysis
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| project | Yes | ||
| scan_depth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'scan_depth: Depth of detailed analysis (higher is slower)' which provides some behavioral context about performance impact. However, it doesn't disclose other important behaviors like whether this is a read-only operation, what permissions might be required, error conditions, or what format the analysis returns.
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 appropriately sized with a clear purpose statement followed by parameter explanations. The structure with Args/Returns sections is helpful. While efficient, the purpose statement could be more specific to better earn 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?
For a 3-parameter analysis tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'Project analysis' returns, what aspects of structure are analyzed, or provide examples of typical use cases. The agent would struggle to understand what this tool actually produces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description provides meaningful semantic context for all 3 parameters. It explains that 'project' is the project name, 'scan_depth' controls analysis detail with performance tradeoffs, and 'ctx' is for optional progress reporting. This adds significant value beyond the bare schema which only shows types and requirements.
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 states 'Analyze overall project structure' which provides a general purpose, but it's vague about what specific aspects are analyzed. It doesn't distinguish this tool from sibling tools like 'analyze_complexity' or 'get_dependencies' which might also analyze project aspects. The description lacks specificity about what 'overall project structure' entails.
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 about when to use this tool versus alternatives. With sibling tools like 'analyze_complexity', 'get_dependencies', and 'get_ast' that might provide overlapping or complementary analysis, the description offers no context about when this specific analysis tool is appropriate versus other analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_queryC
Build a tree-sitter query from templates or patterns.
Args:
language: Language name
patterns: List of template names or custom patterns
combine: How to combine patterns ("or" or "and")
Returns:
Combined query
| Name | Required | Description | Default |
|---|---|---|---|
| combine | No | or | |
| language | Yes | ||
| patterns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states what the tool does but lacks behavioral details such as whether it validates inputs, handles errors, caches results, or has performance considerations. For a tool with no annotation coverage, this is insufficient.
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 appropriately sized and front-loaded with the core purpose. The Args and Returns sections are structured clearly, though the formatting with indentation might be slightly verbose. Overall, it's efficient with minimal 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 no annotations, 0% schema coverage, and no output schema, the description is moderately complete. It covers the basic purpose and parameters but lacks details on behavior, error handling, and output specifics. For a tool with three parameters and no structured support, it's adequate but has clear 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 description coverage is 0%, so the description must compensate. It lists the parameters (language, patterns, combine) and provides some semantics (e.g., 'patterns' can be template names or custom patterns, 'combine' has options 'or' or 'and'), but it doesn't fully explain usage details like format examples or constraints. Baseline is 3 as it adds moderate value beyond the bare 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: 'Build a tree-sitter query from templates or patterns.' It specifies the verb ('Build') and resource ('tree-sitter query'), though it doesn't explicitly distinguish it from sibling tools like 'run_query' or 'adapt_query', which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'run_query' (which might execute queries) or 'adapt_query' (which might modify them), leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_language_availableC
Check if a tree-sitter language parser is available.
Args:
language: Language to check
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool checks availability and returns a 'Success message', but doesn't explain what constitutes availability (e.g., installed, loaded, compatible), error conditions, or performance implications. This is inadequate for a tool that likely involves system-level checks, leaving key behavioral traits unspecified.
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 appropriately sized and front-loaded, with the core purpose stated first. The Args and Returns sections are structured but include minimal detail. While efficient, the 'Success message' return value is vague and could be more informative, slightly reducing clarity without adding unnecessary length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of checking language parsers, no annotations, and no output schema, the description is incomplete. It lacks details on what 'available' means, error handling, and the structure of the return value. This leaves significant gaps for the agent to understand the tool's behavior and outcomes, making it insufficient for reliable 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?
The schema description coverage is 0%, so the description must compensate. It adds the parameter 'language' with a brief explanation ('Language to check'), but doesn't specify format (e.g., string identifiers like 'python', 'javascript'), constraints, or examples. This provides basic meaning but falls short of fully documenting the parameter, resulting in a baseline score.
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: 'Check if a tree-sitter language parser is available.' It specifies the verb ('Check') and resource ('tree-sitter language parser'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'list_languages' or 'get_ast', which might offer related functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as whether a language needs to be installed or configured first, or compare it to siblings like 'list_languages' that might list available languages. This lack of context leaves the agent unsure about optimal usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_cacheC
Clear the parse tree cache.
Args:
project: Optional project to clear cache for
file_path: Optional specific file to clear cache for
Returns:
Status message
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| project | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool clears a cache, implying a destructive mutation, but doesn't specify if this requires special permissions, affects performance, or has side effects like temporary slowdowns. The return value is vaguely described as 'Status message' without detailing success/failure indicators or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured Args and Returns sections. It avoids unnecessary fluff, but the formatting with indentation and section headers could be more streamlined for an AI agent. Overall, it's efficient but not perfectly minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 optional parameters, no annotations, no output schema), the description is partially complete. It covers the basic action and parameters but lacks details on behavioral traits, error cases, and integration with sibling tools. For a cache-clearing operation, more context on impact and usage scenarios would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists both parameters ('project' and 'file_path') and notes they are optional, adding meaning beyond the schema's basic titles. However, it doesn't explain what 'project' or 'file_path' refer to in context (e.g., project names vs. IDs, file path formats), leaving gaps in 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?
The description clearly states the tool's purpose: 'Clear the parse tree cache.' It specifies the verb ('clear') and resource ('parse tree cache'), making the action unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'remove_project_tool' or 'configure', which might also involve cleanup operations, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as whether a cache must exist first, or suggest other tools for related tasks like 'get_ast' or 'analyze_project'. The absence of usage context leaves the agent without clear decision-making criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configureC
Configure the server.
Args:
config_path: Path to YAML config file
cache_enabled: Whether to enable parse tree caching
max_file_size_mb: Maximum file size in MB
log_level: Logging level (DEBUG, INFO, WARNING, ERROR)
Returns:
Current configuration
| Name | Required | Description | Default |
|---|---|---|---|
| cache_enabled | No | ||
| config_path | No | ||
| log_level | No | ||
| max_file_size_mb | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions 'Returns: Current configuration' but doesn't specify if this is a read-only operation, whether changes are persistent, what permissions are required, or any side effects. The description doesn't contradict annotations (none exist), but fails to adequately disclose behavioral traits.
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 appropriately sized and front-loaded with the core purpose, followed by structured parameter documentation. The Args/Returns format is efficient, though the initial statement 'Configure the server' could be more informative.
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 4-parameter configuration tool with no annotations and no output schema, the description provides basic parameter semantics but lacks critical context about behavioral aspects, side effects, and relationship to other tools. The return value is mentioned but not detailed. This is minimally adequate but has clear 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?
With 0% schema description coverage, the description compensates by providing clear parameter documentation in the Args section. Each parameter's purpose is explained (e.g., 'Path to YAML config file', 'Whether to enable parse tree caching'), adding significant meaning beyond the bare schema. However, it doesn't explain parameter interactions or default behaviors.
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 states the tool 'Configure[s] the server', which provides a basic verb+resource but lacks specificity about what aspects of the server are configured. It doesn't distinguish from siblings like 'diagnose_config' or 'clear_cache', leaving the purpose somewhat vague.
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. There's no mention of prerequisites, when configuration changes take effect, or how it relates to siblings like 'diagnose_config' or 'register_project_tool'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_configC
Diagnose issues with YAML configuration loading.
Args:
config_path: Path to YAML config file
Returns:
Diagnostic information
| Name | Required | Description | Default |
|---|---|---|---|
| config_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns 'Diagnostic information,' but doesn't specify what that entails (e.g., error messages, suggestions, logs) or any behavioral traits like side effects, performance considerations, or error handling. This leaves significant gaps for a diagnostic tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose in the first sentence. The Args and Returns sections are structured but could be integrated more smoothly. There's no wasted text, though it could benefit from slightly more elaboration to improve completeness.
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 (diagnostic operation), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what 'Diagnostic information' includes, potential error cases, or usage context, making it inadequate for an AI agent to fully understand the tool's behavior and outputs.
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 description adds minimal semantics beyond the input schema. It defines 'config_path' as 'Path to YAML config file,' which clarifies the parameter's purpose, but with 0% schema description coverage and only one parameter, this is a baseline improvement. However, it doesn't provide details like expected file formats, path resolution, or validation rules.
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: 'Diagnose issues with YAML configuration loading.' This specifies the verb ('diagnose') and resource ('YAML configuration loading'), making it understandable. However, it doesn't distinguish this tool from potential sibling tools that might also handle configuration issues, though none of the listed siblings appear to directly overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or related tools. For example, it doesn't specify if this is for syntax errors, semantic issues, or other problems, nor does it reference sibling tools like 'configure' or 'analyze_project' that might be relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_codeC
Find similar code to a snippet.
Args:
project: Project name
snippet: Code snippet to find
language: Language of the snippet
threshold: Similarity threshold (0.0-1.0)
max_results: Maximum number of results
Returns:
List of similar code locations
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ||
| max_results | No | ||
| project | Yes | ||
| snippet | Yes | ||
| threshold | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns 'List of similar code locations,' which hints at a read-only operation, but doesn't clarify permissions, rate limits, performance implications, or what 'similar' means algorithmically. This is inadequate for a tool with 5 parameters and no 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 well-structured and front-loaded with the core purpose, followed by parameter and return details in a clear format. Every sentence adds value without redundancy, making it efficient for an agent to parse.
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 (5 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits (e.g., performance, error handling), output format specifics, and usage context relative to siblings. For a code analysis tool with multiple parameters, this leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists all 5 parameters with brief explanations (e.g., 'Similarity threshold (0.0-1.0)'), adding meaning beyond the schema's 0% description coverage. However, it doesn't elaborate on how parameters interact (e.g., how 'threshold' affects results) or provide examples, leaving some ambiguity. This compensates partially but not fully for the schema gap.
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: 'Find similar code to a snippet.' It specifies the verb ('find') and resource ('similar code'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'find_text' or 'find_usage,' which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'find_text' (for text search) or 'find_usage' (for usage patterns), nor does it specify prerequisites or exclusions. This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_textB
Search for text pattern in project files.
Args:
project: Project name
pattern: Text pattern to search for
file_pattern: Optional glob pattern (e.g., "**/*.py")
max_results: Maximum number of results
case_sensitive: Whether to do case-sensitive matching
whole_word: Whether to match whole words only
use_regex: Whether to treat pattern as a regular expression
context_lines: Number of context lines to include
Returns:
List of matches with file, line number, and text
| Name | Required | Description | Default |
|---|---|---|---|
| case_sensitive | No | ||
| context_lines | No | ||
| file_pattern | No | ||
| max_results | No | ||
| pattern | Yes | ||
| project | Yes | ||
| use_regex | No | ||
| whole_word | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the action ('search') and return format ('List of matches with file, line number, and text'), but lacks details on performance (e.g., speed, rate limits), error handling, or side effects (e.g., whether it modifies files). For a tool with 8 parameters and no annotations, this is insufficient.
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 and concise, with a clear purpose statement followed by parameter details in a formatted list. Every sentence adds value, and it's front-loaded with the main action. There's no unnecessary information, making it efficient 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?
Given the complexity (8 parameters, no annotations, no output schema), the description is moderately complete. It covers the purpose and parameters but lacks behavioral context and output details beyond a high-level return statement. For a search tool, more information on result format or limitations would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists all 8 parameters with brief explanations, adding meaning beyond the input schema, which has 0% description coverage. For example, it clarifies 'file_pattern' as 'Optional glob pattern (e.g., "**/*.py")' and 'context_lines' as 'Number of context lines to include'. This compensates well for the schema's lack of descriptions, though it could be more detailed on usage.
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: 'Search for text pattern in project files.' It specifies the verb ('search') and resource ('text pattern in project files'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'find_similar_code' or 'find_usage', which might also involve searching, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where this search is preferred over others, such as 'find_similar_code' or 'find_usage'. Without such guidance, users might struggle to select the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_usageC
Find usage of a symbol.
Args:
project: Project name
symbol: Symbol name to find
file_path: Optional file to look in (for local symbols)
language: Language to search in
Returns:
List of usage locations
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| language | No | ||
| project | Yes | ||
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that it returns a 'List of usage locations,' which hints at read-only behavior, but doesn't cover critical aspects like whether it performs a search across files, requires specific permissions, has rate limits, or handles errors. This is inadequate for a tool with 4 parameters and no 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 front-loaded with the main purpose, followed by a structured list of args and returns. It's efficient with minimal waste, though the formatting as a docstring could be slightly improved for readability. Every sentence serves a purpose, making it appropriately 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 the complexity (4 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, error handling, and output format beyond a vague 'List of usage locations.' For a tool that likely performs code analysis, this leaves significant gaps in how an agent should invoke it effectively.
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 0%, so the description must compensate. It lists all 4 parameters with brief explanations (e.g., 'Optional file to look in (for local symbols)'), adding some semantic context beyond the schema's titles. However, it doesn't provide detailed usage examples, constraints, or default behaviors, leaving gaps in understanding how parameters interact.
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: 'Find usage of a symbol.' It specifies the verb ('find') and resource ('usage of a symbol'), making it understandable. However, it doesn't explicitly differentiate from sibling tools like 'find_similar_code' or 'find_text', which could have overlapping search functionality, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lists parameters but doesn't mention scenarios, prerequisites, or exclusions. For example, it doesn't clarify if this is for code analysis versus general text search, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astA
Get abstract syntax tree for a file.
Args:
project: Project name
path: File path relative to project root
max_depth: Maximum depth of the tree (default: 5)
include_text: Whether to include node text
Returns:
AST as a nested dictionary
| Name | Required | Description | Default |
|---|---|---|---|
| include_text | No | ||
| max_depth | No | ||
| path | Yes | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions the return format ('AST as a nested dictionary'), it lacks critical details such as whether this is a read-only operation, potential performance impacts, error conditions (e.g., invalid file paths), or how max_depth=null behaves. For a tool with 4 parameters and no annotation coverage, this is insufficient.
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 efficiently structured with a clear purpose statement followed by a parameter list and return value. Every sentence earns its place, and it's front-loaded with the core functionality. There's no redundant or verbose language, making it easy to parse quickly.
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 (4 parameters, no annotations, no output schema), the description is partially complete. It covers parameters well but lacks behavioral context (e.g., error handling, performance) and doesn't explain the nested dictionary structure of the AST return value. Without an output schema, more detail on the return format would be helpful, making this adequate but with clear 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?
The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains all 4 parameters: project ('Project name'), path ('File path relative to project root'), max_depth ('Maximum depth of the tree'), and include_text ('Whether to include node text'), including default values. This compensates well for the schema's lack of descriptions, though it doesn't detail format constraints (e.g., path syntax).
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 with a specific verb ('Get') and resource ('abstract syntax tree for a file'), distinguishing it from siblings like get_file (which retrieves raw file content) or get_symbols (which extracts symbols). The description directly addresses what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like get_file (for raw content) or get_node_types (for node type analysis), nor does it specify prerequisites or contexts where this tool is preferred. Usage is implied only by the tool's name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dependenciesB
Find dependencies of a file.
Args:
project: Project name
file_path: Path to the file
Returns:
Dictionary of imports/includes
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool 'Find dependencies' but does not disclose behavioral traits like whether it's read-only, if it requires specific permissions, how it handles errors, or if there are rate limits. This leaves significant gaps in understanding the tool's operation.
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 appropriately sized and front-loaded with the main purpose first, followed by parameter and return details. It uses a structured format with clear sections, making it easy to parse, though the return statement could be more precise.
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 (2 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose and parameters but lacks behavioral context, usage guidelines, and detailed return value explanation, making it adequate but with clear 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?
The description adds meaning beyond the input schema by explaining the parameters: 'project: Project name' and 'file_path: Path to the file.' Since schema description coverage is 0%, this compensates well by clarifying what each parameter represents, though it could provide more detail on format or 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's purpose: 'Find dependencies of a file.' It specifies the verb ('Find') and resource ('dependencies of a file'), making it understandable. However, it does not explicitly differentiate from sibling tools like 'analyze_project' or 'find_usage', which might also involve dependency analysis, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks context on prerequisites, such as whether the project must be registered first, and does not mention any sibling tools as alternatives for dependency-related tasks, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileB
Get content of a file.
Args:
project: Project name
path: File path relative to project root
max_lines: Maximum number of lines to return
start_line: First line to include (0-based)
Returns:
File content
| Name | Required | Description | Default |
|---|---|---|---|
| max_lines | No | ||
| path | Yes | ||
| project | Yes | ||
| start_line | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what the tool does (get file content) and some parameters, but doesn't describe important behavioral aspects: whether this requires authentication, rate limits, file size limitations, error conditions, or what happens with binary files. The description is minimal and lacks behavioral context needed for safe operation.
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 efficiently structured with a clear purpose statement followed by parameter explanations and return value. Every sentence serves a purpose. The formatting with Args and Returns sections is helpful. It could be slightly more concise by integrating the purpose with parameter context, but overall it's 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?
For a file retrieval tool with 4 parameters, no annotations, and no output schema, the description is minimally adequate. It explains what the tool does and documents parameters, but lacks important context: no output format details, no error handling information, no authentication requirements, and no guidance on when to use versus alternatives. The Returns section is just 'File content' without specifying format or 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?
With 0% schema description coverage, the description compensates well by explaining all 4 parameters in the Args section: project (Project name), path (File path relative to project root), max_lines (Maximum number of lines to return), and start_line (First line to include, 0-based). This adds significant semantic meaning beyond the bare schema, though it doesn't explain parameter interactions or 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's purpose with 'Get content of a file' - a specific verb (get) and resource (file content). It distinguishes from siblings like get_file_metadata (which returns metadata, not content) and list_files (which lists files, not retrieves content). However, it doesn't explicitly mention these distinctions in the description text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use get_file versus get_file_metadata, find_text, or other file-related tools in the sibling list. There's no context about prerequisites, limitations, or appropriate use cases beyond the basic function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_metadataC
Get metadata for a file.
Args:
project: Project name
path: File path relative to project root
Returns:
File metadata
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves metadata but doesn't specify what metadata includes (e.g., size, type, permissions), whether it's a read-only operation, or any error conditions. This leaves significant gaps in understanding the tool's 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 front-loaded with the core purpose in the first sentence, followed by structured sections for arguments and returns. It's efficient with minimal waste, though the 'Returns' section is vague and could be more informative, slightly reducing 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?
Given the tool's complexity (2 parameters, no annotations, no output schema), the description is incomplete. It lacks details on what metadata is returned, error handling, or behavioral traits, making it insufficient for an agent to fully understand how to use the tool effectively in 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?
The description includes an 'Args' section that lists and briefly describes the two parameters ('project' and 'path'), adding meaning beyond the input schema, which has 0% description coverage. However, it doesn't provide details like format examples or constraints, so it only partially compensates for the schema's lack of 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's purpose with a specific verb ('Get') and resource ('metadata for a file'), making it easy to understand what it does. However, it doesn't distinguish this tool from potential siblings like 'get_file' or 'get_ast', which might also retrieve file-related information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_file' (which likely retrieves file content) and 'list_files' (which lists files), there's no indication of how this tool differs or when it's the appropriate choice, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_at_positionA
Find the AST node at a specific position.
Args:
project: Project name
path: File path relative to project root
row: Line number (0-based)
column: Column number (0-based)
Returns:
Node information or None if not found
| Name | Required | Description | Default |
|---|---|---|---|
| column | Yes | ||
| path | Yes | ||
| project | Yes | ||
| row | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only minimally discloses behavior. It states the tool 'finds' a node and returns 'Node information or None', but omits critical details like error handling (e.g., invalid positions), performance characteristics, or what 'Node information' entails. For a tool with 4 parameters and no annotation coverage, this is insufficient.
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 appropriately sized and front-loaded with the core purpose. The Args/Returns sections are structured efficiently, though the formatting with indentation could be slightly cleaner. 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 moderate complexity (4 parameters, no output schema, no annotations), the description is partially complete. It covers parameters well and states the return value, but lacks details on error cases, output format, or behavioral nuances. For a tool that interacts with ASTs, more context on what 'Node information' includes 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?
The description adds significant value beyond the input schema, which has 0% description coverage. It explains all 4 parameters (project, path, row, column) with clear semantics, including that row/column are 0-based. This fully compensates for the schema's lack of descriptions, making parameters well-understood.
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 specific action ('Find the AST node') and resource ('at a specific position'), distinguishing it from siblings like get_ast (which retrieves the entire AST) or get_symbols (which focuses on symbols). The verb+resource combination is precise and 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?
The description implies usage when needing to locate a node by position in an AST, but provides no explicit guidance on when to use this versus alternatives like get_ast (for full AST) or find_similar_code (for semantic matching). It lacks any 'when-not' or prerequisite information, leaving usage context inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_typesB
Get descriptions of common node types for a language.
Args:
language: Language name
Returns:
Dictionary of node types and descriptions
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns a 'Dictionary of node types and descriptions', which gives some output context, but lacks details on permissions, rate limits, error handling, or whether it's a read-only operation. This is a significant gap for a tool with zero 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 appropriately sized and front-loaded: the first sentence clearly states the purpose, followed by concise 'Args' and 'Returns' sections. Every sentence adds value without redundancy, making it efficient 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 tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the purpose and parameter semantics but lacks usage guidelines and detailed behavioral context. Without an output schema, it hints at the return format but doesn't fully explain the dictionary structure, leaving some 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?
The description adds meaningful context for the single parameter: 'language: Language name'. Since the schema description coverage is 0% (the schema only provides a title 'Language' and type 'string'), the description compensates by specifying the parameter's role in fetching node types for that language. This is sufficient for the one parameter, earning a high score.
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: 'Get descriptions of common node types for a language.' It specifies the verb ('Get'), resource ('descriptions of common node types'), and scope ('for a language'), making the function unambiguous. However, it does not explicitly differentiate from sibling tools like 'get_ast' or 'get_symbols', which might also relate to language analysis, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions the 'language' parameter but does not specify contexts, prerequisites, or exclusions. For example, it does not clarify if this should be used before or after tools like 'get_ast' or 'analyze_project', leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_query_template_toolC
Get a predefined tree-sitter query template.
Args:
language: Language name
template_name: Template name (e.g., "functions", "classes")
Returns:
Query template information
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes | ||
| template_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'Get[s]' information, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, or what happens if the template doesn't exist. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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 appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured clearly, though the Returns section is vague ('Query template information'). Overall, it's efficient with minimal 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 has 2 parameters, no annotations, and no output schema, the description is moderately complete. It covers the purpose and parameters but lacks usage guidelines, behavioral details, and specifics on return values. For a simple read tool, this is adequate but leaves room for improvement in guiding the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes parameter semantics in the Args section, explaining that 'language' is a language name and 'template_name' is a template name with examples. However, schema description coverage is 0%, so the schema provides no additional details. The description compensates adequately but doesn't specify allowed values or constraints beyond the 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?
The description clearly states the verb 'Get' and the resource 'predefined tree-sitter query template', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_query_templates_tool' or 'build_query', which might offer related functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'list_query_templates_tool' for listing templates or 'build_query' for creating custom queries, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_symbolsC
Extract symbols from a file.
Args:
project: Project name
file_path: Path to the file
symbol_types: Types of symbols to extract (functions, classes, imports, etc.)
Returns:
Dictionary of symbols by type
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| project | Yes | ||
| symbol_types | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions extraction but does not disclose behavioral traits such as whether it's read-only, requires specific permissions, handles errors, or has performance implications. This is a significant gap for a tool with no 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 appropriately sized and front-loaded with the main purpose, followed by structured parameter and return explanations. Every sentence adds value, though the formatting with indentation could be slightly improved for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 parameters, no annotations, no output schema), the description is incomplete. It explains parameters but lacks behavioral context, error handling, and output details (only mentions 'Dictionary of symbols by type' without structure). This is inadequate for a tool with no structured support.
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 description coverage is 0%, but the description adds meaning by explaining each parameter's role (e.g., 'Types of symbols to extract (functions, classes, imports, etc.)'). However, it does not fully compensate for the coverage gap, as it lacks details on formats, constraints, or examples for parameters like 'project' and 'file_path'.
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 'Extract' and the resource 'symbols from a file', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'get_ast' or 'analyze_complexity', which might also involve file analysis, so it misses full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks context on prerequisites (e.g., project must be registered) or exclusions, leaving the agent with no usage criteria beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesB
List files in a project.
Args:
project: Project name
pattern: Optional glob pattern (e.g., "**/*.py")
max_depth: Maximum directory depth
extensions: List of file extensions to include (without dot)
Returns:
List of file paths
| Name | Required | Description | Default |
|---|---|---|---|
| extensions | No | ||
| max_depth | No | ||
| pattern | No | ||
| project | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists files but doesn't describe key behaviors: whether it's read-only (implied but not explicit), how it handles permissions, whether it paginates results, or what happens if the project doesn't exist. The return format is mentioned but without details on structure or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a clear purpose statement followed by well-organized parameter and return sections. Every sentence earns its place by providing essential information without redundancy. The use of bullet-like formatting for Args and Returns enhances readability.
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 (4 parameters, no annotations, no output schema), the description is partially complete. It covers parameters well but lacks behavioral context (e.g., error cases, performance limits) and output details beyond 'List of file paths.' For a listing tool with filtering options, more guidance on usage and results would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant semantic value beyond the input schema, which has 0% description coverage. It explains all four parameters: 'project' as the project name, 'pattern' as an optional glob pattern with an example, 'max_depth' as maximum directory depth, and 'extensions' as a list of file extensions without dots. This compensates well for the schema's lack of 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's purpose: 'List files in a project.' This is a specific verb+resource combination that distinguishes it from siblings like get_file (retrieves content) or list_projects_tool (lists projects). However, it doesn't explicitly differentiate from find_similar_code or find_text, which might also involve file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether the project must be registered), nor does it compare with siblings like list_projects_tool (for listing projects) or find_text (for searching within files). The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_languagesC
List available languages.
Returns:
Information about available languages
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states what the tool does and what it returns, but doesn't disclose important behavioral traits like whether this is a read-only operation, if it requires authentication, what format the return information takes, or if there are any rate limits. For a tool with zero annotation coverage, this is insufficient.
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 but could be more efficiently structured. The 'Returns:' section is redundant with the main statement and adds little value. While it's only two lines, the second line essentially restates what's implied by the first. Every sentence should earn its place, and the returns statement doesn't add meaningful information beyond 'list available languages' already implies.
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 that there are no annotations and no output schema, the description is incomplete. For a tool that returns 'information about available languages,' the description should provide more context about what format this information takes, what fields are included, or at least hint at the structure. The agent has no way to understand what will be returned beyond a vague promise of 'information.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist. With zero parameters, the baseline is 4 - the description correctly focuses on the tool's purpose rather than non-existent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List available languages.' This is a specific verb+resource combination that tells what the tool does. However, it doesn't differentiate from sibling tools like 'check_language_available' or 'list_files' - it's clear but lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of when this tool is appropriate, when not to use it, or how it differs from similar-sounding siblings like 'check_language_available' or 'list_files'. The agent must infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projects_toolC
List all registered projects.
Returns:
List of project information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists projects and returns a list of project information, but doesn't describe what 'project information' includes, whether there's pagination, sorting, filtering, or any constraints on access. For a tool with zero annotation coverage, this is insufficient 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?
The description is brief but includes a redundant 'Returns:' section that doesn't add value beyond the first sentence. The two-sentence structure could be condensed to a single sentence without loss of information, making it less than optimally 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?
Given no annotations, no output schema, and a simple purpose, the description is incomplete. It doesn't explain what constitutes a 'registered project' or what information is returned, leaving the agent with insufficient context to use the tool effectively. The lack of output schema means the description should compensate by detailing return values, which it doesn't do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter documentation in the description. The baseline for 0 parameters is 4, and the description appropriately doesn't waste space on non-existent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all registered projects'), making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like 'list_files' or 'list_languages' that also list resources, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There are multiple listing tools in the sibling set (list_files, list_languages, list_query_templates_tool), but the description doesn't help the agent choose between them or specify any prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_query_templates_toolC
List available query templates.
Args:
language: Optional language to filter by
Returns:
Available templates
| Name | Required | Description | Default |
|---|---|---|---|
| language | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'List' implies a read-only operation, the description doesn't address important behavioral aspects like whether this returns all templates at once or uses pagination, what format the templates are returned in, whether authentication is required, or any rate limits. The minimal description leaves significant behavioral questions unanswered.
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 but structured with separate Args and Returns sections. The core purpose statement is front-loaded, but the formatting with indentation and section headers adds unnecessary visual complexity. The content is concise but could be more efficiently presented as a single paragraph without the structured formatting.
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 no annotations, no output schema, and minimal parameter documentation, the description is inadequate. It doesn't explain what 'query templates' are in this context, what information is returned about each template, or how the results are structured. The agent would struggle to understand what to expect from invoking this tool beyond the basic fact that it lists something.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (the schema has no descriptions for the 'language' parameter), the description partially compensates by mentioning 'Optional language to filter by' in the Args section. This adds useful semantic context about filtering functionality that isn't in the schema. However, it doesn't specify what language values are valid or provide 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?
The description clearly states the verb ('List') and resource ('available query templates'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential siblings like 'get_query_template_tool' (singular) or 'list_files'/'list_languages'/'list_projects_tool' (other list operations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_query_template_tool' (singular retrieval) and 'list_files'/'list_languages' (other listing operations), there's no indication of when this specific listing operation is appropriate versus those other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_project_toolC
Register a project directory for code exploration.
Args:
path: Path to the project directory
name: Optional name for the project (defaults to directory name)
description: Optional description of the project
Returns:
Project information
| Name | Required | Description | Default |
|---|---|---|---|
| description | No | ||
| name | No | ||
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions registration for 'code exploration' but doesn't disclose what registration entails (e.g., indexing, caching, permissions needed), potential side effects, or error conditions. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args/Returns structure is clear but includes some redundancy (e.g., repeating 'Optional' for parameters already marked nullable in schema). Overall efficient with minimal 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 no annotations, no output schema, and a mutation tool with 3 parameters, the description is incomplete. It lacks details on what 'Project information' returns, error handling, or behavioral traits like idempotency. For a registration tool, this leaves critical gaps for an agent to use it 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 description coverage is 0%, so the description must compensate. It lists all three parameters with brief explanations, adding meaning beyond the bare schema (e.g., 'path' is to the directory, 'name' defaults to directory name). However, it doesn't detail constraints like path format or description length, leaving some ambiguity.
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 action ('Register') and resource ('a project directory for code exploration'), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'list_projects_tool' or 'remove_project_tool', which would require mentioning it's for initial registration rather than listing or deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether the directory must exist), or contrast with siblings like 'list_projects_tool' for viewing registered projects or 'remove_project_tool' for unregistering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_project_toolC
Remove a registered project.
Args:
name: Project name
Returns:
Success message
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool removes a project, implying a destructive mutation, but lacks details on permissions needed, whether the removal is reversible, what happens to associated data, or any rate limits. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured Args and Returns sections. It's efficient with no wasted words, though the formatting as a docstring could be slightly more streamlined for an agent.
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 (destructive mutation), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't address critical aspects like error conditions, side effects, or return value details beyond 'Success message', leaving the agent under-informed.
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 description adds minimal semantics by naming the parameter ('name') and indicating it's a 'Project name', but with 0% schema description coverage, it doesn't fully compensate. It doesn't specify format constraints (e.g., case sensitivity, allowed characters) or provide examples, leaving the schema to define only the basic type.
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 action ('Remove') and resource ('a registered project'), making the purpose immediately understandable. However, it doesn't differentiate this tool from potential sibling tools like 'clear_cache' or 'configure' that might also remove or modify projects, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the project must be registered first), exclusions, or compare it to siblings like 'register_project_tool' or 'list_projects_tool', leaving the agent with no 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.
run_queryA
Run a tree-sitter query on project files.
Args:
project: Project name
query: Tree-sitter query string
file_path: Optional specific file to query
language: Language to use (required if file_path not provided)
max_results: Maximum number of results
Returns:
List of query matches
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| language | No | ||
| max_results | No | ||
| project | Yes | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that it returns 'list of query matches' but doesn't describe what happens during execution (e.g., whether it scans all files, performance implications, error handling, or what 'max_results' truncation entails). For a tool with 5 parameters and no annotation coverage, this leaves significant behavioral gaps.
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 appropriately sized and front-loaded with the core purpose in the first sentence, followed by a structured parameter list. Every sentence earns its place by clarifying parameter roles, though the formatting as a docstring with 'Args:' and 'Returns:' sections is slightly verbose but still 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?
Given the tool's complexity (5 parameters, no annotations, no output schema), the description is moderately complete. It covers the basic purpose and parameters but lacks details on return value structure, error conditions, or performance behavior. Without an output schema, the description should ideally explain more about the 'list of query matches' format, leaving some gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains each parameter's purpose (e.g., 'optional specific file to query', 'language to use (required if file_path not provided)', 'maximum number of results'), compensating well for the schema's lack of descriptions. However, it doesn't detail parameter formats or constraints (e.g., query string syntax).
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 specific action ('run a tree-sitter query') and target ('on project files'), distinguishing it from sibling tools like 'get_ast' or 'find_text' that perform different operations on code. It precisely communicates the verb+resource combination without being vague or tautological.
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 through the parameter explanations (e.g., 'required if file_path not provided'), suggesting when certain parameters are needed, but doesn't explicitly state when to use this tool versus alternatives like 'adapt_query' or 'build_query'. It provides some contextual guidance but lacks explicit when/when-not directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
26 tool updates
v1.0.0- First observed
adapt_query - First observed
analyze_complexity - First observed
analyze_project - First observed
build_query - First observed
check_language_available - First observed
clear_cache - First observed
configure - First observed
diagnose_config - First observed
find_similar_code - First observed
find_text - First observed
find_usage - First observed
get_ast - First observed
get_dependencies - First observed
get_file - First observed
get_file_metadata - First observed
get_node_at_position - First observed
get_node_types - First observed
get_query_template_tool - First observed
get_symbols - First observed
list_files - First observed
list_languages - First observed
list_projects_tool - First observed
list_query_templates_tool - First observed
register_project_tool - First observed
remove_project_tool - First observed
run_query
TDQS
Most tools have distinct purposes, but some overlap exists. For example, 'find_text' and 'run_query' both search for patterns, though one uses text matching and the other uses tree-sitter queries. Similarly, 'analyze_complexity' and 'analyze_project' both analyze code but at different scopes. Descriptions help clarify boundaries, but an agent might occasionally hesitate between these pairs.
Naming is mixed with no clear pattern. Some tools use verb_noun (e.g., 'clear_cache', 'build_query'), others use noun_verb (e.g., 'list_files', 'list_projects_tool'), and some are ambiguous (e.g., 'configure', 'diagnose_config'). There's inconsistency in suffix usage, like 'list_projects_tool' vs. 'register_project_tool', which disrupts predictability. However, names are generally readable despite the lack of a uniform convention.
With 26 tools, the count feels heavy for a tree-sitter server, bordering on excessive. While the domain of code analysis and querying is broad, many tools could be consolidated (e.g., 'get_file' and 'get_file_metadata'). It's not extreme, but the number may overwhelm agents and suggests over-specialization rather than a well-scoped set.
The tool set comprehensively covers the tree-sitter and code analysis domain. It includes project management (register, list, remove), file operations (get, list, metadata), AST and query tools (get_ast, run_query, build_query), analysis (complexity, dependencies, symbols), and utilities (cache, configuration). There are no obvious gaps; agents can perform full workflows from setup to detailed code exploration.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server that helps large language models index, search, and analyze code repositories with minimal setup141,005MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server designed to easily dump your codebase context into Large Language Models (LLMs).1123Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that analyzes application codebases with real-time file watching, providing AI assistants like Claude with deep insights into project structure, code patterns, and architecture.MIT
- AlicenseAqualityBmaintenanceA robust, language-agnostic Model Context Protocol (MCP) server that provides AI coding agents with the ability to edit files surgically via Abstract Syntax Trees (AST) instead of relying on token-heavy, brittle search-and-replace or diff operations.288MIT
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/wrale/mcp-server-tree-sitter'
If you have feedback or need assistance with the MCP directory API, please join our Discord server