{"name":"intry","title":"Intry field calculators","version":"1.0.0","description":"Free, code-accurate field calculators for HVAC technicians and electricians, exposed as callable tools. Every result returns a structured readout and the cited NEC 2023 section, manufacturer data, industry standard, federal rule, or bend geometry it was computed from, plus a verdict where the reading calls for one. No login, no API key.","homepage":"https://www.intrysys.com","documentation":"https://www.intrysys.com/tools","contact":"danial@nicetrylabs.com","mcp":{"endpoint":"https://www.intrysys.com/api/mcp","transport":"streamable-http","protocol":"mcp","protocolVersion":"2025-06-18","auth":"none"},"accuracy":"Every value traces to the cited NEC 2023 section, manufacturer data, industry standard, federal rule, or bend geometry, with the specific section, table, or identity named on the result. The numbers Intry's calculators compute come from a locked source module and are re-checked on every deploy, not hand-typed.","verified":{"standard":"Intry Verified","spec":"https://www.intrysys.com/verified","note":"Every tool result carries a machine-legible `verified` object: what it was calculated from, how it was checked, and who has final say."},"tools":[{"name":"voltage_drop","title":"Voltage Drop Calculator","description":"Compute voltage drop for a copper or aluminum branch/feeder run using the NEC K-factor method (VD = 2·K·I·L / CM, K=12.9 Cu / 21.2 Al). SCOPE, and it governs how you read the answer: the 3% voltage-drop target is an Informational Note under NEC 210.19, and NEC 90.5(C) states that informational notes 'are informational only and are not enforceable as requirements'. Conductor AMPACITY (NEC 310.16 + 240.4), by contrast, is mandatory under 210.19(A), which requires an ampacity 'not less than the larger of' the load-based minimums. So this tool returns THREE sizes and they are not interchangeable: the voltage-drop-only minimum (a recommendation), the ampacity minimum at standard conditions (a requirement), and the minimum overall, which is the LARGER of the two per 210.19(A). If the wireSize you pass cannot carry the amps you pass, the verdict reads 'Undersized for the load' and a BLOCKER names 210.19(A) - the voltage-drop percentage is still computed and still correct, and it is still not permission to pull that conductor.","inputSchema":{"type":"object","properties":{"wireSize":{"type":"string","enum":["14","12","10","8","6","4","3","2","1","1/0","2/0","3/0","4/0","250","300","350","400","500","600","700","750","800","900","1000","1250","1500","1750","2000"],"description":"Conductor size, AWG or kcmil (e.g. '12', '1/0', '250')."},"amps":{"type":"number","description":"Load current in amps.","exclusiveMinimum":0},"length":{"type":"number","description":"One-way run length in feet.","minimum":0},"voltage":{"type":"number","description":"System voltage (default 240).","exclusiveMinimum":0},"phase":{"type":"string","enum":["single","three"],"description":"single or three phase (default single)."},"material":{"type":"string","enum":["cu","al"],"description":"cu = copper, al = aluminum (default cu)."}},"required":["wireSize","amps","length"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"wire_size","title":"Wire Size Calculator","description":"Size a conductor for a load per NEC 310.16 with temperature correction (310.15(B)(1)), conduit-fill bundling (310.15(C)(1)), the 110.14(C) terminal cap, the 240.4(D) small-conductor limit, and the matching EGC (250.122). Copper or aluminum. Returns wire size, breaker, ground, and a verdict.","inputSchema":{"type":"object","properties":{"amps":{"type":"number","description":"Load current in amps.","exclusiveMinimum":0},"continuous":{"type":"boolean","description":"Continuous load (3h+)? Applies the 125% factor. Default false."},"voltage":{"type":"number","description":"System voltage (default 240).","exclusiveMinimum":0},"phase":{"type":"string","enum":["single","three"],"description":"Default single."},"material":{"type":"string","enum":["cu","al"],"description":"Default cu."},"insulation":{"type":"string","description":"Insulation type (THHN, THWN-2, XHHW-2, TW, THW, ...). Default THHN."},"ambientTemp":{"type":"number","description":"Ambient temperature in °F (default 86).","minimum":-40,"maximum":185},"conductorsInConduit":{"type":"string","description":"Current-carrying conductors in the raceway (default '3')."},"distance":{"type":"number","description":"One-way run length in feet (informational; default 0).","minimum":0},"terminationC":{"type":"number","enum":[60,75],"description":"Equipment termination temperature rating per NEC 110.14(C)(1), from the marking on the breaker, panelboard and lugs. 60 for unmarked or 60°C-marked equipment, 75 for 60/75°C or 75°C-marked. Default 75. NEC 110.14(C)(1)(a) makes 60°C the column for circuits rated 100 amperes or less UNLESS the equipment is listed and marked otherwise, so 75 is a marking-conditional value and not the code default. If the marking is unknown, 60 is the conservative choice.","minimum":60,"maximum":75}},"required":["amps"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"ev_charger","title":"EV Charger Circuit Calculator","description":"Size a Level 2 EV charger circuit per NEC Article 625: conductor and breaker at 125% continuous, EGC, GFCI requirement, receptacle vs hardwire, and a rule-of-thumb panel-capacity check. Returns wire/breaker/ground, charge speed, and a verdict on whether the panel likely has room.","inputSchema":{"type":"object","properties":{"amps":{"type":"number","description":"Charger output current in amps (e.g. 48).","exclusiveMinimum":0},"voltage":{"type":"number","description":"Circuit voltage (default 240).","exclusiveMinimum":0},"distance":{"type":"number","description":"One-way run length in feet (default 50).","minimum":0},"material":{"type":"string","enum":["cu","al"],"description":"Default cu."},"mainBreakerAmps":{"type":"number","description":"Existing main breaker / service size (default 200).","exclusiveMinimum":0},"existingLoadPercent":{"type":"number","description":"Rough existing panel load as % of main (default 50).","minimum":0,"maximum":100},"batteryKwh":{"type":"number","description":"EV battery size in kWh, for charge-speed estimate (default 75).","exclusiveMinimum":0},"plug":{"type":"string","enum":["NEMA 14-50","hardwired"],"description":"Connection type (default hardwired)."}},"required":["amps"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"conduit_fill","title":"Conduit Fill Calculator","description":"Check conduit fill compliance per NEC Chapter 9 (53% one wire, 31% two, 40% three or more; 60% for a nipple ≤24\"). Supports EMT, IMC, RMC, PVC40, PVC80, ENT and mixed conductor lists. Returns fill %, the limit, remaining capacity, jam risk, and the next size up if over.","inputSchema":{"type":"object","properties":{"conduitType":{"type":"string","enum":["EMT","IMC","RMC","PVC40","PVC80","ENT"],"description":"EMT, IMC, RMC, PVC40, PVC80, or ENT."},"conduitSize":{"type":"string","enum":["1/2","3/4","1","1-1/4","1-1/2","2","2-1/2","3","3-1/2","4"],"description":"Trade size, e.g. '3/4'."},"nipple":{"type":"boolean","description":"Is this a nipple ≤24\" (60% fill, no derate)? Default false."},"conductors":{"type":"array","description":"Conductors in the raceway.","items":{"type":"object","properties":{"size":{"type":"string","description":"Wire size, e.g. '12'."},"insulation":{"type":"string","description":"Insulation type (THHN, THWN-2, XHHW, TW, THW, ...). Default THHN."},"qty":{"type":"number","description":"Count of this conductor."}},"required":["size","qty"]}}},"required":["conduitType","conduitSize","conductors"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"box_fill","title":"Box Fill Calculator","description":"Compute junction/device box fill per NEC 314.16: conductor volume allowances, the device yoke (2×), clamps (1×), grounds (1×), and support fittings. Returns total volume used vs the box volume, pass/fail, and a suggested box if over.","inputSchema":{"type":"object","properties":{"boxType":{"type":"string","description":"Standard box type key (e.g. '4x1-1/2 square'), or omit and pass customVolume."},"customVolume":{"type":"number","description":"Box volume in cubic inches (overrides boxType).","exclusiveMinimum":0},"conductors":{"type":"array","description":"Insulated conductors entering the box.","items":{"type":"object","properties":{"size":{"type":"string","enum":["18","16","14","12","10","8","6"],"description":"Conductor size in AWG (e.g. '12'). NEC Table 314.16(B)(1) prints a volume allowance for 18 through 6 AWG only; larger conductors and kcmil sizes are outside this table and are refused rather than answered."},"count":{"type":"number"}},"required":["size","count"]}},"deviceYokes":{"type":"number","description":"Number of devices (switch/receptacle yokes). Default 0.","minimum":0},"largestDeviceConductor":{"type":"string","description":"Largest conductor on a device. Default largest present."},"internalClamps":{"type":"boolean","description":"Internal cable clamps present? Default false."},"largestClampConductor":{"type":"string","description":"Largest conductor for the clamp allowance."},"egcCount":{"type":"number","description":"Number of equipment grounds. Default 0.","minimum":0},"largestEgc":{"type":"string","description":"Largest EGC size."},"terminalBlocks":{"type":"number","description":"Number of internal terminal blocks. Default 0.","minimum":0},"luminaireStud":{"type":"boolean","description":"Fixture stud present? Default false."},"hickey":{"type":"boolean","description":"Hickey present? Default false."}},"required":["conductors"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"superheat_subcooling","title":"Superheat & Subcooling Calculator","description":"Diagnose refrigerant charge from gauge readings: superheat = suction line temp minus saturation temp at suction pressure; subcooling = saturation temp at liquid pressure minus liquid line temp. PT interpolation for R-410A, R-454B, R-32, R-22, R-134a and more. Returns superheat/subcooling °F, a four-quadrant diagnosis, the charging action, and a verdict with a confidence level (never a confident call on off-chart pressures or near-zero superheat).","inputSchema":{"type":"object","properties":{"refrigerant":{"type":"string","enum":["R-410A","R-407C","R-134a","R-404A","R-454B","R-32","R-22","R-448A","R-449A","R-290"],"description":"Refrigerant, e.g. 'R-410A' or 'R-454B'."},"suctionPressure":{"type":"number","description":"Suction (low-side) gauge pressure, psig.","minimum":-14.7},"suctionTemp":{"type":"number","description":"Suction line temperature, °F.","minimum":-100,"maximum":300},"liquidPressure":{"type":"number","description":"Liquid (high-side) gauge pressure, psig.","minimum":-14.7},"liquidTemp":{"type":"number","description":"Liquid line temperature, °F.","minimum":-100,"maximum":300},"meteringDevice":{"type":"string","enum":["txv","fixed"],"description":"txv or fixed orifice (default txv)."},"systemType":{"type":"string","enum":["no-receiver","receiver","unknown"],"description":"Whether the system has a liquid receiver. On a receiver system the receiver holds the surplus charge, so subcooling stops indicating charge and this tool reports it as a measurement without grading it; superheat is unaffected and stays graded. Omit only if unknown: the default is derived from the refrigerant's usual application, and it refuses rather than guesses."}},"required":["refrigerant","suctionPressure","suctionTemp","liquidPressure","liquidTemp"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"mca_mocp","title":"MCA & MOCP Breaker Calculator","description":"From an HVAC nameplate MCA and MOCP (or from compressor RLA + fan FLA in RLA mode), return the minimum wire size (NEC 310.16, copper and aluminum), the breaker (largest standard 240.6(A) rating not exceeding MOCP per 440.22), the ground (250.122), and voltage drop. Surfaces warnings rather than throwing.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["nameplate","rla"],"description":"nameplate (enter MCA/MOCP) or rla (enter loads). Default nameplate."},"mca":{"type":"number","description":"Minimum circuit ampacity from the nameplate (nameplate mode).","exclusiveMinimum":0},"mocp":{"type":"number","description":"Maximum overcurrent protection from the nameplate.","exclusiveMinimum":0},"loads":{"type":"array","items":{"type":"number"},"description":"MOTOR loads only in rla mode (compressor RLA, fan FLA); the largest gets the 125% factor per NEC 440.33."},"otherNonMotorAmps":{"type":"number","description":"Any NON-motor load on the same circuit (strip heat, crankcase heater). NEC 440.34 governs once this is present, so it must not be passed inside loads[].","minimum":0},"voltage":{"type":"number","description":"Circuit voltage (default 240).","exclusiveMinimum":0},"phase":{"type":"string","enum":["single","three"],"description":"Default single."},"distance":{"type":"number","description":"One-way run feet for a VD check; 0 skips it (default 0).","minimum":0},"material":{"type":"string","enum":["cu","al"],"description":"Default cu."},"tempRating":{"type":"number","enum":[60,75],"description":"Termination temperature rating (default 75).","exclusiveMinimum":0}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"line_set","title":"A2L Line Set Calculator","description":"Size the liquid and suction line set for R-454B, R-32, or R-410A by tonnage and length, and return a REUSE / FLUSH & REUSE / REPLACE verdict for an existing R-410A (or R-22) set, with the per-foot charge adjustment. Key facts encoded: R-410A and R-454B both use POE oil so no mineral-oil flush (that is R-22 only); R-454B runs within ~5% of R-410A pressures.","inputSchema":{"type":"object","properties":{"newRefrigerantId":{"type":"string","enum":["r-454b","r-32","r-410a"],"description":"New refrigerant."},"previousRefrigerantId":{"type":"string","enum":["r-410a","r-22","r-454b","r-32","none"],"description":"Existing set's refrigerant (default none)."},"tons":{"type":"number","enum":[1.5,2,2.5,3,3.5,4,5],"description":"System tonnage. The sizing table carries exactly these rows: 1.5, 2, 2.5, 3, 3.5, 4, 5.","minimum":1.5,"maximum":5},"totalLengthFt":{"type":"number","description":"Total line-set length in feet.","exclusiveMinimum":0},"elbows":{"type":"number","description":"Number of elbows (default 0).","minimum":0},"verticalRiseFt":{"type":"number","description":"Vertical rise in feet (default 0).","minimum":0},"existingLiquid":{"type":"string","description":"Existing liquid line OD, e.g. '3/8' (default n/a)."},"existingSuction":{"type":"string","description":"Existing suction line OD, e.g. '7/8' (default n/a)."},"damaged":{"type":"boolean","description":"Is the existing set damaged/kinked? Default false."}},"required":["newRefrigerantId","tons","totalLengthFt"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"load_can_panel_handle","title":"Existing-Load Panel Check (NEC 220.87)","description":"Answer 'can my existing panel handle a new load (EV charger, heat pump, ...)?' using the NEC 220.87 existing-dwelling method: 125% of the measured 12-month peak demand plus the new load, compared to the service rating. Returns pass/fail, the total, and the remaining margin.","inputSchema":{"type":"object","properties":{"serviceAmps":{"type":"number","description":"Service / main breaker rating (e.g. 200).","exclusiveMinimum":0},"voltage":{"type":"number","description":"Service voltage (default 240).","exclusiveMinimum":0},"demandSource":{"type":"string","enum":["utility","recording"],"description":"Source of the peak-demand figure (default utility)."},"demandValue":{"type":"number","description":"Existing peak demand value.","minimum":0},"demandUnit":{"type":"string","enum":["kw","a"],"description":"Unit of demandValue (default a)."},"newLoadValue":{"type":"number","description":"New load to add.","minimum":0},"newLoadUnit":{"type":"string","enum":["va","a"],"description":"Unit of newLoadValue (default a)."},"continuous":{"type":"boolean","description":"Optional conservative screen. When true, the new load enters the check at 125% of its rating. Leave false (the default) for the literal NEC 220.87 reading: a new load, including an EV charger at its 220.57 value, is added at 100% here; the 125% continuous factor (NEC 210.20(A)/625.42) sizes the charger's own branch circuit, not this service-adequacy check. A strict 2023-edition AHJ may instead apply 125% to a continuous new load; set continuous:true for that conservative screen."}},"required":["serviceAmps","demandValue","newLoadValue"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"conduit_offset","title":"Conduit Offset Bend Calculator","description":"Marks and shrink for an EMT offset bend: distance between bends = offset depth × multiplier (1/sin θ: 10°=6, 22.5°=2.6, 30°=2, 45°=1.4, 60°=1.2), plus the run shrink. Supports 1/2\", 3/4\", 1\", 1-1/4\" hand benders.","inputSchema":{"type":"object","properties":{"offsetDepth":{"type":"number","description":"Offset depth (obstruction height) in inches.","exclusiveMinimum":0},"angle":{"type":"number","description":"Bend angle in degrees (10, 22.5, 30, 45, or 60).","exclusiveMinimum":0,"maximum":90},"conduitSize":{"type":"string","enum":["1/2\"","3/4\"","1\"","1-1/4\""],"description":"EMT trade size (default 3/4\")."}},"required":["offsetDepth","angle"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"saddle_bend","title":"Saddle Bend Calculator","description":"Marks and shrink for an EMT saddle bend. 3-point (points=3, over a round obstruction like a pipe): center bend at the full angle, two outer bends at half the angle; center-to-outer spacing = depth × multiplier (1/sin of the outer angle: 45° center → 2.61), shrink ≈ depth × 3/16\" at 45°. 4-point (points=4, over a wide flat obstruction like a duct or I-beam): two opposing offsets with a flat top spanning the obstruction width; travel per side = depth × multiplier, shrink is doubled. Saddle marks depend only on angle and depth, not conduit size, so they are the same for every EMT trade size.","inputSchema":{"type":"object","properties":{"points":{"type":"number","enum":[3,4],"description":"3 for a 3-point saddle (round obstruction), 4 for a 4-point saddle (wide/flat obstruction). Default 3.","minimum":3,"maximum":4},"depth":{"type":"number","description":"Saddle depth in inches (obstruction height plus clearance).","exclusiveMinimum":0},"angle":{"type":"number","description":"For a 3-point saddle, the CENTER bend angle (typically 45; outer bends are half). For a 4-point saddle, the angle of all four bends (typically 22.5 or 30).","exclusiveMinimum":0,"maximum":90},"width":{"type":"number","description":"4-point only: the obstruction width in inches (the flat-top span between the two inner marks). Ignored for a 3-point saddle.","minimum":0}},"required":["depth","angle"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"water_heater_circuit","title":"Water Heater Circuit Calculator","description":"Size the branch circuit for an electric or heat-pump (hybrid) water heater per NEC 422.13 (a fixed storage water heater 120 gal or less is a continuous load, sized at 125%): conductor (310.16), breaker (240.6(A) with the 240.4(D) small-conductor limit), and EGC (250.122). For a 120V plug-in heat-pump water heater, pass sharedCircuitRating to also check whether it may share a 15A or 20A general-purpose branch circuit or needs a dedicated one. NEC 210.23(B)(2) caps fastened-in-place equipment at 50% of the circuit (7.5A/10A); because a storage water heater is a continuous load (422.13) the circuit must carry 125% of it (210.19(A)/210.20(A)), so the largest raw nameplate that fits is 6A on a 15A circuit, 8A on a 20A. Returns wire/breaker/ground and, when a shared-circuit rating is given, a SHARE_OK / DEDICATED_REQUIRED verdict with the arithmetic.","inputSchema":{"type":"object","properties":{"watts":{"type":"number","description":"Nameplate element/max wattage (e.g. 4500 for a standard hybrid, 2250 for a low-amp unit).","exclusiveMinimum":0},"volts":{"type":"number","description":"Supply voltage (default 240 for a dedicated hybrid; a shared-circuit check assumes 120V unless you set this; use 120 for any plug-in unit).","exclusiveMinimum":0},"sharedCircuitRating":{"type":"number","enum":[15,20],"description":"If set, also check whether a 120V unit at this nameplate may share a branch circuit of this rating (15 or 20 A).","exclusiveMinimum":0}},"required":["watts"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"induction_range_circuit","title":"120V Induction Range Circuit Calculator","description":"Size the branch circuit for a 120V plug-in (battery-buffered) induction range or cooktop from its WALL / CHARGE draw (NEVER the 5-10 kW induction burner peaks, which are battery-fed): conductor (310.16), breaker (240.6(A) with the 240.4(D) small-conductor limit), and EGC (250.122), given both non-continuous and continuous (>=3h recharge, 125% per 210.20(A)) branches. Pass sharedCircuitRating to also check whether it may share a general-purpose 15A or 20A branch circuit. The shared-circuit cap depends on the MOUNTING: a FREESTANDING range is not fastened in place, so NEC 210.23(B)(1) caps it at 80% (12A on 15A, 16A on 20A) with the companion Table 210.21(B)(2); a DROP-IN COOKTOP is FIXED / fastened in place (NEC Art. 100), so the stricter NEC 210.23(B)(2) 50% cap governs (7.5A on 15A, 10A on 20A) - pass fastenedInPlace:true for a drop-in cooktop or wall oven. A 15A freestanding range exceeds the 12A/15A cap but can use a 20A circuit; a 15A drop-in cooktop exceeds even the 10A/20A cap and needs a dedicated circuit. Returns wire/breaker/ground and, when a shared-circuit rating is given, the shared-circuit verdict with the arithmetic.","inputSchema":{"type":"object","properties":{"wallAmps":{"type":"number","description":"The manufacturer-stated WALL / CHARGE draw in amps (e.g. 12 for the Copper Charlie, 15 for the Impulse Cooktop or Electra Induction Stove). Never the induction burner kW, which the battery supplies.","exclusiveMinimum":0},"volts":{"type":"number","description":"Wall-side voltage (default 120).","exclusiveMinimum":0},"sharedCircuitRating":{"type":"number","enum":[15,20],"description":"If set, also check whether the unit may share a general-purpose branch circuit of this rating (15 or 20 A).","exclusiveMinimum":0},"fastenedInPlace":{"type":"boolean","description":"TRUE for a drop-in cooktop or wall oven (fixed / fastened in place -> NEC 210.23(B)(2) 50% shared cap); FALSE (default) for a freestanding range (not fastened -> 210.23(B)(1) 80% cap). Only affects the shared-circuit verdict."}},"required":["wallAmps"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"max_ev_charger","title":"Biggest EV Charger Calculator (NEC 220.87 + EVEMS)","description":"Answer 'what is the BIGGEST EV charger I can install without a panel upgrade?' Inverts the NEC 220.87 existing-load method: from the service size and the measured 12-month peak demand it returns the largest standard EVSE output that fits (the added charger enters the 220.87 service check at 100% of its 220.57 value, so headroom / voltage, floored to a standard rating; the 125% continuous factor sizes only its branch) plus the branch wire/breaker/ground. Optionally pass a load-management device TYPE (shed = DCC, throttle = Emporia/Wallbox Power Boost, circuit-share = Splitvolt) to get the device-enabled charger. FIRE LOCK: the branch is ALWAYS sized to 125% of the FULL EVSE hardware output, with no exception and no input that reduces it - never the shed/throttle setpoint, and never a declared 625.42(B) adjusted rating. NEC 625.42(B) does permit an EVSE to be rated at its restricted-access adjusted current setting, but every precondition it attaches (restricted access per 750.30(C), automatic cease-on-malfunction, field marking of the branch-circuit supply, and the adjusted rating printed on the rating label per the manufacturer's instructions) is a site fact this tool cannot verify, so passing evseAdjustedRatingAmps returns a BLOCKER naming that rule instead of a smaller conductor. An external EMS relaxes only the service/feeder calc (625.42(A)/220.70/750.30).","inputSchema":{"type":"object","properties":{"serviceAmps":{"type":"number","description":"Service / main breaker rating, e.g. 100, 125, 150, 200.","exclusiveMinimum":0},"voltage":{"type":"number","description":"Service/charger voltage (default 240; use 120 for Level 1).","exclusiveMinimum":0},"demandSource":{"type":"string","enum":["utility","recording"],"description":"Source of the peak-demand figure (default utility)."},"demandValue":{"type":"number","description":"Existing measured peak demand.","minimum":0},"demandUnit":{"type":"string","enum":["kw","a"],"description":"Unit of demandValue (default a)."},"material":{"type":"string","enum":["cu","al"],"description":"Branch conductor material (default cu)."},"distance":{"type":"number","description":"One-way run length in feet (informational; default 0).","minimum":0},"device":{"type":"string","enum":["shed","throttle","circuit-share"],"description":"Load-management device TYPE. Omit for the plain 220.87 inverse solve."},"deviceRatingAmps":{"type":"number","description":"shed: the EVSE pass-through breaker; circuit-share: the existing shared-branch breaker; throttle: the EVSE hardware output.","exclusiveMinimum":0},"hardwareOutputAmps":{"type":"number","description":"The full EVSE hardware output the branch is protected to. Defaults from device+deviceRatingAmps if omitted.","exclusiveMinimum":0},"evseAdjustedRatingAmps":{"type":"number","description":"NEC 625.42(B): the EVSE's OWN restricted-access adjustable rating, if one is set. ACCEPTED BUT NEVER APPLIED TO THE BRANCH - passing it does not shrink the conductor. It returns a blocker naming 625.42(B) / 750.30(C) and the site conditions that would have to be verified first.","exclusiveMinimum":0}},"required":[],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"solar_backfeed_breaker","title":"Solar Backfeed Breaker Calculator (NEC 705.12 120% Rule)","description":"Answer 'how big a solar/PV backfeed breaker can this panel take?' using the NEC 705.12(B)(2) 120% rule for a busbar supplied from opposite ends: the backfeed breaker is capped at 120% of the busbar ampacity minus the main breaker, rounded DOWN to a standard 240.6(A) size (a raw 55 A allowance is not a real breaker, so it becomes 50 A). Returns the max backfeed breaker, the supportable inverter continuous output (breaker / 1.25), and a verdict. SCOPE: the opposite-end 120% configuration ONLY - a main-lug-only panel (no main to bound the bus) uses the 100% sum rule instead, and center-fed / split-bus panels are excluded. This sizes the load-side breaker; when no standard breaker fits, a supply-side (line-side) connection per NEC 705.11 is the path.","inputSchema":{"type":"object","properties":{"busbarAmps":{"type":"number","description":"Panel busbar / bus rating in amps (e.g. 200, 225).","exclusiveMinimum":0},"mainOcpdAmps":{"type":"number","description":"The main breaker (busbar overcurrent device) rating in amps (e.g. 200).","exclusiveMinimum":0}},"required":["busbarAmps","mainOcpdAmps"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"cold_climate_hp_capacity","title":"Cold-Climate Heat Pump Capacity Calculator","description":"For a specific cold-climate heat pump model, return its MAX heating capacity at any outdoor temperature (linear interpolation of the printed 47/17/5F rated points, clamped at the lowest rated row, never extrapolated colder), the maintained-% at 5F against BOTH denominators (MAX@5 / rated@47 and MAX@5 / MAX@47, each with its source BTU numbers), the COP at MAX at 5F, and, when a design heat load and design outdoor temperature are supplied, the balance point and backup heat as a READOUT. Every number is AHRI-certified NEEP ccASHP data pinned to a specific AHRI certificate. This is an HVAC capacity tool: authority is the AHRI/NEEP data and the manufacturer submittal, never the NEC.","inputSchema":{"type":"object","properties":{"model":{"type":"string","enum":["mitsubishi-hyper-heat","mitsubishi-h2i-ductless","mitsubishi-smart-multi","bosch-ids","bosch-ids-premium","fujitsu-xlth","carrier-performance","daikin-aurora","lg-r32","gree","mrcool"],"description":"Model slug, e.g. 'mitsubishi-hyper-heat', 'fujitsu-xlth', 'lg-r32'."},"outdoorTempF":{"type":"number","description":"Outdoor temperature in F to read the capacity at (default 5).","minimum":-60,"maximum":120},"designHeatLoadBtu":{"type":"number","description":"Optional: the home's design heat load in BTU/hr, for the balance-point / backup-heat readout.","exclusiveMinimum":0},"designTempF":{"type":"number","description":"Optional: the design outdoor temperature in F for the balance-point readout (default 5 when a design load is given).","minimum":-60,"maximum":120}},"required":["model"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"a2l_charge_limit","title":"A2L Refrigerant Charge Limit Calculator","description":"The maximum A2L refrigerant charge (R-454B, R-32, and 6 more) for a room, or the minimum room area for a given charge, per UL 60335-2-40 4th ed Annex GG and ANSI/ASHRAE 15.2-2024. m_max = min(AF x 2.5 x LFL^1.25 x h x sqrt(A), 0.5 x LFL x h x A, 52 x LFL); at or below m1 = 6 x LFL there is no room-size restriction. Set direction to 'max-charge' (give the room area) or 'min-area' (give the system charge). Circulation (continuous or refrigerant-detection-initiated) doubles ONLY the gravity term (airflow factor AF = 2). Returns the limit, the governing term, the m1/m2 thresholds, and the release height used. A3 refrigerants (e.g. R-290 propane) are excluded: the Annex GG room-area formula does not apply to them. SCOPE: this tool sizes ONE space per call and takes no list of spaces. On a multi-head system ANSI/ASHRAE 15.2-2024 section 9.4.1 makes the space with the SMALLEST DISPERSAL VOLUME (floor area x dispersal height) govern the whole system, which is not always the smallest room by area, so call it once per space and take the smallest answer rather than assuming the obvious room governs. This is an HVAC compliance tool; authority is UL 60335-2-40 and ANSI/ASHRAE 15.2-2024, never the NEC. It is a sanity check; the equipment listing and the manufacturer's installation manual are the binding documents.","inputSchema":{"type":"object","properties":{"refrigerant":{"type":"string","enum":["r-454b","r-32","r-452b","r-454a","r-454c","r-455a","r-1234yf","r-1234ze","r-290"],"description":"Refrigerant id, e.g. 'r-454b' or 'r-32'."},"direction":{"type":"string","enum":["max-charge","min-area"],"description":"'max-charge' = biggest charge for a room (give areaFt2); 'min-area' = smallest room for a charge (give chargeLb). Default max-charge."},"mounting":{"type":"string","enum":["floor","window","wall","ceiling","custom"],"description":"Indoor-unit release-height class: floor (0.6 m), window (1.0 m), wall (1.8 m), ceiling/cassette/supply register (2.2 m), or custom (with heightFt). Default wall (the more conservative common height)."},"areaFt2":{"type":"number","description":"Floor area in ft2 of the ONE space this call sizes (max-charge direction). This tool answers for a single space and takes no list of spaces. On a system with more than one indoor unit, ANSI/ASHRAE 15.2-2024 section 9.4.1 makes the governing space the one with the smallest dispersal VOLUME, which section 9.4 defines as floor area multiplied by dispersal height, so the smallest room by AREA is not always the one that governs: a larger room with a lower indoor unit can be the binding one. Where the units sit at different heights, call this tool once per space and take the smallest result, or use the web calculator, which takes the whole system. Default 150.","exclusiveMinimum":0},"chargeLb":{"type":"number","description":"System refrigerant charge in lb, nameplate plus field-added for line-set length (min-area direction). Default 6.","exclusiveMinimum":0},"heightFt":{"type":"number","description":"Release height in ft when mounting = 'custom' (clamped to 2.0 to 9.0 ft per ANSI/ASHRAE 15.2-2024 Table 9-3 footnote a). Default 7.2.","exclusiveMinimum":0},"circulation":{"type":"boolean","description":"Continuous or RDS-initiated air circulation (AF = 2, doubles only the gravity term). Default false."}},"required":["refrigerant"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"manual_j_load","title":"Manual J Residential Load Calculator (ACCA 8th Edition Form J1)","description":"Compute a residential heating and cooling load component by component, following the ACCA Manual J 8th Edition Form J1 worksheets against the REAL ASHRAE Chapter 14 design conditions of a named weather station. ⚠ THIS TOOL RETURNS NO WHOLE-HOUSE TOTAL AND THAT IS DELIBERATE, NOT A FAILURE. A Manual J heating total needs an opaque panel tally (Worksheet D: the wall, ceiling, door and floor constructions) and four site declarations that Manual J section 4-11 prints a zero-condition for, and THIS TOOL COLLECTS NEITHER. The web calculator at /tools/hvac/manual-j-load-calculator collects both and does report a whole-house heating total; send a user there rather than adding these components up. ⚠ THIS TOOL RETURNS NO COOLING TOTAL EITHER, for the same reason: it collects none of the answers one needs. ⚠⚠ THAT IS A STATEMENT ABOUT THIS TOOL AND NOT ABOUT THE PRODUCT, and until 2026-08-09 it read \"NO COOLING TOTAL EXISTS ON ANY SURFACE OF THIS PRODUCT\", which was a claim one tool made about surfaces it cannot see and which the web calculator falsified the day it shipped one. On that surface: It reports a whole-house COOLING load as the PAIR Manual J section 5-12 sizes equipment from: the total sensible load (Form J1ae line 20) and the total latent load (line 21). Either is withheld when a printed term of it is unanswered or has no printed route in the abridged edition, and the specific term is named on the result rather than folded in. The AED excursion adjustment is NOT one of the blockers: Manual J Appendix 3 section A3-2 (printed folio 421) prints that for MJ8AE the excursion adjustment is always zero, and this description said it was until 2026-08-09. Summing the components that ARE computed would give a number that is always too small, in the direction that undersizes equipment. Do not add them up and present the sum as the load. ⚠ THIS TOOL TAKES NO ZIP CODE AND RETURNS NO DISTANCE: the weather station is NAMED, by `state` and `station`, exactly as the ASHRAE Handbook prints it. Call with `state` alone to be told which stations exist for it. When a state has a station the tool cannot supply, it says how many the printed book lists for it rather than substituting a station from elsewhere. This is not an ACCA-approved Manual J and does not replace a permit-grade load calculation.","inputSchema":{"type":"object","properties":{"state":{"type":"string","description":"US state, spelled out as the ASHRAE Handbook prints it (e.g. 'California'). Used with `station` to select the weather station."},"station":{"type":"string","description":"The weather station name exactly as the ASHRAE Handbook prints it (e.g. 'ALAMEDA'). Case-insensitive. If you do not know it, call with `state` only and read the coverage answer."},"conditionedFloorAreaSqft":{"type":"number","description":"Conditioned floor area in square feet, e.g. 2000.","exclusiveMinimum":0,"maximum":25000},"ceilingHeightFt":{"type":"number","description":"Average ceiling height in feet, e.g. 8. Area times height is the above-grade volume Worksheet E needs.","minimum":6,"maximum":30},"bedrooms":{"type":"number","description":"Bedroom count, e.g. 3. Manual J Figure 3-1 sets occupants = bedrooms plus one; that is the printed rule.","minimum":0,"maximum":20},"stories":{"type":"string","enum":["single","two"],"description":"Storey count, a Worksheet E input. Manual J Table 5A prints single-story and two-story air change values only; a taller dwelling is outside the printed table and is refused rather than approximated."},"tightness":{"type":"string","enum":["Tight","Semi-Tight","Average","Semi-Loose","Loose"],"description":"Manual J Table 5A envelope tightness class. All five printed construction rows are accepted."},"fireplaces":{"type":"number","description":"Number of fireplaces, e.g. 0, a Worksheet E term.","minimum":0,"maximum":10},"applianceOptionBtuh":{"type":"number","enum":[1200,2400],"description":"Manual J prints exactly two appliance block loads and this tool will not accept a third. Call without it to be told which two.","minimum":1200,"maximum":2400},"windowRoughOpeningSqft":{"type":"number","description":"Total window ROUGH OPENING area in square feet, e.g. 240, not glass area. Table 2A and Table 3A-1 both use the rough opening; glass area understates every window by its frame. Omit or pass 0 for no glass.","minimum":0,"maximum":10000},"windowExposure":{"type":"string","enum":["North","NE or NW","East or West","SE or SW","South"],"description":"Table 3A-1 prints five compass groupings, not eight and not a bearing. Map a bearing yourself; this tool will not bucket one for you."},"windowPanes":{"type":"string","enum":["single","double","triple"],"description":"Manual J check list item 6 admits clear 1, 2 or 3 pane glass, which is exactly this enum, so the pane count alone cannot put a dwelling out of scope. What the glass is MADE of can, and that is windowGlassType."},"windowGlassType":{"type":"string","enum":["clear","heat-absorbing","reflective","low-e"],"description":"★ REQUIRED whenever windowRoughOpeningSqft is supplied, and deliberately NOT defaulted. Manual J check list item 6 admits CLEAR glass only, and Figure 3-5 scopes the abridged edition's Table 2A to '(clear glass)' and its Table 3A to '(3A-1; clear glass)'. So heat-absorbing, reflective and low-e glass each end the calculation with that printed reason rather than being priced off the clear-glass table. Defaulting this to 'clear' would answer a check list item on the caller's behalf."},"windowSash":{"type":"string","enum":["fixed","operable"],"description":"Sash type. Table 2A prints different U-Values for each."},"windowFrame":{"type":"string","enum":["Metal No Break","Metal with Break","Wood, Wood with Metal Clad or Vinyl","Insulated Fiberglass"],"description":"One of Table 2A's four printed frame constructions. Refused rather than defaulted: on the widest row the four columns span 0.38 to 0.72."},"windowInternalShade":{"type":"string","enum":["No Internal Shade","Vertical or Horizontal Blinds with Slats At 45 Degrees","Drape or Roller Shade Half Drawn","Drape or Roller Shade Fully Drawn"],"description":"One of Table 3A-1's four printed internal shade states."}},"required":["state","conditionedFloorAreaSqft","bedrooms"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"outdoor_hvac_gfci","title":"Outdoor HVAC GFCI Requirement (NEC 210.8(F))","description":"Decide whether an outdoor outlet at a DWELLING needs GFCI protection under NEC 210.8(F), keyed to the jurisdiction's own amendments. The NEC's listed-HVAC exception expires 2026-09-01 by its own printed terms, but states amend this section in both directions: some delete the expiry (so HVAC stays exempt), and jurisdictions on the 2020 edition may never have had the exception at all, since it arrived only via TIA 20-19 effective 2022-09-01. This tool REFUSES far more often than it answers, and refusing is the designed behaviour rather than a failure. There are two distinct refusals and the response says which one applies: the jurisdiction has not been read at all, or it HAS been researched to its own primary documents and still cannot be answered, because its adoption does not reach dwellings, routes dwelling work to the International Residential Code instead of the NEC, sets the code county by county, or carries an exception narrower than the NEC's. Reading a state therefore does NOT imply an answer for it. Do not apply a national default to a refusal, and do not infer a verdict from the absence of one. It does not evaluate 210.8(B) (other than dwellings).","inputSchema":{"type":"object","properties":{"state":{"type":"string","description":"US state or District of Columbia, spelled out (e.g. 'Georgia')."},"occupancy":{"type":"string","enum":["dwelling","other"],"description":"210.8(F) covers dwellings only. 'other' returns a refusal pointing at 210.8(B)."},"equipment":{"type":"string","enum":["listed-hvac","lighting-outlet","submersible-well-pump","snow-melting-deicing","other-outlet"],"description":"What the outlet supplies. 'listed-hvac' is the condenser/heat-pump case the 2026 sunset is about. 'snow-melting-deicing' is written out of 210.8(F) by its own stem and handed to 426.28/427.22, so it returns a refusal."},"connection":{"type":"string","enum":["hardwired","cord-and-plug"],"description":"REQUIRED, and it changes which rule governs. 210.8(F) is about outdoor OUTLETS, hardwired included. 210.8(A) is about RECEPTACLES, so a cord-and-plug unit is ALSO reached by 210.8(A)(3) 'Outdoors', which has no HVAC exception and no ampere ceiling. This tool refuses on cord-and-plug rather than answer from a section that cannot speak for the other one. Ask the user if you do not know; do not assume."},"phase":{"type":"string","enum":["single","three"],"description":"REQUIRED. Every edition of 210.8(F) we have read is scoped to 'single-phase branch circuits', so a three-phase circuit returns a refusal rather than an answer."},"workType":{"type":"string","enum":["new","replacement"],"description":"New installation, or replacing existing equipment (which triggers its own paragraph from the 2023 edition onward)."},"branchCircuitAmps":{"type":"number","description":"Branch-circuit rating in amperes. 210.8(F) reaches 50 A or less on the editions we have read.","minimum":5,"maximum":400},"voltsToGround":{"type":"number","description":"Volts to ground. 210.8(F) reaches 150 V or less to ground.","minimum":12,"maximum":600},"location":{"type":"string","enum":["outdoors","garage-at-or-below-grade","accessory-building","boathouse"],"description":"Outlet location."},"energizationDate":{"type":"string","description":"ISO date (YYYY-MM-DD) the circuit is energised or inspected. The answer changes at the 2026-09-01 sunset where a state has not amended it."}},"required":["state","equipment","occupancy","connection","phase"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}]}