Universal Energy API for Autonomous Systems — a blended abstraction over solar, wind, nuclear, hydro, fossil, batteries, and surplus.
RFC stageEnergy 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