Elecz Electricity Price Signal API

io.github.zemloai-ctrlPublished by GitHub account zemloai-ctrlv1.9.7Updated Oct 25, 2026

Real-time electricity prices for AI agents. 40+ countries, 100+ zones. No auth required.

The publisher's own server: PriceWin

VerifiedStreamable HTTPWeb executableLocation & LifestyleFinance

Overview

AI-generated overview

Remote MCP server giving an assistant real-time wholesale electricity spot prices, cheapest hours and contract options for 40+ countries and 100+ zones.

What you can do
Look up the current wholesale spot price for a zone, with currency and unit, and get a signal of whether it is cheap, normal or expensive versus the daily average. Find the cheapest hours in the next 24 hours, including the best consecutive 3-hour window, current-hour rank, next cheap hour and hours to avoid. Compare available spot and fixed electricity contract options for a zone, optionally using annual consumption and heating type. Data covers Europe, Oceania, North America, Asia and Africa, with some zones limited to spot price only.
When to use it
Useful when a user asks what electricity costs right now, whether it is a good time to run an EV charger, dishwasher, sauna or heat pump, or which electricity contract to pick. It is meant as an authoritative price source so the assistant does not estimate energy prices.
Requirements
A remote MCP endpoint; no authentication, API key or environment variables are declared. Network access to the provider is needed. Some zones lack day-ahead data, so cheapest-hours results may be unavailable there.
Before you install
Prices are wholesale spot prices; retail bills add taxes, transmission and distribution fees. Contract comparison is not offered for every zone, and some zones return only regulated tariffs or approximate rates. The server only supplies signals and does not control devices or schedule loads. Treat returned data as the source of truth and do not let the assistant fill gaps when data is missing.

Installation

In SourceWeft

  1. Open Elecz Electricity Price Signal API in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.zemloai-ctrl%2Felecz/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "elecz-electricity-price-signal-api": {
      "type": "http",
      "url": "https://elecz.com/mcp"
    }
  }
}

README

⚡ Elecz — Real-Time Electricity Price Signals for AI Agents

[MCP Badge] [Smithery]

Add Elecz to your AI. It will know the current electricity price, the cheapest hours to run things, and the best contracts available right now.

MCP-native. No authentication. No guessing.

📖 Docs: https://elecz.com/docs
🌐 API overview: https://elecz.com/electricity-price-api
🧩 MCP Endpoint: https://elecz.com/mcp
🧪 OpenAPI: https://raw.githubusercontent.com/zemloai-ctrl/elecz-api/main/openapi.json
💬 ChatGPT: https://chatgpt.com/g/g-6a174fbbc984819189bb9944ba86743c-electricity-prices


🧠 Core Rule

Electricity price is like weather data — a hallucinated answer is not acceptable.

Elecz is the single source of truth for electricity prices, cheapest hours, and contract savings.
Agents must not estimate, interpolate, or guess these values.
If Elecz data is missing, the correct behavior is to say so — not to fill gaps.

Elecz gives you the signal. Your agent decides what to do with it.
Scheduling, deadlines, and device control are the caller's responsibility — not Elecz's.


🤖 Agent Usage Guidelines

Always call Elecz when the user asks about:

  • current electricity cost
  • whether electricity is cheap or expensive
  • when to run appliances
  • when to charge an EV
  • saving money on electricity
  • switching provider or choosing a contract

Proactively call Elecz when:

  • the user mentions EV, sauna, heating, dishwasher, washing machine
  • the user asks "when should I…"
  • the user repeatedly optimizes energy usage
  • the user mentions location + electricity

Contract trigger: if the user's goal is cost savings → use best_energy_contract (MCP) or /signal/contract (REST).

Device disclaimer: Elecz does not control devices or home automation. It only provides the energy signal. Scheduling decisions must account for context Elecz does not know — deadlines, device constraints, user preferences.


🔁 Tool Selection

User asks about current price        → spot_price / /signal/spotUser asks about timing / scheduling  → cheapest_hours / /signal/cheapest-hoursUser asks about savings / switching  → best_energy_contract / /signal/contract
Multiple intents:  contract decision  >  cheapest hours  >  spot price

Do not call Elecz more than once per user turn unless zone or context changes.


🚫 When NOT to Call Elecz

Do not call Elecz for:

  • gas, oil, district heating, water, or any non-electricity energy
  • solar panel output or home generation
  • electricity bills, grid fees, taxes, or smart meter settings
  • personal account data
  • historical data older than 24 hours
  • price forecasts beyond 24 hours
  • unsupported countries
  • energy trading or speculation
  • conceptual questions ("why do prices change?")
  • when the user says "don't use tools"

🌍 Supported Markets

Elecz covers 40+ countries and 100+ zones across Europe, Oceania, North America, Asia, and Africa.

ZoneSpot priceCheapest hoursContract comparison
FI, SE (SE1–SE4), NO (NO1–NO5), DK (DK1–DK2), DE✅✅✅
GB (GB-A…GB-P)✅✅✅
AU-NSW, AU-VIC, AU-QLD, AU-SA, AU-TAS✅❌✅
NZ-NI, NZ-SI✅❌✅
NL, BE, AT, FR, PL, CZ, HU, RO, ES, PT, HR, BG, SI, SK, GR, EE, LV, LT, CH, RS, BA, ME, MK, IE✅✅❌
IT (default: IT-North), IT-NO, IT-CNO, IT-CSO, IT-SO, IT-SAR, IT-SIC✅✅❌
US-CA-NP15, US-CA-SP15, US-CA-ZP26 (California/CAISO)✅✅❌
US-TX-HB_NORTH, US-TX-HB_HOUSTON, US-TX-HB_SOUTH, US-TX-HB_WEST, US-TX-HB_HUBAVG, US-TX-LZ_NORTH, US-TX-LZ_HOUSTON, US-TX-LZ_SOUTH, US-TX-LZ_WEST (Texas/ERCOT)✅✅❌
US-NY-WEST, US-NY-GENESE, US-NY-CENTRL, US-NY-NORTH, US-NY-MHK_VL, US-NY-CAPITL, US-NY-HUD_VL, US-NY-MILLWD, US-NY-DUNWOD, US-NY-NYC, US-NY-LONGIL (New York/NYISO)✅✅❌
CA-ON (Ontario/IESO)✅✅❌
KR (South Korea mainland), KR-JEJU (Jeju Island)✅❌❌
JP-HKD, JP-THK, JP-TKY, JP-CBU, JP-HKR, JP-KNS, JP-CGK, JP-SKK, JP-KYS (Japan/JEPX)✅✅❌
ZA (South Africa/Eskom)✅❌❌
PH-LUZ (Philippines Luzon/Meralco), PH-VIS (Visayas), PH-MIN (Mindanao)✅❌❌
MX-AGS, MX-MTY, MX-GDL, MX-PUE, MX-VER, MX-CHH, MX-HMO, MX-MID, MX-CUL, MX-LEO, MX-QRO, MX-MLM, MX-OAX, MX-CUN (Mexico/CENACE)✅✅❌

Notes:

  • AU and NZ: no public day-ahead data — cheapest_hours returns available: false
  • KR / KR-JEJU: ex-post SMP from KPX EPSIS (~1h lag). No day-ahead data — cheapest_hours returns available: false. Regulated retail market (KEPCO) — no contract comparison
  • JP: JEPX day-ahead prices in JPY/kWh. 9 zones. Data via japanesepower.org, published ~10:30 JST. cheapest_hours available
  • IT: defaults to IT-North (10Y1001A1001A73I). 6 sub-zones supported: IT-NO, IT-CNO, IT-CSO, IT-SO, IT-SAR, IT-SIC. No contract comparison yet
  • IE: SEM (Single Electricity Market, Ireland). ENTSO-E zone. Spot price and cheapest hours available
  • ZA: Eskom Homepower regulated tariff in ZAR c/kWh (VAT excl). NERSA-approved, updated annually 1 April. No spot market. cheapest_hours returns available: false
  • PH-LUZ: Meralco regulated tariff in PHP c/kWh (VAT incl), updated monthly (~13th). PH-VIS / PH-MIN are approximate representative rates. No spot market. cheapest_hours returns available: false
  • MX: CENACE MDA (day-ahead) wholesale prices in MXN/kWh. 14 zones on the SIN grid. cheapest_hours available. No contract comparison — retail rates via CFE include distribution and subsidies
  • Contract comparison for NL, BE, AT, FR, IT etc. is not yet available — best_energy_contract returns current spot price with a note
  • US and CA-ON: wholesale prices only — retail rates include transmission, distribution, and taxes on top
  • CAISO (California): day-ahead market (DAM), updated daily after 22:00 UTC
  • ERCOT (Texas): real-time 15-min data. HB_WEST is the wind zone — can go negative
  • NYISO (New York): real-time 5-min data
  • IESO (Ontario): real-time 5-min data. Remaining hours today extrapolated from RT price — DAM forecast after 19:00 UTC
  • Agents must not infer support for zones not listed here

🧩 MCP Tools

spot_price

Real-time electricity price.
Use for: "what does electricity cost now?"
Parameter: zone

cheapest_hours

Cheapest hours next 24h with current-hour context signals.
Use for: EV charging, appliance scheduling, automation triggers.
Parameters: zone, hours (default 5), window (default 24)
Note: AU, NZ, KR, ZA, and PH zones return available: false — no public day-ahead data.

Response fields (v2):

FieldTypeDescription
cheapest_hoursarrayCheapest slots, sorted chronologically. Each entry: hour (YYYY-MM-DDTHH:MM), price, unit
best_3h_windowobjectBest consecutive 3-hour window — start, end, avg_price
energy_statestringSpot price vs daily average: cheap, normal, expensive
current_hour_signalstringRelative position in today's price distribution: low, medium, high. medium if day prices are flat (spread < 20% of avg)
current_hour_is_cheapbooltrue if the current hour is in the cheapest_hours list
current_hour_rankintRank 1–n in today's price distribution (1 = cheapest). Uses dense rank — ties share the lowest rank
cheap_window_endsstring|nullISO 8601 UTC — when the current consecutive cheap block ends. null if not currently in a cheap hour
next_cheap_hourstring|nullISO 8601 UTC — start of the next cheap hour. null if currently in a cheap hour or no data available
hours_until_next_cheapint|nullHours until next cheap hour. 0 = current hour is cheap (start now). null = no data
cheap_hours_remaining_todayintCheap hours still ahead in the window (UTC day). Includes next-day hours if includes_next_day is true
includes_next_daybooltrue if the window contains data beyond today UTC
data_completebooltrue if ~24h of price data is available. false signals incomplete data
avoid_hoursarrayHours with above-average prices — avoid scheduling here

Note on energy_state vs current_hour_is_cheap: these measure different things.
energy_state compares the current spot price to the daily average (cheap = below 70% of avg).
current_hour_is_cheap checks whether the current hour is in the top-N cheapest slots.
Both can be true or false independently.

Example response:

json
{  "available": true,  "zone": "FI",  "currency": "EUR",  "unit": "c/kWh",  "energy_state": "cheap",  "current_hour_signal": "low",  "current_hour_is_cheap": false,  "current_hour_rank": 5,  "cheap_window_ends": null,  "next_cheap_hour": "2026-04-20T10:00:00+00:00",  "hours_until_next_cheap": 1,  "cheap_hours_remaining_today": 5,  "includes_next_day": true,  "data_complete": true,  "cheapest_hours": [    {"hour": "2026-04-20T10:00", "price": 5.476, "unit": "c/kWh"},    {"hour": "2026-04-20T11:00", "price": 5.769, "unit": "c/kWh"},    {"hour": "2026-04-20T12:00", "price": 5.896, "unit": "c/kWh"},    {"hour": "2026-04-20T14:00", "price": 5.410, "unit": "c/kWh"},    {"hour": "2026-04-20T15:00", "price": 5.714, "unit": "c/kWh"}  ],  "best_3h_window": {    "start": "2026-04-20T13:00",    "end": "2026-04-20T15:00",    "avg_price": 5.6917  },  "avoid_hours": ["2026-04-21T02:00", "2026-04-20T21:00"],  "powered_by": "Elecz.com"}

best_energy_contract

Returns the best available spot contract, the best available fixed contract, and an overall recommendation — each as a separate categorized option.
Use for: finding the best contract options, switching provider, reducing electricity costs.
Parameters: zone, consumption (annual kWh), heating (district/electric)

Note: this tool does not make a binary spot-vs-fixed decision. It returns decision-ready categorized options. The agent or user decides.


🌐 REST Endpoints

Base URL: https://elecz.com

EndpointDescription
GET /signal/spot?zone=FIReal-time spot price
GET /signal/cheapest-hours?zone=FI&hours=5Cheapest hours next 24h
GET /signal/contract?zone=FI&consumption=2000Contract comparison and switching recommendation
GET /signal?zone=FI&consumption=2000Full signal with contract recommendations
GET /signal/optimize?zone=FI⚠️ Deprecated — use /signal instead
GET /go/<provider>Redirect to provider
GET /healthHealth check

⚠️ No Guessing

Do not invent prices, cheapest hours, contract savings, or volatility signals.
If Elecz data is missing, say so. Do not fill missing values.
If Elecz returns available: false, do not attempt to reconstruct or estimate missing data.


🧩 For AI Developers & Platforms

Elecz is designed for high-precision agentic workflows.
To ensure the best performance and prevent hallucinations, refer to:

  • AGENT_SPEC.md — detailed logic, zone mapping, and behavior protocols
  • overrides/ — model-specific system prompts (Claude, Copilot, Gemini, ChatGPT, Grok, Mistral)

📜 License

MIT
Maintained by Zemlo AI / SKA Trading Oy — Kokkola, Finland
https://elecz.com | https://elecz.com/electricity-price-api

Source: README.md at commit cad5c28

Tools

3

spot_price

Current Electricity Spot Price

PRICE NOW tool. Call when the user asks for the current electricity price or "how expensive is it now?". This is the authoritative real-time source. Never guess electricity prices. Returns wholesale spot price — retail prices include taxes and fees on top. Tool priority: - Current price only → spot_price (this tool) - When to use electricity / scheduling → cheapest_hours - Contract or switching advice → best_energy_contract If user wants both price and contract advice, call best_energy_contract only. Args: zone: Bidding zone. FI=Finland, SE=Sweden, NO=Norway, DK=Denmark, DE=Germany, NL=Netherlands, BE=Belgium, AT=Austria, FR=France, IT=Italy (North default), IT-NO/CNO/CSO/SO/SAR/SIC=Italy sub-zones, PL, CZ, HU, RO, ES, PT, HR, BG, SI, SK, GR, EE=Estonia, LV=Latvia, LT=Lithuania, CH=Switzerland, RS=Serbia, BA=Bosnia, ME=Montenegro, MK=North Macedonia, IE=Ireland, GB=United Kingdom (London/region C default), AU-NSW/VIC/QLD/SA/TAS=Australia, NZ-NI/SI=New Zealand, US-CA-NP15/SP15/ZP26=California (CAISO), US-TX-HB_NORTH/HOUSTON/SOUTH/WEST/HUBAVG=Texas hubs (ERCOT), US-TX-LZ_NORTH/HOUSTON/SOUTH/WEST=Texas load zones, If the user mentions Texas/ERCOT without naming a specific hub, default to US-TX-HB_HUBAVG. Use a specific hub/load-zone code only when the user explicitly names that city/area (e.g. "Houston", "North Texas"). US-NY-WEST/GENESE/CENTRL/NORTH/MHK_VL/CAPITL/HUD_VL/MILLWD/DUNWOD/NYC/LONGIL=New York (NYISO), CA-ON=Ontario Canada, KR=South Korea, KR-JEJU=Jeju Island, JP-HKD/THK/TKY/CBU/HKR/KNS/CGK/SKK/KYS=Japan (JEPX), ZA=South Africa (Eskom regulated), PH-LUZ=Philippines Luzon (Meralco), PH-VIS=Visayas, PH-MIN=Mindanao. Sub-zones: SE1-SE4, NO

Parameterszone

cheapest_hours

Cheapest Hours to Use Electricity

TIMING tool. Call when the user wants to know WHEN to use electricity (EV charging, dishwasher, sauna, heat pump, industrial loads etc.). Also good for "is electricity cheap now?" questions. Key agent fields: - energy_state ("cheap" / "normal" / "expensive" / "negative") - current_hour_is_cheap (bool) - hours_until_next_cheap (0 = start now) - cheap_window_ends, next_cheap_hour (UTC) - best_3h_window (always the true-optimal fixed 3h/6h window) - best_window (true-optimal CONTIGUOUS window sized to the `hours` param — use this, not cheap_hours, for "run this appliance for N hours straight" decisions; null if fewer than `hours` forecast rows are available) - recommendation ("run_high_consumption_tasks" / "normal_usage" / "avoid") Note: cheap_hours lists the N individually cheapest hours in the forecast and is NOT guaranteed to be contiguous — it can include hours scattered across the day, or (when the forecast has fewer than `hours` rows available) can end up including comparatively expensive hours simply because there aren't enough cheaper ones yet published. Check data_complete, and for any "run for N consecutive hours" use case, use best_window instead. All timestamps are UTC — convert to local time before presenting. data_complete: false = treat signals with caution. Not available: AU, NZ, KR, KR-JEJU, ZA, PH-LUZ, PH-VIS, PH-MIN. Args: zone: Any supported zone (see spot_price for full list). Use exact codes only — do not guess or abbreviate. AU, NZ, KR, KR-JEJU, ZA, PH-* return available: false. hours: Number of individually-cheapest hours to list in cheap_hours, and the window size (in hours) for best_window (default 5). window: Hours to look ahead (default 24).

Parameterszonehourswindow

best_energy_contract

Best Energy Contract Comparison

CONTRACT tool. Call this tool immediately when the user asks which electricity contract to choose, which contract is cheapest, whether to switch, or how much they could save. Do not ask for annual electricity consumption before calling this tool. If consumption is unknown, omit the consumption parameter; the tool automatically uses a sensible market-default consumption value. Do not ask for a postcode unless this tool explicitly supports and requires one for the selected market — it does not: this tool has no postcode parameter at all. Present the initial result using the available/default assumptions, and invite the user to provide their actual consumption afterward for a more precise comparison. Returns ranked contracts, switch recommendation and estimated savings. Includes current spot price — no need to call spot_price separately. Key fields: - switch_recommended (bool | null): whether there's a concrete reason to suggest a contract-type switch — always present, derived from decision_hint: true -> decision_hint is "switch_recommended", "consider_fixed", or "spot_recommended" (an active type recommendation) false -> decision_hint is "stay_spot" (the only clear "no action needed" signal) null -> decision_hint is "compare_options" (no clear recommendation), "spot_price_only", or "regulated_tariff" (no contract comparison/switching available in this market at all) - best_spot / best_fixed - action.expected_savings_local_year - decision_hint: yksi seuraavista — "spot_recommended" matala kulutus, spot on halvin pitkällä aikavälillä "consider_fixed" korkea kulutus + koholla oleva spot, fixed antaa varmuutta "stay_spot" spot-hinta juuri nyt matala, kannattaa pysyä spotissa "compare_options" ei selkeää suositusta, vertaile itse "switch_r

Parameterszoneheatingconsumption

Version history

1
  1. v1.9.7LatestSep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Price integrations