Netzhandwerker Energy Research Hub
Live electricity prices, carbon intensity, grid load, renewable share, flexibility windows, battery arbitrage, trading signals and ESG reporting for autonomous agents.
84 endpoints31 payment-required53 freiBase Mainnet USDC
Why pay?
Raw data endpoints answer what is happening. Decision endpoints answer what an agent should do next. Use /demo/paid-sample for a free live preview, then POST /predict/negative-price or POST /energy/decision for paid output.
Products
Live Energy Data
Raw data endpoints answer what is happening: prices, forecast, carbon intensity, grid load and renewable share.
| Endpoint | Price | Use |
|---|---|---|
POST /price/spot | 0.001 USDC | Trading and dispatch agents buy this endpoint to obtain the current German EPEX spot price for immediate decisions. |
POST /price/forecast | 0.005 USDC | Energy-trading and flexible-load agents buy this endpoint to compare the next 24 hours of EPEX prices and volatility. |
POST /carbon/now | 0.001 USDC | Aktuelle CO2-Intensität des deutschen Strommix. |
POST /grid/load | 0.001 USDC | Grid-monitoring and dispatch agents buy this endpoint to obtain the latest German system load from SMARD. |
POST /renewable/share | 0.001 USDC | Carbon-aware and ESG agents buy this endpoint to measure the current renewable share and generation mix in Germany. |
Optimization Signals
Decision endpoints answer what an agent should do next: EV charging, heat pump control, flexibility windows, battery arbitrage and trading signals.
| Endpoint | Price | Use |
|---|---|---|
GET /demo/paid-sample | 0.001 USDC | Cheapest end-to-end x402 purchase test. Always returns a 402 challenge without payment and the current full NegPrice decision after a valid USDC payment. |
POST /energy/decision | 0.01 USDC | EV, battery, and flexible-load agents buy this endpoint to receive an executable action with timing, expected value, confidence, and expiry. |
POST /flexibility/window | 0.01 USDC | EV, heat-pump, and flexible-load agents buy this endpoint to identify the cheapest upcoming operating hours. |
POST /signals/buy-sell | 0.02 USDC | Trading bots buy this endpoint to receive a multi-factor buy/sell signal with RSI, Z-score, trend, and confidence. |
POST /bundle/trading | 0.02 USDC | Energy-trading agents buy this endpoint to receive an eight-source market bundle with key metrics, insights, and raw evidence. |
POST /optimizer/cheapest-window | 0.005 USDC | Flexible-load agents buy this endpoint to schedule a contiguous operating window at the lowest average electricity price. |
POST /price/negative-forecast | 0.005 USDC | Stunden mit negativen Strompreisen in den nächsten 24 Stunden. |
POST /predict/negative-price | 0.001 USDC | Battery, EV, and trading agents buy this endpoint to receive calibrated 2h/4h/6h negative-price probabilities, reviewed threshold profiles and an executable response policy. |
POST /summary/today | 0.01 USDC | Token-effiziente Tageszusammenfassung mit konkreter Handlungsempfehlung. |
POST /region | 0.005 USDC | Preis, CO2, Grünstrom und Wetter für eine PLZ-Region. |
POST /events/grid | 0.005 USDC | Ereignisfeed für Dunkelflaute, Sturm, negative Preise und Rekorde. |
Research & Intelligence
Research and intelligence endpoints produce market summaries, ESG reporting, track records and deeper energy research.
| Endpoint | Price | Use |
|---|---|---|
GET /research | 0.05 USDC | GET-Fallback mit maschinenlesbarer 402-Antwort für POST /research. |
GET /articles/{id} | 0.01 USDC | GET-Fallback mit maschinenlesbarer 402-Antwort für POST /articles/{id}. |
GET /tasks | ab 0.10 USDC | GET-Fallback mit maschinenlesbarer 402-Antwort für POST /tasks. |
POST /research | 0.05 USDC | Aggregierte Energie-Recherche für DE/EU aus Live-Datenquellen. |
POST /research/quick | 0.003 USDC | Research and market-monitoring agents buy this endpoint to answer a focused question with a compact live market snapshot. |
POST /articles/{id} | 0.01 USDC | Volltext eines Energie-Fachartikels. |
POST /tasks | ab 0.10 USDC | Asynchroner Deep-Dive Task mit Mindest-Bounty. |
POST /history/prices | 0.05 USDC | Stundendaten für EPEX-Preise nach Periode. |
POST /history/prices/stats | 0.01 USDC | Statistik für eine historische Preisperiode. |
x402 Payment
Production uses Base Mainnet, chain 8453, asset USDC, recipient 0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E.
curl -i -X POST https://energy.netzhandwerker.de/price/spot \
-H "Content-Type: application/json" \
-H "PAYMENT-SIGNATURE: <x402-payload>" \
-d '{}'
Protocol-primary retry header: PAYMENT-SIGNATURE. Compatibility aliases accepted: X-Payment, PAYMENT.
MCP / Agent Access
MCP discovery: https://energy.netzhandwerker.de/mcp. Paid data tools return payment instructions; call the REST endpoint after x402 payment.
{ "mcpServers": { "energy-hub": { "url": "https://energy.netzhandwerker.de/mcp" } } }
Endpoints
| Method | Path | Description | Price | Response example | Error cases |
|---|---|---|---|---|---|
| GET | /v3/opportunities |
Find an energy opportunity Public preflight for deadline-aware compute, DePIN, battery and power-trading workloads in Germany and Europe. Returns only actionability and value bands; exact execution timing remains in the paid dispatch plan. |
frei | {
"opportunity_id": "opp_example_01",
"buy_recommended": true,
"actionability": "high",
"expected_savings_band_eur": "1.00-5.00",
"carbon_band": "unknown",
"confidence_band": "high",
"generated_at": "2026-07-30T10:00:00.000Z",
"expires_at": "2026-07-30T10:15:00.000Z",
"data_freshness": {
"status": "current",
"source": "ENTSO-E Transparency Platform A44",
"observed_through": "2026-07-31T22:00:00.000Z",
"fetched_at": "2026-07-30T09:45:00.000Z",
"license": "CC BY 4.0",
"attribution": "ENTSO-E Transparency Platform",
"licence_scope": "A44 day-ahead prices; DE-LU; preflight"
},
"paid_endpoint": "https://energy.netzhandwerker.de/v3/dispatch-plan",
"price_usdc": 0.02,
"model_version": "dispatch-deterministic-3.0.0"
} |
400: Invalid region, use case, duration, deadline or energy constraint 404: Not found 429: Rate limit exceeded 500: Internal server error 503: Source is stale, unlicensed, missing or schema-incompatible; no opportunity is created |
| POST | /v3/dispatch-plan |
Buy an executable dispatch plan Schedules a deadline-bound compute, DePIN, battery or power-trading workload into an actionable German or European power window. Returns exact timing, expected EUR cost and savings, uncertainty, freshness, expiry and decision trace. |
0.02 USDC | {
"schedule_start": "2026-07-31T01:00:00.000Z",
"schedule_end": "2026-07-31T03:00:00.000Z",
"action": "schedule",
"expected_cost_eur": 4.12,
"expected_savings_eur": 1.38,
"baseline_cost_eur": 5.5,
"expected_carbon_effect": "unknown",
"confidence": 0.95,
"uncertainty": {
"type": "deterministic_day_ahead_market_data",
"price_range_eur_mwh": [
82.4,
82.4
],
"forecast_signal": "experimental_not_used_for_schedule"
},
"source_timestamps": {
"first_available": "2026-07-30T10:00:00.000Z",
"last_available": "2026-07-31T22:00:00.000Z",
"fetched_at": "2026-07-30T09:45:00.000Z",
"observed_through": "2026-07-31T22:00:00.000Z"
},
"source_attribution": {
"attribution": "ENTSO-E Transparency Platform",
"licence": "CC BY 4.0",
"licence_scope": "A44 day-ahead prices; DE-LU; preflight"
},
"model_version": "dispatch-deterministic-3.0.0",
"expires_at": "2026-07-30T10:15:00.000Z",
"risk_flags": [],
"decision_trace": [
"constraints_validated",
"candidate_windows_ranked",
"lowest_cost_feasible_window_selected"
],
"payment_receipt": {
"protocol": "x402",
"network": "eip155:8453",
"idempotent_replay": false
}
} |
400: Invalid technical constraints 402: x402 payment required 404: Not found 409: Opportunity is invalid, expired or incompatible; no settlement attempted 429: Rate limit exceeded 500: Internal server error 503: Source is stale, unlicensed, missing or schema-incompatible; no settlement is attempted |
| POST | /v3/market-brief |
Buy a timestamped EU market brief Returns licensed ENTSO-E and SMARD spot-market context for compute, DePIN, battery and power-trading agents: published day-ahead prices, volatility, load, renewable share when available, the observed share of published negative-price hours, uncertainty, freshness and expiry. |
0.05 USDC | {
"spot_market": {
"region": "DE-LU",
"currency": "EUR/MWh"
},
"price_forecast": [
{
"start": "2026-07-30T11:00:00.000Z",
"end": "2026-07-30T12:00:00.000Z",
"price_eur_mwh": 71.2,
"type": "published_day_ahead"
}
],
"volatility": {
"standard_deviation_eur_mwh": 12.4,
"band": "low"
},
"load": {
"value_mw": 54321,
"timestamp": "2026-07-30T09:00:00.000Z",
"fetched_at": "2026-07-30T09:45:00.000Z",
"source": "SMARD.de"
},
"renewable_share": {
"value_pct": 52.1,
"method": "renewable_generation_as_share_of_load",
"timestamp": "2026-07-30T09:00:00.000Z",
"fetched_at": "2026-07-30T09:45:00.000Z",
"source": "SMARD.de"
},
"negative_price_probability": {
"value": 0.18,
"method": "published_day_ahead_share",
"forecast_status": "not_used"
},
"uncertainty": {
"published_price_hours": 24,
"missing_price_hours": 0,
"negative_price_ml_status": "not_used"
},
"source_timestamps": {
"generated_at": "2026-07-30T10:00:00.000Z",
"spot_observed_through": "2026-07-31T10:00:00.000Z",
"spot_fetched_at": "2026-07-30T09:45:00.000Z",
"load_observed_at": "2026-07-30T09:00:00.000Z"
},
"source_attributions": [
{
"source_id": "entsoe_day_ahead",
"attribution": "ENTSO-E Transparency Platform",
"licence": "CC BY 4.0"
},
{
"source_id": "smard_load",
"attribution": "Bundesnetzagentur | SMARD.de",
"licence": "CC BY 4.0"
},
{
"source_id": "smard_generation",
"attribution": "Bundesnetzagentur | SMARD.de",
"licence": "CC BY 4.0"
}
],
"model_version": "dispatch-deterministic-3.0.0",
"expires_at": "2026-07-30T10:15:00.000Z",
"payment_receipt": {
"protocol": "x402",
"network": "eip155:8453",
"idempotent_replay": false
}
} |
400: Invalid region, horizon or use case 402: x402 payment required 404: Not found 429: Rate limit exceeded 500: Internal server error 503: Source is stale, unlicensed, missing or schema-incompatible; no settlement is attempted |
| GET | / |
Startseite mit serverseitigen Live-Werten Bot-taugliche HTML-Übersicht mit Live-Kennzahlen, Preisen, Payment und Agent-Zugriff. |
frei | "<html>Energy Research Hub overview</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /health |
Health Check Status, Version, Uptime, Port, x402-Konfiguration und relevante Links ohne Secrets. |
frei | {
"status": "ok",
"service": "energy-research-hub",
"version": "3.0.0",
"network": "Base Mainnet"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /readiness |
Readiness Score Maschinenlesbarer 10/10-Readiness-Check fuer Infrastruktur, Bot-Discovery und Kaufbarkeit. |
frei | {
"ok": true,
"ratings": {
"infrastructure": "10/10",
"bot_discovery": "10/10",
"purchase_readiness": "10/10"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /discovery-status |
Agent Discovery Status Maschinenlesbare Übersicht für Agent-Verzeichnisse, x402-Scanner, MCP-Clients und LLM-Crawler. |
frei | {
"ok": true,
"service": "energy-research-hub",
"links": {
"home": "https://energy.netzhandwerker.de",
"status": "https://energy.netzhandwerker.de/status",
"health": "https://energy.netzhandwerker.de/health",
"discovery_status": "https://energy.netzhandwerker.de/discovery-status",
"agent_starter": "https://energy.netzhandwerker.de/agent-starter.json",
"directory_listing": "https://energy.netzhandwerker.de/directory-listing.json",
"pricing": "https://energy.netzhandwerker.de/pricing",
"docs": "https://energy.netzhandwerker.de/docs",
"purchase_quickstart": "https://energy.netzhandwerker.de/examples/quickstart",
"purchase_nodejs": "https://energy.netzhandwerker.de/examples/buy-nodejs",
"purchase_python": "https://energy.netzhandwerker.de/examples/buy-python",
"purchase_curl": "https://energy.netzhandwerker.de/examples/buy-curl",
"openapi": "https://energy.netzhandwerker.de/openapi.json",
"mcp": "https://energy.netzhandwerker.de/mcp",
"x402": "https://energy.netzhandwerker.de/.well-known/x402.json",
"x402_alias": "https://energy.netzhandwerker.de/.well-known/x402",
"agent": "https://energy.netzhandwerker.de/.well-known/agent.json",
"agent_alias": "https://energy.netzhandwerker.de/.well-known/agent",
"mcp_manifest": "https://energy.netzhandwerker.de/.well-known/mcp.json",
"mcp_manifest_alias": "https://energy.netzhandwerker.de/.well-known/mcp",
"ai_plugin": "https://energy.netzhandwerker.de/.well-known/ai-plugin.json",
"llms": "https://energy.netzhandwerker.de/llms.txt",
"llms_full": "https://energy.netzhandwerker.de/llms-full.txt",
"sitemap": "https://energy.netzhandwerker.de/sitemap.xml",
"robots": "https://energy.netzhandwerker.de/robots.txt",
"demand_submit": "https://energy.netzhandwerker.de/demand/submit",
"demand_requested": "https://energy.netzhandwerker.de/demand/requested",
"distribution_kit": "https://energy.netzhandwerker.de/distribution-kit",
"distribution_kit_json": "https://energy.netzhandwerker.de/distribution-kit.json",
"example_agent_integrations": "https://energy.netzhandwerker.de/examples/agent-integrations",
"example_agent_integrations_json": "https://energy.netzhandwerker.de/examples/agent-integrations.json",
"example_agent_integrations_readme": "https://energy.netzhandwerker.de/examples/agent-integrations/README.md",
"example_agent_integrations_archive": "https://energy.netzhandwerker.de/downloads/energy-hub-agent-examples.zip",
"mcp_registry_metadata": "https://energy.netzhandwerker.de/.well-known/mcp-registry/server.json",
"x402scan": "https://www.x402scan.com/recipient/0x2880edfff13100677bf97a3cbdf3bc34771c4e5e/resources",
"for_x402_bots": "https://energy.netzhandwerker.de/for-x402-bots",
"for_mcp_clients": "https://energy.netzhandwerker.de/for-mcp-clients"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /agent-starter.json |
Agent Starter Pack Kompakter Startpunkt für autonome Agenten mit günstigstem Test-Call, wichtigstem Paid Call, Demand-Submit und allen Discovery-Links. |
frei | {
"ok": true,
"cheapest_test_call": "/demo/paid-sample",
"paid_decision_call": "/energy/decision"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /directory-listing.json |
Directory Listing Pack Maschinenlesbare Listing-Daten für 402-, MCP-, OpenAPI- und Agent-Verzeichnisse. |
frei | {
"title": "Netzhandwerker Energy Research Hub",
"tags": [
"energy",
"x402",
"USDC",
"Base"
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /distribution-kit |
Distribution Kit HTML-Übersicht mit Directory-Copy, Discovery-Links, Facilitator-Status und realistischen nächsten Verteilungsschritten. |
frei | "<html>Distribution kit</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /distribution-kit.json |
Distribution Kit JSON Maschinenlesbares Paket für 402-, MCP-, Agent- und API-Verzeichnisse. |
frei | {
"ok": true,
"directories": [
"402index",
"x402 Bazaar",
"MCP directories"
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /examples/agent-integrations |
Agent Integration Examples GitHub-ready Beispielpaket für CrewAI, LangGraph, AutoGen-kompatible Tools und MCP-Clients. |
frei | "<html>Agent integration examples</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /examples/agent-integrations.json |
Agent Integration Examples JSON Dateimap für ein Beispiel-Repository mit fertigen Agent-Integrationen. |
frei | {
"ok": true,
"files": [
"README.md",
"crewai_energy_tool.py",
"langgraph_energy_node.py"
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /examples/agent-integrations/README.md |
Agent Integration README Markdown-README für ein GitHub-ready Beispiel-Repository. |
frei | "# Netzhandwerker Energy Hub Agent Examples" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /docs |
Dokumentation HTML-Dokumentation aus derselben Endpunktliste wie OpenAPI und MCP. |
frei | "<html>API docs</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /openapi.json |
OpenAPI 3.1 Spezifikation Maschinenlesbare OpenAPI-Spezifikation für alle dokumentierten Public Routes. |
frei | {
"openapi": "3.1.0",
"info": {
"title": "Netzhandwerker Energy Research Hub"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /llms.txt |
LLM Kurzkontext Kompakte Textdatei für Bots, Crawler und Agenten. |
frei | "Name: Netzhandwerker Energy Research Hub" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /llms-full.txt |
LLM Vollkontext Ausführliche Textdatei mit Zweck, Endpunkten, Preisen und Payment-Hinweisen. |
frei | "Endpoints: ..." |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /robots.txt |
Robots Datei Crawler-Hinweise mit Sitemap- und LLM-Dateiverweisen. |
frei | "User-agent: *" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /sitemap.xml |
Sitemap XML-Sitemap für frei erreichbare GET-Routen. |
frei | "<urlset>...</urlset>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /.well-known/ai-plugin.json |
AI Plugin Manifest Manifest für Plugin-Scanner mit OpenAPI-Link. |
frei | {
"schema_version": "v1",
"name_for_model": "netzhandwerker_energy_research_hub"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /.well-known/mcp.json |
MCP Discovery Discovery-Dokument mit MCP-Endpoint und Tool-Liste. |
frei | {
"endpoint": "https://energy.netzhandwerker.de/mcp",
"tools": []
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /.well-known/agent.json |
Agent Manifest Agenten-Manifest mit Zweck, Links, Preisen und Payment-Konfiguration. |
frei | {
"name": "Netzhandwerker Energy Research Hub",
"payment": "x402"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /.well-known/x402.json |
x402 Manifest Payment-Manifest für x402-Scanner. |
frei | {
"payment_target": {
"network": "eip155:8453",
"currency": "USDC"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /articles |
Artikel-Katalog Frei verfügbarer Katalog der Premium-Artikel. |
frei | {
"articles": [
{
"id": "001",
"title": "Mieterstrom",
"price_usdc": "0.02"
}
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /capabilities |
Capabilities Kurzübersicht für API-Scanner mit Links und Kategorien. |
frei | {
"service": "Netzhandwerker Energy Research Hub",
"capabilities": [
"live_energy_data",
"x402_payment",
"mcp"
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /agent |
Agent Discovery Short machine-readable product, pricing and payment discovery for AI agents, MCP clients and x402 bots. |
frei | {
"name": "Netzhandwerker Energy Research Hub",
"best_for": [
"German electricity prices",
"EV charging decisions"
],
"products": [
"Live Energy Data",
"Optimization Signals",
"Research & Intelligence"
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /pricing |
Pricing Machine-readable price list grouped by Live Energy Data, Optimization Signals and Research & Intelligence. |
frei | {
"currency": "USD",
"payment_protocol": "x402",
"settlement_asset": "USDC",
"products": []
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /trust |
Trust Page Operator, payment network, uptime links, API version and risk notes as HTML or JSON via Accept header. |
frei | {
"operator": "Die Netzhandwerker",
"chain_id": 8453,
"asset": "USDC"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /status |
Status Machine-readable service status with version, uptime, endpoint count, MCP tool count and x402 state. |
frei | {
"status": "ok",
"version": "3.0.0",
"endpoint_count": 0
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /sources |
Sources Transparent list of data sources used by the service, including freshness and limitations. |
frei | {
"sources": [
{
"name": "aWATTar EPEX DE/AT",
"type": "live",
"used_for": [
"spot prices",
"price forecast",
"optimization windows"
],
"freshness": "Usually hourly/day-ahead; cached by endpoint",
"limitations": [
"External API availability",
"Market data may lag provider updates"
]
},
{
"name": "Fraunhofer ISE energy-charts",
"type": "live/cached",
"used_for": [
"renewable share",
"generation mix",
"CO2 fallback model"
],
"freshness": "Cached by endpoint, usually minutes to hours",
"limitations": [
"Provider schema changes possible",
"Some values are modelled from generation mix"
]
},
{
"name": "SMARD Bundesnetzagentur",
"type": "live/cached",
"used_for": [
"grid load"
],
"freshness": "Cached by endpoint",
"limitations": [
"Quarter-hour data availability depends on SMARD publication"
]
},
{
"name": "Corrently GrünstromIndex",
"type": "forecast/cached",
"used_for": [
"regional green power index",
"regional CO2 estimate"
],
"freshness": "Forecast data, cached by endpoint",
"limitations": [
"Regional approximation by ZIP"
]
},
{
"name": "Open-Meteo",
"type": "forecast/cached",
"used_for": [
"solar forecast",
"wind forecast",
"weather-driven optimization"
],
"freshness": "Forecast data, cached by endpoint",
"limitations": [
"Weather forecast uncertainty"
]
},
{
"name": "Electricity Maps",
"type": "live",
"used_for": [
"carbon intensity when API key is available"
],
"freshness": "Provider latest value",
"limitations": [
"Requires configured provider key; fallback uses internal CO2 model"
]
},
{
"name": "ENTSO-E Transparency",
"type": "live/forecast",
"used_for": [
"day-ahead prices and selected premium research"
],
"freshness": "Provider publication schedule",
"limitations": [
"Requires configured ENTSO-E key"
]
},
{
"name": "Internal model",
"type": "model",
"used_for": [
"energy decisions",
"battery arbitrage",
"trading signal scoring"
],
"freshness": "Generated per request from cached/live inputs",
"limitations": [
"Decision outputs are estimates, not guarantees"
]
}
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /wallet-bot/needs-info |
Wallet Bot Needs Info Free discovery endpoint that invites wallet-enabled agents to declare what they want to buy. |
frei | {
"ok": true,
"purpose": "Tell us what your wallet-enabled agent wants to buy.",
"submit_need": {
"method": "POST",
"endpoint": "/wallet-bot/needs",
"content_type": "application/json",
"schema": {
"type": "object",
"properties": {
"agent_name": {
"type": "string"
},
"wallet_type": {
"type": "string",
"enum": [
"x402",
"evm",
"base",
"solana",
"lightning",
"other",
"unknown"
]
},
"payment_network": {
"type": "string"
},
"payment_asset": {
"type": "string"
},
"need": {
"type": "string",
"description": "What does your wallet-enabled agent want to buy?"
},
"requested_endpoint": {
"type": "string"
},
"missing_endpoint": {
"type": "string"
},
"desired_output_format": {
"type": "string",
"enum": [
"json",
"mcp",
"openapi",
"webhook",
"csv",
"other"
]
},
"desired_freshness": {
"type": "string",
"enum": [
"live",
"hourly",
"daily",
"historical",
"unknown"
]
},
"max_budget_usdc": {
"type": "number",
"minimum": 0
},
"recurring_need": {
"type": "boolean"
},
"urgency": {
"type": "string",
"enum": [
"low",
"normal",
"high"
]
},
"callback_url": {
"type": "string",
"description": "Stored as present/host only; never called automatically."
},
"notes": {
"type": "string"
}
},
"additionalProperties": false
}
},
"wallet_bot_need_request": {
"question": "What does your wallet-enabled agent need from this energy API?",
"submit": {
"method": "POST",
"endpoint": "/wallet-bot/needs",
"content_type": "application/json"
},
"examples": [
"I need live EPEX prices for Germany every hour.",
"I need a battery arbitrage schedule.",
"I need CO2-low charging windows.",
"I need Redispatch risk by region.",
"I need webhook alerts for negative prices."
],
"optional_fields": [
"wallet_type",
"payment_network",
"max_budget_usdc",
"desired_output_format",
"recurring_need"
]
},
"why": [
"We use wallet-bot needs to create better paid energy endpoints.",
"Tell us what data, decision, format or price your agent needs."
],
"examples": [
{
"need": "I need a 15-minute EV charging schedule for Germany before 07:00.",
"recommended_endpoint": "/energy/decision"
},
{
"need": "I need current German grid load for an operational decision.",
"recommended_endpoint": "/grid/load"
},
{
"need": "I need a cheaper payment test endpoint.",
"recommended_endpoint": "/demo/paid-sample"
}
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /wallet-bot/needs |
Submit Wallet Bot Need Free endpoint where wallet-enabled agents can declare needed data, formats, missing endpoints and budget. |
frei | {
"ok": true,
"need_id": "need_123",
"recommended_existing_offer": {
"endpoint": "/energy/decision",
"price_usdc": 0.01,
"normal_price_usdc": 0.25,
"pricing_mode": "launch"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /demand/submit |
Demand Intent Discovery Machine-readable discovery fallback for demand submissions. Optional x402 payment can mark a request as priority_demand. |
0.001 USDC | {
"accepted": false,
"payment_required": false,
"optional_payment_supported": true,
"demand_capture": {
"honest_notice": "This endpoint is not available yet. You can request it.",
"purpose": "Submit an endpoint, data, decision or format request. This is a demand sensor, not a guarantee of implementation.",
"protocol": "x402",
"endpoint": "/demand/submit",
"method": "POST",
"submit_need": {
"method": "POST",
"url": "/demand/submit"
},
"content_type": "application/json",
"fields": {
"need": {
"type": "string",
"description": "What endpoint, data, decision or signal does your agent want?"
},
"desired_endpoint": {
"type": "string",
"description": "Preferred endpoint path, if known."
},
"desired_format": {
"type": "string",
"enum": [
"json",
"mcp",
"openapi",
"csv",
"webhook"
]
},
"max_budget_usdc": {
"type": "number",
"description": "Maximum budget per call or request in USDC."
},
"recurring": {
"type": "boolean"
},
"frequency": {
"type": "string",
"enum": [
"one_time",
"hourly",
"daily",
"weekly",
"realtime"
]
},
"required_freshness": {
"type": "string"
},
"use_case": {
"type": "string"
},
"agent_name": {
"type": "string"
},
"agent_url": {
"type": "string"
},
"wallet_type": {
"type": "string"
},
"payment_network": {
"type": "string"
},
"webhook_url": {
"type": "string",
"description": "Optional. Stored, not called automatically."
}
},
"hint_priority": "Optional 0.001 USDC payment lists your request as priority_demand.",
"optional_priority_price_usdc": 0.001,
"no_raw_payment_material_logged": true
}
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /demand/submit |
Submit endpoint demand Two-stage intent filter for agents to submit a data or endpoint request. Without payment it is stored as unverified_demand; optional verified 0.001 USDC lists it as priority_demand. |
0.001 USDC | {
"accepted": true,
"paid": false,
"payment_verified": false,
"request_id": "need_YYYYMMDD_slug_hash",
"status": "unverified_demand",
"implementation_not_guaranteed": true
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /for-ai-agents |
For AI Agents Server-rendered landing page for AI agents with endpoints, prices and example responses. |
frei | "<html>For AI agents</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /for-mcp-clients |
For MCP Clients Server-rendered landing page for MCP clients with setup and available tools. |
frei | "<html>For MCP clients</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /for-x402-bots |
For x402 Bots Server-rendered landing page for x402 bots with payment test and paid endpoints. |
frei | "<html>For x402 bots</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /for-ev-charging-agents |
For EV Charging Agents Server-rendered landing page for EV charging optimization agents. |
frei | "<html>For EV charging agents</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /for-esg-reporting-agents |
For ESG Reporting Agents Server-rendered landing page for ESG reporting agents. |
frei | "<html>For ESG reporting agents</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /for-energy-trading-agents |
For Energy Trading Agents Server-rendered landing page for energy trading agents. |
frei | "<html>For energy trading agents</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /sample/research |
Research Sample Frei verfügbares Beispiel für Research-Ausgaben. |
frei | {
"note": "Frei verfügbares Beispiel",
"full_endpoint": "POST /research"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /sample/articles |
Artikel-Snippet Frei verfügbares Artikel-Snippet mit Link auf den bezahlten Volltext. |
frei | {
"preview": {
"id": "001",
"title": "Mieterstrom"
},
"full_endpoint": "POST /articles/{id}"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /mcp |
MCP Discovery JSON-Discovery für MCP-Clients mit Tool-Namen, Input-Schemas, Endpoints, Preisen und Payment-Status. |
frei | {
"protocol": "Model Context Protocol",
"tools_count": 32
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /mcp |
MCP JSON-RPC Endpoint JSON-RPC Endpoint für initialize, tools/list und tools/call. Paid Data Tools liefern Payment-Anweisungen. |
frei | {
"jsonrpc": "2.0",
"result": {
"tools": []
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /agent-manifest |
Agent Manifest Frei verfügbares Agenten-Manifest für Bots und x402-Scanner. |
frei | {
"name": "Netzhandwerker Energy Research Hub",
"openapi": "https://energy.netzhandwerker.de/openapi.json"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /metrics |
Prometheus Metrics Prometheus-kompatible Metriken für Requests, Revenue und x402-Probes. |
frei | "energy_hub_requests_total 123" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /signals/track-record |
Track Record Transparenzdaten zu Historie, Quellen, Reliability und Methodik. |
frei | {
"reliability": {
"success_rate_24h": "99.2%",
"network": "Base Mainnet"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /trust/dashboard |
Live Trust Dashboard JSON Public evidence endpoint with precision, recall, calibration, baseline comparison, economic savings, data period, sample size, model version and separately classified buyer metrics. |
frei | {
"ok": true,
"status": "live",
"evaluation": {
"precision": null,
"recall": null,
"pr_auc": null,
"brier_score": null,
"calibration_error": null,
"price_mae_eur_mwh": null,
"median_savings_eur": null,
"sample_size": 0,
"data_period": null,
"model_version": "pending-evaluation",
"production_advantage_claim": false
},
"business_metrics": {
"independent_external_buyers": 0,
"external_repeat_buyers": 0,
"external_revenue_usdc": 0,
"internal_qa_reported_separately": true
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /trust |
Live Trust Dashboard HTML Public browser dashboard for the live negative-price prediction track record. Fetches /trust/dashboard and refreshes every five minutes. |
frei | "<html>Live Track Record</html>" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /tasks/{id}/result |
Task Ergebnis Ergebnisabruf für zuvor bezahlte Async-Tasks. |
frei | {
"id": "task_123",
"status": "completed",
"result": {}
} |
400: Invalid request 404: Task not found 429: Rate limit exceeded 500: Internal server error |
| GET | /netzhandwerker-radar |
Bot-Radar Dashboard Internes Radar-Dashboard. Zugriff nur mit ENV-Passwort per Header, Basic Auth oder Query-Fallback. |
frei | "<html>Bot-Radar</html>" |
400: Invalid request 401: Authentication required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /research |
Research Payment Requirements GET-Fallback mit maschinenlesbarer 402-Antwort für POST /research. |
0.05 USDC | {
"error": "payment_required",
"endpoint": "POST /research"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /articles/{id} |
Article Payment Requirements GET-Fallback mit maschinenlesbarer 402-Antwort für POST /articles/{id}. |
0.01 USDC | {
"error": "payment_required",
"endpoint": "POST /articles/{id}"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /tasks |
Task Payment Requirements GET-Fallback mit maschinenlesbarer 402-Antwort für POST /tasks. |
ab 0.10 USDC | {
"error": "payment_required",
"endpoint": "POST /tasks"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /research |
Energy Research Aggregierte Energie-Recherche für DE/EU aus Live-Datenquellen. |
0.05 USDC | {
"success": true,
"summary": "...",
"key_metrics": [],
"confidence_score": 0.9
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /demo/paid-sample |
x402 Paid Signal Test Cheapest end-to-end x402 purchase test. Always returns a 402 challenge without payment and the current full NegPrice decision after a valid USDC payment. |
0.001 USDC | {
"ok": true,
"endpoint": "/demo/paid-sample",
"paid": true,
"result": {
"schema_version": "negprice_signal_v1",
"expires_at": "2026-07-12T13:00:00.000Z"
}
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /energy/decision |
Energy Decision Discovery GET discovery for the paid decision endpoint. Returns machine-readable endpoint metadata or method guidance. |
frei | {
"ok": true,
"endpoint": "/energy/decision",
"method": "POST",
"payment_required": true,
"pricing_mode": "standard",
"price_usd": 0.01,
"normal_price_usd": 0.01,
"asset": "USDC",
"network": "Base Mainnet",
"chain_id": 8453
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /energy/decision |
Energy Decision EV, battery, and flexible-load agents buy this endpoint to receive an executable action with timing, expected value, confidence, and expiry. |
0.01 USDC | {
"ok": true,
"product": "Optimization Signals",
"endpoint": "/energy/decision",
"query": {
"goal": "minimize_cost",
"device": "ev",
"location": "Germany",
"duration_hours": 2,
"constraints": {
"target_soc": 80,
"max_power_kw": 11
}
},
"result": {
"schema_version": "energy_decision_v1",
"decision_id": "dec_mrjtggtb_639t85",
"product": "paid_energy_decision",
"buyer_task_fit": "schedule_or_trade_energy_with_money_at_risk",
"decision": "charge_later",
"action": "charge_later",
"recommendation": "charge_later between 2026-07-14T11:00:00.000Z and 2026-07-14T13:00:00.000Z",
"recommended_window": {
"start": "2026-07-14T11:00:00.000Z",
"end": "2026-07-14T13:00:00.000Z",
"hours": [
{
"start": "2026-07-14T11:00:00.000Z",
"end": "2026-07-14T12:00:00.000Z",
"price_ct_kwh": 5.18,
"price_eur_mwh": 51.83
},
{
"start": "2026-07-14T12:00:00.000Z",
"end": "2026-07-14T13:00:00.000Z",
"price_ct_kwh": 5.77,
"price_eur_mwh": 57.73
}
]
},
"reason": "Cheapest available window is materially below the day average.",
"why_paid": "This endpoint sells the decision layer: action, timing, expected value, confidence, freshness and source status. Raw electricity data remains available from public sources.",
"estimated_value": {
"currency": "EUR",
"expected_saving": 1.52,
"energy_volume_kwh": 22,
"value_basis": "day_average_vs_recommended_window"
},
"expected_saving_eur": 1.52,
"carbon_impact": {
"reduction_percent": 13,
"intensity_g_co2_kwh": 419,
"renewable_share_pct": 51.2
},
"carbon_reduction_percent": 13,
"confidence": 0.85,
"expires_at": "2026-07-13T23:00:00+00:00",
"do_not_act_reason": null,
"risk_flags": [],
"source_status": {
"price": "available",
"carbon": "fallback",
"renewable": "available"
},
"freshness": {
"price_cache_ttl_seconds": 600,
"carbon_cache_ttl_seconds": 600,
"negative_price_ml_cache_ttl_seconds": 60,
"generated_at": "2026-07-13T22:51:07.679Z",
"decision": {
"fresh": true,
"generated_at": "2026-07-13T22:00:00+00:00",
"expires_at": "2026-07-13T23:00:00+00:00",
"age_seconds": 3068,
"seconds_until_expiry": 532,
"stale_reason": null
}
},
"ml_decision_intelligence": {
"source": "NegPrice Decision Intelligence v3",
"prediction": {
"negative_price_in_2h": false,
"probability": 0.0012,
"risk_level": "low",
"action": "no_action_normal_operation",
"target_window": {
"start": "2026-07-14T00:00:00+00:00",
"end": "2026-07-14T01:00:00+00:00",
"lead_hours": 2
},
"predicted_price_eur_mwh": 110.53,
"expected_saving_eur_mwh": 29.11
},
"horizons": [
{
"lead_hours": 2,
"negative_price": false,
"probability": 0.0012,
"risk_level": "low",
"predicted_price_eur_mwh": 110.53,
"expected_saving_eur_mwh": 29.11,
"target_window": {
"start": "2026-07-14T00:00:00+00:00",
"end": "2026-07-14T01:00:00+00:00",
"lead_hours": 2
},
"bot_value_score": 5.82
},
{
"lead_hours": 4,
"negative_price": false,
"probability": 0.0716,
"risk_level": "low",
"predicted_price_eur_mwh": 87.74,
"expected_saving_eur_mwh": 51.9,
"target_window": {
"start": "2026-07-14T02:00:00+00:00",
"end": "2026-07-14T03:00:00+00:00",
"lead_hours": 4
},
"bot_value_score": 10.38
},
{
"lead_hours": 6,
"negative_price": false,
"probability": 0.1101,
"risk_level": "low",
"predicted_price_eur_mwh": 85.34,
"expected_saving_eur_mwh": 54.3,
"target_window": {
"start": "2026-07-14T04:00:00+00:00",
"end": "2026-07-14T05:00:00+00:00",
"lead_hours": 6
},
"bot_value_score": 10.86
}
],
"decision_engine": {
"schema_version": "negprice_bot_decision_v1",
"recommended_action": "no_action_normal_operation",
"should_act": false,
"policy": "below_action_threshold",
"selected_horizon_hours": 6,
"target_window": {
"start": "2026-07-14T04:00:00+00:00",
"end": "2026-07-14T05:00:00+00:00",
"lead_hours": 6
},
"probability": 0.1101,
"expected_target_price_eur_mwh": 85.34,
"expected_saving_eur_mwh": 54.3,
"bot_value_score": 10.86,
"minimum_probability_threshold": 0.25,
"confidence": 0.25,
"valid_until": "2026-07-13T23:00:00+00:00",
"retry_after_seconds": 900,
"do_not_act_reason": "Probability/value threshold not met for paid bot execution.",
"buyer_work_removed": [
"multi_horizon_model_call",
"probability_threshold_selection",
"target_price_estimation",
"economic_value_scoring",
"risk_flag_packaging"
]
},
"drivers": [
"rapid_price_decline",
"large_expected_price_spread"
],
"risk_flags": [
"low_confidence"
],
"model": {
"name": "NegPrice-Decision-Intelligence-v4",
"version": "4.1",
"features": 47,
"weather_enhanced": true,
"multi_horizon": true,
"supported_horizons_hours": [
2,
4,
6
],
"calibration": "isotonic probability calibration on final TimeSeriesSplit",
"precision": 0.8115,
"recall": 0.8564,
"f1": 0.8333,
"accuracy": 0.9791,
"price_mae_eur_mwh": 13.36,
"depth_mae_eur_mwh_in_sample": 8.17,
"duration_mae_h_in_sample": 0.1,
"validation": "5-fold expanding-window time-series cross-validation",
"training_period": {
"end": "2026-07-03",
"start": "2023-07-02"
},
"trained_at": "2026-07-05T09:28:11.657666+00:00"
}
},
"cross_market_spread": {
"de_at": {
"ts": 1783976400,
"timestamp": "2026-07-13T21:00:00.000Z",
"de_price_eur_mwh": 144.07,
"at_price_eur_mwh": 149.81,
"spread_de_minus_at_eur_mwh": -5.74,
"cheaper_country": "DE"
},
"source": "Archived aWATTar DE/AT hourly prices",
"bot_use": "Detect whether a cross-country price context changes the preferred flexible-load action."
},
"automation_policy": {
"schema_version": "energy_bot_automation_policy_v1",
"ready_to_execute": true,
"recommended_action": "no_action_normal_operation",
"selected_window": {
"start": "2026-07-14T11:00:00.000Z",
"end": "2026-07-14T13:00:00.000Z"
},
"expected_value_eur": 1.52,
"negative_price_probability_2h": 0.0012,
"minimum_confidence": 0.6,
"bot_work_removed": [
"source_fetching",
"window_optimization",
"negative_price_ml_scoring",
"economic_value_calculation",
"risk_flag_generation",
"execution_threshold_policy"
]
},
"schema_contract": {
"stable_fields": [
"decision",
"action",
"recommended_window",
"estimated_value",
"carbon_impact",
"confidence",
"risk_flags",
"source_status",
"freshness",
"ml_decision_intelligence",
"cross_market_spread",
"automation_policy"
],
"output_type": "decision_not_raw_data"
},
"estimated": true,
"inputs_used": {
"current_price_ct_kwh": 13.96,
"cheapest_avg_price_ct_kwh": 5.475,
"day_avg_price_ct_kwh": 12.397,
"carbon_intensity_g_co2_kwh": 419,
"renewable_share_pct": 51.2,
"assumed_power_kw": 11
},
"limitations": []
},
"recommendation": "charge_later between 2026-07-14T11:00:00.000Z and 2026-07-14T13:00:00.000Z",
"price_paid": "0.01",
"currency": "USDC",
"network": "eip155:8453",
"payment": {
"required": true,
"paid": true,
"verified": true,
"price_usd": 0.01,
"amount_usdc": 0.01,
"asset": "USDC",
"network": "eip155:8453",
"network_id": "eip155:8453",
"chain_id": 8453,
"protocol": "x402",
"recipient": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E"
},
"meta": {
"source": "aWATTar EPEX DE/AT + Electricity Maps/Fraunhofer + internal model",
"source_type": "mixed",
"updated_at": "2026-07-13T22:51:07.680Z",
"generated_at": "2026-07-13T22:51:07.680Z",
"cache_ttl_seconds": 600,
"confidence": 0.85,
"version": "2.0.0",
"limitations": [],
"source_status": {
"price": "available",
"carbon": "fallback",
"renewable": "available"
},
"negative_price_ml": {
"model": "NegPrice-Decision-Intelligence-v4",
"version": "4.1",
"confidence": 0.25,
"action": "no_action_normal_operation"
},
"product_positioning": "paid decision layer, not raw data resale"
}
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /research/quick |
Quick Research Research and market-monitoring agents buy this endpoint to answer a focused question with a compact live market snapshot. |
0.003 USDC | {
"source": "EPEX (aWATTar)",
"query": "Summarize the German electricity market for the next 24 hours.",
"current_price": {
"start": "2026-07-13T22:00:00.000Z",
"end": "2026-07-13T23:00:00.000Z",
"price_eur_mwh": 139.64,
"price_ct_kwh": "13.96"
},
"timestamp": "2026-07-13T22:51:16.972Z"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /articles/{id} |
Premium Artikel Volltext eines Energie-Fachartikels. |
0.01 USDC | {
"success": true,
"type": "premium_article",
"article": {}
} |
400: Invalid request 402: Payment Required 404: Article not found 429: Rate limit exceeded 500: Internal server error |
| POST | /tasks |
Async Bounty Task Asynchroner Deep-Dive Task mit Mindest-Bounty. |
ab 0.10 USDC | {
"success": true,
"task_id": "task_123",
"status": "queued",
"pricing_mode": "launch",
"launch_min_price_usdc": 0.1,
"normal_min_price_usdc": 1,
"max_price_usdc": 100
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /price/spot |
Spotpreis jetzt Trading and dispatch agents buy this endpoint to obtain the current German EPEX spot price for immediate decisions. |
0.001 USDC | {
"source": "EPEX DE/AT (aWATTar)",
"timestamp": "2026-07-13T22:51:12.102Z",
"current_price_ct_kwh": "13.96",
"current_price_eur_mwh": 139.64,
"valid_until": "2026-07-13T23:00:00.000Z"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /price/current |
Current Price DE/AT Free current archived spot price for Germany or Austria. Query with country=DE or country=AT. Includes latest DE/AT spread when both markets are archived. |
frei | {
"ok": true,
"country": "AT",
"price_eur_mwh": 42.1,
"spread": {
"spread_de_minus_at_eur_mwh": -3.2,
"cheaper_country": "DE"
}
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /price/forecast |
24h Preis-Forecast Energy-trading and flexible-load agents buy this endpoint to compare the next 24 hours of EPEX prices and volatility. |
0.005 USDC | {
"source": "EPEX DE/AT 24h forecast",
"timestamp": "2026-07-13T22:51:10.252Z",
"hours": 24,
"stats_eur_mwh": {
"avg": "123.97",
"min": "51.83",
"max": "182.48",
"spread": "130.65"
},
"hourly": [
{
"start": "2026-07-13T22:00:00.000Z",
"end": "2026-07-13T23:00:00.000Z",
"price_eur_mwh": 139.64,
"price_ct_kwh": "13.96"
},
{
"start": "2026-07-13T23:00:00.000Z",
"end": "2026-07-14T00:00:00.000Z",
"price_eur_mwh": 133.89,
"price_ct_kwh": "13.39"
},
{
"start": "2026-07-14T00:00:00.000Z",
"end": "2026-07-14T01:00:00.000Z",
"price_eur_mwh": 127.35,
"price_ct_kwh": "12.73"
},
{
"start": "2026-07-14T01:00:00.000Z",
"end": "2026-07-14T02:00:00.000Z",
"price_eur_mwh": 127.22,
"price_ct_kwh": "12.72"
},
{
"start": "2026-07-14T02:00:00.000Z",
"end": "2026-07-14T03:00:00.000Z",
"price_eur_mwh": 127.65,
"price_ct_kwh": "12.77"
},
{
"start": "2026-07-14T03:00:00.000Z",
"end": "2026-07-14T04:00:00.000Z",
"price_eur_mwh": 135.02,
"price_ct_kwh": "13.50"
},
{
"start": "2026-07-14T04:00:00.000Z",
"end": "2026-07-14T05:00:00.000Z",
"price_eur_mwh": 145.81,
"price_ct_kwh": "14.58"
},
{
"start": "2026-07-14T05:00:00.000Z",
"end": "2026-07-14T06:00:00.000Z",
"price_eur_mwh": 152.27,
"price_ct_kwh": "15.23"
},
{
"start": "2026-07-14T06:00:00.000Z",
"end": "2026-07-14T07:00:00.000Z",
"price_eur_mwh": 135.67,
"price_ct_kwh": "13.57"
},
{
"start": "2026-07-14T07:00:00.000Z",
"end": "2026-07-14T08:00:00.000Z",
"price_eur_mwh": 121.89,
"price_ct_kwh": "12.19"
},
{
"start": "2026-07-14T08:00:00.000Z",
"end": "2026-07-14T09:00:00.000Z",
"price_eur_mwh": 107.48,
"price_ct_kwh": "10.75"
},
{
"start": "2026-07-14T09:00:00.000Z",
"end": "2026-07-14T10:00:00.000Z",
"price_eur_mwh": 91.69,
"price_ct_kwh": "9.17"
},
{
"start": "2026-07-14T10:00:00.000Z",
"end": "2026-07-14T11:00:00.000Z",
"price_eur_mwh": 64.04,
"price_ct_kwh": "6.40"
},
{
"start": "2026-07-14T11:00:00.000Z",
"end": "2026-07-14T12:00:00.000Z",
"price_eur_mwh": 51.83,
"price_ct_kwh": "5.18"
},
{
"start": "2026-07-14T12:00:00.000Z",
"end": "2026-07-14T13:00:00.000Z",
"price_eur_mwh": 57.73,
"price_ct_kwh": "5.77"
},
{
"start": "2026-07-14T13:00:00.000Z",
"end": "2026-07-14T14:00:00.000Z",
"price_eur_mwh": 70,
"price_ct_kwh": "7.00"
},
{
"start": "2026-07-14T14:00:00.000Z",
"end": "2026-07-14T15:00:00.000Z",
"price_eur_mwh": 93.26,
"price_ct_kwh": "9.33"
},
{
"start": "2026-07-14T15:00:00.000Z",
"end": "2026-07-14T16:00:00.000Z",
"price_eur_mwh": 117.44,
"price_ct_kwh": "11.74"
},
{
"start": "2026-07-14T16:00:00.000Z",
"end": "2026-07-14T17:00:00.000Z",
"price_eur_mwh": 138.3,
"price_ct_kwh": "13.83"
},
{
"start": "2026-07-14T17:00:00.000Z",
"end": "2026-07-14T18:00:00.000Z",
"price_eur_mwh": 159.01,
"price_ct_kwh": "15.90"
},
{
"start": "2026-07-14T18:00:00.000Z",
"end": "2026-07-14T19:00:00.000Z",
"price_eur_mwh": 182.48,
"price_ct_kwh": "18.25"
},
{
"start": "2026-07-14T19:00:00.000Z",
"end": "2026-07-14T20:00:00.000Z",
"price_eur_mwh": 175.32,
"price_ct_kwh": "17.53"
},
{
"start": "2026-07-14T20:00:00.000Z",
"end": "2026-07-14T21:00:00.000Z",
"price_eur_mwh": 168.77,
"price_ct_kwh": "16.88"
},
{
"start": "2026-07-14T21:00:00.000Z",
"end": "2026-07-14T22:00:00.000Z",
"price_eur_mwh": 151.52,
"price_ct_kwh": "15.15"
}
]
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /carbon/now |
CO2-Intensität jetzt Aktuelle CO2-Intensität des deutschen Strommix. |
0.001 USDC | {
"carbon_intensity_g_co2_kwh": 310,
"classification": "medium"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /grid/load |
Netzlast Grid-monitoring and dispatch agents buy this endpoint to obtain the latest German system load from SMARD. |
0.001 USDC | {
"source": "SMARD Bundesnetzagentur",
"timestamp": "2026-07-13T21:45:00.000Z",
"consumption_mwh": 12349,
"grid": "DE"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /renewable/share |
Erneuerbare Anteil Carbon-aware and ESG agents buy this endpoint to measure the current renewable share and generation mix in Germany. |
0.001 USDC | {
"source": "Fraunhofer ISE",
"timestamp": "2026-07-13T22:51:15.822Z",
"total_mw": 35323,
"renewable_mw": 17468.8,
"fossil_mw": 15203.4,
"renewable_share_pct": "49.5",
"breakdown_mw": {
"Hydro Run-of-River": 1243,
"Biomass": 3592.5,
"Fossil brown coal / lignite": 7877.1,
"Fossil hard coal": 2815.4,
"Fossil oil": 377.6,
"Fossil coal-derived gas": 462.5,
"Fossil gas": 4133.3,
"Geothermal": 13.4,
"Hydro water reservoir": 39.2,
"Hydro pumped storage": 550.5,
"Others": 136.6,
"Waste": 1448.6,
"Wind offshore": 3560.3,
"Wind onshore": 9073,
"Solar": 0
}
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /flexibility/window |
Flexibility Window EV, heat-pump, and flexible-load agents buy this endpoint to identify the cheapest upcoming operating hours. |
0.01 USDC | {
"source": "EPEX + Corrently Analyse",
"timestamp": "2026-07-13T22:51:13.311Z",
"recommendation": "Beste Lade-/Heiz-Zeitfenster der nächsten 24h basierend auf Spotpreisen und GrünstromIndex",
"cheapest_hours": [
{
"hour": 13,
"start": "2026-07-14T11:00:00.000Z",
"price_ct_kwh": 5.18,
"score": -5.18
},
{
"hour": 14,
"start": "2026-07-14T12:00:00.000Z",
"price_ct_kwh": 5.77,
"score": -5.77
},
{
"hour": 12,
"start": "2026-07-14T10:00:00.000Z",
"price_ct_kwh": 6.4,
"score": -6.4
}
],
"most_expensive_hours": [
{
"hour": 20,
"start": "2026-07-14T18:00:00.000Z",
"price_ct_kwh": 18.25,
"score": -18.25
},
{
"hour": 21,
"start": "2026-07-14T19:00:00.000Z",
"price_ct_kwh": 17.53,
"score": -17.53
},
{
"hour": 22,
"start": "2026-07-14T20:00:00.000Z",
"price_ct_kwh": 16.88,
"score": -16.88
}
],
"hint": "Niedrige Preise korrelieren oft mit hoher EE-Einspeisung"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /signals/buy-sell |
Buy/Sell Signal Trading bots buy this endpoint to receive a multi-factor buy/sell signal with RSI, Z-score, trend, and confidence. |
0.02 USDC | {
"source": "Multi-Faktor Energy Trading Signal v2",
"timestamp": "2026-07-13T22:51:20.694Z",
"signal": "SELL",
"action": "Verkauf empfohlen",
"confidence_score": 0.75,
"composite_score": -2,
"indicators": {
"rsi_24h": "67.2",
"z_score_7d": "1.60",
"trend_ct_kwh": "-0.97",
"ee_pressure": 0,
"fossil_share_pct": "42.0"
},
"factors": {
"rsi": "neutral",
"mean_reversion": "above_avg"
},
"market_data": {
"current_price_ct_kwh": 13.96,
"day_avg_ct_kwh": "12.40",
"day_min_ct_kwh": "5.18",
"day_max_ct_kwh": "18.25",
"week_avg_ct_kwh": "10.58"
},
"valid_until": "2026-07-13T23:00:00.000Z",
"methodology": "RSI + Z-Score (7d) + Trend + EE-Druck + Fossil-Anteil. Backtest verfügbar auf /signals/track-record"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /bundle/trading |
Trading Bundle Energy-trading agents buy this endpoint to receive an eight-source market bundle with key metrics, insights, and raw evidence. |
0.02 USDC | {
"bundle": "trading-premium",
"summary": "Live-Analyse \"Assess DE-LU day-ahead trading conditions for the next 24 hours.\" basierend auf 8 aktiven Datenquellen. 13 Kennzahlen extrahiert. 5 Markteinblicke. Datenstand: 2026-07-13T22:51.",
"key_metrics": [
{
"label": "EPEX Spotpreis aktuell",
"value": "13.96",
"unit": "ct/kWh"
},
{
"label": "EPEX Tagesmittel",
"value": "12.40",
"unit": "ct/kWh"
},
{
"label": "Erneuerbarer Anteil (Gen, live)",
"value": "51.2",
"unit": "%"
},
{
"label": "EE-Anteil Last (live)",
"value": "39.7",
"unit": "%"
},
{
"label": "Fossiler Anteil (live)",
"value": "48.5",
"unit": "%"
},
{
"label": "Stromerzeugung gesamt (live)",
"value": "35323",
"unit": "MW"
},
{
"label": "Wind onshore live",
"value": "9073",
"unit": "MW"
},
{
"label": "Wind offshore live",
"value": "3560.3",
"unit": "MW"
},
{
"label": "Stromverbrauch DE (15min)",
"value": "12349",
"unit": "MWh"
},
{
"label": "GruenstromIndex 24h-Schnitt",
"value": "49",
"unit": "%"
},
{
"label": "Solarstrahlung 24h-Schnitt",
"value": "306",
"unit": "W/m2"
},
{
"label": "Windgeschwindigkeit 24h-Schnitt",
"value": "6.5",
"unit": "m/s"
},
{
"label": "ENTSO-E Day-Ahead Mittel",
"value": "121.85",
"unit": "EUR/MWh"
}
],
"market_insights": [
"Hohe Tagesvolatilitaet: 131 EUR/MWh Spread. Arbitrage-Potential 13.1 ct/kWh fuer Batteriespeicher (>40% RTE benoetigt).",
"Billigste Stunde heute: 13:00 (5.18 ct/kWh). Teuerste: 20:00 (18.25 ct/kWh).",
"Hohe CO2-Intensitaet (419 g/kWh). Hoher fossiler Anteil im Netz - Verbrauch nach Moeglichkeit verschieben.",
"Hoher Strom-Import: 6537.7 MW. Indikator fuer Netzungleichgewicht.",
"Geringer Stromverbrauch (12349 MWh). Niedrige Last - typisch Nacht/Wochenende."
],
"regulatory_context": [],
"data_sources_used": [
"awattar_de",
"fraunhofer_ise",
"open_meteo",
"smard",
"corrently",
"co2_intensity",
"entsoe_day_ahead",
"entsoe_generation"
],
"raw_data": {
"awattar_de": {
"source": "aWATTar EPEX DE/AT",
"count": 24,
"prices": [
{
"start": "2026-07-13T22:00:00.000Z",
"end": "2026-07-13T23:00:00.000Z",
"price_eur_mwh": 139.64,
"price_ct_kwh": "13.96"
},
{
"start": "2026-07-13T23:00:00.000Z",
"end": "2026-07-14T00:00:00.000Z",
"price_eur_mwh": 133.89,
"price_ct_kwh": "13.39"
},
{
"start": "2026-07-14T00:00:00.000Z",
"end": "2026-07-14T01:00:00.000Z",
"price_eur_mwh": 127.35,
"price_ct_kwh": "12.73"
},
{
"start": "2026-07-14T01:00:00.000Z",
"end": "2026-07-14T02:00:00.000Z",
"price_eur_mwh": 127.22,
"price_ct_kwh": "12.72"
},
{
"start": "2026-07-14T02:00:00.000Z",
"end": "2026-07-14T03:00:00.000Z",
"price_eur_mwh": 127.65,
"price_ct_kwh": "12.77"
},
{
"start": "2026-07-14T03:00:00.000Z",
"end": "2026-07-14T04:00:00.000Z",
"price_eur_mwh": 135.02,
"price_ct_kwh": "13.50"
},
{
"start": "2026-07-14T04:00:00.000Z",
"end": "2026-07-14T05:00:00.000Z",
"price_eur_mwh": 145.81,
"price_ct_kwh": "14.58"
},
{
"start": "2026-07-14T05:00:00.000Z",
"end": "2026-07-14T06:00:00.000Z",
"price_eur_mwh": 152.27,
"price_ct_kwh": "15.23"
},
{
"start": "2026-07-14T06:00:00.000Z",
"end": "2026-07-14T07:00:00.000Z",
"price_eur_mwh": 135.67,
"price_ct_kwh": "13.57"
},
{
"start": "2026-07-14T07:00:00.000Z",
"end": "2026-07-14T08:00:00.000Z",
"price_eur_mwh": 121.89,
"price_ct_kwh": "12.19"
},
{
"start": "2026-07-14T08:00:00.000Z",
"end": "2026-07-14T09:00:00.000Z",
"price_eur_mwh": 107.48,
"price_ct_kwh": "10.75"
},
{
"start": "2026-07-14T09:00:00.000Z",
"end": "2026-07-14T10:00:00.000Z",
"price_eur_mwh": 91.69,
"price_ct_kwh": "9.17"
},
{
"start": "2026-07-14T10:00:00.000Z",
"end": "2026-07-14T11:00:00.000Z",
"price_eur_mwh": 64.04,
"price_ct_kwh": "6.40"
},
{
"start": "2026-07-14T11:00:00.000Z",
"end": "2026-07-14T12:00:00.000Z",
"price_eur_mwh": 51.83,
"price_ct_kwh": "5.18"
},
{
"start": "2026-07-14T12:00:00.000Z",
"end": "2026-07-14T13:00:00.000Z",
"price_eur_mwh": 57.73,
"price_ct_kwh": "5.77"
},
{
"start": "2026-07-14T13:00:00.000Z",
"end": "2026-07-14T14:00:00.000Z",
"price_eur_mwh": 70,
"price_ct_kwh": "7.00"
},
{
"start": "2026-07-14T14:00:00.000Z",
"end": "2026-07-14T15:00:00.000Z",
"price_eur_mwh": 93.26,
"price_ct_kwh": "9.33"
},
{
"start": "2026-07-14T15:00:00.000Z",
"end": "2026-07-14T16:00:00.000Z",
"price_eur_mwh": 117.44,
"price_ct_kwh": "11.74"
},
{
"start": "2026-07-14T16:00:00.000Z",
"end": "2026-07-14T17:00:00.000Z",
"price_eur_mwh": 138.3,
"price_ct_kwh": "13.83"
},
{
"start": "2026-07-14T17:00:00.000Z",
"end": "2026-07-14T18:00:00.000Z",
"price_eur_mwh": 159.01,
"price_ct_kwh": "15.90"
},
{
"start": "2026-07-14T18:00:00.000Z",
"end": "2026-07-14T19:00:00.000Z",
"price_eur_mwh": 182.48,
"price_ct_kwh": "18.25"
},
{
"start": "2026-07-14T19:00:00.000Z",
"end": "2026-07-14T20:00:00.000Z",
"price_eur_mwh": 175.32,
"price_ct_kwh": "17.53"
},
{
"start": "2026-07-14T20:00:00.000Z",
"end": "2026-07-14T21:00:00.000Z",
"price_eur_mwh": 168.77,
"price_ct_kwh": "16.88"
},
{
"start": "2026-07-14T21:00:00.000Z",
"end": "2026-07-14T22:00:00.000Z",
"price_eur_mwh": 151.52,
"price_ct_kwh": "15.15"
}
]
},
"fraunhofer_ise": {
"source": "Fraunhofer ISE energy-charts",
"timestamp": "2026-07-13T22:51:18.343Z",
"production_mw": {
"Hydro Run-of-River": 1243,
"Biomass": 3592.5,
"Fossil brown coal / lignite": 7877.1,
"Fossil hard coal": 2815.4,
"Fossil oil": 377.6,
"Fossil coal-derived gas": 462.5,
"Fossil gas": 4133.3,
"Geothermal": 13.4,
"Hydro water reservoir": 39.2,
"Hydro pumped storage": 550.5,
"Others": 136.6,
"Waste": 1448.6,
"Wind offshore": 3560.3,
"Wind onshore": 9073,
"Solar": 0
},
"raw_all_metrics": {
"Hydro pumped storage consumption": -25.7,
"Cross border electricity trading": 6537.7,
"Hydro Run-of-River": 1243,
"Biomass": 3592.5,
"Fossil brown coal / lignite": 7877.1,
"Fossil hard coal": 2815.4,
"Fossil oil": 377.6,
"Fossil coal-derived gas": 462.5,
"Fossil gas": 4133.3,
"Geothermal": 13.4,
"Hydro water reservoir": 39.2,
"Hydro pumped storage": 550.5,
"Others": 136.6,
"Waste": 1448.6,
"Wind offshore": 3560.3,
"Wind onshore": 9073,
"Solar": 0,
"Load": 45823.4,
"Residual load": 33190.1,
"Renewable share of load": 39.7,
"Renewable share of generation": 52.4
},
"summary": {
"total_generation_mw": 35323,
"renewable_mw": 18072,
"fossil_mw": 17115,
"nuclear_mw": 0,
"renewable_share_pct": 51.2,
"fossil_share_pct": 48.5,
"load_mw": 45823.4,
"cross_border_mw": 6537.7,
"renewable_share_of_load_pct": 39.7,
"renewable_share_of_generation_pct": 52.4
},
"types_count": 15
},
"open_meteo": {
"source": "Open-Meteo",
"location": {
"lat": 51.5,
"lon": 10.5,
"label": "DE Mitte"
},
"hours": 24,
"avg_cloudcover_pct": 36,
"avg_windspeed_ms": "6.5",
"avg_solar_radiation": 306,
"next_hour": {
"time": "2026-07-13T00:00",
"temp_c": 17.4,
"wind_ms": 4.5,
"cloud_pct": 0
}
},
"smard": {
"source": "SMARD Bundesnetzagentur",
"latest_consumption_mwh": 12349,
"timestamp": "2026-07-13T21:45:00.000Z",
"series_count": 96
},
"corrently": {
"source": "Corrently GruenstromIndex",
"zip": "10115",
"avg_eevalue_pct": 49,
"next_3h": [
{
"time": "2026-07-13T20:00:00.000Z",
"gruenstrom_pct": 18,
"co2_g_kwh": 55
},
{
"time": "2026-07-13T21:00:00.000Z",
"gruenstrom_pct": 17,
"co2_g_kwh": 55
},
{
"time": "2026-07-13T22:00:00.000Z",
"gruenstrom_pct": 26,
"co2_g_kwh": 50
}
]
},
"co2_intensity": {
"source": "Die Netzhandwerker CO2-Calc (Fraunhofer + UBA Emissionsfaktoren)",
"zone": "DE",
"timestamp": "2026-07-13T22:51:18.400Z",
"carbon_intensity_g_co2_kwh": 419,
"method": "mix_weighted_generation_only",
"total_generation_mw": 35323,
"renewable_share_pct": 51.2
},
"entsoe_day_ahead": {
"source": "ENTSO-E Transparency",
"zone": "DE-LU",
"day_ahead_prices_eur_mwh": [
143.9,
138.1,
135.81,
131.84,
136.38,
135.53,
134.67,
133.82,
133.01,
132.15,
131.3,
130.45,
129.99,
128.9,
132.8,
129.51,
128.71,
131.36,
134,
136.65,
132.68,
138.43,
144.17,
143.4
],
"count": 384,
"avg_eur_mwh": "121.85",
"min_eur_mwh": "22.85",
"max_eur_mwh": "228.10"
},
"entsoe_generation": {
"source": "ENTSO-E Generation",
"zone": "DE",
"period_hours": 6,
"raw_size_kb": 54
}
},
"confidence_score": 0.95,
"timestamp": "2026-07-13T22:51:19.511Z"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /history/prices |
Historische Preise Stundendaten für EPEX-Preise nach Periode. |
0.05 USDC | {
"period": "last-7d",
"rows": []
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /history/prices/stats |
Preisstatistik Statistik für eine historische Preisperiode. |
0.01 USDC | {
"avg_eur_mwh": 92.1,
"min_eur_mwh": 40.2,
"max_eur_mwh": 160
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /subscribe/price-alert |
Price Alert Subscription Webhook-Subscription für Strompreis-Thresholds. |
0.10 USDC | {
"success": true,
"subscription": "price-alert"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /subscribe/co2-low |
CO2 Low Subscription Webhook-Subscription für niedrige CO2-Intensität. |
0.10 USDC | {
"success": true,
"subscription": "co2-low"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /optimizer/cheapest-window |
Cheapest Window Flexible-load agents buy this endpoint to schedule a contiguous operating window at the lowest average electricity price. |
0.005 USDC | {
"source": "Cheapest Window Optimizer",
"timestamp": "2026-07-13T22:51:21.971Z",
"duration_hours": 2,
"best_start": "2026-07-14T11:00:00.000Z",
"best_end": "2026-07-14T13:00:00.000Z",
"avg_price_ct_kwh": "5.475",
"day_avg_ct_kwh": "12.397",
"savings_vs_avg_pct": "55.8",
"action": "charge_during_window",
"window": [
{
"start": "2026-07-14T11:00:00.000Z",
"end": "2026-07-14T12:00:00.000Z",
"price": 5.18
},
{
"start": "2026-07-14T12:00:00.000Z",
"end": "2026-07-14T13:00:00.000Z",
"price": 5.77
}
]
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /price/negative-forecast |
Negative Price Forecast Stunden mit negativen Strompreisen in den nächsten 24 Stunden. |
0.005 USDC | {
"negative_hours": [],
"count": 0
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /grid/cross-border-flows |
Cross-Border Flows Free latest ENTSO-E physical cross-border flows around Germany, including outbound, inbound and net export MW. Used as model feature net_export_mw. |
frei | {
"ok": true,
"available": true,
"net_export_mw": 4200,
"outbound": [
{
"from_area": "DE",
"to_area": "AT",
"flow_mw": 900
}
]
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /stream/alerts |
SSE Alert Stream Free Server-Sent Events preview for negative-price alerts. Heartbeat every 30s, prediction check every 5 minutes, max 50 concurrent connections. Later subscription product. |
frei | "event: alert\\ndata: {\"type\":\"warning\",\"probability\":0.62}\\n\\n" |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| GET | /predict/negative-price |
Negative Price Signal Index Free poll endpoint. Reveals whether a fresh actionable signal exists, its probability band and expiry, but withholds exact probability, action, time window and expected value until paid POST. |
frei | {
"signal_id": "negprice_2026-07-12T13",
"actionable": true,
"probability_band": "high",
"changed_since_last_signal": true,
"generated_at": "2026-07-12T12:00:00.000Z",
"expires_at": "2026-07-12T13:00:00.000Z",
"paid_endpoint": "POST /predict/negative-price",
"price_usdc": "0.001"
} |
400: Invalid request 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /predict/negative-price |
Buy Current Negative Price Signal Battery, EV, and trading agents buy this endpoint to receive calibrated 2h/4h/6h negative-price probabilities, reviewed threshold profiles and an executable response policy. |
0.001 USDC | {
"ok": true,
"product": "Optimization Signals",
"endpoint": "/predict/negative-price",
"query": {},
"result": {
"ok": true,
"prediction": {
"negative_price_in_2h": false,
"probability": 0.0012,
"risk_level": "low",
"action": "no_action_normal_operation",
"target_window": {
"start": "2026-07-14T00:00:00+00:00",
"end": "2026-07-14T01:00:00+00:00",
"lead_hours": 2
},
"predicted_price_eur_mwh": 110.53,
"expected_saving_eur_mwh": 29.11
},
"horizons": [
{
"lead_hours": 2,
"negative_price": false,
"probability": 0.0012,
"risk_level": "low",
"predicted_price_eur_mwh": 110.53,
"expected_saving_eur_mwh": 29.11,
"target_window": {
"start": "2026-07-14T00:00:00+00:00",
"end": "2026-07-14T01:00:00+00:00",
"lead_hours": 2
},
"bot_value_score": 5.82
},
{
"lead_hours": 4,
"negative_price": false,
"probability": 0.0716,
"risk_level": "low",
"predicted_price_eur_mwh": 87.74,
"expected_saving_eur_mwh": 51.9,
"target_window": {
"start": "2026-07-14T02:00:00+00:00",
"end": "2026-07-14T03:00:00+00:00",
"lead_hours": 4
},
"bot_value_score": 10.38
},
{
"lead_hours": 6,
"negative_price": false,
"probability": 0.1101,
"risk_level": "low",
"predicted_price_eur_mwh": 85.34,
"expected_saving_eur_mwh": 54.3,
"target_window": {
"start": "2026-07-14T04:00:00+00:00",
"end": "2026-07-14T05:00:00+00:00",
"lead_hours": 6
},
"bot_value_score": 10.86
}
],
"decision_engine": {
"schema_version": "negprice_bot_decision_v1",
"recommended_action": "no_action_normal_operation",
"should_act": false,
"policy": "below_action_threshold",
"selected_horizon_hours": 6,
"target_window": {
"start": "2026-07-14T04:00:00+00:00",
"end": "2026-07-14T05:00:00+00:00",
"lead_hours": 6
},
"probability": 0.1101,
"expected_target_price_eur_mwh": 85.34,
"expected_saving_eur_mwh": 54.3,
"bot_value_score": 10.86,
"minimum_probability_threshold": 0.25,
"confidence": 0.25,
"valid_until": "2026-07-13T23:00:00+00:00",
"retry_after_seconds": 900,
"do_not_act_reason": "Probability/value threshold not met for paid bot execution.",
"buyer_work_removed": [
"multi_horizon_model_call",
"probability_threshold_selection",
"target_price_estimation",
"economic_value_scoring",
"risk_flag_packaging"
]
},
"historical_analogies": [
{
"date": "2026-06-01T22:00:00+00:00",
"similarity": 0.9999,
"price_trajectory_next_6h": [
131.72,
125.09,
120.92,
120.63,
124.22,
131.03
],
"negative_duration_h": 0,
"min_price_eur_mwh": 120.63
},
{
"date": "2026-06-22T22:00:00+00:00",
"similarity": 0.9996,
"price_trajectory_next_6h": [
139.13,
135.01,
135.82,
138.06,
142.3,
164.22
],
"negative_duration_h": 0,
"min_price_eur_mwh": 135.01
},
{
"date": "2026-05-18T22:00:00+00:00",
"similarity": 0.9996,
"price_trajectory_next_6h": [
141.94,
139.32,
138.54,
141.57,
146.92,
164.46
],
"negative_duration_h": 0,
"min_price_eur_mwh": 138.54
},
{
"date": "2026-05-25T22:00:00+00:00",
"similarity": 0.9994,
"price_trajectory_next_6h": [
125.65,
120.65,
121.18,
119.53,
128.91,
143.11
],
"negative_duration_h": 0,
"min_price_eur_mwh": 119.53
},
{
"date": "2026-03-23T22:00:00+00:00",
"similarity": 0.9989,
"price_trajectory_next_6h": [
141.06,
124.32,
110,
101.64,
100.38,
100.97
],
"negative_duration_h": 0,
"min_price_eur_mwh": 100.38
},
{
"date": "2026-06-15T22:00:00+00:00",
"similarity": 0.9981,
"price_trajectory_next_6h": [
117.32,
113.78,
110.99,
111.24,
115.12,
127.99
],
"negative_duration_h": 0,
"min_price_eur_mwh": 110.99
},
{
"date": "2026-06-29T22:00:00+00:00",
"similarity": 0.9977,
"price_trajectory_next_6h": [
145.37,
140.21,
140.72,
141.37,
151.51,
186.66
],
"negative_duration_h": 0,
"min_price_eur_mwh": 140.21
},
{
"date": "2026-06-08T22:00:00+00:00",
"similarity": 0.9958,
"price_trajectory_next_6h": [
122.16,
115.5,
111.22,
110.48,
115.84,
130.15
],
"negative_duration_h": 0,
"min_price_eur_mwh": 110.48
}
],
"current_market": {
"price_eur_mwh": 139.64,
"price_ct_kwh": 13.96,
"timestamp": "2026-07-13T22:00:00+00:00",
"trend_1h_eur_mwh": -4.43,
"trend_2h_eur_mwh": -19.43,
"trend_4h_eur_mwh": -43.36,
"rolling_avg_4h_eur_mwh": 163.74,
"is_weekend": false,
"is_solar_peak": false,
"net_export_mw": -793.28
},
"weather_input": {
"wind_now_ms": 4.7,
"wind_2h_ms": 8.4,
"wind_4h_ms": 10.2,
"solar_now_wm2": 0,
"solar_2h_wm2": 0,
"solar_4h_wm2": 0,
"cloud_now_pct": 100,
"renewable_pressure": 0.313,
"renewable_pressure_2h": 0.56
},
"crossborder_input": {
"net_export_mw": -793.28,
"available_for_latest_hour": true,
"source": "ENTSO-E physical cross-border flows"
},
"smard_input": {
"available_for_latest_hour": false,
"total_renewable_generation_mw": 0,
"total_load_mw": 0,
"residual_load_mw": 0,
"gas_generation_mw": 0,
"coal_generation_mw": 0,
"nuclear_generation_mw": 0
},
"gas_input": {
"available": true,
"gas_price_eur_mwh": 48.655,
"source": "Yahoo Finance TTF=F via gas_prices_daily"
},
"drivers": [
"rapid_price_decline",
"large_expected_price_spread"
],
"risk_flags": [
"low_confidence"
],
"bot_contract": {
"product": "negative_price_decision_intelligence",
"output_type": "ready_to_execute_decision",
"stable_fields": [
"prediction",
"horizons",
"decision_engine",
"historical_analogies",
"current_market",
"weather_input",
"crossborder_input",
"drivers",
"risk_flags",
"model"
],
"why_paid": "The payload packages calibrated probabilities, target-price regression, economic threshold policy and bot-ready action fields."
},
"model": {
"name": "NegPrice-Decision-Intelligence-v4",
"version": "4.1",
"features": 47,
"weather_enhanced": true,
"multi_horizon": true,
"supported_horizons_hours": [
2,
4,
6
],
"calibration": "isotonic probability calibration on final TimeSeriesSplit",
"precision": 0.8115,
"recall": 0.8564,
"f1": 0.8333,
"accuracy": 0.9791,
"price_mae_eur_mwh": 13.36,
"depth_mae_eur_mwh_in_sample": 8.17,
"duration_mae_h_in_sample": 0.1,
"validation": "5-fold expanding-window time-series cross-validation",
"training_period": {
"end": "2026-07-03",
"start": "2023-07-02"
},
"trained_at": "2026-07-05T09:28:11.657666+00:00"
},
"schema_version": "negprice_signal_v1",
"expires_at": "2026-07-13T23:00:00+00:00",
"freshness": {
"fresh": true,
"generated_at": "2026-07-13T22:00:00+00:00",
"expires_at": "2026-07-13T23:00:00+00:00",
"age_seconds": 3069,
"seconds_until_expiry": 531,
"stale_reason": null
}
},
"recommendation": "no_action_normal_operation",
"price_paid": "0.001",
"currency": "USDC",
"network": "eip155:8453",
"payment": {
"required": true,
"paid": true,
"verified": true,
"price_usd": 0.001,
"amount_usdc": 0.001,
"asset": "USDC",
"network": "eip155:8453",
"network_id": "eip155:8453",
"chain_id": 8453,
"protocol": "x402",
"recipient": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E"
},
"meta": {
"source": "NegPrice Decision Intelligence v4.1",
"source_type": "ml_decision_intelligence",
"updated_at": "2026-07-13T22:51:09.080Z",
"generated_at": "2026-07-13T22:51:09.081Z",
"cache_ttl_seconds": 60,
"confidence": 0.25,
"version": "2.0.0",
"limitations": []
}
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /summary/today |
Daily Summary Token-effiziente Tageszusammenfassung mit konkreter Handlungsempfehlung. |
0.01 USDC | {
"market_sentiment": "neutral",
"recommendation": "shift flexible load to cheapest window"
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /region |
Regionale Energiedaten Preis, CO2, Grünstrom und Wetter für eine PLZ-Region. |
0.005 USDC | {
"plz": "48599",
"region": "DE",
"data": {}
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
| POST | /events/grid |
Grid Events Ereignisfeed für Dunkelflaute, Sturm, negative Preise und Rekorde. |
0.005 USDC | {
"events": [
{
"type": "negative_price",
"severity": "low"
}
]
} |
400: Invalid request 402: Payment Required 404: Not found 429: Rate limit exceeded 500: Internal server error |
Discovery
OpenAPI · llms.txt · llms-full.txt · MCP well-known · Agent manifest
Contact / Operator
Operator: Die Netzhandwerker, Daniel Wesseling. Contact: [email protected].