Single tool 'query' has a clear, action-verb name and basic schema with type and description. However, the parameter description lacks format guidance (e.g., 'DuckDB SQL dialect' is vague, no mention of allowed operations, query size limits, or timeout behavior). No output schema is documented, LLMs cannot predict the structure of query results. Error handling is minimal: the code catches exceptions but returns generic 'Error executing tool' messages without recovery guidance. The tool lacks idempotency hints and does not document whether it supports read-only mode or has side effects. Descriptions are adequate (10 - 100 chars) but fall short of LLM-optimized guidance (50 - 200 chars baseline for A-grade tools). No tool annotations (readOnlyHint, destructiveHint) despite the server supporting read-only mode.
Use this to execute a query on the MotherDuck or DuckDB database
No output schema documented. LLMs cannot predict result structure (columns, types, row format). Baseline: 100% of A+ tools document return types.
Parameter description lacks actionable constraints. 'SQL query to execute that is a dialect of DuckDB SQL' does not specify: allowed operations (SELECT only?), query size limits, timeout, or whether mutations are blocked in read-only mode.
Error handling is generic. Exception caught and re-raised as 'Error executing tool: {str(e)}', no recovery guidance. Baseline: errors must tell LLM what to do next (e.g., 'Query syntax error. Check DuckDB docs for valid syntax.').
No tool annotations. Tool supports read-only mode (--read-only flag) but does not declare readOnlyHint=true. LLMs cannot infer safety properties.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No pagination or result limits documented. Large query results could exhaust context window. Baseline: tools returning lists should accept limit/offset and cap results at 20 - 50 items.