MCP server for EskomSePush — real-time South African load shedding schedules and status for Claude and other MCP clients
Five tools with clear verb-noun naming (get_*, search_*, check_*) and consistent descriptions (100-200 chars). All tools have input schemas with type definitions and parameter descriptions. Schemas are well-formed using Zod. However, output schemas are not formally documented, responses are inferred from code. Parameter descriptions include helpful context (e.g., 'Use test data instead of live data'). Error handling is minimal; no recovery guidance or actionable error messages. No tool annotations (readOnlyHint, destructiveHint). All tools are READ_ONLY, which is appropriate but unmarked.
Check how many EskomSePush API calls you have remaining today. Free tier allows 50 calls per day.
Get the upcoming load shedding schedule and events for a specific area. Requires an area ID — use search_areas first if you don't have one.
Find load shedding areas near a GPS location. Useful when you know coordinates but not the area name.
Get the current national load shedding stage for both Eskom and Cape Town. Use this to find out what stage we are on right now.
Search for load shedding areas by name or suburb. Returns area IDs you can use with get_area_schedule. Always search first if you don't have an area ID.
Output schemas not formally documented. Responses are inferred from code (text content with markdown formatting). LLMs cannot plan downstream tool calls or extract structured data without knowing the response schema.
No tool annotations. All tools are READ_ONLY but lack readOnlyHint annotation. This prevents clients from optimizing caching, retry logic, or permission checks.
Error handling lacks recovery guidance. No actionable error messages. E.g., search_areas returns 'No areas found' but does not suggest alternative search terms or how to proceed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Parameter 'area_id' in get_area_schedule lacks format guidance. Example value 'eskmo-7-stellenboschstellenboschwestern-cape' is provided in description but not as a constraint. LLMs may hallucinate invalid IDs.
No pagination support. Tools like search_areas and get_areas_nearby may return large result sets but lack limit/offset or cursor parameters. Results are capped in code (slice(0,3) for schedule) but not documented.