Inspiration
Türkiye's electricity-market teams must reconcile prices, system conditions, generation, consumption, and planning data before making a shift decision. Today that work often spans operator pages, spreadsheets, and chat. Each team rebuilds the same context, while the most important questions — which source, which timestamp, which scope, and how complete is the data — are easy to lose.
GridBrief TR reimagines the public EPİAŞ Transparency Platform 2.0 as a bilingual, agent-ready decision workspace. It keeps the familiar market information architecture, but makes provenance, freshness, coverage, and missing data first-class product features.
What it does
GridBrief TR combines:
- a real-data market overview;
- the searchable Transparency 2.0 electricity catalogue;
- public organization and power-plant discovery;
- production and consumption planning views;
- English and Turkish interfaces; and
- a native WebMCP tool surface shared by the human user and browser agents.
The production walkthrough uses a completed historical day and visibly shows EPİAŞ provenance, retrieval time, scope, coverage, and warnings. Examples include market price and imbalance context, 24/24 planning coverage, the public PURE ENERGY organization view and linked UEVÇB records, and an ACARSOY plant view that honestly leaves unavailable actual generation as null.
How we used WebMCP
WebMCP is the interaction layer, not a chatbot bolted onto a dashboard. GridBrief registers eight structured tools on document.modelContext:
- set_analysis_scope
- get_market_snapshot
- find_market_entities
- compare_plan_actual
- stress_test_position
- draft_shift_brief
- search_transparency_datasets
- get_transparency_dataset
A compatible browser discovers these tools and calls the descriptor returned by getTools() with schema-bounded arguments. Successful calls update the same visible workspace used by the participant, so the agent and human share the selected date, hour window, results, warnings, and sources.
Our native Chrome 152 verification discovered all eight tools. It also executed search_transparency_datasets through document.modelContext and visibly synchronized the selected catalogue item. That is separate from the real-data production evidence: during the recorded native verification run, an upstream EPİAŞ live read timed out, so the harness failed closed, recorded the failure, and skipped downstream sensitivity and brief actions. It never substituted a synthetic observation.
Example agent workflow
A trading agent can retrieve price and imbalance context. An operations agent can inspect generation evidence and publication coverage. A planning agent can compare KGÜP, KUDÜP, EAK, load-plan, and actual series only at valid data levels. A portfolio-risk agent can apply a transparent local sensitivity after the live price reference passes validation. A management agent can turn the sourced evidence, risks, and proposed checks into an editable shift brief.
These are role-specific uses of one WebMCP contract, demonstrated by a deterministic sample agent workflow in the repository. GridBrief does not claim that the runner itself is an LLM. It exposes no market-order, trading-account, message-sending, or upstream mutation tool.
How we built it
The application uses Next.js, React, TypeScript, and Vercel. A server-only EPİAŞ gateway obtains and caches the short-lived ticket-granting token without returning or logging credentials. Responses carry provider, retrieval time, scope, quality, coverage, and warnings. Partial data preserves nulls; live errors fail closed.
The browser layer registers imperative WebMCP definitions for the lifetime of the workspace. A Node/CDP verification harness launches Chrome with WebMCP enabled, checks unique tool discovery, executes native descriptors, and writes bounded sanitized evidence and screenshots. The harness accepts no username, password, token, cookie, or authorization-header argument.
Challenges and learnings
The hardest part was preserving market-data integrity while making the experience useful to agents. EPİAŞ reports have different scopes and publication schedules; organization filters do not turn system-level actuals into organization data; and upstream availability can change during a demo. We therefore made data level explicit, preserved missing hours, withheld full-day deviation when coverage is not comparable, and separated catalogue availability from successful observation retrieval.
We also learned that the current experimental Chrome implementation requires the descriptor returned by getTools() and JSON-stringified arguments. Testing that real boundary exposed issues a mock panel would have hidden, including duplicate registration risks, inclusive-versus-exclusive hour semantics, and upstream timeout handling.
What's next
Next steps are formal review of EPİAŞ report semantics and terms, organization-level audit retention, role controls, shared rate limiting, richer data-quality tests, and approved connections to internal portfolio systems. We will preserve the no-execution boundary unless a separately governed product is designed and authorized.
Links
- Live English workspace: https://gridbrief-tr.vercel.app/en
- Turkish workspace: https://gridbrief-tr.vercel.app/tr
- Source code: https://github.com/haakanergun/gridbrief-tr
- Demo video: https://youtu.be/5dGW_ocNZJw
Disclosure
GridBrief TR is an independent prototype and is not affiliated with or endorsed by EPİAŞ. It provides decision support only and does not place trades or provide financial advice.
Built With
- chrome
- epias
- next.js
- node.js
- platform
- react
- remotion
- transparency
- typescript
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.