API & MCP
Everything a person can do on Ledgerly Rooftop Solar Yield, a program or AI agent can do with the same inputs and get the identical result.
HTTP API
POST https://ledgerlysolaryield.usefulweb.app/api/v1/calculate– run Ledgerly Rooftop Solar YieldGET https://ledgerlysolaryield.usefulweb.app/api/v1/tool– inputs, output schema, examples- OpenAPI 3.1: /openapi.json · /openapi.yaml
- Errors:
application/problem+json;422includes per-fielderrors.
Ledgerly Rooftop Solar Yield
Estimates the yield of a rooftop PV system month by month from its place, tilt, orientation, size and shading: offline from DWD climate normals with a documented solar model, or with PVGIS satellite data from the EU Joint Research Centre — always with the offline estimate beside it. Includes an average day per month for battery planning. Part of Ledgerly’s Solar & Heat.
| Field | Type | Default | Description |
|---|---|---|---|
latitude | number | 52.52 | Latitude (°, south negative) |
longitude | number | 13.405 | Longitude (°, west negative) |
peakPowerKw | number | 8 | Peak power (kWp) |
tilt | number | 35 | Tilt (° from horizontal) |
azimuth | number | 0 | Orientation (° from south: east −90, west 90). PVGIS convention: 0 = south, −90 = east, 90 = west, 180 = north. |
layout | select (single, east-west) | "single" | Panel layout |
systemLossPercent | number | 14 | System losses (%). Cables, inverter, dirt and mismatch; 14 % is the PVGIS default. |
source | select (offline, pvgis) | "offline" | Data source |
climate | select (auto, sunshine, irradiation) | "auto" | Climate data for the offline estimate |
monthlySunshineHours | text | — | Monthly sunshine hours (12 values, Jan–Dec) |
monthlyIrradiation | text | — | Monthly irradiation on the horizontal (kWh/m², 12 values) |
monthlyTemperatures | text | — | Monthly mean temperatures (°C, 12 values; empty = station data) |
elevation | number | — | Height of the site above sea level (m; empty = like the station) |
horizon | text | — | Horizon heights in degrees, equally spaced from north clockwise. Same order as PVGIS: the first value is north, then clockwise, e.g. 8 values for N, NE, E, SE, S, SW, W, NW. |
obstacles | text | — | Obstacles: bearing, width, height, distance (separate with ;). Like Hearth’s Sun Windows: compass bearing from north (°), angular width (°), height above the panels (m) and distance (m), e.g. 160, 30, 8, 12. |
utcOffset | number | 1 | Time zone (hours from UTC, standard time). Only shifts the hourly profile from solar time to your clock; daylight saving time is ignored. |
Example request
8 kWp in Berlin, south, 35° (offline)
curl -X POST https://ledgerlysolaryield.usefulweb.app/api/v1/calculate -H 'content-type: application/json' -d '{"latitude":52.52,"longitude":13.405,"peakPowerKw":8,"tilt":35,"azimuth":0}'
Every result contains
inputs (normalised, defaults applied), summary, result (validated against the published schema), units, assumptions, sources, warnings, computedAt and links.
MCP (Model Context Protocol)
- Streamable HTTP endpoint:
https://ledgerlysolaryield.usefulweb.app/mcp– protocol revisions 2026-07-28 (stateless) and 2025-11-25 / 2025-06-18 / 2025-03-26 (initialize handshake). - Tools:
ledgerly_solar_yield - Local stdio connector:
node src/mcp-stdio.ts --tool=ledgerly-solar-yield
{
"mcpServers": {
"ledgerly-solar-yield": { "type": "http", "url": "https://ledgerlysolaryield.usefulweb.app/mcp" }
}
}