MCP server that exposes Firebird 2.5 database tables as tools for an agent. Provides SQL query execution, table listing, and table schema description with integrated sensitive data masking.
Three tools with basic schemas and Italian descriptions. All tools have input schemas with proper JSON structure and type declarations. However, descriptions are minimal (avg 95 chars, well below the 194-char baseline), lack actionable context for LLM selection, and omit prerequisites or when-to-use guidance. Parameters lack descriptions in list_tables (empty properties). No output schema documentation. Error handling is minimal (only query_sql checks for SELECT). No tool annotations (readOnlyHint, idempotentHint). Naming follows verb_noun pattern (query_sql, list_tables, describe_table) but descriptions don't explain distinctions or dependencies between tools.
Descrive la struttura (colonne e tipi) di una tabella il gestionale.
Restituisce l'elenco delle tabelle presenti nel database il gestionale.
Esegue una query SELECT sul database il gestionale (Firebird 2.5). Solo lettura.
list_tables has empty inputSchema properties with no parameter descriptions. Schema is minimal but lacks guidance on what the tool returns or when to call it before other tools.
No output schema documentation for any tool. LLMs cannot infer return structure (e.g., query_sql returns JSON array of dicts, list_tables returns newline-separated strings, describe_table returns formatted field lines). Undocumented outputs force LLMs to guess field names for downstream processing.
Descriptions are too brief (35 - 50 chars) and lack context. 'Esegue una query SELECT...' does not explain when to use query_sql vs describe_table, what constraints apply (max 500 rows), or how to chain with list_tables. Baseline is 194 chars; these are 50% below.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint). All three tools are read-only and idempotent, but LLMs cannot infer this from definitions. Annotations would clarify safety and retry semantics.
Error handling is minimal. query_sql checks for SELECT prefix but returns plain text error. No guidance on recovery (e.g., 'Try list_tables() first to see available tables'). No categorization of errors as retryable or user-fixable.