Skip to main content
Glama
wrale

mcp-server-tree-sitter

by wrale

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • 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.

  • Average 3/5 across 26 of 26 tools scored. Lowest: 2.4/5.

    See the Tool Scores section below for per-tool breakdowns.

  • This repository is archived. Archived repositories automatically receive an F maintenance tier.

  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

mcp-server-tree-sitter MCP server

Copy to your README.md:

Score Badge

mcp-server-tree-sitter MCP server

Copy to your README.md:

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wrale/mcp-server-tree-sitter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server