An MCP server that provides tools to query Wikidata using SPARQL and lookup Wikidata items by name
Two tools with minimal documentation. Tool descriptions are present but generic (avg 85 chars, below 194-char baseline). No input schemas visible in source, only type hints in function signatures. No output schema documentation. No error handling guidance. No enum constraints. Naming is acceptable (verb_noun pattern) but descriptions do not explain WHEN to use each tool or what distinguishes them.
Lookup a Wikidata item to get the identifier. Args: item: Wikidata item name Returns: str: Search results for the item
Invoke SPARQL query asynchronously on Wikidata. Args: query: SPARQL query string Returns: dict: The JSON response from the Wikidata SPARQL endpoint
No input parameter descriptions. Both tools accept a single string parameter with no description of format, constraints, or examples. LLMs cannot infer whether 'query' expects raw SPARQL or a natural-language question, or what 'item' should be (full name, partial match, entity ID).
No output schema documentation. Both tools return unstructured responses (dict/str) with no documented field names, types, or structure. Agents cannot plan downstream operations or extract specific fields reliably.
Generic tool descriptions lack WHEN-to-use guidance. 'Invoke SPARQL query asynchronously' does not explain when to call run_sparql vs lookup_item, or what a user should expect. Descriptions should be 50 - 200 chars and answer: what does it do, when should I call it, what does it return?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
No error handling or recovery guidance. Both tools silently return None on HTTP errors (status != 200) with only a print() statement. LLMs receive no actionable error message and cannot retry or suggest alternatives.
No input validation or constraints. 'query' parameter accepts any string; no validation that it is valid SPARQL. 'item' parameter accepts any string; no guidance on length, format, or character restrictions. LLMs will pass invalid inputs without feedback.