generated: '2026-07-27' method: searched status: candidate description: >- ERCOT publishes no first-party MCP server. Searching the developer portal, the ERCOT GitHub organization and the npm registry turns up no ERCOT-operated hosted or stdio MCP endpoint, and no agent/LLM guidance of any kind on developer.ercot.com. What does exist is a real third-party MCP server on npm — @missionsquad/mcp-ercot — which wraps the ERCOT Public Data API's Day-Ahead and Real-Time market endpoints as 34 MCP tools using a TypeScript client generated from ERCOT's own OpenAPI. It is recorded here as an ecosystem fact, not as an ERCOT product. The candidate tool surface below is derived from the OpenAPI as the shape an official ERCOT server would take. official_server: null server: name: ercot-public-data transport: null url: null published: false note: candidate design only — no ERCOT-hosted MCP endpoint exists. third_party_servers: - name: '@missionsquad/mcp-ercot' publisher: Mission Squad AI registry: npm url: https://www.npmjs.com/package/@missionsquad/mcp-ercot version: 1.0.2 transport: stdio official: false tool_count: 34 scope: Day-Ahead Market (DAM) and Real-Time Market (RTM) price, ancillary-service and 60-day disclosure endpoints. auth: >- Passes through ERCOT's two-credential model — ERCOT_USERNAME / ERCOT_PASSWORD mint the hourly B2C ID token, ERCOT_SUBSCRIPTION_KEY supplies the Ocp-Apim-Subscription-Key header. implementation: TypeScript client generated by openapi-typescript from the ERCOT OpenAPI, served with @missionsquad/fastmcp. crosswalk: mcp/ercot-tool-crosswalk.yml candidate_tool_design: rationale: >- A first-party ERCOT MCP server would not want 106 near-identical getData tools. The API's own structure suggests a far smaller catalog-driven surface: discover the product, discover its fields, then query it. The four generic tools below cover the entire estate; the 34 named tools in the third-party server are effectively pre-bound instances of query_report. tools: - name: list_emil_products description: List every available EMIL data product with its artifacts and endpoints. source_operation: openapi/ercot-public-data-api-openapi.json#getListForProducts - name: get_emil_product description: Get one EMIL product's metadata and the report artifacts it exposes. source_operation: openapi/ercot-public-data-api-openapi.json#getProduct - name: query_report description: >- Query any EMIL report artifact with paging (page, size, sort, dir) and the product's typed range filters; the response's fields[] dictionary describes the returned columns. source_operation: 'openapi/ercot-public-data-api-openapi.json#getData … getData_101 (102 operations)' - name: list_product_archives description: List the historic archive files for an EMIL product (at least seven years retained). source_operation: openapi/ercot-public-data-api-openapi.json#getProductHistory - name: get_api_version description: Return the running Public Data API version and build. source_operation: openapi/ercot-public-data-api-openapi.json#getVersion agent_considerations: - Two credentials are required on every call; the ID token expires hourly and cannot be refreshed, so a server must re-mint it. - 30 requests per minute is a hard ceiling — an agent fanning out across products will trip it quickly. - Requests from outside the United States are blocked at the edge. - data[] is untyped in the spec; agents must read fields[] to interpret rows. - Market time is America/Chicago; DSTFlag and repeatHourFlag disambiguate the repeated fall-back hour.