MCP server exposing Dataville's data source API as tools for MCP clients
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. list_dataville_sources has an empty input schema ({}), which is unusual and undocumented. search_dataville has typed parameters with descriptions, but the 'params' parameter uses a generic record type without guidance on valid keys or values per source. Neither tool documents output structure, making it difficult for LLMs to plan downstream actions. Error handling exists (try/catch in search_dataville) but error messages are generic. No tool annotations (readOnlyHint, idempotentHint) despite both being read-only operations.
List the data sources available through Dataville's search_dataville tool.
Query one of Dataville's data sources (see list_dataville_sources for valid source names) with a keyword string and optional query params.
list_dataville_sources has empty input schema ({}). No parameters documented, making it unclear what the tool accepts or why it exists as a separate tool vs. being called automatically.
search_dataville 'params' parameter is a generic Record<string, string|number|boolean> with no guidance on valid keys per source. LLMs cannot infer which params apply to 'wikipedia' vs 'arxiv'. Should document source-specific param schemas or provide a discovery mechanism.
No output schemas documented for either tool. search_dataville returns JSON.stringify(result) but LLMs cannot plan downstream actions without knowing the structure (fields, types, pagination). list_dataville_sources returns DATAVILLE_SOURCES but structure is opaque.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Both tools are read-only but lack tool annotations (readOnlyHint: true). This prevents clients from optimizing caching, retry logic, or safety checks for idempotent operations.
Error handling in search_dataville returns generic error messages ('Dataville API request failed with status X') without recovery guidance. Per pattern:recovery-guide, errors should suggest next steps (e.g., 'Try list_dataville_sources to verify source name').