Machine-readable Minute Solar
Minute Solar for AI agents and integrations
How to compose, validate and hand over Minute Solar configurator deep links, and how to read our compatibility verdicts. Free compatibility verdicts with named evidence, honest unknowns, and no account or key required.
Machine description: /openapi.json · site index for LLMs: /llms.txt
What this is
Contract version 1. The promise is additive-only: slugs and grammar stay stable, new steps and fields may be added, old links always resolve. A renamed slug is a breaking change on our side and ships with a redirect.
Minute Solar is a UK solar equipment knowledge base and configurator. The canonical origin for every URL on this page is https://www.minute-solar.co.uk — link that one. Everything documented here is free to use, requires no account and no key, and is read-only: you can request our evaluation of a configuration, but nothing you send becomes a Minute Solar claim.
You can hand a user a link to a finished configuration — the end of the configurator, not the start. A complete link lands on the summary with our own server-side evaluation of exactly what the link names.
The /design URL grammar
A design link is /design followed by step/value pairs in any order. Values are the catalogue's own names, slugged: lower-case, punctuation folded to single hyphens (SMILE-B3-PLUS becomes smile-b3-plus). Matching is forgiving — casing, hyphenation and ordering survive — and honest: a value that matches nothing available is dropped and reported, never guessed, and everything after a dropped pair is dropped too, because continuing would invent a different system.
Pairs are applied in step order regardless of written order. A link that answers every applicable step lands on the summary; a partial link lands on the first unanswered step with everything before it filled in. A bare step slug with no value names that step's screen.
Every /design page carries a machine-readable meta tag, ms:design-path, holding the full long-form path for the configuration it shows — fetch any /design page and you can recover the whole configuration from that one tag.
/design/brand/solax/phase/1p/system/hybrid partial: lands mid-flow, brand, phase and type applied /design/.../battery/t58/summary complete: lands on the summary with our evaluation
The /design/schematic URL grammar
A schematic link opens the editable four-view schematic (Electrical, Internet, Metering, Combined) with the equipment it names, in any browser, without sign-in. It is /design/schematic/v1 followed by sections identified by delimiter words, in any order: PINV (PV inverter), BINV (battery or hybrid inverter), EVHC (EV charger present), ASHP (heat pump present) and SITE (shared settings). A product is three parts: a three-letter manufacturer code, a four-character model code naming one product family, and a three-digit rating in tenths of a kW or kWh (050 is 5.0, 037 is 3.68 or 3.7, 999 is 99.9). Codes are permanent and never recycled; they come from the registry, not from a brand name, so do not guess them: ask create_schematic_link with product ids, or copy a link from the schematic itself.
Optional tokens inside a section: BAT/{manufacturer}/{model}/{rating kWh}/QTY-n (a battery, as a child of BINV); CPL-AC or CPL-DC (checked against the inverter type, never assumed); one grid measurement, CT-GRID (the CT supplied in the box with the inverter; a link never states its rating, because CTs are not interchangeable between brands, so CT-GRID-100 is refused), MTR-GRID-{GENERIC|DDSU666|SDM230} or MTR-SHUNT-{…}, which is one physical measurement however many sections name it; CT-PV on a separate PV inverter; SITE/PH-1 or PH-3 and SITE/NET-WIFI or NET-LAN. A hybrid named under both PINV and BINV is drawn once. Everything else is rejected by name: unknown words, duplicate or contradictory sections, a rating the family does not make, a manufacturer code that is not allocated. Nothing is dropped silently and nothing is guessed. Any spelling or order redirects once to the canonical address, which lists sections PINV, BINV, EVHC, ASHP, SITE with upper-case codes; ?view= selects the opening tab.
A configuration link reconstructs exactly the fields the grammar carries and documented defaults for the rest; it is not a saved design, carries no names, and shows proposed equipment with preliminary checks, never an approved or certified installation. Account-saved schematics and maintained PDF shares are separate, private features and their codes never appear in these links.
/design/schematic/v1/BINV/SLX/ZQW4/050/CPL-DC/CT-GRID/EVHC/SITE/PH-1/NET-LAN hybrid 5.0 kW, grid CT, EV charger, single phase /design/schematic/v1/evhc/binv/slx/zqw4/050 same system, any order and case → redirects to the canonical address /design/schematic/v1/PINV/SLX/KH20/060/CT-PV/BINV/FOX/R3RV/030/CPL-AC/BAT/FOX/4C37/052/QTY-2?view=combined
The workflow: compose, validate, hand over
Compose a path from the grammar, then validate it before giving it to a person: GET /api/design/resolve?path=<your path> returns the canonical link, what resolved, what was dropped and why, the concrete products named (with stable product ids and their knowledge-page URLs), and one verdict statement per inverter–partner pair. Hand the user the canonical link the endpoint returns, not the path you composed.
Relay verdict statements whole. Each is one self-qualifying sentence with the evidence tier and any conditions inside it, deliberately: a verdict separated from its evidence tier becomes a different, stronger claim than the one we made.
GET /api/design/resolve?path=/design/brand/solax/phase/1p/system/hybrid
Endpoints
Public REST reads use GET; product Markdown uses text/markdown. MCP uses POST /api/mcp. No account or API key is needed. The OpenAPI 3.1 description is at /openapi.json. Public machine requests share a budget of 120 per minute and 1,200 per hour. Additional per-minute limits are 60 for MCP and product search, 30 for compatible-product search and design resolution, 90 for pair/evidence reads, and 120 for product details. A 429 or a temporary 503 includes Retry-After; wait before retrying. User-Agent names do not grant access or a larger quota.
/api/design/resolve?path=… resolve a design path: canonical link, products, ids, verdicts
/api/verdict?a=…&b=… pairwise verdict by product id (ids come from resolve)
/api/products?q=…&limit=20 search products; optional brand/category/cursor
/api/products/{id} product JSON; IDs come from search or resolve
/api/products/{id}/markdown citable product facts in Markdown
/api/products/{id}/compatible compatible products; optional category/limit/cursor
/api/compatibility?a=…&b=… shared pairwise compatibility decision
/api/compatibility/evidence?a=…&b=… provenance and public evidence
/openapi.json the machine-readable REST descriptionConnect over MCP
Connect a Streamable HTTP MCP client to /api/mcp. The server implements protocol 2026-07-28 (server/discover with per-request protocol metadata) and stateless legacy initialize clients, including 2025-11-25. Use the client SDK for protocol metadata and routing headers. The endpoint does not hold a session or an idle event stream; GET and DELETE return 405.
Six tools. Five expose the same public service as the REST API: search_products, get_product_details, find_compatible_products, get_compatibility and get_compatibility_evidence. Product tools use productId; pair tools use productAId and productBId. Search uses query, brand and category. Search and compatible-product tools accept limit (1–50, default 20) and cursor from the preceding result. The sixth, create_schematic_link, takes product ids from those tools (pvInverterId, batteryInverterId, batteryId, batteryCount), optional coupling, gridMeter with gridMeterConnection (leave it out for the CT supplied with the inverter; there is no CT rating argument), pvCt, evChargerPresent, heatPumpPresent, phase, network and view, and returns the canonical schematic URL from the same codec the website uses, the resolved products and the evidence policy. It is read-only and stores nothing. When ok is false it lists unresolvedInputs with codes and returns no URL: relay the reasons, do not construct a link by hand.
Send one operation per POST with Content-Type application/json and Accept application/json, text/event-stream. Bodies are limited to 16 KiB, a public tool result to 256 KiB, and there are at most eight active tool calls per instance. Batch requests are refused. An unknown product or failed lookup returns a tool error; it never fabricates a verdict. Keep evidence conditions and tiers attached to the answer.
These tools read public equipment knowledge and compute public links. They do not access accounts, customer records, saved designs or electrical calculators, and cannot publish claims or approve a pairing: a schematic link is proposed equipment with preliminary checks, and its evidencePolicy field says so. Product facts include canonical URLs and stable fact anchors for citations. Catalogue caches refresh hourly and are invalidated when reviewed knowledge is published.
MCP URL: https://www.minute-solar.co.uk/api/mcp
search_products {"query":"battery","limit":5}
get_product_details {"productId":"ID_FROM_SEARCH"}
get_compatibility {"productAId":"INVERTER_ID","productBId":"BATTERY_ID"}
create_schematic_link {"batteryInverterId":"INVERTER_ID","batteryId":"BATTERY_ID","batteryCount":2,"evChargerPresent":true,"view":"combined"}How to read our verdicts
Every verdict carries a credibility level in its provenance field, strongest first: G manufacturer-guaranteed (a contractual guarantee is on record), M manufacturer-approved (the manufacturer has confirmed the exact pairing in writing), E expert, and A automatic. A is the default: a stored record that has not been reviewed, or a manufacturer compatibility group, reads A, and A is never manufacturer approval. UNKNOWN means we hold no stored record and no group membership for the pair — it is not incompatible, and it is never approval. Where the configurator offered a pairing, the manufacturer's published compatibility group that allowed it is named as the basis.
Do not state or imply manufacturer backing for any pair unless the level is G (manufacturer-guaranteed) or M (manufacturer-approved). Where Minute Solar holds no manufacturer confirmation for a pairing, we can put the exact configuration to the manufacturer and record the answer.
Crawling and fetching
Our robots.txt names the major AI crawlers and user-triggered fetchers explicitly and allows them — training, search and on-demand tiers alike — with the same disallow list as everyone else. Knowledge pages (/brands, /products, /compatibility, /compare) are server-rendered with the facts in the first response; no JavaScript is needed to read them.
Start at /llms.txt for the curated index of what this site is and where its real content lives; use /sitemap.xml to enumerate every indexable page. Knowledge pages carry JSON-LD and per-page canonicals. Cite the page you fetched; every material fact on it names its evidence.
/llms.txt the curated LLM-sized index /sitemap.xml every indexable page
The steps
Some steps only apply to some system types (a PV-only system has no battery steps); the resolver reports a pair that does not apply rather than failing. The two count steps (panels, battery-count) take numbers.
| URL slug | Step | Answers |
|---|---|---|
| brand | Brand | Who makes the inverter? |
| phase | Phase | Single or three phase? |
| system | System type | Battery, hybrid or PV? |
| series | Inverter series | Which model family? |
| power | Power rating | How many kW? |
| panel-brand | Panel brand | Who makes the panels? |
| panel-series | Panel model | Which module family? |
| panel | Wattage | Panel power output |
| panels | Panel count | How many modules? |
| gateway | Gateway / backup | Backup and transfer-switch options for your setup |
| battery | Battery model | Only batteries compatible with your chosen inverter |
| parallel-box | Parallel box | A parallel box, if your battery stack needs one |
| battery-count | Battery count | We check this against your inverter's battery limits |
| meter | Power meters | CT / power meters for monitoring and export control |