{"name":"intry","title":"Intry field calculators","version":"1.0.0","description":"The deterministic engines behind Intry, the decision engine for HVAC and electrical: free, code-accurate tools that cite primary documents, callable by an MCP client that can reach a remote server. 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, 240.4(B)'s next-size-up breaker (stated with its condition whenever an answer relies on it) and 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.","enum":["TW","UF","THW","THWN","XHHW","RHW","USE","THHN","THWN-2","XHHW-2","RHH","RHW-2","USE-2"]},"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').","enum":["1-3","4-6","7-9","10-20","21-30","31-40","41+"]},"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 panel-capacity check. Supply meteredDemandValue to get the real NEC 220.87 existing-loads calculation with shown work; omit it and the panel check falls back to a labelled rule of thumb that is NOT an NEC method. Returns wire/breaker/ground, charge speed, and a verdict on whether the service takes the charger. Supply evemsDeviceType when a listed NEC 625.42(A) load-management device is installed: the panel verdict is then the maximum load that system permits rather than the raw 220.87 headroom. NEC 625.42(A) sets the maximum equipment load for the service and feeder calculation. This tool applies it to the NEC 220.87 method, so it moves the panel verdict ONLY on a call that also supplies `meteredDemandValue`: without a meter reading there is no 220.87 calculation here to relax, and the verdict is byte-identical to the same call without the device. It never changes the circuit - conductor, breaker and ground stay sized to 125% of the charger's full output on every path.","inputSchema":{"type":"object","properties":{"amps":{"type":"number","minimum":8,"maximum":80,"description":"Charger output current in amps (e.g. 48). This calculator answers for 8 to 80 A, which is a scope of the tool and not a code limit."},"voltage":{"type":"number","description":"Circuit voltage (default 240). This calculator answers for 120 to 240 V single-phase premises supply. Outside that the conductor, breaker and ground would still be sized from amps, but the published charge speed and voltage drop would not be answerable, so the call is refused rather than half-answered.","minimum":120,"maximum":240},"distance":{"type":"number","description":"One-way run length in feet (default 50). 0 to 300, the same run lengths the web tool answers for.","minimum":0,"maximum":300},"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":"FALLBACK ONLY. Rough existing panel load as % of main (default 50). Used only when meteredDemandValue is absent; it is a rule of thumb, not an NEC method.","minimum":0,"maximum":100},"meteredDemandValue":{"type":"number","description":"The home's measured maximum demand. Supplying this runs the real NEC 220.87 existing-loads calculation instead of the rule of thumb.","exclusiveMinimum":0,"maximum":2000},"meteredDemandUnit":{"type":"string","enum":["kw","a"],"description":"Unit of meteredDemandValue (default kw)."},"demandSource":{"type":"string","enum":["utility","recording"],"description":"utility = 12-month utility peak; recording = 30-day recording-ammeter peak (the 220.87 exception). Default utility."},"batteryKwh":{"type":"number","description":"EV battery size in kWh, for the hours-to-full estimate (default 75). Ignored when vehicleId is supplied and that vehicle publishes a battery capacity: the roster's sourced figure is used instead, so the charge rate and the battery capacity always come from the same source.","minimum":10,"maximum":200},"plug":{"type":"string","enum":["NEMA 14-50","hardwired"],"description":"Connection type (default hardwired). A NEMA 14-50 request is answered as hardwired when the breaker computed for amps exceeds the receptacle's 50 A rating; the effective connection is returned as 'connection' in the result."},"evemsDeviceType":{"type":"string","enum":["shed","throttle","circuit-share"],"description":"NEC 625.42(A): a listed energy management system already installed on this service, by mechanism. shed = a demand-control relay that disconnects the charger before the panel reaches its limit; throttle = a device that lowers the charge current to a setpoint; circuit-share = an automatic interlock time-sharing one existing 240 V branch. Supplying it makes the panel verdict the maximum load that system permits (625.42(A) / 220.70 / 750.30) instead of the raw 220.87 headroom. NEC 625.42(A) sets the maximum equipment load for the service and feeder calculation. This tool applies it to the NEC 220.87 method, so it moves the panel verdict ONLY on a call that also supplies `meteredDemandValue`: without a meter reading there is no 220.87 calculation here to relax, and the verdict is byte-identical to the same call without the device. It changes no circuit: conductor, breaker, ground, voltage drop and parts list are sized from `amps`, the full hardware rating, on every path. This tool has not verified that any device is installed, listed, set or marked; it returns the conditions it can name as a site condition."},"evemsDeviceRatingAmps":{"type":"number","description":"The declared device's controlling rating in amps, and it means a different quantity per mechanism: for shed it is the EV pass-through breaker, for circuit-share it is the shared branch's breaker, and the charger is 80% of it (NEC 210.20(A)). A throttle needs none, because what it controls is the charger already given in `amps`. Ignored unless evemsDeviceType is supplied. Declared without evemsDeviceType it declares nothing and changes nothing; supplied with a type that needs it and omitted, the tool says so rather than answering silently.","exclusiveMinimum":0},"vehicleId":{"type":"string","enum":["ford-f150-lightning-2025-sr","ford-f150-lightning-2025-er-123","ford-f150-lightning-2025-er-131","nissan-leaf-2025-s","nissan-leaf-2025-sv-plus","kia-ev6-2025-light-standard-range","kia-ev6-2025-light-long-range"],"description":"The vehicle being charged, from a closed roster of 7 records (Ford, Nissan, Kia) whose onboard AC charger rating or EPA consumption rating was fetched from a primary document Intry holds. Supplying it makes the charge speed the lower of the car's onboard limit and the charger's output, computed on that vehicle's own EPA combined consumption figure, and makes the hours-to-full use that vehicle's own battery. It changes no circuit: conductor, breaker, ground, voltage drop, panel check and parts list are sized from the charger's full rating on every path, because NEC 625.41/625.42 size the branch from the EVSE and NEC 220.57 values the service load at 7,200 VA or the nameplate rating of the equipment, whichever is larger, the equipment being the EVSE and not the car. The roster is small on purpose: A vehicle appears here only when its manufacturer publishes an onboard-charger figure, or the EPA publishes a consumption figure, that Intry fetched and holds. An unsourced trim is dropped, never estimated. A vehicle absent from this list is one Intry either holds no source for, or holds a source for that lacks a field a record requires; it is NEVER one that cannot be charged. GM (Silverado EV, Blazer EV, Equinox EV) were attempted and Intry holds no manufacturer specification document giving an onboard charger rating for them; the pages it did fetch and archive carry none, which is a limit of what those documents say rather than a refutation. Those vehicles can still be chosen from the EPA tier, where the figures EPA itself publishes are shown and no rating is taken from the car. "},"ambientF":{"type":"number","enum":[86,95,104,113,122,131,140],"description":"Ambient temperature at the run, in F (default 86, which is the 30 C basis NEC Table 310.15(B)(1)(1) is based on). NEC Table 310.15(B)(1)(1) corrects conductor ampacity above it. Values below the table's basis are refused rather than answered: below 30 C the correction is an uplift, which permits a smaller conductor, and this tool does not size a conductor down on a declared temperature. The listed values are the ones the web tool offers, not a limit on what this accepts. A value between two of them is answered, at the correction factor for the table row that contains it, because NEC Table 310.15(B)(1)(1)'s rows are ranges: 87 F and 94 F both fall in the 87-95 F row and both return 0.96, and 96 F falls in the next row and returns 0.91. Your declared value is echoed back on the result, not replaced. Do not round a measured temperature down to one of the listed values: rounding 94 F to 86 F moves the factor from 0.96 to 1.00, which permits a smaller conductor than the site condition allows. Send what you measured.","minimum":86,"maximum":140},"conductorsInConduit":{"type":"string","enum":["1-3","4-6","7-9","10-20","21-30","31-40","41+"],"description":"Current-carrying conductors sharing the raceway (default 1-3, which applies no adjustment). NEC Table 310.15(C)(1) prints an adjustment for more than three; its own title is 'Adjustment Factors for More Than Three Current-Carrying Conductors', so 1-3 is the absence of an adjustment rather than a row of it. NOT inferred from `plug`: whether a 14-50's neutral is current-carrying is NEC 310.15(E) and this tool does not decide it."},"adjustedSettingAmps":{"type":"number","description":"NEC 625.42(B): a restricted-access adjusted current setting BELOW the unit's rating, when the EVSE is field-adjustable. It is accepted and applied to nothing: the conductor, breaker, ground, voltage drop, panel check and parts list are all sized from the full hardware rating in `amps`, and do not move. It adds a site-condition blocker naming 625.42(B) and 750.30(C), plus the circuit that setting would call for if a qualified person certifies those conditions. Accepted range 8 to 80 A. Outside that, or at or above `amps`, no conditional circuit is returned. The setting must also land on a standard EVSE output: 16, 24, 32, 40, 48 A above 120 V, or 12 A at Level 1, where the unit's own rating cannot exceed 16 A either. A setting between two rungs returns no conditional circuit, because a value no listed unit can actually be set to is not a setting a circuit may be sized from.","exclusiveMinimum":0}},"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\"). When every conductor is one size (the same area including insulation), the count NEC Chapter 9 Note 7 permits passes even a little over the percent (a decimal of 0.8 or more rounds up), and the result says so; mixed sizes are held to the percent. 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'.","enum":["1","2","3","4","6","8","10","12","14","250","300","350","400","500","600","700","750","800","900","1000","1/0","2/0","3/0","4/0"]},"insulation":{"type":"string","description":"Insulation type (THHN, THWN-2, XHHW, TW, THW, ...). Default THHN.","enum":["THHN","THWN-2","XHHW","XHHW-2","RHH*","RHW*","RHW-2*","TW","THW"]},"qty":{"type":"number","minimum":1,"maximum":1000,"description":"Count of this conductor, a whole number from 1 to 1000."}},"required":["size","qty"],"additionalProperties":false}}},"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"],"additionalProperties":false}},"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.","enum":["18","16","14","12","10","8","6"]},"internalClamps":{"type":"boolean","description":"Internal cable clamps present? Default false."},"largestClampConductor":{"type":"string","description":"Largest conductor for the clamp allowance.","enum":["18","16","14","12","10","8","6"]},"egcCount":{"type":"number","description":"Number of equipment grounds. Default 0.","minimum":0},"largestEgc":{"type":"string","description":"Largest EGC size.","enum":["18","16","14","12","10","8","6"]},"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 (null on a refused reading), each axis's status and grade phrase (on a commercial refrigeration fluid the superheat grade is withheld at every station: the phrase reads measured, not graded, and its target is null), a diagnosis and charging action adjudicated against the charging-method gate (with the equipment unstated over this tool, the charge is not concluded from a reading), and a verdict with a confidence level and a basis (never a confident call on off-chart pressures or near-zero superheat). It takes no equipment, operating mode, outdoor temperature or model number: it does not conclude the charge, and it carries no heating-mode charging rule (each heat pump maker prints its own, and a nameplate subcooling figure is a cooling figure in every book we hold). The web calculator takes them and, in heating, names the unit maker's own rule where a book we hold prints one: https://www.intrysys.com/tools/hvac/superheat-subcooling-calculator","inputSchema":{"type":"object","properties":{"refrigerant":{"type":"string","enum":["R-410A","R-407C","R-134a","R-404A","R-454B","R-32","R-22","R-407A","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). On a fixed orifice the correct superheat is set by the load, and this tool cannot take the load inputs, so a fixed-orifice superheat is reported with its position against the general field band and no grade word, and no add or recover call is made from it."},"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; on a comfort-cooling fluid superheat stays graded; on a commercial refrigeration fluid the field-band superheat grade is withheld at every station answer, and the number prints without a grade. Omit only if unknown: the default is derived from the refrigerant's usual application, and it refuses rather than guesses."},"station":{"type":"string","enum":["evaporator-outlet","compressor-inlet"],"description":"Where the suction line temperature was taken on a commercial refrigeration system: at the evaporator outlet (where the refrigerant producers state their figures) or at the compressor inlet (where the compressor maker states its floodback minimum). The two stations give different superheat figures. On a commercial refrigeration fluid, answering `compressor-inlet` withholds this tool's field-band superheat grade (the number still prints) and prints the publishers' compressor-inlet figures with their conditions, never as a grade; on a comfort-cooling fluid the answer is reported as not used. Omit if unknown; the readout then asks where it was taken. On a commercial refrigeration fluid the field-band superheat grade is withheld at every station answer including none, and the station answer chooses which publishers' figures print beside the number."}},"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. It sizes the conductor at 86 F, the ambient Table 310.16 itself assumes, with 3 or fewer current-carrying conductors and insulation rated at the termination temperature given. This tool takes no ambient, conductor count or insulation input; the web calculator takes them (with a rooftop run) and resizes the conductor.","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. Required in nameplate mode (the default): an empty request is refused rather than sized from a default circuit. To size from compressor RLA and fan FLA instead, pass mode: 'rla' with loads.","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, the compressor RLA FIRST, then fan FLA; the largest gets the 125% factor per NEC 440.33. For a circuit with no compressor (an air handler's strips and blower), pass compressorOnCircuit: false instead: this tool cannot tell a blower from a compressor."},"compressorOnCircuit":{"type":"boolean","description":"Is a hermetic compressor on this circuit? Default true. false is refused with a pointer to the heat strip calculator: Article 440's relief (Table 240.4(G)) is for circuits supplying a compressor (440.1, 440.21), and an air handler's strips and blower are Article 424, where 240.4(D) holds #10 copper to 30 A."},"otherNonMotorAmps":{"type":"number","description":"Any NON-motor load on the COMPRESSOR's circuit (strip heat in a packaged unit, 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).","minimum":60,"maximum":75}},"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. On R-410A: Carrier LLG-R454B-01 is an R-454B guideline. On an R-410A line this tool applies its per-foot figures and its factory-charge basis as this tool's own judgement; your unit's own installation instructions govern where they print an adder. 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 625.42 declares EV charging a continuous load; 210.20(A)/625.41 apply the 125%) 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 offset bend (EMT, IMC or RMC): distance between bends = offset depth × the bender-chart multiplier (1/sin θ taken to a tape-measure value, four of them to one decimal and 10° rounded up from 5.76: 10°=6.0, 22.5°=2.6, 30°=2.0, 45°=1.4, 60°=1.2; exact 1/sin at any other angle), plus the run shrink. Supports 1/2\", 3/4\", 1\", 1-1/4\" hand benders. Offset MARKS depend only on angle and depth, so they are the same for every EMT trade size; whether the bend can be MADE depends on the size's NEC Chapter 9 Table 2 bend radius (the two arcs need straight conduit between them), so pass conduitSize and the tool refuses an impossible offset and names the smallest depth that works. A finished run's next tool is conduit_fill, which takes conduitSize WITHOUT the inch mark (\"3/4\", not \"3/4\\\"\") and conduitType as here.","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 and 60 use the bender-chart multiplier; any other angle uses the exact 1/sin and the source says so.","exclusiveMinimum":0,"maximum":90},"conduitSize":{"type":"string","description":"Trade size (default 3/4\"). 1-1/4\" is EMT only; IMC and RMC carry 1/2\", 3/4\" and 1\". The marks do not depend on it; whether the bend can be made does, through the size's NEC Chapter 9 Table 2 bend radius.","enum":["1/2\"","3/4\"","1\"","1-1/4\""]},"conduitType":{"type":"string","enum":["EMT","IMC","RMC"],"description":"Conduit type (default EMT). Greenlee's SITE-RITE hand-bender manual rates the same benders for 1/2\" through 1-1/4\" EMT and 1/2\" through 1\" rigid and IMC, and its older IM 1071 manual says 1/2\" through 1\" rigid; this tool carries IMC and RMC in 1/2\", 3/4\" and 1\" (1-1/4\" is not carried in IMC or RMC: no held bender document bends it by hand) at the NEC Chapter 9 Table 2 radius by trade size (342.24(A), 344.24(A)). No rigid take-up is carried: no rigid size has two held primaries that agree: Klein prints 6\" and 8\" for 1/2\" and 3/4\" rigid on its 3/4\" and 1\" EMT benders, and Gardner Bender's rigid column prints 3-3/4\", 7\" and an unusable 38-1/2\" under a \"Conduit Size\" row key its document never defines, so the two cannot even be lined up. A stub, back-to-back, kick or stick in IMC or RMC needs `deduct`."}},"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 a saddle bend (EMT, IMC or RMC). 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 × the bender saddle-table multiplier where a held guide prints the center angle (45° center → 2.5, 60° center → 2.0; exact 1/sin of the outer angle at any other center, shown beside it), 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 × the bender-chart offset multiplier (10°=6.0, 22.5°=2.6, 30°=2.0, 45°=1.4, 60°=1.2; exact 1/sin at any other angle), shrink is doubled. Saddle MARKS depend only on angle and depth, so they are the same for every EMT trade size; whether the bend can be MADE depends on the size's NEC Chapter 9 Table 2 bend radius (the arcs need straight conduit between them), so pass conduitSize and the tool refuses an impossible saddle and names the smallest input that works: the smallest depth, or, when a 4-point's depth alone cannot fix it, the smallest depth-and-width pair. A finished run's next tool is conduit_fill, which takes conduitSize WITHOUT the inch mark (\"3/4\", not \"3/4\\\"\") and conduitType as here.","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 (obstruction height) in inches, as the bender saddle tables enter it. For a 3-point saddle the readout prints the centerline peak these marks reach, which sits at or below the entered depth once the center bend is laid at the bend radius; for a 4-point saddle it prints the flat top these marks reach, which the chart multiplier's rounding puts slightly under the entered depth at 22.5 and 45 degrees, so raise the depth until the printed flat top clears.","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},"conduitSize":{"type":"string","description":"Trade size (default 3/4\"). 1-1/4\" is EMT only; IMC and RMC carry 1/2\", 3/4\" and 1\". The marks do not depend on it; whether the bend can be made does, through the size's NEC Chapter 9 Table 2 bend radius.","enum":["1/2\"","3/4\"","1\"","1-1/4\""]},"conduitType":{"type":"string","enum":["EMT","IMC","RMC"],"description":"Conduit type (default EMT). Greenlee's SITE-RITE hand-bender manual rates the same benders for 1/2\" through 1-1/4\" EMT and 1/2\" through 1\" rigid and IMC, and its older IM 1071 manual says 1/2\" through 1\" rigid; this tool carries IMC and RMC in 1/2\", 3/4\" and 1\" (1-1/4\" is not carried in IMC or RMC: no held bender document bends it by hand) at the NEC Chapter 9 Table 2 radius by trade size (342.24(A), 344.24(A)). No rigid take-up is carried: no rigid size has two held primaries that agree: Klein prints 6\" and 8\" for 1/2\" and 3/4\" rigid on its 3/4\" and 1\" EMT benders, and Gardner Bender's rigid column prints 3-3/4\", 7\" and an unusable 38-1/2\" under a \"Conduit Size\" row key its document never defines, so the two cannot even be lined up. A stub, back-to-back, kick or stick in IMC or RMC needs `deduct`."}},"required":["depth","angle"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"parallel_bend","title":"Parallel and Matching Bend Calculator","description":"Marks for several conduits (EMT, IMC or RMC) bent side by side so they stay parallel through the bend. The one law is geometry: conduits spaced S center to center in the plane of the bend, all turning t degrees, stay S apart only if each successive conduit toward the inside of the turn has its mark moved S × tan(t/2) closer to the end the marks are measured from; conduits side by side ACROSS the bend plane need no shift. Five modes. parallelOffset: 2 to 6 conduits of one size through one offset (depth × the bender-chart multiplier for the travel, same as conduit_offset), every conduit's two marks shifted by the same amount, travel unchanged. parallelKick: a rack of 2 to 6 conduits, each with a 90 stub, kicked SIDEWAYS (the kick plane is the rack's plane): the 90 marks are identical and each conduit's kick mark moves S × tan(kick/2) toward the stub end; the innermost conduit's leg between its 90 and its kick is the shortest and is the one checked against the NEC Chapter 9 Table 2 bend radius. parallelKickForward: the same rack kicked FORWARD in the plane of the 90, so the conduits stand across the kick plane and every one takes the same marks (shift 0, stated). matchingBends: two conduits of DIFFERENT sizes run PARALLEL through one offset: conduit 2's marks move S × tan(t/2) toward the flush end, the two bends sit on one mitre line and the spacing holds through the offset. matchingCenters: the same pair with NO shift, both offsets centered on one station along the run; through the angled leg the two close up to S × cos(t) and open back to S after it, the tool prints that closer figure, and it refuses when it is inside the two outside diameters. The spacing is floored at half the sum of the two outside diameters in every mode, and the two-size modes also refuse when the two filleted centerlines (each arc at its own radius) would come closer than that through the bends, printing the closest approach beside the marks. Every conduit is checked for arc overlap at its own size's bend radius, and a refusal names the conduit, the limiting leg and the smallest input that works for the whole rack. No bender document we hold defines these bends; the definitions above are the geometry this tool implements. A finished run's next tool is conduit_fill, which takes conduitSize WITHOUT the inch mark (\"3/4\", not \"3/4\\\"\") and conduitType as here.","inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["parallelOffset","parallelKick","parallelKickForward","matchingBends","matchingCenters"],"description":"Which parallel or matching bend (see the description for each). Default parallelOffset."},"spacing":{"type":"number","description":"Center-to-center spacing between adjacent conduits in inches, measured in the plane of the bend.","exclusiveMinimum":0},"depth":{"type":"number","description":"Offset modes: the offset depth (obstruction height) in inches, the same for every conduit.","exclusiveMinimum":0},"angle":{"type":"number","description":"Offset modes: the bend angle in degrees (10, 22.5, 30, 45 and 60 use the bender-chart multiplier; any other angle the exact 1/sin). Kick modes: the kick angle in degrees.","exclusiveMinimum":0,"maximum":90},"count":{"type":"number","enum":[2,3,4,5,6],"description":"parallelOffset, parallelKick, parallelKickForward: how many conduits (2 to 6). Ignored by the matching modes, which take exactly two.","minimum":2,"maximum":6},"stubHeight":{"type":"number","description":"Kick modes: the stub height in inches (the 90 mark is stub height minus the bender take-up).","exclusiveMinimum":0},"kickHeight":{"type":"number","description":"Kick modes: how far the run is kicked over, in inches.","exclusiveMinimum":0},"conduitSize":{"type":"string","description":"Trade size of conduit 1 (default 3/4\"; 1-1/4\" is EMT only, IMC and RMC carry 1/2\", 3/4\" and 1\"), and of every conduit in the same-size modes.","enum":["1/2\"","3/4\"","1\"","1-1/4\""]},"conduitType":{"type":"string","enum":["EMT","IMC","RMC"],"description":"Conduit type (default EMT). Greenlee's SITE-RITE hand-bender manual rates the same benders for 1/2\" through 1-1/4\" EMT and 1/2\" through 1\" rigid and IMC, and its older IM 1071 manual says 1/2\" through 1\" rigid; this tool carries IMC and RMC in 1/2\", 3/4\" and 1\" (1-1/4\" is not carried in IMC or RMC: no held bender document bends it by hand) at the NEC Chapter 9 Table 2 radius by trade size (342.24(A), 344.24(A)). No rigid take-up is carried: no rigid size has two held primaries that agree: Klein prints 6\" and 8\" for 1/2\" and 3/4\" rigid on its 3/4\" and 1\" EMT benders, and Gardner Bender's rigid column prints 3-3/4\", 7\" and an unusable 38-1/2\" under a \"Conduit Size\" row key its document never defines, so the two cannot even be lined up. A stub, back-to-back, kick or stick in IMC or RMC needs `deduct`."},"deduct":{"type":"number","description":"The deduct (take-up) cast on the bender in hand, in inches. Optional on EMT (overrides the Klein and Gardner Bender table value); REQUIRED for a 90 in IMC or RMC, where no two held primaries agree on a take-up. The result's source names it as yours.","minimum":1,"maximum":24},"secondConduitSize":{"type":"string","enum":["1/2\"","3/4\"","1\"","1-1/4\""],"description":"Matching modes: the trade size of conduit 2, the conduit toward the rise (default 1\")."}},"required":["spacing"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"segmented_bend","title":"Segmented 90 Calculator","description":"Marks for a segmented 90: one conduit (EMT, IMC or RMC) turned 90 degrees as a number of equal shallow bends (shots) laid out to a target centerline radius, the way a large-radius sweep is bent on a hand bender. The field method, stated by geometry (no bender document this site holds prints a segmented-bend table): developed length of the sweep = target radius × π / 2; mark spacing = developed length / shots; the first mark sits half a space past the START of the bend, and every shot is bent 90 / shots degrees at its mark. Every mark is measured from the start of the bend, which sits the DRAWN sweep's own radius back from where its two leg lines meet (tangentLength, published beside drawnRadiusMin; 22.75 in for a 24 in target in 2 shots, 23.86 in in 6, the target radius only in the limit). Each shot's arc must fit on its own segment at the NEC Chapter 9 Table 2 bend radius for the size, so the target radius has to exceed the bender's own shoe radius by a margin that FALLS as the shots multiply (R × (4N/π) × tan(π/4N): 1.055 R at 2 shots, 1.001 R at 12); a refusal names the smallest target radius that works at this shot count and the FEWEST shots that work at this radius (more always fit), both re-run. The drawn centerline is a polygon with the bender's arcs at its corners, so the tool prints the closest and farthest the drawn centerline sits from the sweep's center (drawnRadiusMin, drawnRadiusMax) and the largest round object centered on the sweep the pipe wall clears. A finished run's next tool is conduit_fill, which takes conduitSize WITHOUT the inch mark (\"3/4\", not \"3/4\\\"\") and conduitType as here.","inputSchema":{"type":"object","properties":{"targetRadius":{"type":"number","description":"Target centerline radius of the finished sweep, in inches.","exclusiveMinimum":0,"maximum":600},"shots":{"type":"number","description":"How many equal shallow bends make the 90 (a whole number from 2 to 36; one shot is a 90 stub).","minimum":2,"maximum":36},"conduitSize":{"type":"string","description":"Trade size (default 3/4\"). 1-1/4\" is EMT only; IMC and RMC carry 1/2\", 3/4\" and 1\".","enum":["1/2\"","3/4\"","1\"","1-1/4\""]},"conduitType":{"type":"string","enum":["EMT","IMC","RMC"],"description":"Conduit type (default EMT). Greenlee's SITE-RITE hand-bender manual rates the same benders for 1/2\" through 1-1/4\" EMT and 1/2\" through 1\" rigid and IMC, and its older IM 1071 manual says 1/2\" through 1\" rigid; this tool carries IMC and RMC in 1/2\", 3/4\" and 1\" (1-1/4\" is not carried in IMC or RMC: no held bender document bends it by hand) at the NEC Chapter 9 Table 2 radius by trade size (342.24(A), 344.24(A)). No rigid take-up is carried: no rigid size has two held primaries that agree: Klein prints 6\" and 8\" for 1/2\" and 3/4\" rigid on its 3/4\" and 1\" EMT benders, and Gardner Bender's rigid column prints 3-3/4\", 7\" and an unusable 38-1/2\" under a \"Conduit Size\" row key its document never defines, so the two cannot even be lined up. A stub, back-to-back, kick or stick in IMC or RMC needs `deduct`."}},"required":["targetRadius","shots"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"stick_builder","title":"Stick Builder","description":"Marks for MANY bends on ONE length of conduit (EMT, IMC or RMC), listed in order from one reference end (end A): a 90 stub or a kick with 90 at either end, and offsets, 3-point saddles, 4-point saddles and segmented 90s between them, each at its own inputs. Every mark is that bend family's own result translated to the stick; the stick derives no mark of its own. The composition rule is the site's own, stated by geometry (no bender document this site holds prints a chain formula across different families; the manuals lay single families out from a conduit end and say to add the shrink to a distance measured to an obstruction): each bend after the first is placed by `from`, the distance from the previous bend's last mark to this bend's first mark measured on the STRAIGHT PIPE between pencil marks, uncorrected, so a distance measured to an obstruction or to the back of a bend needs its family's shrink added first; a stub or kick at end A is measured from end A by its own rule (the 90 mark at stub height minus the take-up) and one at end B from end B, and the mark table says which end each family measures from; the cut length is the pipe between consecutive marks summed end to end, with member shrink published beside it, never folded in. Every bend lies in one plane and turns left or right (default left); a stub or kick can only be the first or last bend. ONE feasibility predicate runs over the pipe between every pair of consecutive marks across families, less the pipe each bounding arc consumes at the size's NEC Chapter 9 Table 2 radius (an end 90 consumes the take-up less half an OD, minus the radius of straight past its arrow, then the quarter arc, and the kick tool checks the same pipe past its own 90 by the same rule), plus the two end pieces; the finished pipe's closest approach between any two legs that share no bend is measured wall to wall and a stick that would pass through itself is refused. A refusal names the bend and the segment and the smallest change that works, re-run through the whole stick; where two segments are short it names the pair. Returns the mark table (bend, family, angle, station from end A and from end B, distance from the previous mark, which end its family measures from), the cut length, the drawn centerline length (equal to the cut length by construction: the skeleton is built in developed stations), the total shrink, and every member family's own result. A stick of two stubs is NOT the back-to-back tool, which lays its second 90 out by the star point from the first stub's end and carries the field gain in its cut length. A finished run's next tool is conduit_fill, which takes conduitSize WITHOUT the inch mark (\"3/4\", not \"3/4\\\"\") and conduitType as here.","inputSchema":{"type":"object","properties":{"bends":{"type":"array","minItems":1,"maxItems":12,"description":"The bends in order from end A. Each reads only its family's fields: stub90 reads stubHeight; kick90 reads stubHeight, kickAngle, kickHeight; offset reads height, angle; threePointSaddle reads depth, centerAngle; fourPointSaddle reads depth, width, outerAngle; segmented90 reads targetRadius, shots. Every bend but a stub or kick at end A also reads `from`. A supplied field the family does not read is named in the answer's first row and not used.","items":{"type":"object","properties":{"family":{"type":"string","enum":["stub90","kick90","offset","threePointSaddle","fourPointSaddle","segmented90"],"description":"The bend family."},"turn":{"type":"string","enum":["left","right"],"description":"Which way the bend turns in the plane (default left)."},"from":{"type":"number","description":"Distance from the previous bend's last mark (from end A for the first bend) to this bend's first mark, inches, on the straight pipe. Not read by a stub or kick at end A; read by one at end B as the distance to its 90 mark (its kick mark for a kick)."},"stubHeight":{"type":"number","description":"stub90 and kick90: the stub height at that end, inches (to the back of the 90)."},"kickAngle":{"type":"number","description":"kick90: the kick angle, degrees."},"kickHeight":{"type":"number","description":"kick90: the kick height, inches."},"height":{"type":"number","description":"offset: the offset height, inches."},"angle":{"type":"number","description":"offset: the bend angle, degrees."},"depth":{"type":"number","description":"threePointSaddle and fourPointSaddle: the obstruction height, inches, as the bender tables enter it."},"centerAngle":{"type":"number","description":"threePointSaddle: the center bend angle, degrees (the outer bends are half)."},"width":{"type":"number","description":"fourPointSaddle: the obstruction width, inches."},"outerAngle":{"type":"number","description":"fourPointSaddle: the outer bend angle, degrees."},"targetRadius":{"type":"number","description":"segmented90: the target centerline radius, inches."},"shots":{"type":"number","minimum":2,"maximum":36,"description":"segmented90: the number of shots (a whole number from 2 to 36)."}},"required":["family"],"additionalProperties":false}},"tail":{"type":"number","description":"The pipe past the last mark to end B, inches; read only when the last bend is not a stub or kick at end B.","minimum":0,"maximum":600},"conduitSize":{"type":"string","description":"Trade size (default 3/4\"). 1-1/4\" is EMT only; IMC and RMC carry 1/2\", 3/4\" and 1\".","enum":["1/2\"","3/4\"","1\"","1-1/4\""]},"conduitType":{"type":"string","enum":["EMT","IMC","RMC"],"description":"Conduit type (default EMT). Greenlee's SITE-RITE hand-bender manual rates the same benders for 1/2\" through 1-1/4\" EMT and 1/2\" through 1\" rigid and IMC, and its older IM 1071 manual says 1/2\" through 1\" rigid; this tool carries IMC and RMC in 1/2\", 3/4\" and 1\" (1-1/4\" is not carried in IMC or RMC: no held bender document bends it by hand) at the NEC Chapter 9 Table 2 radius by trade size (342.24(A), 344.24(A)). No rigid take-up is carried: no rigid size has two held primaries that agree: Klein prints 6\" and 8\" for 1/2\" and 3/4\" rigid on its 3/4\" and 1\" EMT benders, and Gardner Bender's rigid column prints 3-3/4\", 7\" and an unusable 38-1/2\" under a \"Conduit Size\" row key its document never defines, so the two cannot even be lined up. A stub, back-to-back, kick or stick in IMC or RMC needs `deduct`."},"deduct":{"type":"number","description":"The deduct (take-up) cast on the bender in hand, in inches. Optional on EMT (overrides the Klein and Gardner Bender table value); REQUIRED for a 90 in IMC or RMC, where no two held primaries agree on a take-up. The result's source names it as yours.","minimum":1,"maximum":24}},"required":["bends"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"compound_90","title":"Compound 90 Calculator","description":"Marks for a compound 90: one conduit (EMT, IMC or RMC) turning 90 degrees in TWO bends (45 and 45 by default; 30 then 60 or 60 then 30) around an obstruction that sits in the inside corner against both surfaces the conduit runs on (a beam where the ceiling meets the wall, a pipe along a floor-wall corner). Defined by geometry (no bender document this site holds describes it). The conduit lies against both surfaces, so each surface sits half an OD beyond the conduit's centerline; a rectangle is `width` along the first leg (out from the second surface) by `height` along the second leg (out from the first surface), a square has one `side`, a circle of `diameter` is tucked into the corner touching both surfaces. The chord between the two bends clears the obstruction by `clearance` measured from the PIPE WALL. Returns where each bend sits back from the corner where the two legs' centerlines would meet, the distance between the two marks (first mark 0, second at that distance), the clearance actually drawn with each bend at the NEC Chapter 9 Table 2 radius for the size, and what a one-shot 90 in that size would clear the obstruction by (negative: it hits, which is why a compound bend is needed). The chord must keep straight conduit between the two arcs; a refusal names the smallest clearance that works at this split and any other offered split that answers, both re-run. A size field the chosen shape does not read is named in the answer's first row and not used, never silently dropped. A finished run's next tool is conduit_fill, which takes conduitSize WITHOUT the inch mark (\"3/4\", not \"3/4\\\"\") and conduitType as here.","inputSchema":{"type":"object","properties":{"shape":{"type":"string","enum":["rectangle","square","circle"],"description":"The obstruction's shape (default rectangle)."},"width":{"type":"number","description":"rectangle only: its size along the first leg, out from the second surface, in inches.","exclusiveMinimum":0,"maximum":600},"height":{"type":"number","description":"rectangle only: its size along the second leg, out from the first surface, in inches.","exclusiveMinimum":0,"maximum":600},"side":{"type":"number","description":"square only: its side, in inches.","exclusiveMinimum":0,"maximum":600},"diameter":{"type":"number","description":"circle only: its diameter, in inches.","exclusiveMinimum":0,"maximum":600},"clearance":{"type":"number","description":"Gap from the pipe wall to the nearest point of the obstruction along the chord, in inches (0 or more; default 0.5).","minimum":0,"maximum":120},"firstAngle":{"type":"number","enum":[30,45,60],"description":"The first bend's angle in degrees, 30, 45 or 60; the second bend is 90 minus it (default 45).","exclusiveMinimum":0,"maximum":89.999},"conduitSize":{"type":"string","description":"Trade size (default 3/4\"). 1-1/4\" is EMT only; IMC and RMC carry 1/2\", 3/4\" and 1\".","enum":["1/2\"","3/4\"","1\"","1-1/4\""]},"conduitType":{"type":"string","enum":["EMT","IMC","RMC"],"description":"Conduit type (default EMT). Greenlee's SITE-RITE hand-bender manual rates the same benders for 1/2\" through 1-1/4\" EMT and 1/2\" through 1\" rigid and IMC, and its older IM 1071 manual says 1/2\" through 1\" rigid; this tool carries IMC and RMC in 1/2\", 3/4\" and 1\" (1-1/4\" is not carried in IMC or RMC: no held bender document bends it by hand) at the NEC Chapter 9 Table 2 radius by trade size (342.24(A), 344.24(A)). No rigid take-up is carried: no rigid size has two held primaries that agree: Klein prints 6\" and 8\" for 1/2\" and 3/4\" rigid on its 3/4\" and 1\" EMT benders, and Gardner Bender's rigid column prints 3-3/4\", 7\" and an unusable 38-1/2\" under a \"Conduit Size\" row key its document never defines, so the two cannot even be lined up. A stub, back-to-back, kick or stick in IMC or RMC needs `deduct`."}},"required":[],"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 is a site fact this tool cannot verify, so passing evseAdjustedRatingAmps returns a BLOCKER naming that rule, and the 4 conditions in full, 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.","exclusiveMinimum":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. It is 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":["serviceAmps","demandValue"],"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 https://www.intrysys.com/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, not about the web calculator. On the web calculator: 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. 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}}]}