Ampworth
Server Details
UK solar PV and heat pump calculators, with guides, on one server. Follows the MCS methods. No key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 15 tools
Tools generally target distinct tasks (system sizing, output, shading, running costs, noise). The main overlap is between 'solar_pv_system_size' and 'solar_pv_output', but the size tool explicitly states when to use the output calculator, which mitigates the confusion. Heat pump tools (size, running_cost, noise, hot_water, radiator_flow, room_heat_loss) are individual method steps and can be mixed up, but their descriptions clarify the required inputs and outputs.
The naming is mixed: some tools use noun_noun (heat_pump_noise, solar_pv_output), others use verb_noun (get_document, search_documents, list_calculators, connection_route). This is readable but not a single predictable pattern. The names are still descriptive and domain-specific.
With 15 tools, the count is well within the ideal 3-15 range. Each tool addresses a specific calculation or document operation relevant to the domain, so none feels extraneous.
The tool set covers key MCS calculations for solar PV and heat pumps, plus document search and retrieval. Minor gaps include lack of a dedicated tool for battery sizing or detailed financial modeling beyond the self-consumption value estimate, but these are workable through existing tools and the system size tool.
Available Tools
15 toolsconnection_routeNetwork connection routeARead-onlyIdempotentInspect
Work out which ENA connection procedure a domestic installation of solar panels, batteries or both falls under: connect first and notify the distribution network operator within 28 days, or apply and wait for approval before anything is connected.
The rules are the ENA's engineering recommendations, not MCS documents: EREC G98 for small installations, EREC G99 for everything larger, and EREC G100 for export limitation. Every test is in amps per phase at a nominal 230 V, and it applies to the premises as a whole, so list EVERY inverter that can export, existing ones included. A battery counts as generation even if it only ever charges from the panels.
The figure that counts is each inverter's registered capacity: its AC rating, or a lower limit the manufacturer has fixed. It is NOT the panels' kWp. A 4.4 kWp array on a 3.68 kW inverter is a 3.68 kW installation. Where an inverter has been capped below its hardware rating, give the hardware rating as 'designCapacityKw', because G99 tests that separately.
The routes are: G98 when the total is 16 A per phase or less (3.68 kW single phase, 11.04 kW three phase); G99 SGI-1, also connect and notify, when the total is within 16 A but an inverter built for up to 32 A has been capped; G99 SGI-2 and SGI-3, fast track applications answered within 10 working days, which allow larger totals held back by a type-tested export limiter; and the standard G99 application for anything else. An export limiter NEVER brings an installation under G98.
IMPORTANT: this says which procedure applies, not what the operator will decide. Approval depends on the local network, which only the operator can assess. Say so whenever you report a result.
Method from EREC G98 / G99. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| phases | No | The supply: 1 for single phase, which is almost every British house, or 3 for three phase. Defaults to 1. | |
| devices | Yes | Every inverter at the premises that can export: solar, battery and hybrid, existing ones included. A battery counts even if it only charges from the panels. At least one is required. | |
| exportLimitKw | No | The export limit a fully type-tested G100 scheme would hold the premises to, in kW per phase, where one is proposed. Optional. An export limit never brings an installation under G98, but it decides which G99 route applies. | |
| otherInstallationsNearby | No | True when the same installer has fitted, or plans to fit, generation at other premises within 500 metres, or on the same street, within 28 days either side. That turns a G98 notification into an application. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| route | Yes | |
| method | Yes | |
| phases | Yes | Registered capacity on each phase, in kW and in amps at the nominal 230 V the recommendations use. |
| devices | Yes | |
| totalKw | Yes | Registered capacity of every device added together. |
| verdict | Yes | |
| warning | Yes | Which route applies is arithmetic; what the network operator decides is not. Always present. |
| g98LimitKw | Yes | 16 A per phase at 230 V: 3.68 kW on a single phase supply, 11.04 kW on three phase. |
| references | Yes | |
| worstPhaseA | Yes | Current on the most heavily loaded phase. This is the figure the thresholds are tested against. |
| alternatives | No | Changes that would put the installation on an easier route, and what each would cost. |
| exportLimitA | No | The proposed export limit converted to amps per phase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, openWorldHint=false), the description discloses important behavioral limits: it says which procedure applies but not what the operator will decide, and instructs the agent to repeat that caveat whenever reporting a result. It also discloses the underlying method (EREC G98/G99) and that all tests are in amps per phase at 230 V across the whole premises.
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?
Long, but front-loaded with the outcome (which procedure applies) before the rules, and nearly every sentence carries a decision-relevant fact. Minor redundancy: the 'export limiter never brings an installation under G98' point appears in the main prose and again in the schema description.
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?
An output schema exists, so return values need no explanation. For a read-only rule-evaluation calculator the description supplies everything an agent needs to call it correctly: the capacity semantics, the premises-wide scope, the phase handling context, the neighbour-proximity trigger, and the mandatory caveat about operator discretion.
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 coverage is 100%, so the schema carries the basics. The description still adds real semantic value: registered capacity is the inverter's AC rating, not panel kWp; designCapacityKw matters only for inverters capped below hardware rating because G99 tests it separately; a battery counts as generation even if it only charges from panels; every exporting inverter including existing ones must be listed. It adds meaning beyond the schema for several fields.
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 precise verb and outcome: determining which ENA connection procedure (connect-and-notify vs apply-and-wait) a domestic solar/battery installation falls under. It names the governing documents (EREC G98/G99/G100) and the exact decision rules, so an agent can distinguish it cleanly from the solar_pv_* sizing and output calculators.
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 description explains the domain logic thoroughly and frames the tool as a method-following calculator 'for understanding a system and checking a quotation', which implies when it applies. However, it never names a sibling tool or states when another calculator should be used instead, and gives no explicit exclusions, so 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.
get_documentRead one document in fullARead-onlyIdempotentInspect
Fetch the full text of one guide, article or set of questions by its slug, as Markdown, not HTML. Slugs come from search_documents or list_documents.
The answer carries the MCS documents the text draws on, and the ids of any calculators on this site that do the arithmetic the text describes. Where the document is a set of questions, each question and answer comes back separately.
Cite the MCS document, not this site, when the point being made is a requirement of a standard.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The document's slug, from search_documents or list_documents. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The page, which is the address to cite. |
| kind | Yes | 'guide', 'article' or 'faq'. |
| slug | Yes | |
| tags | No | |
| text | No | The document as Markdown: prose, with headings, tables, lists and absolute links. For a set of questions this is every question and answer run together; they also come back separately in questions. |
| level | No | Articles only: beginner, intermediate or advanced. |
| title | Yes | |
| apiUrl | Yes | The same document as JSON. |
| related | No | Documents worth reading next. |
| sources | No | The MCS documents this draws on. Cite these, not this site, when the point is a requirement of a standard. |
| summary | Yes | |
| updated | Yes | The date of the last change, as YYYY-MM-DD. |
| category | Yes | The subject key: 'basics', 'heat-pumps', 'solar-pv', 'batteries', 'standards' or 'paperwork'. |
| featured | No | |
| headings | No | The in-page sections. |
| questions | No | For a set of questions, each question with its answer as Markdown. |
| levelLabel | No | |
| calculators | No | Ids of calculators on this site that do the arithmetic described here. |
| perspective | No | Guides only: who the guide is written for. |
| categoryLabel | Yes | |
| readingMinutes | Yes | |
| perspectiveLabel | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive behavior, so the safety profile is covered. The description adds real behavioral value beyond them: the output is Markdown not HTML, the response carries MCS source documents and calculator ids, and question-sets return Q&A separately.
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?
Front-loads the core action in the first sentence, then layers return-shape and citation guidance. Every sentence carries information, though the final citation instruction is advisory rather than operational and slightly dilutes focus.
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 single-parameter read tool with an output schema and full safety annotations, the description covers what is needed: what it returns, in what format, and how to obtain the required slug. Nothing an agent needs to invoke it correctly is missing.
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 coverage is 100% and the parameter description already says 'from search_documents or list_documents. Required.' The description repeats the slug provenance but adds no syntax, format, or edge-case detail beyond the schema, so 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 and resource: fetch the full text of one guide/article/question-set by slug. It distinguishes itself from siblings by noting slugs come from search_documents or list_documents, so an agent can tell retrieval-by-id apart from listing/searching.
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 description makes the workflow explicit by telling the agent the slug must come from search_documents or list_documents, which effectively routes discovery through the siblings. It stops short of stating when not to use it (e.g., when only metadata is needed), so it is clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heat_pump_noiseHeat pump noise assessmentARead-onlyIdempotentInspect
Calculate the sound pressure level an air source heat pump produces at an assessment position, and whether it meets the 37 dB(A) permitted development noise limit, using the method in MCS 020.
The formula is Lp = Lw + 10 log(Q / 4.pi.r^2) - Ab.
Lw is the A-weighted sound POWER level of the unit from its product fiche, energy label or the MCS product database. This is not the sound pressure level, which is a smaller number that already has a distance built into it; confusing the two produces an answer that is wrong by about twenty decibels. The figure for low noise mode must not be used.
Q is the directivity factor, from the count of reflecting surfaces within one metre of the unit that extend at least a metre past it in two or more directions. The ground counts; vegetation does not. One surface gives Q=2, two gives Q=4, three gives Q=8. More than three cannot meet MCS 020 at all.
r is the straight-line distance in metres to the assessment position, which is a window or door of a habitable room in a NEIGHBOURING property, at any floor. Every affected position must be checked separately, and the nearest is not always the worst.
Ab is the barrier attenuation. Fences with gaps, and vegetation of any kind, count as no barrier.
Where several units serve one position, list them all and they are combined logarithmically.
Method from MCS 020. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| units | Yes | The heat pump or heat pumps being assessed, each with its own distance and barrier to this assessment position. At least one is required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | Yes | The permitted development noise limit, 37.0 dB(A). |
| notes | Yes | |
| units | Yes | |
| method | Yes | |
| verdict | Yes | |
| headroom | Yes | Decibels below the limit. Negative when the limit is exceeded. |
| remedies | No | What would bring a failing position within the limit. |
| compliant | Yes | True when the level is at or below the limit. |
| references | Yes | |
| soundPressureLevel | Yes | Combined A-weighted sound pressure level at the assessment position, in dB(A), rounded to one decimal place as MCS 020 requires. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine domain behaviour: input provenance (product fiche, energy label, MCS product database), the prohibition on using low-noise-mode figures, the sound-power vs sound-pressure trap, and the logarithmic combination of multiple units.
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?
Front-loaded and logically ordered (purpose, formula, each variable, caveats), but a substantial share of the text restates the input-schema descriptions almost verbatim, which is space that does not earn its place given 100% schema coverage.
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 an output schema present, return values need not be explained. Inputs, units, the governing standard, the pass/fail threshold, multi-unit handling, and the professional-liability disclaimer are all covered, so an agent has everything needed to invoke this 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 coverage is 100% and the description's parameter prose largely mirrors the schema (Lw, Q, r, Ab definitions). It still adds conceptual meaning the schema lacks: the directivity mapping (Q=2/4/8 for one/two/three surfaces), the note that more than three surfaces cannot meet MCS 020 at all, and the warning that the nearest position is not always the worst.
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?
The opening sentence gives a precise verb and resource (calculate sound pressure level of an air source heat pump at an assessment position) plus the regulatory test applied (37 dB(A) permitted development limit, MCS 020). This clearly separates it from siblings such as heat_pump_size and heat_pump_running_cost, which cover entirely different calculations.
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?
Usage context is explicit: 'for understanding a system and checking a quotation', with the closing caveat that installed work still needs a design and site survey. It also states the assessment position definition (habitable room window/door of a neighbouring property) and that each affected position must be checked separately. It does not, however, name or route to any alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heat_pump_running_costHeat pump running costARead-onlyIdempotentInspect
Compare what a household spends heating on its current fuel with what the same heat would cost from a heat pump.
The heat demand is worked out from the household's own metered fuel use, not from a model, because a year of bills describes a particular house far better than any estimate of it. Supply the annual fuel use in the fuel's own unit (kWh for gas and electricity, litres for oil and LPG, kilograms for coal), its price per unit in pounds, and the seasonal efficiency of the existing appliance, which defaults to a realistic figure for that fuel instead of the one on the badge.
The comparison turns on one ratio. A heat pump costs less to run whenever its seasonal coefficient of performance beats the ratio between the price of a unit of electricity and the price of a unit of heat from the current fuel. The result reports that break-even figure explicitly.
SCOP must be the figure at the flow temperature the system is actually designed for. The same machine can return 4.2 at 35 degrees and 3.1 at 55, and quoting the first for a system designed at the second is the commonest way of overstating a saving.
This is a running cost comparison. It says nothing about the capital cost or any grant.
Method from MCS 007. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| fuel | No | The fuel being replaced: 'mains_gas', 'oil', 'lpg', 'electricity' or 'coal'. Defaults to 'mains_gas'. | |
| scop | Yes | Seasonal coefficient of performance of the proposed heat pump: the units of heat it delivers per unit of electricity, averaged over a year at the design flow temperature. Required. | |
| annualFuelUse | Yes | How much of that fuel the house uses in a year, in the fuel's own unit: kWh for gas and electricity, litres for oil and LPG, kilograms for coal. Take it from a year of bills. Required. | |
| fuelPricePerUnit | Yes | Price of one unit of that fuel, in pounds. Required. | |
| nonHeatingFraction | No | Share of that fuel used for something other than heating and hot water, such as a gas hob, as a decimal. A hob is usually 0.03 to 0.05. Defaults to 0. | |
| applianceEfficiency | No | Seasonal efficiency of the existing appliance, as a decimal. Defaults to the typical figure for the fuel. | |
| electricityPricePerKwh | Yes | Price of a unit of electricity, in pounds. Required. | |
| fuelStandingChargePerDay | No | Daily standing charge for that fuel in pounds, if it has one. A house that removes its gas boiler can usually stop paying this. | |
| electricityStandingChargePerDay | No | Daily electricity standing charge in pounds. It is paid either way, so it only changes the answer if the tariff changes with the heat pump. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fuel | Yes | |
| scop | Yes | |
| notes | Yes | |
| method | Yes | |
| verdict | Yes | |
| references | Yes | |
| breakEvenScop | Yes | The seasonal efficiency at which the heat pump costs exactly what the current system costs. Below this it costs more. |
| annualDifference | Yes | Positive when the heat pump costs less. |
| costPerKwhHeatNow | Yes | What a unit of delivered heat costs today, in pounds. |
| currentAnnualCost | Yes | |
| percentDifference | Yes | |
| heatPumpAnnualCost | Yes | |
| annualHeatDemandKwh | Yes | Useful heat the house actually needs in a year, after the existing appliance's losses are taken off its fuel input. |
| applianceEfficiency | Yes | |
| breakEvenPriceRatio | Yes | How many times dearer a unit of electricity is than a unit of the current fuel. Compare it with the SCOP: a heat pump saves money whenever the SCOP beats this ratio. |
| costPerKwhHeatHeatPump | Yes | What a unit of delivered heat would cost from the heat pump. |
| heatPumpElectricityKwh | Yes | Units of electricity the heat pump would use in a year. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, non-destructive), so the description wisely spends its words on domain behavior instead: the break-even ratio that decides the answer, the default appliance efficiency, and the warning that SCOP must match the design flow temperature. This is substantive context beyond the structured fields, though it does not discuss precision or edge cases in inputs.
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?
The purpose is front-loaded and each paragraph carries distinct information (units, the ratio, the SCOP caveat, scope exclusions). It is longer than ideal, with the flow-temperature explanation somewhat verbose, but nothing is purely filler.
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 four required parameters, nine total properties, a 100% documented schema, and an output schema, the description supplies everything an agent needs: what is computed, what is excluded, the critical SCOP constraint, and the note that the break-even figure is reported explicitly. No material gap remains.
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 coverage is 100%, so the baseline is 3, but the description goes beyond it by explaining fuel-specific units (kWh/litres/kg), the meaning of the break-even comparison, and why SCOP must correspond to the actual design flow temperature rather than the badge figure.
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?
The opening sentence states a specific comparison verb and both resources: household heating spend on current fuel versus the same heat from a heat pump. This clearly separates it from siblings like heat_pump_size or heat_pump_noise, which address different questions.
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?
It states when this calculator applies ('running cost comparison') and explicitly excludes capital cost and grants, and it names the MCS 007 method plus the caveat that installation still needs a site survey. It does not, however, route to a specific sibling calculator for sizing or noise, leaving the alternative selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
heat_pump_sizeWhat size heat pump do I need?ARead-onlyIdempotentInspect
Estimate the heat pump a UK house needs, and what it would cost to run against the fuel it burns now.
IMPORTANT: MIS 3005-D requires a heat pump to be sized from a room-by-room heat loss calculation to BS EN 12831, and nothing here replaces that. Say so whenever you report a result from this, and point the user at the room-by-room calculation. What the figure is for is checking whether a size somebody has been quoted is plausible, because oversizing is the commonest fault in heat pump installations and it is invisible to the person living with it.
There are two routes and the first is much the better one.
From metered fuel, which is preferred: give 'annualFuelUse' from a year of bills. The fuel becomes heat delivered, hot water comes off it using the MIS 3005-D formula, and what remains divided by the local heating degree days gives the building's heat loss coefficient in watts per kelvin. Degree days are computed from the Met Office monthly means published in MGD 007 section 5.
From the fabric, as a fallback when there are no bills: give 'floorAreaM2', an 'insulation' level and a 'propertyType'. The watts per kelvin per square metre behind this are a reasonable reading of British housing stock but they are NOT MCS figures, because MCS publishes no such shortcut. Say so when using this route.
Either way the peak load is the coefficient multiplied by the design temperature difference for the location, from Table 2 of MIS 3005-D. The heat pump must deliver at least that at the design outside temperature and the design flow temperature, which is not the same as its headline rating.
The result also compares what each of four flow temperatures would cost to run, which is the decision that governs the bill and the one a quotation most often leaves unstated. Supply 'quotedHeatPumpKw' to have a quoted size checked against the estimate.
Method from MIS 3005-D. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| fuel | No | The fuel the house is heated with now: 'mains_gas', 'oil', 'lpg', 'electricity' or 'coal'. Defaults to 'mains_gas'. | |
| scop | No | Seasonal coefficient of performance of the proposed heat pump, if it is known from the MCS Product Directory. Defaults to an indicative figure for the chosen flow temperature. | |
| bedrooms | No | Number of bedrooms, for the hot water demand. Defaults to 3. | |
| location | Yes | Nearest of the eight tabulated locations: 'belfast', 'birmingham', 'cardiff', 'edinburgh', 'glasgow', 'london', 'manchester' or 'plymouth'. Required. | |
| occupants | No | Number of people living there, if known. MIS 3005-D takes the greater of this and bedrooms plus one. | |
| insulation | No | How well insulated the building is: 'solid', 'cavity_unfilled', 'insulated', 'modern' or 'very_efficient'. Used only with floorAreaM2. | |
| designBasis | No | 'a' for the 99% outside design temperature or 'b' for the colder 99.6% one. Defaults to 'a'. | |
| floorAreaM2 | No | Total heated floor area in square metres, over all storeys. Used only when no fuel figure is given. | |
| internalTemp | No | Whole-house mean internal design temperature in Celsius. Defaults to 20, which is a reasonable average of the room-by-room figures in MIS 3005-D Table 1. | |
| propertyType | No | 'detached', 'semi', 'end_terrace', 'mid_terrace', 'flat' or 'bungalow'. Used only with floorAreaM2. Defaults to 'semi'. | |
| annualFuelUse | No | How much of that fuel the house burns in a year, in its own unit: kWh for gas and electricity, litres for oil and LPG, kilograms for coal. Give this if it is known: it describes the actual house and is far better than the fabric estimate. | |
| flowTemperature | No | The flow temperature the system would be designed around: 35, 45, 50 or 55. Defaults to 45. This is the single biggest influence on running cost. | |
| fuelPricePerUnit | No | Price of one unit of the current fuel, in pounds. Optional; supplying it and the electricity price gives a running cost comparison. | |
| quotedHeatPumpKw | No | The output of a heat pump somebody has quoted, in kW. Optional; supplying it says whether that size looks plausible against this estimate. | |
| nonHeatingFraction | No | Share of that fuel used for something other than heating and hot water, such as a gas hob, as a decimal. A hob is usually 0.03 to 0.05. Defaults to 0. | |
| summerMonthFuelUse | No | Fuel used in a single summer month, in the same unit, when the heating is off. Give this if it can be found: almost all of it is hot water, so it separates hot water from space heating exactly and removes the biggest assumption in the estimate. | |
| applianceEfficiency | No | Seasonal efficiency of the existing boiler as a decimal. Defaults to a realistic figure for the fuel instead of the one on the badge. | |
| electricityPricePerKwh | No | Price of a unit of electricity, in pounds. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| scop | Yes | |
| basis | Yes | |
| notes | Yes | |
| method | Yes | |
| warning | Yes | |
| location | Yes | |
| basisNote | Yes | |
| references | Yes | |
| designBasis | Yes | |
| scopAssumed | Yes | True when an indicative figure stood in for a real one from the product directory. |
| internalTemp | Yes | |
| breakEvenScop | No | The seasonal efficiency at which the two cost the same. |
| peakHeatLossKw | Yes | The space heating load at the design outside temperature. The heat pump must deliver at least this, at the design flow temperature, without help from an immersion heater. |
| flowTemperature | Yes | |
| quotedSizeCheck | No | |
| annualDifference | No | Positive when the heat pump costs less. |
| annualHotWaterKwh | Yes | |
| currentAnnualCost | No | |
| heatingDegreeDays | Yes | |
| externalDesignTemp | Yes | |
| heatPumpAnnualCost | No | |
| annualHeatDemandKwh | Yes | |
| dailyHotWaterLitres | Yes | |
| wattsPerSquareMetre | No | Peak load per square metre of floor, where a floor area was given. A useful sanity check. |
| flowTemperatureCosts | No | |
| annualSpaceHeatingKwh | Yes | |
| hotWaterFromSummerUse | Yes | True when a summer month's fuel separated hot water from space heating, instead of an allowance standing in for it. |
| temperatureDifference | Yes | |
| heatPumpElectricityKwh | Yes | |
| heatLossCoefficientWPerK | Yes | How many watts the building loses for every degree between inside and outside. The figure everything else follows from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, not destructive), so the description exceeds the bar by disclosing the method (coefficient from degree days, peak load from MIS 3005-D Table 2), the caveat that the fabric route is not MCS-derived, and the design-flow vs headline-rating distinction. This is unusually rich context for a calculator.
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?
Reasonably front-loaded (purpose, then the IMPORTANT caveat, then the two routes), and the length is defensible for an 18-parameter calculator. It loses a point for mild repetition, notably the instruction to flag limits being restated for the metered and fabric routes separately.
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?
An output schema exists, so return values need no explanation, and the description compensates fully for the tool's complexity by documenting method provenance, the design-temperature basis, and the recommended framing of results. Nothing an agent needs to invoke or report this correctly is missing.
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?
With 100% schema description coverage the baseline is 3, but the prose adds genuine relational meaning beyond per-field docs: it explains that annualFuelUse and the fabric parameters are mutually exclusive routes, that quotedHeatPumpKw drives a plausibility check, and that flowTemperature governs four cost scenarios. It does not restate individual field syntax.
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+resource (estimate heat pump size for a UK house) plus a secondary function (running-cost comparison against current fuel). It is clearly distinguishable from siblings like room_heat_loss, heat_pump_running_cost and radiator_flow_temperature, which it never overlaps.
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 lays out two routes, names the metered-fuel route as preferred and the fabric route as fallback, and states the trigger for each (annualFuelUse present vs absent). It also names the shape of use (checking whether a quotation is plausible) and points to the room-by-room calculation as the alternative for actual design.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hot_water_cylinderHot water demand and cylinder sizeARead-onlyIdempotentInspect
Work out the daily hot water demand of a dwelling and the size of cylinder a heat pump needs, using the formula in MIS 3005-D 3.5.2 and the BS 6700 guidance reproduced in MGD 007.
The demand is 45 litres a day for each of N, where N is the greater of the number of bedrooms plus one and the number of people actually living there. For a new build, where occupancy is unknown, the bedroom count is used.
The cylinder does not have to hold a whole day's demand, because it reheats as it empties. What it must cover is the largest draw-off before the heat pump catches up, which is why a larger heat pump needs a smaller cylinder: reheat time is volume times temperature rise, divided by 14.3 times the kW.
The result gives the BS 6700 minimum, a recommended size rounded to a volume cylinders are made in, and the reheat time. Note that cylinder volume is not the whole story: a heat pump cylinder needs a much larger coil than a boiler cylinder, because the water arrives cooler and there is less temperature difference to drive heat across the surface.
Method from MIS 3005-D. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| bedrooms | Yes | Number of bedrooms in the property. Required. | |
| bathrooms | No | Number of bathrooms with a bath. Defaults to 1. | |
| occupants | No | Number of people who actually live there, if known. MIS 3005-D takes the greater of this and bedrooms plus one. Leave it out for a new build, where the occupancy is not yet known. | |
| storageTemp | No | Temperature the cylinder is stored at, in Celsius. Defaults to 55, which is a common heat pump setting. A weekly pasteurisation cycle above 60 is separate. | |
| coldWaterTemp | No | Incoming mains temperature in Celsius. Defaults to 10. | |
| heatPumpOutputKw | No | Heat output of the heat pump in kW when it is heating the cylinder. A larger heat pump reheats faster, so it needs less stored volume. Defaults to 6. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| method | Yes | |
| bedrooms | Yes | |
| bathrooms | Yes | |
| occupants | No | |
| references | Yes | |
| storageTemp | Yes | |
| coldWaterTemp | Yes | |
| reheatMinutes | Yes | Roughly how long the heat pump takes to bring the whole cylinder up from cold, ignoring standing losses. |
| occupancyBasis | Yes | Which of the two gave the larger figure. |
| designOccupancy | Yes | N in the MIS 3005-D formula: the greater of bedrooms plus one and the known occupants. |
| energyPerDayKwh | Yes | Heat needed each day to raise the daily demand from mains temperature to storage temperature. |
| heatPumpOutputKw | Yes | |
| dailyDemandLitres | Yes | Average daily hot water demand: 45 litres for each of N. |
| minimumCylinderLitres | Yes | The BS 6700 minimum for this number of bathrooms and this heat pump output, before the allowance MGD 007 adds for extra bathing capacity. |
| recommendedCylinderLitres | Yes | Cylinder volume from the BS 6700 guidance in MGD 007, given the number of baths and the heat pump output. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, non-destructive, closed-world read, so the description's job is to add method and outcome context — and it does: it discloses the demand formula (45 l/day per N, N = max(bedrooms+1, occupants)), the reheat-time relationship (volume × ΔT / (14.3 × kW)), and the three outputs returned (BS 6700 minimum, rounded recommended size, reheat time). It also flags the coil-size caveat that a heat pump cylinder needs a larger coil than a boiler cylinder.
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?
The purpose and the demand rule are front-loaded, and the paragraph structure maps sensibly onto method, sizing logic, and caveats. It is longer than strictly needed for invocation — the coil-size paragraph is explanatory rather than operational — but no sentence is filler.
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 an output schema present the description need not enumerate return fields, yet it still describes what the result contains. For a six-parameter engineering calculator with a formula-based method, the description supplies the standard reference, the core equation, default behaviour, and the professional disclaimer, leaving nothing an agent needs in order to call it 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 a baseline of 3 applies, but the description goes further by explaining the interaction between parameters: occupancy defaults to bedrooms-plus-one logic for new builds, and a larger heat pump means a smaller cylinder because reheat time falls with kW. It also contextualises storageTemp by noting the separate weekly pasteurisation cycle above 60.
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?
The description names a specific verb and resource: working out daily hot water demand for a dwelling and the cylinder volume a heat pump requires, citing MIS 3005-D 3.5.2 and BS 6700/MGD 007. This is clearly distinguishable from siblings like heat_pump_size, room_heat_loss or radiator_flow_temperature, which address different calculations.
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?
It gives a clear usage frame: 'for understanding a system and checking a quotation', and warns that installed work still needs a design and site survey from a certified installer. It stops short of routing the agent between alternatives (e.g. when to use heat_pump_size instead), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calculatorsList the calculators and their reference dataARead-onlyIdempotentInspect
Lists every calculator on this server, with the standard behind it and whether it is the whole-system sizing calculator or one of the single-method ones, plus the reference data a caller needs to build a valid request: the compass directions and their orientations, the shading descriptions, the twenty-five solar postcode zones, the eight heat pump design locations with their design temperatures, the room types and their internal design temperatures, the heat loss element kinds, the occupancy archetypes and the fuel types. Call this when a value must be one of a fixed set and you are not sure what the set is.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | Yes | |
| reference | Yes | |
| calculators | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuine behavioral content beyond that: it enumerates the categories of reference data returned (compass directions, postcode zones, design temperatures, etc.), telling the agent what knowledge it gains.
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?
Front-loaded with the core purpose, then a dense but purposeful enumeration of the reference datasets, closing with the usage trigger. Every clause carries information, though the long middle list is heavy for a single sentence.
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 parameters, an output schema present, and rich annotations, the description need not explain return structure or safety. It covers purpose, scope, returned content categories, and the invocation condition, so an agent has everything needed to call it 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?
The tool takes no parameters, so there is nothing to disambiguate; the baseline for a zero-parameter tool is 4. Nothing in the description misleads about inputs.
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 (lists) and resource (every calculator plus its reference data), and disambiguates what kind of calculators (whole-system sizing vs single-method) so an agent can distinguish it from the sibling calculator tools like heat_pump_size or solar_pv_system_size.
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 gives the trigger condition: 'Call this when a value must be one of a fixed set and you are not sure what the set is.' This is clear context for invocation, though it does not name which sibling to prefer or state exclusions when a value is already known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsList what the documents coverARead-onlyIdempotentInspect
Lists every document, optionally filtered by kind ('guide', 'article' or 'faq'), by category, or, for guides, by the reader they are written for. Guides are shelved by perspective: 'considering', 'buying', 'selling', 'installing' and 'learning'. The first four are plain language and name no standards; 'learning' carries the methods and the citations. Match the perspective to the person asking. Use this to see the shape of what is covered before searching, or when a search returned nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by kind: 'guide', 'article' or 'faq'. Optional. | |
| level | No | Articles only. Filter by how much the piece assumes: 'beginner', 'intermediate' or 'advanced'. Use it to match the person asking, so somebody new is not sent to an advanced piece. | |
| category | No | Filter by category: 'heat-pumps', 'solar-pv', 'batteries', 'standards' or 'paperwork'. Optional. | |
| perspective | No | Guides only. Filter by who the guide is written for: 'considering' (still deciding), 'buying' (about to commit), 'selling' (sells these systems), 'installing' (fits them) or 'learning' (wants the technical detail). Use this to match the reader: the first four are plain language and name no standards, the fifth carries the methods and citations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| levels | Yes | How much articles assume of the reader. Match it to the person asking. |
| documents | Yes | |
| categories | Yes | |
| perspectives | Yes | Who the guides are written for. Match the reader before quoting one at them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered without description help. The description adds that the listing is exhaustive ('every document') and that filters are optional, but says nothing about pagination, result volume, or auth needs — modest added value on top of rich annotations.
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?
Front-loads the core verb and resource, then layers filters and usage in a single tight paragraph with no filler sentences. The perspective enum list and the 'first four are plain language' clause duplicate what the schema fields already say, which is mild redundancy but does not bloat the text.
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?
Output schema exists, so the description is not obliged to describe return values, and it covers what remains: scope of the listing, optional filters, domain-specific filter semantics, and when to prefer this over searching. Nothing an agent needs to invoke it correctly is missing.
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 articles/guides-only constraints plus enum meanings are already documented per-field in the schema. The description largely restates the 'perspective' and 'level' values, adding interpretation ('match the reader') but little syntax or format detail the schema lacks. Baseline 3 is correct.
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 ('Lists') plus resource ('every document') and immediately scopes it with the available filters. The final sentence implicitly distinguishes it from search_documents by positioning it as the browse-the-shape tool rather than the lookup tool, so an agent can route correctly.
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?
Gives explicit when-to-use guidance: 'before searching, or when a search returned nothing' — the second clause is a genuine fallback rule that names the sibling's failure mode. It also instructs how to pick filter values ('Match the perspective to the person asking'), which is actionable selection guidance rather than vague context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
radiator_flow_temperatureRadiator flow temperatureARead-onlyIdempotentInspect
Work out the flow temperature a heat pump must produce to heat a room through a given radiator, and the resulting MCS Heat Emitter Guide star rating, following section 4 of MGD 007.
This is the calculation that decides whether a heat pump will be cheap or expensive to run. A heat pump's efficiency falls as the water temperature rises, by roughly two to three per cent per degree, and the temperature it must produce is set by the radiators, not by the machine.
Supply the room's design heat loss in watts, from a room-by-room calculation, and the rated output of the radiator in that room. British catalogues normally quote at a mean-water-to-air difference of 50 K; if yours quotes 60, say so and the figure is restated.
The result gives the oversize factor, which is the radiator's output at 50 K divided by the room's heat loss, and converts it to a required flow temperature through the BS EN 442 output law. Star ratings run from 0 to 6, one star per five degrees of flow temperature, with six stars at 35 degrees.
Run this for every room. A house runs at the flow temperature its worst room demands, so one undersized radiator sets the running cost for the whole house.
Method from MGD 007. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| roomTemp | No | Internal design temperature of the room in Celsius. Defaults to 21. | |
| systemDeltaT | No | Designed drop in water temperature between flow and return, in kelvin. Heat pump systems commonly use 5; boiler systems used 10 or 20. Defaults to 5. | |
| ratedAtDeltaT | No | The mean-water-to-air temperature difference the rated output was quoted at. British catalogues normally quote 50; some older ones quote 60. Defaults to 50. | |
| roomHeatLossW | Yes | The room's design heat loss in watts, from a room-by-room heat loss calculation. Required. | |
| radiatorOutputW | Yes | Rated output of the radiator or radiators in that room, in watts, at the catalogue temperature. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| method | Yes | |
| verdict | Yes | |
| references | Yes | |
| starRating | Yes | Temperature star rating from the MCS Heat Emitter Guide, 0 to 6. More stars mean a lower flow temperature and a more efficient system. |
| meanWaterTemp | Yes | Average of flow and return temperature needed to deliver the room's heat loss through this radiator. |
| ratedAtDeltaT | Yes | |
| roomHeatLossW | Yes | |
| oversizeFactor | Yes | Radiator output at 50 K divided by the room's heat loss. The single number the Heat Emitter Guide turns into a star rating. |
| flowTemperature | Yes | The flow temperature the heat pump must produce, in Celsius. |
| radiatorOutputW | Yes | |
| starRatingLabel | Yes | |
| outputAtDeltaT50 | Yes | The radiator's output restated at a mean-water-to-air difference of 50 K, so oversize factors are comparable between catalogues. |
| returnTemperature | Yes | |
| outputAtDesignFlowW | Yes | What this radiator actually gives at the flow temperature worked out here. |
| radiatorOutputForFiveStarsW | Yes | The radiator output at 50 K that would reach a five star rating, meaning a 40 degree flow temperature. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real domain behaviour: efficiency falls ~2-3% per degree of water temperature, star ratings scale one star per 5 degrees with six stars at 35C, and a caveat that installed systems still need a certified installer. It stops short of stating validity bounds or how out-of-range inputs are handled.
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?
Front-loaded with the purpose, which is good, but it runs five paragraphs and includes economic rationale ('cheap or expensive to run') and a restatement of the 50 K/60 K point that overlaps the schema. The method and installer caveats earn their place; the economic lecture is padding.
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?
An output schema exists, so return values need not be spelled out, and the description correctly covers inputs, method provenance (MGD 007 section 4 / BS EN 442), workflow, and interpretation of the star rating. It is complete enough to invoke correctly, with only minor gaps around edge cases.
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 the schema fully documents all five parameters and the baseline is 3. The description adds interpretive framing (heat loss in watts from a room-by-room calc, catalogue ratings normally at 50 K, restated if 60), but largely echoes what the schema already states for ratedAtDeltaT and radiatorOutputW. Marginal added meaning over the structured fields.
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: compute the flow temperature a heat pump must produce through a given radiator, plus the resulting MCS star rating. This is clearly distinguishable from siblings like room_heat_loss (which produces the heat-loss input) and heat_pump_size. An agent can identify the tool without opening the schema.
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?
Gives strong operational context: 'Run this for every room' and explains that the whole house runs at its worst room's flow temperature. It also implies the pipeline dependency on a room-by-room heat loss figure. However, it never explicitly names a sibling tool (e.g. room_heat_loss) as the source of the input, so the routing 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.
room_heat_lossRoom heat lossARead-onlyIdempotentInspect
Calculate the design heat loss of a single room in watts, following BS EN 12831 as MIS 3005-D applies it. This is the figure a heat pump is sized from and the figure the radiator in that room must be able to deliver.
BS EN 12831 is a room-by-room method. Run this once for each heated room and add the results; sizing a heat pump from floor area alone is what produces the oversized installations that cycle all winter.
Internal design temperatures come from Table 1 of MIS 3005-D and follow from the room type: 22 for a bathroom, 21 for living and dining rooms, 18 for bedrooms, halls, kitchens and toilets. These are minimums, so a higher figure is accepted and a lower one is refused.
External design temperatures come from Table 2, for eight locations, in two columns: 'a' is the 99% figure and 'b' the colder 99.6% one, which needs no uplift for intermittent heating.
Each element needs an area, a U-value, and a kind. The kind matters because it fixes which temperature difference applies. Walls, windows, doors, roofs and suspended floors lose heat to the outside design temperature. A SOLID FLOOR ON THE GROUND loses heat to the local annual average air temperature instead, which is far warmer, and getting this wrong is the commonest error in a heat loss calculation. Window and door areas belong to the window and the door, not to the wall behind them.
Method from MIS 3005-D. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| elements | Yes | Every surface through which the room loses heat. At least one is required. | |
| location | Yes | Which of the eight tabulated locations the property is nearest: 'belfast', 'birmingham', 'cardiff', 'edinburgh', 'glasgow', 'london', 'manchester' or 'plymouth'. Required. | |
| roomName | No | A name for the room. | |
| roomType | No | Which of the tabulated room types this is: 'living_room', 'dining_room', 'bedsitting_room', 'bathroom', 'bedroom', 'kitchen', 'hall' or 'toilet'. Sets the internal design temperature. Defaults to 'living_room'. | |
| designBasis | No | 'a' for the 99% outside design temperature or 'b' for the colder 99.6% figure. Column B needs no uplift for intermittent heating. Defaults to 'a'. | |
| floorAreaM2 | Yes | Floor area of the room in square metres. Required, and used with the ceiling height to work out the ventilation loss. | |
| internalTemp | No | Internal design temperature in Celsius, if it should differ from the tabulated value for the room type. MIS 3005-D sets the tabulated values as a floor, not a target, so a higher figure is allowed and a lower one is not. | |
| ceilingHeightM | No | Floor to ceiling height in metres. Defaults to 2.4. | |
| airChangesPerHour | No | How many times an hour the air in the room is replaced. A draughty old room may be 1.5 or more; a well sealed new one 0.5. Defaults to 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| method | Yes | |
| elements | Yes | |
| location | Yes | |
| roomName | No | |
| roomType | Yes | |
| references | Yes | |
| designBasis | Yes | |
| fabricLossW | Yes | |
| largestLoss | No | Which single element loses most, which is where insulating first pays best. |
| internalTemp | Yes | |
| roomVolumeM3 | Yes | |
| totalHeatLossW | Yes | The room's design heat loss in watts. This is what the emitter in the room has to deliver on the coldest day. |
| ventilationLossW | Yes | |
| externalDesignTemp | Yes | |
| fabricSharePercent | Yes | |
| wattsPerSquareMetre | Yes | Heat loss divided by floor area. A useful sanity check: a well insulated room lands near 40, a poor one well over 100. |
| temperatureDifference | Yes | Internal minus external design temperature, in kelvin. The figure most of the fabric loss is worked out against. |
| ventilationSharePercent | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent safety profile, and the description goes well beyond them: it discloses validation behaviour ('tabulated values are minimums... a lower one is refused'), the kind-dependent temperature basis, the ground-floor special case, and the default for unheatedTemp. That is real behavioural context an agent cannot get from the annotations.
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?
The core definition is front-loaded in the first sentence and each paragraph serves a distinct purpose (method, room temperatures, design basis, element kinds, disclaimer). It is nonetheless long for a single tool, with the closing MCS disclaimer paragraph adding bulk more than invocation guidance.
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 domain-heavy calculation with an output schema already present, the description supplies everything an agent needs: method, required inputs, validation rules, defaults, and the common modelling error. Nothing needed to call it correctly is missing.
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 coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it maps roomType to concrete temperatures (22 bathroom, 21 living/dining, 18 bedrooms/halls/kitchens/toilets) and explains that 'kind' fixes which temperature difference applies. It largely restates the a/b column note and defaults already present in the schema, which keeps this short of a 5.
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 precise verb+resource+unit ('Calculate the design heat loss of a single room in watts'), names the standard it follows (BS EN 12831 / MIS 3005-D), and positions the output as the figure a heat pump is sized from, which cleanly separates it from the aggregate heat_pump_size sibling.
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?
Gives clear operational guidance ('Run this once for each heated room and add the results') and explicitly warns against the wrong approach (sizing a heat pump from floor area alone). It implies but never names heat_pump_size as the aggregation step, so there is no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentsSearch the documentsARead-onlyIdempotentInspect
Search the guides, articles and questions for material on a UK home energy subject.
Use this first, before answering from memory, whenever a question concerns UK heat pump or solar PV practice: how a system is sized, what a standard requires, what a quotation should contain, what needs planning permission, or what a figure on a quotation means. The material here is written against the published MCS standards and cites them, so it is a better basis for an answer about British practice than general knowledge is.
Searching returns summaries. Follow up with get_document to read one in full.
Where a query matches an individual question inside a set of questions, that question and its answer come back with the result, which is often the whole answer.
This covers the United Kingdom. It is not a guide to practice in any other country.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many results to return, 1 to 25. Defaults to 8. | |
| query | Yes | What to search for. Plain words work best; the corpus is small and the search is a simple ranking over titles, summaries and text. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| query | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, but the description adds behavior the schema and annotations cannot: results are summaries rather than full documents, matched sub-questions return inline with their answers, and coverage is limited to the United Kingdom. These are real operational facts an agent needs before calling.
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?
Front-loaded with the purpose and the primary usage directive, and each paragraph carries a distinct fact (scope, follow-up tool, inline Q&A, geography). The closing two sentences about UK coverage slightly restate the opening scope, costing a little tightness.
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?
An output schema exists, so return structure need not be spelled out, and the description still covers the essentials: what the corpus contains, what results look like at a high level, the follow-up path, and the geographic boundary. Nothing needed to call it correctly is missing.
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 coverage is 100%, so both the query and limit parameters are already documented in the schema, including 'plain words work best' and the 1-25 range. The description adds no syntax, format, or ranking detail beyond that, 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?
Names a specific verb and resource ('Search the guides, articles and questions') and scopes the corpus to UK home energy subjects. It also distinguishes itself from the sibling get_document by stating that searching returns summaries and get_document reads one in full.
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 says to use this first before answering from memory, enumerates the question types it covers (sizing, standards, quotations, planning permission), and routes the agent to get_document as the follow-up. That is close to a complete when-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solar_pv_outputSolar PV annual outputARead-onlyIdempotentInspect
Estimate the annual AC electricity output of a UK solar photovoltaic system, in kWh, using the standard estimation method that MIS 3002 requires every MCS certified installer to use.
The method is: annual output = kWp x Kk x SF, where Kk is read from the MCS irradiance dataset for the site's postcode zone, roof pitch and orientation, and SF is a shade factor between 0 and 1.
Supply the postcode and the array's capacity in kWp, plus the roof's pitch in degrees from horizontal and its orientation in degrees away from due south in either direction, so that south is 0, south-east and south-west are both 45, east and west are both 90, and north is 180.
The result carries the tabulated yield, the estimate, and what the same array would produce at the best pitch and orientation for that zone, so a roof that is merely good is not mistaken for a poor one. This covers the United Kingdom only; the dataset has no values for anywhere else.
Method from MIS 3002. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| zone | No | MCS postcode zone code, for example '5E'. An alternative to 'postcode' when the zone is already known. | |
| postcode | No | UK postcode of the installation, for example 'BS1 5TR'. Only the outward code matters. Give this or 'zone'. | |
| capacityKwp | Yes | Total installed capacity in kilowatts peak: the sum of the nameplate watts of every module, divided by 1000. Required. | |
| inclination | Yes | Pitch of the array in degrees from horizontal. A flat roof is 0 and a wall-mounted array is 90. Required. | |
| orientation | Yes | Degrees the array faces away from due south, in either direction, so due south is 0, south-east and south-west are 45, east and west are 90, and due north is 180. Required. | |
| shadeFactor | No | Proportion of output left after shading, between 0.5 and 1. Use 1 for a clear horizon. Defaults to 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
| zone | Yes | |
| notes | Yes | |
| method | Yes | |
| references | Yes | |
| capacityKwp | Yes | |
| inclination | Yes | Inclination after rounding to the nearest degree, as the method requires. |
| orientation | Yes | Orientation after rounding to the nearest five degrees, as the method requires. |
| shadeFactor | Yes | |
| postcodeUsed | No | The postcode the zone was resolved from, when one was given. |
| shadingLossKwh | Yes | |
| annualOutputKwh | Yes | The estimate: capacity multiplied by Kk multiplied by the shade factor. |
| bestCaseAnnualKwh | Yes | What this capacity would produce at the best pitch and orientation for the zone, unshaded. A yardstick, not a target: a roof faces where it faces. |
| percentOfBestCase | Yes | The estimate as a percentage of that best case. |
| unshadedOutputKwh | Yes | What the same array would produce with a clear horizon. Equals the estimate when the shade factor is 1. |
| bestCaseInclination | Yes | The pitch that yields most at this zone when facing due south. |
| bestCaseOrientation | Yes | The orientation that yields most at this pitch and zone. Almost always due south. |
| specificYieldKwhPerKwp | Yes | Kk: the kWh a single kWp produces in a year at this zone, pitch and orientation, before shading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the exact computation formula, the UK-only dataset limit ('no values for anywhere else'), and the disclaimer that results are for understanding/checking rather than design. It does not describe what happens on an out-of-UK postcode or other error paths.
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?
Purpose and method are front-loaded in the first two paragraphs, and the closing caveat earns its place. The orientation convention sentence, however, is lifted straight from the schema and is pure duplication that could be cut.
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 calculator whose output schema exists (so return values need no explanation), the description covers method, domain conventions, geographic limits and usage caveats. The one remaining gap is behavior on invalid or non-UK input, which is only implied by the 'no values for anywhere else' note.
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 every parameter is already documented there, including the orientation convention and the postcode/zone alternative. The description restates the orientation convention almost verbatim and adds no new syntax or format detail, so it sits at the baseline for a fully documented schema.
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 with units: 'Estimate the annual AC electricity output of a UK solar photovoltaic system, in kWh.' It also pins the method (MIS 3002 / MCS) and the geographic scope. However it never names or contrasts against the obvious siblings solar_pv_system_size, solar_pv_shading, or solar_pv_self_consumption, so the agent must infer the boundary from the names alone.
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?
It gives a usage context ('for understanding a system and checking a quotation') and a caveat that anything installed still needs a design and site survey from a certified installer. But it never says when to prefer this over the sibling PV calculators, nor what inputs make it inapplicable beyond the UK-only scope note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solar_pv_self_consumptionSolar PV self-consumptionARead-onlyIdempotentInspect
Estimate what proportion of a domestic solar PV system's annual output is consumed in the house and what proportion is exported, using the lookup tables in MGD 003.
The tables are not a model. They come from half-hourly monitoring of real British households by Loughborough University, with battery behaviour modelled on top, so they carry the real shape of domestic demand: a peak before the sun is up, another after it has gone, and a quiet middle of the day.
Three things index them. The annual generation, which comes from the MIS 3002 output estimate. The household's annual consumption from a bill based on actual meter readings, which defaults to the British average of 3,500 kWh where it is unknown. And the weekday occupancy pattern, which is 'home_all_day', 'in_half_the_day' or 'out_all_day'; where the pattern is unknown MGD 003 says to use the middle one, and that is what an omitted value resolves to.
Battery capacity is the USABLE capacity, which is smaller than the figure printed on the battery. Supplying import and export prices adds a value in pounds to the result.
Note that self-consumption is not the same as independence from the grid, and the result reports both.
Method from MGD 003. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| occupancy | No | Weekday occupancy pattern: 'home_all_day', 'in_half_the_day' or 'out_all_day'. Defaults to 'in_half_the_day', which is what MGD 003 says to use when the pattern is unknown. | |
| batteryKwh | No | Usable capacity of any battery in kWh, which is smaller than the headline capacity. Omit or use 0 for no battery. | |
| exportPricePerKwh | No | What the household is paid for a unit exported, in pounds. Optional. | |
| importPricePerKwh | No | What the household pays for a unit of grid electricity, in pounds. Optional; supplying it adds a value to the result. | |
| annualGenerationKwh | Yes | Expected annual AC output of the PV system in kWh, as produced by the MIS 3002 estimation method. Required. | |
| annualConsumptionKwh | No | The household's annual electricity consumption in kWh, from a bill based on actual meter readings. Defaults to 3500, which MGD 003 uses where the figure is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| method | Yes | |
| occupancy | Yes | |
| batteryKwh | Yes | |
| references | Yes | |
| annualValue | No | The two added together. |
| exportedKwh | Yes | |
| importedKwh | Yes | Units still bought from the grid over the year. |
| batteryGainKwh | No | Extra units kept in the house each year because of the battery. |
| occupancyLabel | Yes | |
| selfConsumedKwh | Yes | |
| annualBillSaving | No | Value of the units not bought, in pounds. Only present when an import price was given. |
| annualExportIncome | No | Value of the units exported, in pounds. Only present when an export price was given. |
| consumptionAssumed | Yes | True when the 3500 kWh default stood in for a figure the caller did not give. |
| annualGenerationKwh | Yes | |
| annualConsumptionKwh | Yes | |
| withoutBatteryPercent | Yes | What the same system would self-consume with no battery. |
| selfConsumptionPercent | Yes | Proportion of generation used in the home instead of exported. |
| gridIndependencePercent | Yes | Proportion of the household's own consumption met by the system instead of by the grid. Different from self-consumption, and usually smaller. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial behavior beyond them: the provenance of the lookup tables (Loughborough half-hourly monitoring, modelled battery), the three indexing inputs, the documented defaults (3,500 kWh consumption, 'in_half_the_day' occupancy), the fact that supplying prices adds a pound value to the result, and that both self-consumption and grid independence are reported.
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?
The purpose is front-loaded in the first sentence and the structure moves cleanly from what it does, to the data source, to the inputs, to caveats. It is a little long, with the monitoring-data flavor paragraph and the MCS/installer boilerplate doing less work than the parameter guidance, but nothing is confusing or misplaced.
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?
An output schema exists, so return values need not be described, and the description still tells the agent everything else it needs: defaults for omitted inputs, the units and meaning of battery capacity, the effect of supplying prices, and the distinction between the two reported metrics. For a six-parameter calculator this is complete.
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 coverage is 100%, so the baseline is 3, but the prose adds genuine meaning: it explains why battery capacity must be usable (smaller than the headline figure), why generation should come from MIS 3002, and why consumption should come from a metered bill. It largely reinforces rather than extends the schema text, so it stops short of a 5.
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?
The description opens with a specific verb and resource: estimating the proportion of a domestic PV system's annual output that is self-consumed versus exported. It even pre-empts a likely confusion by stating that self-consumption is not grid independence, which separates it from solar_pv_output (generation) and solar_pv_system_size (sizing) without needing to name them.
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?
Usage context is implied rather than stated: the closing lines say these calculators are 'for understanding a system and checking a quotation.' There is no explicit when-to-use versus solar_pv_output or solar_pv_shading, no stated prerequisites (e.g. run solar_pv_output first), and no exclusions. The agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solar_pv_shadingSolar PV shade factorARead-onlyIdempotentInspect
Convert a completed MCS sunpath shading assessment into a shade factor, using the procedure in MGD 005.
The MCS sunpath chart is divided into 84 segments, each worth one per cent of the year's useful irradiance. An assessor stands at the middle of where the array will go, plots what blocks the horizon onto the chart, and counts the segments covered. This tool takes that count and returns 1 minus the loss, which is the SF term in the MIS 3002 output estimate.
Objects within ten metres of the array are near shading and are assessed separately, from each affected part of the array, not from its middle. They can be listed here for the record, but MGD 005 is explicit that near shading has a considerable effect and should be avoided.
This tool does not perform the assessment. It does the arithmetic on an assessment somebody made.
Method from MGD 005. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| segments | Yes | Number of segments on the MCS sunpath chart that the obstruction touches, from 0 to 84. Each segment is worth one per cent of the year's irradiance. | |
| nearObjects | No | Objects within ten metres of the middle of the array, each assessed from its own position on the array. Optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| method | Yes | |
| verdict | Yes | |
| segments | Yes | |
| severity | Yes | One of 'none', 'slight', 'moderate' or 'severe'. |
| references | Yes | |
| nearObjects | No | |
| shadeFactor | Yes | The multiplier to apply to an unshaded output estimate: 1 minus the loss. |
| shadingLoss | Yes | Proportion of the year's irradiance blocked, as a decimal. |
| shadingLossPercent | Yes | |
| totalModulesAffected | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, idempotent, closed-world read-only calculation, so the bar is lower. The description adds real context beyond them: it is a pure arithmetic step with no side effects, the method source is MGD 005, and nearObject entries are informational ('listed here for the record') rather than affecting the shade factor computation.
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?
The core purpose is front-loaded and clear, but the passage runs several paragraphs and includes assessor methodology and a trailing MCS-methods/certified-installer disclaimer that does not help an agent invoke the tool. Useful content is diluted by educational and legal padding.
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 an output schema present, return values need not be explained, and annotations cover the safety profile. For a two-parameter, domain-specific calculator the description supplies enough method and boundary context to call it correctly, with only minor gaps around how nearObjects influence the result.
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 coverage is 100%, so the schema already documents both parameters thoroughly, including the segment/1%-irradiance relationship. The description largely restates that domain fact rather than adding new parameter-level detail; the '1 minus the loss' framing ties to the result but not to specific arguments. 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?
The first sentence states a precise verb and resource: converting a completed MCS sunpath shading assessment into a shade factor via the MGD 005 procedure. It explicitly clarifies the boundary ('This tool does not perform the assessment. It does the arithmetic on an assessment somebody made'), which cleanly separates it from the assessment and the other solar_pv calculators (output, self-consumption, size).
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?
Usage context is clear: it applies only once an assessment has already been completed, and near-shading objects are assessed separately 'from each affected part of the array, not from its middle.' No sibling tool is named as an explicit alternative, so it stops short of full routing guidance, but the preconditions are well conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solar_pv_system_sizeWhat size solar system do I need?ARead-onlyIdempotentInspect
Work out the solar PV system a UK home needs: the capacity in kWp, the number of panels, the battery to go with it, and what it would do to the electricity bill.
This runs the MCS arithmetic backwards. The other solar calculators here each answer one question about a system somebody has already specified. This one starts from what a household uses and arrives at the system that covers it, which is the question a householder actually has.
The chain is short and every link is published. Annual consumption sets the generation the array has to make. The MCS irradiance dataset behind MIS 3002 says what one kWp makes on that roof, which gives a capacity. Capacity divided by panel size gives a panel count, rounded up, because panels come whole. The MGD 003 tables then say how much of that generation the household will use and how much it will export.
Only the postcode and the roof direction are required. Direction is a compass point, not an angle: 'S', 'SE', 'SW', 'E', 'W', 'NE', 'NW' or 'N'. Give the annual consumption from a bill if it is known, since the 3,500 kWh default is only the British average. Shading can be described in words instead of measured, and a roof area caps the panel count where the roof is the constraint.
No cost is assumed. Installed prices vary far too much between houses to guess at, so a payback figure appears only when a cost from a real quotation is supplied.
Use this to size a system or to sanity-check a quotation. Use 'solar_pv_output' instead when the capacity is already known and the question is only what it will generate.
Method from MIS 3002. These calculators follow the published MCS methods, for understanding a system and checking a quotation. Anything that gets installed still needs a design and a site survey from a certified installer.
| Name | Required | Description | Default |
|---|---|---|---|
| shading | No | How much shading the roof has, in words: 'none', 'light', 'moderate' or 'heavy'. Defaults to 'none'. Use 'shadeFactor' instead if a proper MGD 005 assessment has been done. | |
| postcode | Yes | UK postcode of the property, for example 'BS1 5TR'. Only the outward code matters. Required. | |
| direction | Yes | Compass point the roof faces: 'S', 'SE', 'SW', 'E', 'W', 'NE', 'NW' or 'N'. Required. | |
| occupancy | No | Weekday occupancy: 'home_all_day', 'in_half_the_day' or 'out_all_day'. Decides how much of the generation is used at home instead of exported. Defaults to 'in_half_the_day'. | |
| panelWatts | No | Nameplate rating of a single panel in watts. Defaults to 440, which is typical of a current domestic module. | |
| roofAreaM2 | No | Shade-free roof area available for panels, in square metres. Optional; when given it caps the number of panels. | |
| inclination | No | Roof pitch in degrees from horizontal. Defaults to 35, which is typical of a British pitched roof. A flat roof is 0. | |
| shadeFactor | No | A measured shade factor between 0.5 and 1 from an MGD 005 assessment. Overrides 'shading' when given. | |
| installedCost | No | The installed cost of the system in pounds, from a quotation. Optional; supplying it gives a payback period. No cost is assumed if it is left out, because prices vary too much to guess at. | |
| includeBattery | No | Whether to size a battery alongside the panels. Defaults to false. | |
| batteryModuleKwh | No | Nominal capacity of one battery module in kWh. Batteries are sold in whole modules, so the answer rounds up to one. Defaults to 5. | |
| exportPricePerKwh | No | What the household is paid for a unit exported, in pounds. Optional. | |
| annualConsumptionKwh | No | The household's electricity use in kWh a year, from a bill. Defaults to 3500, which is the British average and the figure MGD 003 falls back on, but a real bill sharpens the answer considerably. | |
| electricityPricePerKwh | No | What the household pays for a unit, in pounds. Optional; supplying it puts a value on the answer. |
Output Schema
| Name | Required | Description |
|---|---|---|
| zone | Yes | |
| notes | Yes | |
| method | Yes | |
| panels | Yes | |
| battery | No | |
| shading | No | The shading description used, when one was chosen in place of a measured factor. |
| direction | Yes | |
| panelWatts | Yes | |
| references | Yes | |
| capacityKwp | Yes | The installed capacity: the panel count multiplied by the panel rating. |
| exportedKwh | Yes | |
| importedKwh | Yes | Units still bought from the grid over a year. |
| inclination | Yes | |
| roofLimited | Yes | True when the roof area given, not consumption, set the size. |
| shadeFactor | Yes | |
| paybackYears | No | Installed cost divided by the annual benefit. Only present when a cost was supplied. |
| postcodeUsed | Yes | |
| annualBenefit | No | Bill saving plus export income. |
| installedCost | No | |
| newAnnualCost | No | |
| occupancyLabel | Yes | |
| selfConsumedKwh | Yes | |
| annualBillSaving | No | |
| idealCapacityKwp | Yes | The capacity that would exactly cover a year of consumption, before rounding up to whole panels. |
| roofAreaNeededM2 | Yes | |
| currentAnnualCost | No | |
| annualExportIncome | No | |
| consumptionAssumed | Yes | True when the 3500 kWh default stood in for a figure the caller did not give. |
| annualGenerationKwh | Yes | |
| annualConsumptionKwh | Yes | |
| selfConsumptionPercent | Yes | |
| specificYieldKwhPerKwp | Yes | Kk: the kWh a kWp produces in a year at this zone, pitch and orientation. |
| gridIndependencePercent | Yes | The share of the household's own use met by the system. |
| generationAsPercentOfUse | Yes | Annual generation as a percentage of annual consumption. Above 100 means the system makes more over a year than the house uses, though not at the same times. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (read-only, idempotent), yet the description adds substantial behavioral context: panels and battery modules round up because they are sold whole, no cost is assumed so payback appears only when a real quotation is supplied, defaults are the British averages, and the method provenance (MIS 3002, MGD 003, MGD 005) is disclosed. This is far beyond what the annotations convey.
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?
Front-loaded with what the tool does and why it differs from siblings; the method paragraph and provenance are informative rather than filler. It is longer than strictly necessary ('The chain is short and every link is published' is flourish) but nothing is misleading or redundant.
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 14-parameter, output-schema-backed calculator this is complete: required vs optional inputs, defaults, rounding behavior, the no-cost assumption, and the installer/survey caveat are all covered, and return values are left to the output schema.
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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: direction is framed as a compass point rather than an angle, the 3,500 kWh default is tied to the British average/MGD 003 fallback, and installedCost is explained as the trigger for a payback figure. It stops short of adding syntax detail for every parameter, so not a 5.
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+resource with scope: sizing a UK solar PV system (kWp capacity, panel count, battery, bill impact). It explicitly distinguishes itself from the other solar calculators as the one that works backwards from consumption rather than describing an already-specified system.
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?
Gives both use cases ('size a system or sanity-check a quotation') and names the alternative with the condition that selects it: use 'solar_pv_output' when capacity is already known. No inference required.
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.
15 tool updates
- First observed
connection_route - First observed
get_document - First observed
heat_pump_noise - First observed
heat_pump_running_cost - First observed
heat_pump_size - First observed
hot_water_cylinder - First observed
list_calculators - First observed
list_documents - First observed
radiator_flow_temperature - First observed
room_heat_loss - First observed
search_documents - First observed
solar_pv_output - First observed
solar_pv_self_consumption - First observed
solar_pv_shading - First observed
solar_pv_system_size
Publisher details
- Operator
- Samyukti · Publisher source
- Operator website
- https://ampworth.com
- Vendor relationship
- Not applicable
- Documentation
- https://ampworth.com/developers
- Trust center
- Not available
- Restrictions
- Not applicable
Related MCP Connectors
UK solar PV and heat pump calculators that follow the published MCS methods. Open, no key.
27 engineering compliance and calculation tools for the built environment (UK, EU, UAE).
Search and read UK guides on solar PV, heat pumps, batteries and MCS certification.
Florida Solar Cost Calculator: the site's own MCP server — calculator, enquiry (enquiry = a...
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceUK solar PV and heat pump calculators following the MCS standards, plus home energy guides, as a CLI and local MCP server.MIT- AlicenseAqualityCmaintenanceMCP server exposing UK financial adviser calculations (tax, IHT, pensions, portfolios) to any MCP-capable client.6MIT
- AlicenseAqualityAmaintenanceUK property data MCP server — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House. 13 tools.1318MIT
- AlicenseCqualityCmaintenance27 deterministic engineering compliance and calculation tools for the built environment (data-centre PUE and EED, EPBD, NIS2, Eurocode, UAE compliance), callable by AI agents via MCP and REST API. Free tier; every result cites the governing standard.27MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.