Skip to main content
Glama
wrale

mcp-server-tree-sitter

by wrale

MCP Tree-sitter 服务器

一个使用 tree-sitter 提供代码分析功能的模型上下文协议 (MCP) 服务器,旨在让 AI 助手能够通过适当的上下文管理智能地访问代码库。Claude Desktop 是其参考实现目标。

功能特性

  • 🔍 灵活探索:以多种粒度级别检查代码

  • 🧠 上下文管理:提供恰到好处的信息,而不会让上下文窗口过载

  • 🌐 语言无关:通过 tree-sitter-language-pack 支持多种编程语言,包括 Python、JavaScript、TypeScript、Go、Rust、C、C++、C#、Swift、Java、Kotlin、Dart、Julia 和 APL

  • 🌳 结构感知:使用基于 AST 的理解,并结合高效的基于光标的遍历

  • 🔎 可搜索:使用文本搜索和 tree-sitter 查询查找特定模式

  • 🔄 缓存:通过解析树缓存优化性能

  • 🔑 符号提取:提取并分析函数、类和其他代码符号

  • 📊 依赖分析:识别并分析代码依赖关系

  • 🧩 状态持久化:在调用之间维护项目注册和缓存数据

  • 🔒 安全:内置安全边界和输入验证

有关所有可用命令、其当前实现状态以及详细功能矩阵的完整列表,请参阅 FEATURES.md 文档。

Related MCP server: @lex-tools/codebase-context-dumper

安装

先决条件

  • Python 3.10+

  • 适用于您首选语言的 Tree-sitter 语言解析器

基础安装

pip install mcp-server-tree-sitter

开发安装

git clone https://github.com/wrale/mcp-server-tree-sitter.git
cd mcp-server-tree-sitter
pip install -e ".[dev]"

快速入门

在 Claude Desktop 中运行

您可以通过 MCP CLI 或手动配置 Claude Desktop 来使服务器在 Claude Desktop 中可用。

使用 MCP CLI

向 Claude Desktop 注册服务器:

mcp install mcp_server_tree_sitter.server:mcp --name "tree_sitter"

手动配置

或者,您可以手动配置 Claude Desktop:

  1. 打开您的 Claude Desktop 配置文件:

    • macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    如果文件不存在,请创建它。

  2. 将服务器添加到 mcpServers 部分:

    {
        "mcpServers": {
            "tree_sitter": {
                "command": "python",
                "args": [
                    "-m",
                    "mcp_server_tree_sitter.server"
                ]
            }
        }
    }

    或者,如果使用 uv 或其他包管理器:

    {
        "mcpServers": {
            "tree_sitter": {
                "command": "uv",
                "args": [
                    "--directory",
                    "/ABSOLUTE/PATH/TO/YOUR/PROJECT",
                    "run",
                    "-m",
                    "mcp_server_tree_sitter.server"
                ]
            }
        }
    }

    注意:请务必将 /ABSOLUTE/PATH/TO/YOUR/PROJECT 替换为您项目目录的实际绝对路径。

  3. 保存文件并重启 Claude Desktop。

一旦您正确配置了至少一个 MCP 服务器,MCP 工具图标(锤子)就会出现在 Claude Desktop 的界面中。然后,您可以点击此图标访问 tree_sitter 服务器的功能。

使用发布版本进行配置

如果您不想手动从 PyPI 安装包(发布版本)或克隆存储库,只需为 Claude Desktop 使用以下配置:

  1. 打开您的 Claude Desktop 配置文件(位置同上)。

  2. 将 tree-sitter 服务器添加到 mcpServers 部分:

    {
        "mcpServers": {
            "tree_sitter": {
                "command": "uvx",
                "args": [
                    "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT",
                    "mcp-server-tree-sitter"
                ]
            }
        }
    }
  3. 保存文件并重启 Claude Desktop。

此方法使用 uvx 直接运行已安装的 PyPI 包,这是发布版本的推荐方法。服务器在其基本配置中不需要任何额外参数即可运行。

状态持久化

MCP Tree-sitter 服务器在调用之间维护状态。这意味着:

  • 项目保持注册状态,直到被显式移除或服务器重启

  • 解析树根据配置设置进行缓存

  • 语言信息在服务器的整个生命周期内保留

这种持久性在服务器生命周期内通过关键组件的单例模式在内存中维护。

作为独立服务器运行

有几种运行服务器的方法:

直接使用 MCP CLI:

python -m mcp run mcp_server_tree_sitter.server

使用 Makefile 目标:

# 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"

使用已安装的脚本:

# 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-cache

与 MCP Inspector 一起使用

直接使用 MCP CLI:

python -m mcp dev mcp_server_tree_sitter.server

或者使用 Makefile 目标:

make mcp-dev

您还可以传递参数:

make mcp-dev ARGS="--debug"

使用方法

注册项目

首先,注册一个要分析的项目:

register_project_tool(path="/path/to/your/project", name="my-project")

浏览文件

列出项目中的文件:

list_files(project="my-project", pattern="**/*.py")

查看文件内容:

get_file(project="my-project", path="src/main.py")

分析代码结构

获取语法树:

get_ast(project="my-project", path="src/main.py", max_depth=3)

提取符号:

get_symbols(project="my-project", path="src/main.py")

搜索代码

搜索文本:

find_text(project="my-project", pattern="function", file_pattern="**/*.py")

运行 tree-sitter 查询:

run_query(
    project="my-project",
    query='(function_definition name: (identifier) @function.name)',
    language="python"
)

分析复杂度

analyze_complexity(project="my-project", path="src/main.py")

直接 Python 使用

虽然主要预期用途是通过 MCP 服务器,但您也可以直接在 Python 代码中使用该库:

# 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_registry

配置

创建一个 YAML 配置文件:

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 operations

使用以下方式加载:

configure(config_path="/path/to/config.yaml")

日志配置

服务器的日志详细程度可以通过环境变量进行控制:

# 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=WARNING

有关日志配置的全面信息,请参阅 日志文档。有关命令行界面的详细信息,请参阅 CLI 文档

关于 preferred_languages

preferred_languages 设置控制哪些语言解析器在服务器启动时预加载,而不是按需加载。这提供了几个好处:

  • 更快的初始分析:首次分析预加载语言的文件时没有延迟

  • 早期错误检测:解析器的问题在启动时就会被发现,而不是在使用过程中

  • 可预测的内存分配:频繁使用的解析器的内存会预先分配

默认情况下,所有解析器都在首次需要时按需加载。为了获得最佳性能,请指定您在项目中最常使用的语言。

您还可以配置特定设置:

configure(cache_enabled=True, max_file_size_mb=10, log_level="DEBUG")

或者使用环境变量:

export MCP_TS_CACHE_MAX_SIZE_MB=256
export MCP_TS_LOG_LEVEL=DEBUG
export MCP_TS_CONFIG_PATH=/path/to/config.yaml

环境变量使用 MCP_TS_SECTION_SETTING 格式(例如 MCP_TS_CACHE_MAX_SIZE_MB)用于部分设置,或 MCP_TS_SETTING(例如 MCP_TS_LOG_LEVEL)用于顶级设置。

配置值的应用优先级如下:

  1. 环境变量(最高)

  2. 通过 configure() 调用设置的值

  3. YAML 配置文件

  4. 默认值(最低)

服务器将在以下位置查找配置:

  1. configure() 调用中指定的路径

  2. MCP_TS_CONFIG_PATH 环境变量指定的路径

  3. 默认位置:~/.config/tree-sitter/config.yaml

给开发者

诊断能力

MCP Tree-sitter 服务器包含一个诊断框架,以帮助识别和修复问题:

# Run diagnostic tests
make test-diagnostics

# CI-friendly version (won't fail the build on diagnostic issues)
make test-diagnostics-ci

诊断测试提供了有关服务器行为的详细信息,并有助于隔离特定问题。有关诊断框架的更多信息,请参阅 诊断文档

类型安全注意事项

MCP Tree-sitter 服务器通过仔细的设计模式和协议,在与 tree-sitter 库交互时保持类型安全。如果您正在扩展代码库,请查看 类型安全指南,了解有关处理 tree-sitter API 变体的重要信息。

可用资源

服务器提供以下 MCP 资源:

  • project://{project}/files - 列出项目中的所有文件

  • project://{project}/files/{pattern} - 列出匹配模式的文件

  • project://{project}/file/{path} - 获取文件内容

  • project://{project}/file/{path}/lines/{start}-{end} - 获取文件的特定行

  • project://{project}/ast/{path} - 获取文件的 AST

  • project://{project}/ast/{path}/depth/{depth} - 获取具有自定义深度的 AST

可用工具

服务器提供以下工具:

  • 项目管理:register_project_tool, list_projects_tool, remove_project_tool

  • 语言管理:list_languages, check_language_available

  • 文件操作:list_files, get_file, get_file_metadata

  • AST 分析:get_ast, get_node_at_position

  • 代码搜索:find_text, run_query

  • 符号提取:get_symbols, find_usage

  • 项目分析:analyze_project, get_dependencies, analyze_complexity

  • 查询构建:get_query_template_tool, list_query_templates_tool, build_query, adapt_query, get_node_types

  • 相似代码检测:find_similar_code

  • 缓存管理:clear_cache

  • 配置诊断:diagnose_config

有关每个工具的实现状态、依赖项和使用示例的详细信息,请参阅 FEATURES.md

可用提示词

服务器提供以下 MCP 提示词:

  • code_review - 创建用于代码审查的提示词

  • explain_code - 创建用于解释代码的提示词

  • explain_tree_sitter_query - 解释 tree-sitter 查询语法

  • suggest_improvements - 创建用于建议代码改进的提示词

  • project_overview - 创建用于项目概览分析的提示词

反馈与社区

我们很乐意了解您如何使用 mcp-server-tree-sitter,以及什么能让它对您的工作流程更有帮助。

许可证

MIT

Available Tools

26 tools
adapt_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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
from_languageYes
queryYes
to_languageYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
projectYes

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
ctxNo
projectYes
scan_depthNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
combineNoor
languageYes
patternsYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
languageYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo
projectNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
cache_enabledNo
config_pathNo
log_levelNo
max_file_size_mbNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
config_pathYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
languageNo
max_resultsNo
projectYes
snippetYes
thresholdNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
case_sensitiveNo
context_linesNo
file_patternNo
max_resultsNo
patternYes
projectYes
use_regexNo
whole_wordNo

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo
languageNo
projectYes
symbolYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
include_textNo
max_depthNo
pathYes
projectYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
projectYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
max_linesNo
pathYes
projectYes
start_lineNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
projectYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
columnYes
pathYes
projectYes
rowYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
languageYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
languageYes
template_nameYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
projectYes
symbol_typesNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
extensionsNo
max_depthNo
patternNo
projectYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
languageNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNo
nameNo
pathYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo
languageNo
max_resultsNo
projectYes
queryYes

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 26 tool updatesv1.0.0
    • First observedadapt_query
    • First observedanalyze_complexity
    • First observedanalyze_project
    • First observedbuild_query
    • First observedcheck_language_available
    • First observedclear_cache
    • First observedconfigure
    • First observeddiagnose_config
    • First observedfind_similar_code
    • First observedfind_text
    • First observedfind_usage
    • First observedget_ast
    • First observedget_dependencies
    • First observedget_file
    • First observedget_file_metadata
    • First observedget_node_at_position
    • First observedget_node_types
    • First observedget_query_template_tool
    • First observedget_symbols
    • First observedlist_files
    • First observedlist_languages
    • First observedlist_projects_tool
    • First observedlist_query_templates_tool
    • First observedregister_project_tool
    • First observedremove_project_tool
    • First observedrun_query

TDQS

B3.1/5.0

Scored across 26 tools

Disambiguation4/5

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 Consistency3/5

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.

Tool Count3/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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
  • A
    license
    A
    quality
    B
    maintenance
    A 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.
    28
    9
    MIT