The tools

This is the live registry: the same 22 tools the chat agent calls, the REST catalog lists and MCP publishes, with the version each one is at right now.

Thermal-fluids (6)

Tool Version What it does
air_table_properties 1.0.0 Ideal-gas air tables with variable specific heats (Cengel A-17 / Moran A-22 convention: h = 0 at 0 K, s0 at 1 atm), for air-standard cycle analysis, gas turbines, and any problem that says 'use air tables' or 'variable specific heats'.
fluid_properties 1.0.0 Exact thermodynamic properties of a real fluid at a state fixed by exactly two independent properties (for a saturated mixture: pressure or temperature plus quality).
heat_exchanger 1.0.0 Heat exchanger analysis by the effectiveness-NTU method.
humid_air_properties 1.0.0 Moist-air (psychrometric) properties from dry-bulb temperature plus exactly one of relative_humidity (fraction 0-1), wet_bulb, dew_point, or humidity_ratio (kg water per kg dry air), at an optional total pressure (default standard atmosphere).
pipe_pressure_drop 1.0.0 Pressure drop in a straight pipe run: Darcy-Weisbach friction (Colebrook friction factor, laminar handled automatically), minor losses from a total fittings K value, and elevation change.
pump_operating_point 1.0.0 Pump operating point: intersects a supplied pump curve with the system curve head = static_head + resistance_coefficient * flow^2.

Electrical power (9)

Tool Version What it does
fault_equivalent 1.0.0 Elementary balanced three-phase BOLTED fault equivalent from explicit series reactances on one common MVA base: x_source + x_transformer + x_line = total_x_pu, then fault_current_pu = 1/total_x_pu, base_current_a = base_mva*1e6/(sqrt(3)*voltage_kv*1000), fault_current_a = fault_current_pu*base_current_a and fault_mva = base_mva/total_x_pu.
feeder_voltage_drop 1.1.0 Balanced three-phase feeder voltage drop from a lumped series RL model: voltage_drop_line_line = sqrt(3)*I*L*(R'*cos(theta) + X'*sin(theta)), sending_voltage = receiving_voltage + drop and percent_drop = drop/sending_voltage*100 (referred to the sending-end voltage).
motor_power 1.0.0 Three-phase motor shaft/electrical power mapping at one stated operating point, with rated and starting quantities kept separate (plan S3.5).
multiphase_feeder_power_flow 1.0.0 Multiphase (unbalanced) distribution feeder MODEL CONTRACT: it validates a complete feeder and profile model and then REFUSES to solve it, because no distribution power-flow engine is adopted in this deployment.
per_unit_base_change 1.0.0 Per-unit impedance base change: Z_pu_new = Z_pu * (new_base_mva/old_base_mva) * (old_base_kv/new_base_kv)^2, for the same physical impedance moved from one declared base pair to another.
power_factor_relations 1.0.0 Power-factor relationships: give EXACTLY TWO of real_power_kw, reactive_power_kvar, apparent_power_kva and power_factor and the tool solves the power triangle, returning all four plus angle_deg (signed: positive = current lagging) and pf_sense.
three_phase_power 1.0.0 Balanced three-phase power from a line-to-line RMS voltage and a line RMS current: apparent power S = sqrt(3)*V_LL*I_L (three-phase total, VA), and with power_factor also real power P = S*pf (W), reactive power Q = S*sqrt(1-pf^2) (var) and power_factor_angle_deg.
transformer_impedance 1.0.0 Transformer equivalent-circuit and performance numbers from nameplate data.
unbalanced_phase_currents 1.0.0 Unbalanced phase currents and neutral-conductor current on a three-phase FOUR-WIRE WYE service, from a declared load on each phase at a declared line-to-line terminal voltage.

Cross-domain workflows (1)

Tool Version What it does
pump_motor_feeder 1.1.0 Cross-domain pump/motor/feeder workflow: takes ONE steady-state duty point from the piping to the electrical supply in one call, by dispatching pipe_pressure_drop, pump_operating_point, motor_power, feeder_voltage_drop and (when declared) transformer_impedance through the same registry any other caller uses, with the arithmetic links dispatched to calculate.

Arithmetic (1)

Tool Version What it does
calculate 1.0.0 Exact multi-step arithmetic.

networks (2)

Tool Version What it does
network_power_flow 1.0.0 Balanced steady-state AC power flow (Newton-Raphson, via pandapower) on a substation or transmission network the caller declares in full.
network_short_circuit 1.0.0 Initial symmetrical THREE-PHASE short-circuit current at ONE declared bus of a declared network, computed by pandapower's IEC 60909-style short-circuit routine.

thermal-cycles (3)

Tool Version What it does
brayton_cycle 1.1.0 Simple CLOSED Brayton gas cycle solved as a real network through the TESPy solver.
heat_pump_cycle 1.0.1 Simple vapour-compression heat pump or chiller solved as a real network through the TESPy solver on CoolProp reference equations of state.
rankine_cycle 1.1.0 Simple Rankine steam cycle solved as a real network through the TESPy solver on CoolProp IAPWS-95 water properties.

One call across two domains

pump_motor_feeder carries a single steady-state duty point from the liquid piping to the electrical supply in one call. It implements no new arithmetic: each step below is dispatched to a tool from the table above, through the same dispatcher chat, REST and MCP use, so every number in the answer carries the tool id, tool version and execution id that produced it. The whole chain is one execution, not 8.

StepWhat it establishes
pipe_system friction and fittings head of the pipe run at the reference flow, from Darcy-Weisbach with the caller's actual inner diameter, roughness and total fittings K
system_curve the system curve the pump must work against: static head from the elevation rise plus the boundary pressure difference in head, and the quadratic resistance coefficient k = head_loss / flow^2
pump_duty the duty point where the supplied pump curve crosses that system curve, by bounded interpolation of the supplied points only
shaft_power hydraulic power rho*g*Q*H at the duty point and the shaft power it demands through the stated pump efficiency
motor_demand the motor's real, reactive and apparent electrical demand and line current at that shaft load, on the stated efficiency and power factor AT the load
feeder_loading voltage drop of the one feeder carrying that motor current, from the caller's per-km series impedance and length
transformer_load_fraction the transformer's load fraction: the motor's apparent power over the transformer's kVA rating
transformer_loading the transformer's percent R and X on its rated kVA base, plus loss and efficiency bookkeeping at that load fraction when the losses are declared

The worked example, with its numbers

A transfer pump moving water through a straight steel run into a pressurised vessel. The inputs and results below are reference case wf-pmf-si-001, published in this repository and graded against hand arithmetic at 1e-09 relative tolerance on every row. It is textbook-style data with no customer, site or project information in it, which is why it can be shown here at all.

Some of the inputs

InputValueUnit
Reference flow 160.0 m3/h
Pipe inner diameter 154.1 mm
Pipe length 320.0 m
Elevation rise 18.0 m
Supply voltage (line-to-line) 400.0 V
Transformer rating 45.0 kVA

What one call returns

Quantity Value Stored Unit
Pump duty flow 159.956 159.95638849150328 m3/h
Pump duty head 44.6105 44.610466762039216 m
Pump shaft power 24.8759 24.875939677088613 kW (mechanical, at the coupling)
Motor real input power 26.7483 26.748322233428617 kW (real input, three-phase total)
Motor apparent power 30.7452 30.74519796945818 kVA (three-phase total)
Motor line current 44.3769 44.376870809887535 A (line RMS)
Feeder voltage drop 5.52116 5.521160787819607 V (line-to-line)
Feeder drop 1.3615 1.3614975793355548 percent of the sending-end voltage
Transformer loading 0.683227 0.6832266215435151 fraction of rated kVA
Transformer efficiency 0.982368 0.9823677267646782 fraction

The Value column is a rounded presentation. The Stored column is the full-precision number the tool returns and the record keeps; nothing downstream ever calculates from the rounded one. Open this example as a stored record.

How you reach it

Chat

Ask in plain language. The agent picks the tool, validates the arguments against its schema before anything runs, and shows you the call it made. Results attach to a study you can revise and compare.

REST API

A versioned engineering API at /api/engineering/v1/: the tool and method catalog, studies and revisions, synchronous or durable execution with polling and cancellation, and artifact download. Bearer elm- keys with scopes, created at /keys/.

MCP

The same registry over the Model Context Protocol, so an assistant calls the tools directly. Setup, endpoint and the honest client-compatibility list.

Records

Every run is persisted: the confirmed inputs, the normalized inputs, the tool and version, assumptions, diagnostics and the pinned method. Reports and exports render from that stored result - no model is asked to recreate a number.

What it is not

  • Not a replacement for engineering judgment or for a licensed engineer's review. Results are inputs to your work, not sign-off.
  • Not a general Python sandbox. The arithmetic tool is an AST-whitelisted evaluator: numbers, variables and math functions only.
  • Not a claim of coverage beyond the table above. If a tool is not listed, it does not exist here yet, and the agent will say so rather than improvise a number.
Sign in with Google See the examples

Signing in with Google creates your account. Access to chat, the API and MCP is switched on once an administrator approves it, so you may wait a little before your first calculation. No card is asked for at any point.