MCP Server for querying the VITO EMIS portal (via emis plugin) through the Quid backend API. Provides tools for environmental and energy data queries.
Two tools are explicitly registered via @mcp.tool() decorator in mcp-server/server.py. query_emis has a well-written description (194 chars, within baseline 34-392 range) and clear input schema with description. check_backend_health has minimal description (58 chars) and no input parameters. Both tools lack output schema documentation, the code shows result.get() calls but does not formally document the response structure. Error handling returns structured dicts with 'status' and 'error_message' fields, which is good, but descriptions do not explain error cases or recovery paths. No parameter descriptions beyond the input object itself. LLMs need to know what fields to expect.' Overall definition quality is below average due to incomplete schema coverage and minimal error guidance in tool descriptions.
Check if the Quid backend service is running and accessible.
Query the VITO EMIS portal for environmental and energy data. This tool performs a live, authenticated query against the EMIS portal and returns structured results including citations, summaries, raw data, and source documents.
Output schemas not documented. query_emis docstring lists expected fields (status, timestamp, citation, summary, raw_data, documents, error_message) in comments but not as a formal output schema. LLMs cannot infer structure from docstrings alone.
check_backend_health has insufficient description (58 chars). Rubric baseline is 34-392 chars, so this is near minimum. Description does not explain when to call it, what constitutes a healthy state, or what the response contains.
No error classification. Error responses use 'status: error' + 'error_message' but do not classify errors as retryable, user-fixable, or fatal. Rubric: 'Categorize errors as retryable, user-fixable, or fatal. An LLM should know: can I retry? Should I ask the user?'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 40 | - | v1 |
No recovery guidance in error messages. Timeout and connection errors return messages like 'Request timed out' and 'Could not connect to Quid backend' but do not say 'try again' or 'check backend logs'. Rubric: 'Error responses must tell the LLM what to do next.'
query_emis parameter 'query' lacks description in the schema, the docstring provides examples but the @mcp.tool() input parameter dict only states the type. Rubric: 'Every parameter needs a description explaining what it controls.'