Charts & guides
SolarSENS MCP serves its data through tools. The assistant discovers Plants and reads bounded results through the tools in the tool reference.
It does not expose arbitrary files, database tables, object storage, or backend resources to the assistant.
Plant chart UI resource
These resources are served when the Worker sets MCP_APPS to "true", as
production does. When the flag is off, the server does not list them and adds no
UI metadata to any tool.
| URI | MIME type | Linked from |
|---|---|---|
ui://solarsens/plant-chart/v2-<build-id>.html | text/html;profile=mcp-app | get_plant_chart, through _meta.ui.resourceUri |
ui://solarsens/plant-chart/v1.html | text/html;profile=mcp-app | Compatibility alias for older cached tool metadata only |
The build ID is the first 12 hexadecimal characters of the SHA-256 of the
self-contained generated HTML, including its JavaScript and CSS. It is computed
by pnpm apps:build, not per request. Any changed bundle gets a new resource URI,
so the host cannot reuse a previous bundle under the new cache key. The v1 alias
serves the corrected renderer when re-read; it cannot replace an already cached
or already open iframe.
After deploying a widget update, refresh the SolarSENS connector's tool metadata and make a new chart request. Reopening an old result alone may still show its cached widget. Published hosts may require their normal metadata-review process before adopting a changed resource URI.
A host that supports MCP Apps loads the resource and sends it the
get_plant_chart result. The page draws the Plant chart with hover values,
zoom, and a Plant-local time axis. It shows values as SolarSENS returned them.
A missing timestamp or a JSON null appears as a gap, and the string "0" is
shown as zero. When the server reports that coverage was not checked, the page
shows a "Coverage not checked" badge.
The diagnostic footer shows the widget version, bundle build ID, and the
request's correlation UUID. Parser failures include a bounded reason such as
INVALID_DIMENSIONS, INVALID_ROW_SHAPE, or NO_READABLE_TIMESTAMPS.
TOOL_ERROR and HOST_CONNECTION_FAILED identify different failure layers.
Missing or invalid IDs are shown as unavailable; raw chart rows, credentials,
and arbitrary error objects are never included in the diagnostic footer.
The page is self-contained. It declares an empty content security policy (no
network or external domains), loads no external script, and calls no tools. Hosts that do not support MCP Apps still receive
the normal get_plant_chart tool result.
Review performance
The skill is served when the Worker sets MCP_SKILLS to "true", as
production does. The server serves
skill://solarsens/plant-performance-review/SKILL.md through the Skills
extension (skills/list, skills/get, and resources/read). It is the same
daily PR triage procedure as the optional prompt in
Check templates. Clients that do not implement the
Skills extension see it as an ordinary read-only resource. Production enables
it.
Review strings
skill://solarsens/string-fault-review/SKILL.md is served with MCP_SKILLS
set to "true" when all required tools are served. It uses the same procedure
as the string-fault-review prompt and the
Review strings page.
Check your plants
skill://solarsens/daily-portfolio-check/SKILL.md uses the same procedure as
its prompt and guide. It requires MCP_SKILLS
set to "true" and all required tools served.
Review alarms
skill://solarsens/alarm-triage/SKILL.md is available after the alarm tools are
served, with MCP_SKILLS set to "true". It uses the same procedure as its
prompt and guide.
skills/list returns all available skills in one page, with no cursor.
skills/get accepts each listed skill URI. Each entry gives the SHA-256 digest and
UTF-8 size of the file that resources/read returns. Hosts without the Skills
extension can read the files as resources.