Soljo Solar (Switzerland)
Server Details
Independent rooftop solar first estimate for Switzerland: yield, median cost, subsidy, with sources
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a distinct purpose: geocode_address resolves coordinates, list_cities enumerates municipalities, and solar_first_estimate produces a solar estimate. There is mild overlap since geocode_address and solar_first_estimate both take an address, but the outputs are clearly different enough to distinguish.
All names use snake_case consistently. geocode_address and list_cities follow a verb_noun pattern, but solar_first_estimate is noun-oriented, a minor deviation rather than a convention break.
Three tools is on the lean side but fits a narrowly scoped solar-estimation service: one for geocoding, one for browsing covered municipalities, one for the estimate. Nothing feels redundant.
The surface covers the core flow of finding an address, browsing supported cities, and getting a first estimate. However, the real deliverables (shading, self-consumption, savings, payback) and the full report are only reachable via an external fullReport.url rather than tools, leaving notable gaps.
Available Tools
3 toolsgeocode_addressGeocode addressARead-onlyIdempotentInspect
Resolve a Swiss or German street address to latitude, longitude, postcode and country (swisstopo address register, OpenStreetMap fallback).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Full postal address, e.g. 'Bahnhofstrasse 1, 8001 Zürich'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and idempotentHint, so the safety profile is covered. The description adds real context beyond that: the primary data source (swisstopo address register) with an OpenStreetMap fallback, and the geographic coverage limit that implies non-Swiss/German addresses are unsupported. It does not disclose failure behavior or result accuracy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the action and scope and ends with the return fields and sources. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the returned fields and the source hierarchy, and annotations cover the safety profile. It stops short of describing what happens for ambiguous or out-of-region addresses, which an agent invoking an open-world geocoder would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required parameter already documented with constraints (3-200 chars) and an example in the schema. The description adds only the implicit geographic constraint on the address value, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Resolve'), a specific resource (Swiss or German street address), and the exact outputs (latitude, longitude, postcode, country), plus the underlying data sources. This is unambiguous and clearly distinguishable from siblings like list_cities and solar_first_estimate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The geographic scope ('Swiss or German') implicitly tells the agent when this tool applies and when it may fail, but there is no explicit when-to-use statement or named alternative for out-of-scope geocoding needs. Usage is inferable from the single obvious purpose rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesList Soljo city pagesARead-onlyIdempotentInspect
List Swiss cities and municipalities (about 200, German-speaking) with a Soljo page showing local electricity price (ElCom), solar yield (PVGIS), feed-in tariff, subsidy programmes and an example calculation, each with sources. Filter by canton or name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Part of the municipality name, e.g. 'Uster'. | |
| canton | No | Canton abbreviation, e.g. 'ZH', 'BE', 'AG'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds useful non-annotation context: the corpus size (~200), the German-speaking scope, the data sources behind each entry (ElCom, PVGIS, subsidy programmes) and the presence of an example calculation. It does not describe pagination or result ordering, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that leads with the core action and resource before enumerating the payload contents. It is dense but every clause carries information; only the trailing filter sentence is somewhat tacked on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description helpfully enumerates what each entry contains (price, yield, tariff, subsidies, calculation, sources), which substitutes for missing return-value documentation. Pagination and result ordering remain undocumented but are minor for a ~200-item corpus.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema with format examples ('Uster', 'ZH'). The description's 'Filter by canton or name' only restates what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Swiss cities and municipalities') and immediately scopes it with the qualifier 'with a Soljo page', so an agent knows exactly what is returned. This is clearly distinguishable from geocode_address (address resolution) and solar_first_estimate (calculation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Filter by canton or name' implies how to narrow results, but there is no explicit when-to-use guidance and no mention of the sibling tools as alternatives for address lookup or estimation. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solar_first_estimateSolar first estimate (Switzerland, Germany)ARead-onlyIdempotentInspect
First estimate for a rooftop solar system at a Swiss or German address: annual yield (PVGIS), and for Switzerland the median turnkey cost (federal price study 2025, incl. VAT), the Pronovo one-time subsidy (EIV 2026) and the statutory minimum feed-in tariff. Does NOT include measured roof shading, self-consumption, savings or payback; for those, point the user to fullReport.url (the Soljo report). Always cite the returned sources and say it is a rough estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| kwp | No | System size in kWp. A typical single-family home has 8 to 15 kWp. | |
| lat | No | Latitude, only if no address is given. | |
| lon | No | Longitude, only if no address is given. | |
| tilt | No | Roof/panel tilt in degrees. Flat roofs: use 15. | |
| address | No | Street address in Switzerland or Germany, e.g. 'Bahnhofstrasse 1, 8001 Zürich'. Preferred over coordinates. | |
| azimuth | No | Orientation: 0 = south, -90 = east, 90 = west, 180 = north. | |
| country | No | Country when only coordinates are given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), so the description correctly focuses on behavior beyond that: the upstream data sources (PVGIS, federal price study 2025, Pronovo EIV 2026), the CH-vs-DE asymmetry in what is returned, and the instruction to cite sources and label it a rough estimate. It does not cover error/edge behavior, which keeps it just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense, front-loaded sentence carries the core purpose and scope, followed by the exclusions and the alternative. Every clause earns its place, though the single sentence is long enough that structure is slightly strained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fills the gap by naming the returned values and pointing to fullReport.url for the omitted metrics. Combined with the source-citation instruction, an agent has everything needed to call and report the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters already carry units, ranges, defaults and examples (e.g. azimuth conventions, tilt for flat roofs). The description adds only the implicit address/country context and nothing about parameter syntax, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('First estimate for a rooftop solar system') with explicit geographic scope (Swiss or German address) and enumerates what the estimate contains (annual yield, turnkey cost, subsidy, feed-in tariff). Clearly distinguishable from the unrelated siblings geocode_address and list_cities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it and, critically, what it does NOT cover (measured shading, self-consumption, savings, payback), naming the alternative path (fullReport.url / the Soljo report) for those needs. This is exactly the when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
list_cities2 fields changed- added
Input schema / properties / cantonAdded value: +{ + "description": "Canton abbreviation, e.g. 'ZH', 'BE', 'AG'.", + "maxLength": 2, + "minLength": 2, + "type": "string" +} - added
Input schema / properties / nameAdded value: +{ + "description": "Part of the municipality name, e.g. 'Uster'.", + "maxLength": 60, + "minLength": 2, + "type": "string" +}
3 tool updates
- First observed
geocode_address - First observed
list_cities - First observed
solar_first_estimate
Related MCP Connectors
Open registry of 1.14M+ rooftop-solar detections across France, queryable by natural language.
Indicative commercial rooftop solar assessments for Australian buildings, from open map data.
Rooftop solar potential, RGE installer search and quote requests. France only, no API key.
- smart-meOAuthcom.smart-me
Your building's energy in real time: smart-me meters, load profiles, EV charging, ZEV billing
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Swiss electricity data from three official sources — production mix, consumption forecast, storage-lake fill, consumer price index, tariffs per municipality, and dataset discovery. Zero authentication.12136 PyPIMIT
- AlicenseNot gradedqualityAmaintenanceDeepPVMapper is an open source, crowdsourced verified AI map of rooftop solar systems. The MCP serves as a endpoint to allow queries to the database (1.1M+ systems) in natural language. This work is based on my former PhD work.37MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to access structured, location-based Swiss energy infrastructure data, including power plants, wind turbines, solar roof potential, and Energiestadt labels, via public APIs without authentication.10MIT
- FlicenseNot gradedqualityCmaintenanceEnables solar energy feasibility analysis and ROI calculation for Indian users, including irradiance lookup, capacity estimation, subsidy calculation, and environmental impact assessment.-
Glama MCP Gateway
Add one secure layer between your agents and this server.