MCP server for monitoring power outages in a specified location by querying the PGE (Polish power company) API and providing real-time outage status information
Single tool 'get_power_outages' has critical definition gaps. The tool description mentions returning 'outage information including start/stop times, duration, and affected addresses' but actual output schema is undocumented, LLM cannot plan downstream calls or extract structured data. Error handling returns plain text with isError flag but provides no recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Naming follows verb_noun pattern (get_power_outages), acceptable but generic.
Get current power outage status for location: ${LOCATION}. Returns outage information including start/stop times, duration, and affected addresses.
Input schema is empty ({}). Tool accepts no documented parameters, yet description references 'location: ${LOCATION}', location is hardcoded server-side, not a parameter. This breaks the tool's flexibility and prevents agents from querying different locations.
Output schema is not documented. Tool returns JSON-stringified status object with fields like 'hasOutage', 'outages' (array with id, startAt, stopAt, affectedAddresses), and 'lastChecked', but LLM has no schema to understand structure. Prevents proper data extraction and downstream tool composition.
No parameter descriptions. Tool has zero input parameters documented, making it impossible for LLMs to understand what inputs (if any) are valid or required.
Error handling lacks recovery guidance. When getOutageStatus() fails, tool returns plain error message with isError=true, but provides no actionable next steps (e.g., 'Check POWER_OUTAGE_LOCATION env var' or 'Retry in 30 seconds').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | <=2025-11-25 | v2 |
No tool annotations. Tool is read-only (fetches status, no side effects) but lacks readOnlyHint annotation. Agents cannot infer safety properties and may incorrectly treat it as potentially destructive.