Universal Energy API for Autonomous Systems — a blended abstraction over solar, wind, nuclear, hydro, fossil, batteries, and surplus.
RFC stage
Energy markets are fragmented across incompatible protocols and interfaces:
There is no unified abstraction layer for comparing prices, booking capacity, or executing trades across all energy types.
energy.md normalizes solar, wind, nuclear, hydro, fossil, battery, and miner surplus into a single, agent-native schema. Every source looks the same at the protocol level — queryable, comparable, and bookable.
GET /sources?min_mw=100&max_price=50&location=us-west
Find available power by capacity, price, location, reliability — regardless of whether the backend is solar, gas, or nuclear.
{ "endpoint": "/btc-miners", "description": "Monetize mining downtime", "providers": [ { "id": "riot_platforms_texas", "capacity_mw": 700, "price_mwh": 2.80, "btc_mining": "paused", "availability": "immediate" }, { "id": "marathon_digital_montana", "flare_gas_mw": 280, "price_mwh": 3.50, "uptime": 0.98 } ] }
POST /book { "buyer": "anthropic_training_cluster_7", "mw_required": 100, "duration_hours": 168, "start": "2024-01-15T00:00:00Z" }
Source Type | Capacity (GW) | $/MWh | Availability |
---|---|---|---|
Bitcoin Miners | 20 | $2.80 | Immediate |
Natural Gas | 450 | $45 | On-demand |
Nuclear | 95 | $65 | Baseload |
Hydro | 80 | $38 | Seasonal |
Solar | 150 | $31 | Daylight |
Wind | 140 | $28 | Variable |
All sources are surfaced through one endpoint, instead of siloed contracts and protocols.
Today, procuring 50 GWh for a GPT-5-scale run requires manual PPAs, fragmented negotiations, and no cross-region optimization.
With energy.md, power becomes a universal digital primitive:
# AI training cluster needs 100MW for a week import requests sources = requests.get('https://energy.md/discover', { 'mw_needed': 100, 'duration_hours': 168, 'include_miners': True }).json() deal = requests.post('https://energy.md/book', { 'source_id': sources['cheapest']['id'], 'mw': 100, 'hours': 168 }).json() print(f"Secured {deal['mw']} MW at $\{deal['total_cost']:,}") print(f"Source: {deal['provider_type']}")
Once energy.md becomes the default blended endpoint:
energy.md
© 2025 energy.md authors · MIT License · Exploratory specification