MCP server for energy market analysis, battery optimization, and regulatory docket search tools
EnergyEvals provides 6 tools with explicit schemas and descriptions, but quality is inconsistent. Tool names follow verb_noun convention (battery_revenue_optimization, search_dc_dockets, etc.), which is good. However, descriptions vary widely in clarity and actionability. The battery tool has a detailed, domain-specific description; docket search tools are terse. Parameter descriptions exist but many lack format constraints, ranges, or examples. No output schemas are documented, LLMs cannot predict what fields to expect. Error handling is absent from visible code. No tool annotations (readOnlyHint, destructiveHint) despite several tools being read-only. The codebase shows a ToolResult class with success/error/data fields, but this is not reflected in tool definitions exposed to LLMs.
Produces optimal potential net revenues for battery storage projects using energy arbitrage only (perfect price foresight, no price-uncertainty penalty). Reads a CSV of energy prices and returns summary metrics, time-series rows, and a saved CSV path.
Search Maryland PSC 'Official Filings' by date range.
Fetch a Maryland PSC item (case/rulemaking/public conference) by number. For rulemaking, number should have a prefix RM and PC for public conference. No prefix needed for case.
Search DC PSC filings by date range from the eDocket system.
Search the FERC eLibrary using the AdvancedSearch API for filings and dockets. Returns source, keyword, date range, number of results, detailed results, and a saved CSV path.
Search New York DPS cases or documents between dates.
No output schemas documented. LLMs cannot predict response structure, forcing them to guess what fields are available for downstream tool chaining.
Docket search tools lack actionable descriptions. 'Search DC PSC filings by date range' does not explain when to use this vs FERC/Maryland/NY tools, what data is returned, or how results enable downstream actions.
Parameter descriptions lack format constraints and ranges. E.g., 'start_date' says 'MM/DD/YYYY format' but no validation guidance. 'records_to_show' has no min/max bounds, LLM could pass 10000.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 6 tools are read-only but this is not declared, preventing agents from reasoning about safety and retry semantics.
Error handling not visible in tool definitions. No guidance on retryable vs fatal errors, no recovery suggestions. ToolResult class exists but is not exposed to LLM context.