API access
Your AI client reaches PVGIS Solar Resource & PV Yield through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.
Where it came from
Freshness and coverage
What this source cannot tell you
- ⚠ Anything outside Worldwide point queries, with the radiation database selected by location and A point over open sea is refused by PVGIS rather than modelled. A request past that edge comes back empty rather than approximated.
- ⚠ Anything from before 2005.
- ⚠ Anything PVGIS — Photovoltaic Geographical Information System (European Commission, Joint Research Centre) does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
- ⚠ PVGIS is © European Union. Reproduction is authorised provided the source is acknowledged, so republished results must credit PVGIS / EU JRC.
- ⚠ Values are modelled from satellite and reanalysis data. They are not measured on-site irradiance and carry year-to-year variability, which PVGIS reports as a standard deviation.
- ⚠ Yield figures assume the system parameters supplied. They do not account for shading beyond terrain horizon, soiling, curtailment, or degradation.
- ⚠ The upstream limit is 30 calls per second per IP; results are cached for a day and an overloaded service answers 529 rather than returning data.
- ⚠ Hourly time series and typical-meteorological-year downloads are deliberately not exposed: at roughly 1 MB per location they do not fit a tool response.
Methods (4)
A method is one call your agent can make against this source.
calculatePvPerformance
readModel annual and monthly output of a solar array at a point, size, tilt, and azimuth.
What you must providelatlonRecords returnedpv-system-yieldHow to get more resultsnoneUnitspeakPower: kWp · systemLoss: percent · slope: degrees from horizontal · azimuth: degrees, 0 = south · E_d: kWh/day · E_y: kWh/year · E_m: kWh/month · H(i)_d: kWh/m2/day · H(i)_m: kWh/m2/month · H(i)_y: kWh/m2/year · SD_m: kWh/month · SD_y: kWh/year · l_aoi: percent · l_spec: percent · l_tg: percent · l_total: percentCoordinate systemEPSG:4326FreshnessStatic (source-level)Input schema
{ "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "peakpower": { "type": "number", "minimum": 0.001, "maximum": 100000000 }, "loss": { "type": "number", "minimum": 0, "maximum": 100 }, "angle": { "type": "number", "minimum": 0, "maximum": 90 }, "aspect": { "type": "number", "minimum": -180, "maximum": 180 }, "optimalangles": { "type": "boolean" }, "mountingplace": { "type": "string", "enum": [ "free", "building" ] }, "pvtechchoice": { "type": "string", "enum": [ "crystSi", "CIS", "CdTe", "Unknown" ] } }, "required": [ "lat", "lon" ], "additionalProperties": false }Monthly rows plus an annual summary; defaults: 1 kWp, 14% loss.
getMonthlyRadiation
readReturn long-term monthly solar irradiation at a point, flat or on a tilted plane.
What you must providelatlonRecords returnedmonthly-irradiationHow to get more resultsnoneUnitsslope: degrees from horizontal · azimuth: degrees, 0 = south · H(h)_m: kWh/m2/month · H(i)_m: kWh/m2/month · H(s)_m: kWh/m2/month · Hd(h)_m: kWh/m2/month · Hd(i)_m: kWh/m2/month · SD_m: kWh/m2/monthCoordinate systemEPSG:4326FreshnessStatic (source-level)Input schema
{ "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "angle": { "type": "number", "minimum": 0, "maximum": 90 }, "aspect": { "type": "number", "minimum": -180, "maximum": 180 }, "startyear": { "type": "integer", "minimum": 2005, "maximum": 2030 }, "endyear": { "type": "integer", "minimum": 2005, "maximum": 2030 } }, "required": [ "lat", "lon" ], "additionalProperties": false }One row per year/month; omit angle for horizontal irradiation.
getDailyRadiationProfile
readReturn the average hourly irradiance curve for one month at a point.
What you must providelatlonRecords returneddaily-irradiance-profileHow to get more resultsnoneUnitsslope: degrees from horizontal · azimuth: degrees, 0 = south · G(i): W/m2 · Gb(i): W/m2 · Gd(i): W/m2 · Gr(i): W/m2 · H_sun: degrees · T2m: degrees Celsius · WS10m: m/sCoordinate systemEPSG:4326FreshnessStatic (source-level)Input schema
{ "type": "object", "properties": { "lat": { "type": "number", "minimum": -90, "maximum": 90 }, "lon": { "type": "number", "minimum": -180, "maximum": 180 }, "month": { "type": "integer", "minimum": 0, "maximum": 12 }, "angle": { "type": "number", "minimum": 0, "maximum": 90 }, "aspect": { "type": "number", "minimum": -180, "maximum": 180 }, "localtime": { "type": "boolean" } }, "required": [ "lat", "lon" ], "additionalProperties": false }Hourly rows; month 1-12, or 0 for all; localtime=false returns UTC.
getServiceInfo
readReturn endpoints, coverage, angle conventions, and what this model does not answer.
FreshnessStatic (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }
Where this source is used
- Land research
Parcel records, ground conditions, and what reaches the property line, for raw and rural land.
- Data center siting
Power, water, transport, airspace, and hazard screening for a site before anyone signs anything.
- How much sun does this site get?
