Skip to main content
Glama

check_symbols

Verify symbol names after writing code: returns confirmed (exists), fuzzy match (possible typo), or unknown (hallucinated). Prevents errors from referencing nonexistent symbols.

Instructions

Verify symbol names you just used are real. Pass function/class/variable names and get back: confirmed (exists), fuzzy match (possible typo — did you mean X?), or unknown (might be hallucinated). Call this after writing code that references existing symbols, especially in unfamiliar parts of the codebase. Only reports problems — confirmed symbols are counted but not listed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
symbolsYesList of symbol names to check against the registry.
verboseNoIf true, also list all known symbols. Default: false.
project_pathNoProject root path. If omitted, auto-detects from cwd.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses a key behavior: 'Only reports problems — confirmed symbols are counted but not listed.' This tells the agent it won't get a full report of confirmed items, which is important for setting expectations. It also characterizes the 'fuzzy match' behavior as typo detection. Some gaps remain (e.g., what happens with partial hits, whether it errors or returns gracefully), but the provided behaviors are genuinely useful.

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 two sentences, tightly written, and front-loaded with the core purpose. Every clause adds value: the output types, the when-to-call guidance, and the reporting behavior. Zero filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a query-style tool with 100% schema coverage and no output schema, the description covers the purpose, usage timing, and reporting behavior. It could mention edge cases (nonexistent project path, empty symbol list) but for a verification tool the provided context is adequate. The report behavior disclosure compensates for the lack of an output schema.

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 100%, so all three parameters already have schema-level descriptions. The description adds the 'verbose' toggle behavior ('also list all known symbols') and the overall return semantics, but doesn't substantially add per-parameter meaning beyond the schema. Baseline 3 is appropriate since the schema documents everything adequately.

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 verifies symbol names and explains the output types (confirmed, fuzzy match, unknown). It distinguishes its purpose well: 'Verify symbol names you just used are real.' This is a specific verb+resource with clear output semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to call it: 'Call this after writing code that references existing symbols, especially in unfamiliar parts of the codebase.' It gives clear trigger context. It doesn't explicitly name alternative tools, but siblings like refresh_symbols serve a different purpose (populating the registry, not querying it), so the usage context is reasonably clear without exclusion statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.