MCP server for datapizza-ai documentation and examples
Single tool with Italian descriptions and basic parameter validation. Tool has reasonable description length (195 chars) and clear naming convention (verb_noun: query_datapizza). However, output schema is completely undocumented, returns plain string with no structured format guidance. Parameter descriptions exist but lack critical details about format, constraints, and error conditions. No input validation error messages guide recovery. Error handling returns user-facing strings rather than structured error responses. Resource definitions present but peripheral to tool evaluation.
Cerca nella documentazione di datapizza-ai. Questo tool permette di cercare informazioni nella documentazione completa di datapizza-ai, inclusi README, esempi di codice e guide.
Output schema completely undocumented. Tool returns plain string, but LLM has no guidance on return format, expected field structure, or how to parse results. Pattern requires 'Tools returning lists should accept page/offset and limit parameters and return a total count', this tool accepts max_results but returns unstructured text without pagination metadata.
Parameter descriptions lack actionable constraints. 'max_results' description says 'Numero massimo di risultati da restituire (default: 5)' but does not specify valid range, bounds checking, or what happens if invalid values are passed. Rubric requires 'The project key (2-10 uppercase letters)' level of detail, this server provides none.
Error handling returns user-facing strings ('❌ Errore: ...') instead of structured recovery guidance. Rubric states: 'Error responses must tell the LLM what to do next: User not found. Try search_users() with a partial name.' This tool returns generic error messages that give the LLM no actionable recovery path.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 39 | - | v1 |
No input validation error messaging. Tool checks 'if not query or not query.strip()' and silently caps max_results, but does not return structured feedback about what was wrong. An LLM cannot learn from these silent corrections, it may retry with the same invalid values.
Resource endpoint 'datapizza://status' returns formatted markdown status page, not queryable data. This blocks downstream LLM reasoning about system state, the LLM cannot extract statistics for conditional logic or decision-making.