Overview
Solar Potential works by analyzing the data provided and returning the estimated annual energy production of a PV system. It uses various sources to determine the estimated annual energy production of a PV system and returns the data.
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as SolarPotentialSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "SolarPotentialSkill",
"arguments": {
"lat": "37.7749",
"lon": "-122.4194"
}
}You do not name the tool yourself; the model picks it. Asking about 37.7749 in the terms this skill covers is enough for it to reach for SolarPotentialSkill on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
latRequired | number | The latitude of the location range -90–90 |
lonRequired | number | The longitude of the location range -180–180 |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"coordinates": {
"latitude": 37.7749,
"longitude": -122.4194
},
"usableHours": {
"avgDailyUsableSunlightHours": 12.19,
"yearlyUsableSunlightHoursRaw": 4448,
"adjustedYearlyUsableSunlightHours": 1557
},
"bestDirection": "South",
"cloudFactor": 0.35,
"disclaimer": "This is a rough estimate based on coordinates and general climate patterns. For precise solar potential, consider local weather patterns, obstructions, and professional assessments."
}
}Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
coordinates | object | {…} | |
coordinates.latitude | number | 37.7749 | Latitude coordinate of the location analyzed |
coordinates.longitude | number | -122.4194 | Longitude coordinate of the location analyzed |
usableHours | object | {…} | |
usableHours.avgDailyUsableSunlightHours | number | 12.19 | Average daily usable sunlight hours for the location |
usableHours.yearlyUsableSunlightHoursRawPremium | number | 4448 | Total yearly usable sunlight hours without adjustments |
usableHours.adjustedYearlyUsableSunlightHoursPremium | number | 1557 | Adjusted yearly usable sunlight hours accounting for clouds |
bestDirection | string | South | Optimal solar panel direction (e.g., South, Southwest) |
cloudFactorPremium | number | 0.35 | Cloud cover factor between 0 and 1 reducing solar potential |
disclaimer | string | This is a rough estimate based on coordinates and general climate patterns. For precise solar potential, consider local weather patterns, obstructions, and professional assessments. | Important disclaimer about estimate accuracy and limitations |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 2 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Other ways to use Solar Potential Skill
Set up Solar Potential Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in Weather: