Single tool 'query' has critical definition gaps. Description is minimal (28 chars, below 20-char floor). Input schema present but parameter 'sql' lacks description entirely, violates pattern:tool-description. No output schema documented. No error handling guidance. No parameter constraints (e.g., query size limits, timeout). Tool does not follow verb_noun naming (should be 'execute_query' or 'run_query'). No indication of what fields are returned or how to chain results to other tools.
Run a read-only SQL query
Parameter 'sql' has no description. LLMs cannot infer what format, constraints, or examples are valid. Violates pattern:tool-description requirement that every parameter must have a non-empty description.
Tool description is 28 characters ('Run a read-only SQL query'). Below the 20-char floor for scoring; provides no context on WHEN to use, WHAT it returns, or HOW to chain results. Baseline for A+ tools is 194 chars (p10=34, p90=392).
No output schema documented. LLMs cannot plan downstream calls or extract fields. Baseline: 100% of A+ tools have documented return types. Code returns JSON-stringified rows but structure is opaque to the agent.
No parameter constraints (e.g., max query size, timeout, allowed statement types). LLMs can pass arbitrarily large queries or malicious SQL. Violates pattern:constrained-input and pattern:tool-gateway.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No error handling guidance. Code throws raw errors; LLMs receive no recovery hints. Violates pattern:recovery-guide. Example: SQL syntax error should return 'Invalid SQL: [error detail]. Check syntax and retry.' not a stack trace.