Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

calc.engineer

REMOTE · CALC.ENGINEER · SCANNED AUG 3

88 free engineering calculators: RF link budgets, LoRa/Meshtastic, PCB, solar, homelab. Keyless.

Available components

+3 this week 56 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security46
Transport & Reachability100
Schema Quality & AI Usability42
  • 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 20141 tokens (~221/item across 91 items; 89 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · calc.engineer

# add to Claude Code
claude mcp add --transport http engineer-calc-calc https://calc.engineer/mcp
# ~/.codex/config.toml
[mcp_servers.engineer-calc-calc]
url = "https://calc.engineer/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "engineer-calc-calc": {
      "type": "remote",
      "url": "https://calc.engineer/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add engineer-calc-calc --url https://calc.engineer/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  engineer-calc-calc:
    url: "https://calc.engineer/mcp"
// mcp.json
{
  "mcpServers": {
    "engineer-calc-calc": {
      "type": "http",
      "url": "https://calc.engineer/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 −1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 52

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://calc.engineer/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=calc.engineer CN=WE1,O=Google Trust Services,C=US 27 Jul 2026 25 Oct 2026 ECDSA 256 ECDSA-SHA256 6c8de0c4441fafea135ce83d632ff978
SANs: calc.engineer, api.calc.engineer, *.api.calc.engineer
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC insecure

Validation of calc.engineer. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
engineer. present 14215 8 Verified
calc.engineer. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://calc.engineer/mcp Verified 200
http (plaintext) http://calc.engineer/mcp Served over HTTP 200
MCP tools — 89 exposed · ~20,020 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
attenuator_pi ~139

Design a Pi-topology resistive attenuator pad. Given a desired attenuation in dB and characteristic impedance (default 50 ohm), computes the three resistor values for a symmetrical Pi-pad network. The Pi attenuator uses two shunt resistors (R1, R3) and one series resistor (R2). Commonly used in RF signal chains to reduce signal level while maintaining impedance match. Compare with attenuator_tee for T-pad topology.

NameTypeReqDescription
attenuation_dbnumberyesDesired attenuation in decibels (positive value)
z0_ohmnumberCharacteristic impedance in ohms (default 50)
NameTypeReqDescription
r1_ohmnumberyesShunt resistor R1 (input side) in ohms
r2_ohmnumberyesSeries resistor R2 (middle) in ohms
r3_ohmnumberyesShunt resistor R3 (output side) in ohms
topologystringyesAttenuator topology identifier

No examples provided.

attenuator_tee ~139

Design a Tee-topology resistive attenuator pad. Given a desired attenuation in dB and characteristic impedance (default 50 ohm), computes the three resistor values for a symmetrical T-pad network. The Tee attenuator uses two series resistors (R1, R3) and one shunt resistor (R2). Commonly used in RF signal chains to reduce signal level while maintaining impedance match. Compare with attenuator_pi for Pi-pad topology.

NameTypeReqDescription
attenuation_dbnumberyesDesired attenuation in decibels (positive value)
z0_ohmnumberCharacteristic impedance in ohms (default 50)
NameTypeReqDescription
r1_ohmnumberyesSeries resistor R1 (input side) in ohms
r2_ohmnumberyesShunt resistor R2 (middle) in ohms
r3_ohmnumberyesSeries resistor R3 (output side) in ohms
topologystringyesAttenuator topology identifier

No examples provided.

battery_autonomy ~270

Calculates how many days a battery bank can sustain loads without solar input — critical for off-grid and backup power sizing. Accounts for depth of discharge, round-trip efficiency (lithium vs lead-acid), minimum state of charge, and optional partial solar contribution during cloudy weather. Outputs autonomy in days and hours, usable capacity, and daily deficit. Use with avg_solar_contribution_pct = 0 for worst-case (no sun) scenarios, or 20-30% for realistic cloudy-day modeling. Chains from solar_sizing (battery_kwh) and solar_load_audit (daily_kwh).

NameTypeReqDescription
avg_solar_contribution_pctnumberAverage solar contribution during autonomy period (0-100%), default 0 for worst-case
battery_kwhnumberyesTotal installed battery capacity in kWh
daily_kwhnumberyesDaily energy consumption in kilowatt-hours (kWh)
dodnumberDepth of discharge (0-1), default 0.8 for lithium
min_soc_pctnumberMinimum state of charge percentage, default 20%
round_trip_efficiencynumberBattery round-trip efficiency (0-1), default 0.90 for lithium, use 0.80 for lead-acid
NameTypeReqDescription
autonomy_daysnumberyesNumber of days the battery can sustain loads
autonomy_hoursnumberyesNumber of hours the battery can sustain loads
battery_cycles_per_yearnumberyesEstimated full discharge cycles per year (365 / autonomy_days)
daily_deficit_kwhnumberyesEffective daily energy need after solar contribution (kWh)
usable_kwhnumberyesUsable battery capacity after DoD and efficiency losses (kWh)

No examples provided.

battery_charge_time ~262

Estimates battery charge time given capacity in mAh, charge current in mA, charger efficiency, and initial state of charge. Accounts for real-world charging losses (typically 80-90% efficient) to produce time in hours and minutes, energy required in Wh (at an optional voltage, default 3.7V for Li-ion), and the C-rate of the charge. Useful for solar charge controller sizing, USB charging time estimation, lead-acid float charging, and EV battery planning. The C-rate output helps verify the charge current is within safe limits (typically 0.5C-1C for Li-ion). Chain from solar_sizing charge_controller_amps to size a solar charging system end-to-end.

NameTypeReqDescription
capacity_mahnumberyesTotal battery capacity in milliamp-hours (mAh)
charge_current_manumberyesCharge current in milliamps (mA)
efficiencynumberCharger efficiency factor (0-1), default 0.85
initial_soc_pctnumberInitial state of charge as percentage (0-100), default 0 (empty)
voltage_vnumberNominal battery voltage for energy calculation (V), default 3.7 for Li-ion
NameTypeReqDescription
c_ratenumberyesC-rate of the charge (charge_current / capacity)
charge_time_hoursnumberyesEstimated charge time in hours
charge_time_minutesnumberyesEstimated charge time in minutes
energy_required_whnumberyesEnergy required to charge at nominal voltage (Wh)

No examples provided.

battery_life ~198

Calculates battery runtime and energy capacity given cell capacity in mAh, nominal voltage, and average current draw. Accounts for real-world discharge efficiency (Peukert-adjacent derating) to produce effective capacity, total energy in Wh, and runtime in hours and days. Useful for IoT sensor node planning, portable device design, UPS hold-up estimation, and solar battery bank cycling analysis. Outputs feed into solar_sizing (battery_kwh) and ups_runtime (battery_wh) for system-level calculations.

NameTypeReqDescription
capacity_mahnumberyesBattery capacity in milliamp-hours (mAh)
current_draw_manumberyesAverage current draw in milliamps (mA)
efficiencynumberDischarge efficiency factor (0-1), accounts for conversion losses and derating, default 0.85
voltagenumberNominal battery voltage (V), default 3.7 for Li-ion
NameTypeReqDescription
effective_capacity_mahnumberyesEffective usable capacity after efficiency derating (mAh)
energy_whnumberyesTotal battery energy in watt-hours (capacity_mah * voltage / 1000)
runtime_daysnumberyesEstimated runtime in days
runtime_hoursnumberyesEstimated runtime in hours

No examples provided.

bmi_calculator ~167

Calculate Body Mass Index (BMI) from weight and height using the WHO standard formula. Supports metric (kg/cm) and imperial (lbs/inches) units. Returns the BMI value, WHO classification (Underweight, Normal, Overweight, Obese Class I-III), and the healthy weight range for the given height. Formula: BMI = weight_kg / (height_m)^2. Useful for health screening, fitness planning, and clinical intake forms.

NameTypeReqDescription
heightnumberyesHeight. Units determined by the 'unit' parameter.
unitstringUnit system. 'metric' = kg and cm. 'imperial' = lbs and inches. Defaults to 'metric'.
weightnumberyesBody weight. Units determined by the 'unit' parameter.
NameTypeReqDescription
bminumberyesBody Mass Index value rounded to 1 decimal.
categorystringyesWHO BMI classification: Underweight, Normal weight, Overweight, Obese Class I/II/III.
healthy_weight_range_highnumberyesHigh end of healthy weight range (BMI 24.9) in the input unit system.
healthy_weight_range_lownumberyesLow end of healthy weight range (BMI 18.5) in the input unit system.
weight_unitstringyesUnit of the weight values in this response (kg or lbs).

No examples provided.

capacitor_charge ~285

Calculates RC capacitor charge timing, energy storage, and transient voltages. Given resistance, capacitance, supply voltage, and optional initial voltage, computes the RC time constant (τ = R×C), time to reach standard charge thresholds (63%, 86%, 95%, 99%), voltage at key time points, energy stored (E = ½CV²), and peak charging current. Optionally calculates time to reach a specific target voltage using t = -τ × ln((Vsupply - Vtarget) / (Vsupply - Vinitial)). Essential for timing circuits, power-on reset delays, debounce networks, and soft-start designs. Chain from rc_filter for frequency-domain analysis or timer_555 for oscillator timing.

NameTypeReqDescription
capacitance_fnumberyesCapacitance in farads (C). Use scientific notation, e.g. 1e-6 for 1 µF.
resistance_ohmnumberyesSeries resistance in ohms (R). Controls charge/discharge rate.
v_initialnumberInitial capacitor voltage in volts (default 0 for fully discharged).
v_supplynumberyesSupply voltage in volts. The voltage the capacitor charges toward.
v_targetnumberTarget voltage to reach in volts (optional). When provided, calculates time to reach this voltage. Must be between v_initial and v_supply.
NameTypeReqDescription
energy_joulesnumberyesEnergy stored at full charge: E = ½CV² in joules.
energy_mjnumberyesEnergy stored at full charge in millijoules.
peak_current_manumberyesPeak charging current at t=0 in milliamps: Ipeak = (Vsupply − Vinitial) / R.
tau_msnumberyesRC time constant in milliseconds.
tau_snumberyesRC time constant (τ = R×C) in seconds.
time_to_63pct_msnumberyesTime to reach 63.2% of (Vsupply − Vinitial) in milliseconds (1τ).
time_to_86pct_msnumberyesTime to reach 86.5% of (Vsupply − Vinitial) in milliseconds (2τ).
time_to_95pct_msnumberyesTime to reach 95.0% of (Vsupply − Vinitial) in milliseconds (3τ).
time_to_99pct_msnumberyesTime to reach 99.3% of (Vsupply − Vinitial) in milliseconds (5τ).
time_to_target_msnumber|nullyesTime to reach v_target in milliseconds (null if v_target not specified).
v_at_1taunumberyesCapacitor voltage after 1τ in volts.
v_at_2taunumberyesCapacitor voltage after 2τ in volts.
v_at_5taunumberyesCapacitor voltage after 5τ in volts.

No examples provided.

channel_utilization ~198

Estimates Meshtastic or LoRa mesh channel utilization percentage based on node count, message rate, and per-packet airtime. Determines how much of the shared radio channel is occupied and computes the maximum number of nodes before exceeding a configurable duty cycle limit (default 10%). Returns utilization percentage, headroom, and total packet count. Chain from lora_airtime to get airtime_ms input. Essential for Meshtastic mesh deployment planning to avoid channel congestion and packet collisions.

NameTypeReqDescription
airtime_msnumberyesTime-on-air per packet in milliseconds. Obtain from lora_airtime tool.
max_duty_cycle_pctnumberMaximum acceptable channel utilization percentage. Default 10% is a common Meshtastic guideline.
messages_per_hour_per_nodenumberAverage messages transmitted per hour per node. Includes position beacons and user messages.
nodesintegeryesNumber of active nodes in the mesh network.
NameTypeReqDescription
headroom_pctnumberyesRemaining headroom before hitting the duty cycle limit (can be negative if over limit).
max_nodes_at_limitintegeryesMaximum number of nodes before exceeding the duty cycle limit.
packets_per_hournumberyesTotal packets per hour across all nodes.
utilization_pctnumberyesCurrent channel utilization as a percentage of total airtime.

No examples provided.

circumference ~128

Calculate the circumference and area of a circle given either a radius or diameter. Provide one or both; if both are given, radius takes precedence. Returns circumference (C = 2πr), area (A = πr²), and both radius and diameter for completeness. Common in mechanical engineering (pulley systems, pipe sizing), electronics (antenna loop calculations, coil winding), civil engineering (manhole covers, circular foundations), and everyday measurement tasks.

NameTypeReqDescription
diameternumberThe diameter of the circle
radiusnumberThe radius of the circle (takes precedence over diameter)
NameTypeReqDescription
areanumberyesArea of the circle (A = πr²)
circumferencenumberyesCircumference of the circle (C = 2πr)
diameternumberyesDiameter of the circle
radiusnumberyesRadius of the circle

No examples provided.

compound_interest ~235

Calculates compound interest growth over time using the formula A = P(1 + r/n)^(nt). Given a principal, annual rate, duration in years, and compounding frequency, returns the future value, total interest earned, effective annual rate (APY), and a year-by-year growth schedule. Supports optional recurring monthly contributions for savings projections. Works for savings accounts, CDs, investment returns, and retirement planning. Currency-agnostic.

NameTypeReqDescription
annual_rate_pctnumberyesAnnual interest rate as a percentage (e.g., 5.5 for 5.5%).
compounds_per_yearintegerHow often interest compounds per year. Allowed: 1 (annually), 2 (semi-annually), 4 (quarterly), 12 (monthly), 52 (weekly), 365 (daily). Defaults to 12.
monthly_contributionnumberOptional recurring monthly contribution added at each month. Defaults to 0.
principalnumberyesInitial investment or deposit amount (any currency unit).
yearsnumberyesInvestment duration in years. Max 100.
NameTypeReqDescription
effective_annual_rate_pctnumberyesEffective annual rate accounting for compounding frequency (APY).
future_valuenumberyesFinal balance after all compounding and contributions.
schedulearrayyesYear-by-year growth schedule.
total_contributionsnumberyesTotal of all contributions (principal + recurring).
total_interestnumberyesTotal interest earned over the full period.

No examples provided.

confidence_interval ~248

Calculate the confidence interval for a sample mean. Given a sample mean, sample size, standard deviation, and confidence level, computes the margin of error, lower and upper bounds, critical z-score, and standard error. Supports finite population correction (FPC) when a population size is provided, which narrows the interval for samples that are a large fraction of the population. Uses the Abramowitz & Stegun rational approximation for the inverse normal CDF to derive the critical z-value. Common in survey analysis, A/B testing, and quality control.

NameTypeReqDescription
confidence_levelnumberConfidence level as a decimal between 0 and 1 (e.g. 0.95 for 95%). Default is 0.95.
population_sizeintegerTotal population size for finite population correction (FPC). Omit for infinite population assumption.
sample_meannumberyesThe observed sample mean (x-bar) around which the confidence interval is centered.
sample_sizeintegeryesThe number of observations in the sample (n). Must be a positive integer.
standard_deviationnumberyesThe standard deviation of the sample or population. Must be a positive number.
NameTypeReqDescription
confidence_levelnumberyesThe confidence level used (echoed back).
lower_boundnumberyesLower bound of the confidence interval.
margin_of_errornumberyesHalf-width of the confidence interval (z_score * standard_error).
standard_errornumberyesStandard error of the mean, optionally adjusted with finite population correction.
upper_boundnumberyesUpper bound of the confidence interval.
z_scorenumberyesCritical z-value used for the given confidence level.

No examples provided.

cooling_btu ~287

Estimate the cooling load (BTU/hr) for a homelab or server closet based on equipment wattage, room dimensions, insulation quality, and solar exposure. All electrical power converts to heat — this tool calculates equipment heat output, envelope heat gain through walls, and solar gain to produce a total BTU/hr cooling requirement. Recommends AC tonnage, mini-split sizing (rounded to standard 6K BTU increments), and exhaust fan CFM for ventilation-only cooling. Use after power_cost to size cooling for your homelab room.

NameTypeReqDescription
ambient_temp_fnumberAmbient temperature outside the room in degrees Fahrenheit
insulationstringWall/ceiling insulation quality: poor (uninsulated garage), average (standard drywall), good (insulated interior), excellent (server room with vapor barrier)
room_height_ftnumberRoom ceiling height in feet
room_length_ftnumberRoom length in feet
room_width_ftnumberRoom width in feet
sun_exposurestringSolar heat gain: none (interior/basement room), partial (one exterior wall with window), full (multiple sun-facing windows)
target_temp_fnumberDesired room temperature in degrees Fahrenheit
total_wattsnumberyesTotal power consumption in watts — all power becomes heat
NameTypeReqDescription
ac_tonsnumberyesCooling capacity needed in tons of refrigeration (1 ton = 12,000 BTU/hr)
envelope_btunumberyesHeat gain/loss through walls based on room size, insulation, and delta-T
equipment_btunumberyesHeat generated by equipment in BTU/hr (watts * 3.412)
exhaust_cfm_needednumberyesExhaust fan airflow needed in cubic feet per minute if using ventilation instead of AC
mini_split_btu_recommendednumberyesRecommended mini-split size rounded up to nearest 6,000 BTU increment
total_btunumberyesTotal cooling load in BTU/hr (equipment + envelope + sun)
will_overheatbooleanyesTrue if total heat load is positive and no cooling is provided

No examples provided.

date_difference ~137

Calculate the difference between two dates in days, weeks, months, years, and business days. Accepts dates in YYYY-MM-DD format. Returns the absolute difference (order doesn't matter) plus a flag indicating whether the end date is in the future relative to start. Business days count only Monday through Friday. Useful for project planning, deadline tracking, contract duration calculations, and age computations.

NameTypeReqDescription
end_datestringyesEnd date in YYYY-MM-DD format (e.g., '2024-12-31').
start_datestringyesStart date in YYYY-MM-DD format (e.g., '2024-01-15').
NameTypeReqDescription
business_daysnumberyesNumber of weekdays (Monday-Friday) between the dates.
daysnumberyesTotal number of days between the two dates (absolute value).
is_futurebooleanyesTrue if end_date is after start_date.
monthsnumberyesApproximate number of months (days / 30.44).
weeksnumberyesNumber of complete weeks.
yearsnumberyesApproximate number of years (days / 365.25).

No examples provided.

dbm_convert ~155

Convert a power level in dBm to milliwatts, watts, dBW, and RMS voltage across a given impedance. dBm is the standard unit for RF power referenced to 1 milliwatt. This tool is essential when interfacing datasheets (which use dBm) with circuit analysis (which uses volts and watts). Default impedance is 50 ohms, matching most RF systems. Use this to quickly verify power amplifier output, receiver sensitivity, or regulatory EIRP limits.

NameTypeReqDescription
dbmnumberyesPower level in dBm (decibels relative to 1 milliwatt)
impedance_ohmnumberLoad impedance in ohms for Vrms calculation (default 50)
NameTypeReqDescription
dbwnumberyesPower in dBW (decibels relative to 1 watt)
mwnumberyesPower in milliwatts
vrmsnumberyesRMS voltage across the load impedance in volts
wattsnumberyesPower in watts

No examples provided.

dipole ~139

Calculate physical dimensions of a dipole antenna for a given frequency. Returns half-wave or quarter-wave element length in metres, feet, and inches. A half-wave dipole is the most common resonant antenna with approximately 2.15 dBi gain. A quarter-wave monopole (ground plane antenna) is half the length and is widely used in handheld radios and vehicle-mounted systems. Use this before building or purchasing an antenna to verify element length for your operating frequency.

NameTypeReqDescription
freq_mhznumberyesOperating frequency in megahertz (MHz)
typestringAntenna type: half_wave dipole or quarter_wave monopole
NameTypeReqDescription
length_ftnumberyesElement length in feet
length_innumberyesElement length in inches
length_mnumberyesElement length in metres
wavelength_mnumberyesFull wavelength in metres

No examples provided.

duty_cycle_budget ~214

Calculates LoRa duty cycle budget for EU868, US915, AS923, and AU915 regulatory regions. Computes maximum messages per hour, minimum transmission interval, and effective data rate under regional duty cycle constraints. EU868 and AS923 enforce 1% duty cycle (ETSI); US915 has no duty cycle limit but a 400 ms dwell time per channel (FCC); AU915 has no duty cycle limit. Flags dwell-time-limited regions where packet airtime must not exceed the dwell time. Chain from lora_airtime to get airtime_ms input for end-to-end regulatory compliance analysis.

NameTypeReqDescription
airtime_msnumberyesPacket time-on-air in milliseconds. Obtain from the lora_airtime tool.
regionstringLoRa regulatory region. EU868: 1% duty cycle (ETSI). US915: no duty cycle but 400 ms dwell time (FCC). AS923: 1% duty cycle (varies by country). AU915: no duty cycle limit.
NameTypeReqDescription
duty_cycle_pctnumberyesApplicable duty cycle limit as a percentage. 100 means no duty cycle restriction.
dwell_time_limitedbooleanyesTrue if the region enforces a per-transmission dwell time limit (e.g., US915 400 ms).
effective_data_rate_bpsnumberyesEffective throughput in bits per second considering duty cycle. For duty-cycle-limited regions, this reflects actual achievable throughput.
max_messages_per_hourintegeryesMaximum messages per hour allowed under the regional duty cycle constraint.
min_interval_snumberyesMinimum interval between transmissions in seconds to comply with duty cycle regulation.

No examples provided.

eirp_compliance ~346

Checks EIRP (Effective Isotropic Radiated Power) compliance against regional regulatory limits for LoRa and Meshtastic operation. Computes EIRP from transmit power, antenna gain, and cable loss, then compares against FCC (US, 36 dBm), ETSI (EU, 16.15 dBm), ACMA (Australia, 30 dBm), IC (Canada, 36 dBm), and ARIB (Japan, 13 dBm) limits. Returns compliance status, margin in dB, and a warning message if over the limit. Critical for Meshtastic deployments using aftermarket high-gain antennas which can easily exceed ETSI/JP limits. Accepts tx_power and antenna_gain from meshtastic_range for chain validation.

NameTypeReqDescription
antenna_gain_dbinumberyesAntenna gain in dBi. Stock Meshtastic antennas: 2-3 dBi. External: 6-10+ dBi.
cable_loss_dbnumberCoaxial cable and connector loss in dB. Set 0 for devices with integrated antennas.
custom_limit_dbmnumberCustom EIRP limit in dBm. Only used when region is 'custom'.
regionstringRegulatory region for EIRP limit lookup. FCC_US: 36 dBm, ETSI_EU: ~16 dBm, ACMA_AU: 30 dBm, IC_CA: 36 dBm, JP: 13 dBm.
tx_power_dbmnumberyesConducted transmit power at the radio output in dBm. Typical LoRa: 14-22 dBm.
NameTypeReqDescription
compliantbooleanyesTrue if EIRP is at or below the regional limit.
eirp_dbmnumberyesCalculated EIRP in dBm: tx_power + antenna_gain - cable_loss.
eirp_wattsnumberyesCalculated EIRP converted to watts.
limit_dbmnumberyesRegional EIRP limit in dBm.
limit_wattsnumberyesRegional EIRP limit converted to watts.
margin_dbnumberyesMargin below the limit in dB. Positive = compliant, negative = over limit.
region_namestringyesHuman-readable region name.
warningstringyesWarning message if non-compliant, or empty string if compliant.

No examples provided.

exponent_calc ~122

Compute the result of raising a base to an exponent (base^exponent). Handles positive and negative exponents, fractional exponents, and zero. Returns the numeric result and a scientific notation string for very large or very small results. Useful for compound interest calculations, exponential growth/decay models, physics power laws, and combinatorics. The inverse of log_calc; chain with scientific_notation for formatted display of extreme values.

NameTypeReqDescription
basenumberyesThe base number
exponentnumberyesThe exponent (power) to raise the base to
NameTypeReqDescription
resultnumberyesThe computed value of base^exponent
scientific_notationstringyesResult in scientific notation for very large/small values

No examples provided.

fresnel_zone ~154

Calculate the Fresnel zone radius at the midpoint of a radio link. Given frequency in MHz, link distance in kilometres, and zone number (1-5), returns the Fresnel zone radius in metres and feet, plus the 60% clearance threshold used in practical link engineering. The first Fresnel zone defines the region where most RF energy travels; obstructions within 60% of this radius cause significant signal degradation. Feeds into link_budget for path clearance analysis.

NameTypeReqDescription
dist_kmnumberyesTotal link distance in kilometres
freq_mhznumberyesOperating frequency in megahertz (MHz)
zone_numberintegerFresnel zone number (1-5, default 1)
NameTypeReqDescription
clearance_60pct_mnumberyes60% Fresnel zone clearance (practical minimum) in metres
radius_ftnumberyesFresnel zone radius at midpoint in feet
radius_mnumberyesFresnel zone radius at midpoint in metres
wavelength_mnumberyesRF wavelength in metres

No examples provided.

fspl ~137

Calculate free-space path loss (FSPL) in decibels using the ITU-R P.525 standard formula. Given a frequency in MHz and distance in kilometres, returns the expected signal attenuation in an ideal line-of-sight radio link with no obstacles, reflections, or atmospheric absorption. Also computes the RF wavelength. Use this to estimate baseline path loss before adding fade margins, antenna gains, or environmental corrections. Feeds directly into link_budget for full end-to-end analysis.

NameTypeReqDescription
dist_kmnumberyesDistance between transmitter and receiver in kilometres
freq_mhznumberyesCarrier frequency in megahertz (MHz)
NameTypeReqDescription
fspl_dbnumberyesFree-space path loss in decibels (dB)
wavelength_mnumberyesRF wavelength in metres

No examples provided.

generator_offset ~313

Compares total cost of ownership between a fuel generator and a solar+battery system over a configurable time horizon. Calculates yearly and cumulative costs for generator-only, solar-only (amortized), and hybrid scenarios. Accounts for fuel cost, generator consumption rate, maintenance intervals, solar system amortization, and battery coverage. Outputs yearly costs, total savings, breakeven year, solar coverage percentage, and generator hours saved. Essential for off-grid site planning, remote telecom towers, construction sites, and rural electrification proposals.

NameTypeReqDescription
battery_kwhnumberBattery storage capacity in kWh (0 means no battery, generator needed at night), default 0
daily_kwh_needednumberyesTotal daily energy requirement in kWh
generator_consumption_gphnumberGenerator fuel consumption in gallons per hour at load, default 1.0
generator_fuel_cost_per_gallonnumberFuel cost per gallon in USD, default $3.50
generator_hours_per_daynumberGenerator runtime hours per day, default 8
generator_maintenance_per_1000hrsnumberGenerator maintenance cost per 1000 running hours in USD, default $200
solar_daily_kwh_producednumberyesDaily solar energy production in kWh
solar_system_cost_usdnumberyesTotal solar+battery system cost in USD
years_to_compareintegerNumber of years to compare, default 10
NameTypeReqDescription
breakeven_yearnumberyesYear when solar cumulative cost becomes cheaper than generator (0 if never)
generator_hours_saved_per_yearnumberyesGenerator hours eliminated per year by solar
generator_total_cost_usdnumberyesTotal generator cost over comparison period in USD
generator_yearly_cost_usdnumberyesAnnual generator cost (fuel + maintenance) in USD
savings_pctnumberyesPercentage savings of solar vs generator
savings_usdnumberyesTotal savings of solar over generator in USD (negative means generator is cheaper)
solar_coverage_pctnumberyesPercentage of daily energy needs covered by solar+battery
solar_total_cost_usdnumberyesTotal solar cost over comparison period in USD
solar_yearly_cost_usdnumberyesAnnualized solar system cost (amortized + maintenance) in USD

No examples provided.

heatsink_cfd ~244

Analyze a forced-convection fin-array heatsink using established channel-flow correlations (developing laminar Nusselt, fin efficiency tanh(mH)/mH, parallel-plate friction). Computes base-to-air thermal resistance, pressure drop, base and fin-tip temperatures, fin efficiency, and the optimal fin spacing for the given airflow. Use for heatsink selection and first-pass optimization in electronics cooling. Runs instantly in-worker; mesh-level CFD via container backend is planned.

NameTypeReqDescription
airflow_velocity_msnumberyesIncoming airflow velocity in m/s
ambient_temp_cnumberAmbient air temperature in Celsius
base_height_mnumberyesBase plate thickness in metres
base_length_mnumberyesHeatsink base length in metres
base_width_mnumberyesHeatsink base width in metres
fin_countintegeryesNumber of fins
fin_height_mnumberyesFin height in metres
fin_thickness_mnumberyesFin thickness in metres
heat_load_wnumberyesTotal heat load applied to base in watts
mesh_densitystringMesh density
NameTypeReqDescription
avg_base_temp_cnumberyesAverage base temperature (°C)
fin_efficiencynumberyesFin efficiency (0-1)
fin_tip_temp_cnumberyesAverage fin tip temperature (°C)
max_base_temp_cnumberyesMaximum base temperature (°C)
mesh_cellsnumberyesMesh cell count
optimal_fin_spacing_mnumberyesSuggested optimal fin spacing for this airflow (m)
pressure_drop_panumberyesPressure drop across the heatsink (Pa)
runtime_msnumberyesSimulation time in ms
thermal_resistance_cwnumberyesThermal resistance from base to air (°C/W)
warningsarrayyesSolver warnings

No examples provided.

hex_converter ~202

Convert numbers between hexadecimal, binary, decimal, and octal bases. Accepts any base as input (prefix 0x for hex, 0b for binary, 0o for octal, or plain decimal) and returns all four representations simultaneously. Also reports bit width, byte count, ASCII character (if printable), and signed interpretations (8-bit, 16-bit, 32-bit two's complement). Essential for embedded programming, register debugging, network protocol analysis, and color code conversion. Example: 0xFF → decimal 255, binary 0b11111111, octal 0o377, 8 bits, 1 byte.

NameTypeReqDescription
valuestringyesThe number to convert. Prefix with 0x for hex (0xFF), 0b for binary (0b1010), 0o for octal (0o17). Plain numbers are treated as decimal. Supports negative values with leading minus.
NameTypeReqDescription
asciistring|nullyesASCII character if the value is a printable character (32-126), null otherwise.
binarystringyesBinary string with 0b prefix (e.g. '0b11111111').
bitsnumberyesMinimum number of bits needed to represent this value (unsigned).
bytesnumberyesMinimum number of bytes needed (ceil(bits/8)).
decimalnumberyesDecimal (base-10) value.
hexstringyesHexadecimal string with 0x prefix (e.g. '0xFF').
hex_upperstringyesHexadecimal with uppercase letters (e.g. '0xFF').
octalstringyesOctal string with 0o prefix (e.g. '0o377').
signed_16number|nullyesSigned 16-bit interpretation (-32768 to 32767), null if out of range.
signed_32number|nullyesSigned 32-bit interpretation, null if out of range.
signed_8number|nullyesSigned 8-bit interpretation (-128 to 127), null if out of range.

No examples provided.

impedance_match ~192

Designs an L-network impedance matching circuit between two real impedances at a given frequency. Computes the required shunt and series reactive components (inductor and capacitor) to transform the source impedance to the load impedance. The network Q factor is sqrt(Rh/Rl - 1) where Rh is the higher impedance. Topology is automatically selected: the shunt element is placed across the higher impedance side. Essential for antenna matching, amplifier input/output matching, and maximizing power transfer. Chain from lc_resonance to match at a tank circuit's resonant frequency.

NameTypeReqDescription
freq_mhznumberyesDesign frequency in megahertz for component value calculation.
load_ohmnumberyesLoad impedance in ohms (real, resistive). Must differ from source impedance.
source_ohmnumberyesSource impedance in ohms (real, resistive). Must differ from load impedance.
NameTypeReqDescription
q_factornumberyesNetwork Q factor = sqrt(Rh/Rl - 1), where Rh is the higher impedance.
series_componentobjectyesThe series component of the L-network.
shunt_componentobjectyesThe shunt (parallel) component of the L-network.
topologystringyesDescription of the L-network arrangement (which side gets shunt vs series element).

No examples provided.

inverter_sizing ~468

Size a DC-to-AC inverter for off-grid solar, battery backup, or mobile power systems. Computes the required continuous VA rating from total load watts and power factor, estimates surge capacity for motor-starting loads (3-7x rated power), applies NEC-recommended 20% derating for continuous operation, and selects the nearest standard inverter size. Also calculates DC input current at the system voltage for cable and fuse sizing. Chain from solar_load_audit to get peak_watts and largest_load_watts, then chain to wire_gauge or wire_ampacity to size the DC cables. Essential for off-grid cabins, RV/van builds, emergency backup, and solar+battery installations.

NameTypeReqDescription
continuous_wattsnumberyesTotal continuous load in watts. Sum of all appliances that may run simultaneously. Chain from solar_load_audit.peak_watts.
derating_pctnumberDerating percentage for temperature, altitude, and safety margin. NEC recommends 20% (80% continuous rating). Range 0-50%.
efficiencynumberInverter efficiency (0.5-1.0). Good pure-sine inverters are 0.90-0.95. Modified-sine are 0.85-0.90. Budget units may be lower.
largest_load_wattsnumberWattage of the single largest appliance. Used to estimate surge if surge_watts is not provided. Chain from solar_load_audit.largest_load_watts.
power_factornumberPower factor (0.5-1.0). Resistive loads (heaters, lights) are ~1.0. Motor loads (fridge, AC, pump) are 0.6-0.8. Mixed loads typically 0.8.
surge_wattsnumberPeak surge/starting load in watts. Motors and compressors draw 3-7x rated watts on startup. If omitted, estimated as 3x the largest single load or 2x continuous, whichever is greater.
system_voltagestringDC system voltage. 12V for small/mobile, 24V for medium, 48V for large residential/commercial. Higher voltage = lower current = thinner cables.
NameTypeReqDescription
battery_cable_notestringyesGuidance on DC cable sizing based on the continuous current draw.
dc_current_continuous_anumberyesContinuous DC input current draw at system voltage: VA / (voltage * efficiency). Sizes the DC wiring and fuses.
dc_current_surge_anumberyesPeak DC input current during surge. Sizes the DC fuse and battery cable.
derated_continuous_vanumberyesContinuous VA after applying derating factor. The inverter must be rated at or above this value.
efficiency_loss_wattsnumberyesPower lost to inverter inefficiency at continuous load, in watts.
recommended_size_wattsnumberyesNearest standard inverter size (watts) that meets the derated requirement.
required_continuous_vanumberyesRequired continuous VA rating accounting for power factor: continuous_watts / power_factor.
required_surge_vanumberyesRequired surge/peak VA capacity for motor starting loads.
surge_margin_pctnumberyesHow much surge headroom the recommended inverter provides above the estimated surge requirement.

No examples provided.

lc_resonance ~204

Calculates the resonant frequency of an LC circuit, along with optional Q factor and bandwidth when series resistance is provided. The resonant frequency f0 = 1/(2*pi*sqrt(L*C)) is where inductive and capacitive reactances cancel. Used for designing tank circuits, oscillators, bandpass filters, and antenna matching networks. If resistance R is given, computes quality factor Q = (1/R)*sqrt(L/C) and 3 dB bandwidth = f0/Q. Chain into impedance_match to design matching networks at the resonant frequency.

NameTypeReqDescription
capacitance_fnumberyesCapacitance in farads (F). The capacitive element of the LC circuit.
inductance_hnumberyesInductance in henries (H). The inductive element of the LC circuit.
resistance_ohmnumberOptional series resistance in ohms for Q factor and bandwidth calculation. Omit for ideal LC analysis.
NameTypeReqDescription
angular_freq_radnumberyesAngular resonant frequency in radians per second (omega_0 = 2*pi*f0).
bandwidth_hznumber|nullyes3 dB bandwidth in hertz (f0/Q). Null if no resistance provided.
impedance_at_resonance_ohmnumber|nullyesImpedance at resonance in ohms. Equals the series resistance R if provided; null if ideal (no R).
q_factornumber|nullyesQuality factor Q = (1/R)*sqrt(L/C). Null if no resistance provided.
resonant_freq_hznumberyesResonant frequency in hertz.
resonant_freq_mhznumberyesResonant frequency in megahertz for convenience.

No examples provided.

led_resistor ~205

Calculates the current-limiting resistor for driving one or more LEDs in series from a DC supply. Computes the exact resistance from R = (Vsupply - n*Vf) / I, then selects the nearest E24 standard resistor value. Reports the actual current with the standard resistor, power dissipation, and voltage across the resistor. Supports series LED strings by specifying led_count. Validates that supply voltage exceeds total forward voltage. Chain from ohms_law for power budgeting or into trace_width for PCB layout.

NameTypeReqDescription
led_countintegerNumber of LEDs in series. Defaults to 1.
led_current_manumberDesired LED current in milliamps (mA). Defaults to 20mA.
led_forward_vnumberLED forward voltage in volts (V). Defaults to 2.0V (typical red LED).
supply_voltage_vnumberyesSupply voltage in volts (V). Must be positive.
NameTypeReqDescription
actual_current_manumberyesActual LED current in milliamps (mA) when using the nearest E24 resistor.
nearest_e24_ohmnumberyesNearest standard E24 series resistor value in ohms.
power_dissipation_mwnumberyesPower dissipated by the resistor in milliwatts (mW), using the E24 value.
resistance_ohmnumberyesExact calculated resistance in ohms.
voltage_across_resistor_vnumberyesVoltage drop across the current-limiting resistor in volts.

No examples provided.

link_budget ~220

Compute a full RF link budget from transmitter power, frequency, distance, and antenna gains. Calculates EIRP, free-space path loss (ITU-R P.525), received power at the receiver, and link margin relative to an optional receiver sensitivity threshold. Use this to determine whether a wireless link closes with adequate margin. Accepts output from noise_figure_cascade and feeds into snr_margin for full receive-chain analysis.

NameTypeReqDescription
dist_kmnumberyesLink distance in kilometres
freq_mhznumberyesCarrier frequency in megahertz (MHz)
rx_gain_dbinumberReceive antenna gain in dBi (default 2.15 for a half-wave dipole)
rx_sensitivity_dbmnumberReceiver sensitivity in dBm; when provided, link margin is calculated
tx_dbmnumberyesTransmitter output power in dBm
tx_gain_dbinumberTransmit antenna gain in dBi (default 2.15 for a half-wave dipole)
NameTypeReqDescription
eirp_dbmnumberyesEffective isotropic radiated power in dBm
fspl_dbnumberyesFree-space path loss in dB
margin_dbnumber|nullyesLink margin in dB (null when sensitivity is not provided)
rx_power_dbmnumberyesReceived signal power in dBm
wavelength_mnumberyesRF wavelength in metres

No examples provided.

loan_amortization ~221

Computes a full loan amortization schedule given principal, annual interest rate, and term in months. Returns the fixed monthly payment, total interest, total payments, and a month-by-month breakdown of principal vs interest. Supports optional extra monthly payments — shows months saved and interest saved. Works for mortgages (30yr/15yr), auto loans, personal loans, and student loans. All currency-agnostic. Use with /run?page=1&page_size=12 to paginate the schedule array for context-friendly agent consumption.

NameTypeReqDescription
annual_rate_pctnumberyesAnnual interest rate as a percentage (e.g., 6.5 for 6.5%).
extra_paymentnumberOptional fixed extra monthly payment toward principal. Defaults to 0.
principalnumberyesLoan principal amount in dollars (or any currency unit).
term_monthsintegeryesLoan term in months. Max 600 (50 years). Common values: 360 (30yr), 180 (15yr), 60 (5yr auto).
NameTypeReqDescription
interest_savednumberyesInterest saved by extra payments vs. full term. 0 if no extra payments.
monthly_paymentnumberyesFixed monthly payment (excluding extra payments).
payoff_monthsnumberyesActual number of months to pay off (may be less than term with extra payments).
schedulearrayyesMonth-by-month amortization schedule.
total_extra_paidnumberyesTotal extra payments made.
total_interestnumberyesTotal interest paid over the life of the loan.
total_paymentsnumberyesSum of all payments over the life of the loan.

No examples provided.

log_calc ~150

Compute logarithms of a positive number in any base. Returns the custom-base logarithm, natural logarithm (ln), common logarithm (log10), and binary logarithm (log2). Useful for signal processing (decibel calculations), information theory (entropy in bits), pH chemistry, and general scientific computation. Uses the change-of-base formula log_b(x) = ln(x) / ln(b). Feeds into exponent_calc for inverse operations and scientific_notation for order-of-magnitude analysis.

NameTypeReqDescription
basenumberThe logarithm base (default 10). Must be positive and not equal to 1
valuenumberyesThe positive number to compute the logarithm of
NameTypeReqDescription
log10numberyesCommon logarithm (base 10) of the value
log2numberyesBinary logarithm (base 2) of the value
natural_lognumberyesNatural logarithm (ln) of the value
resultnumberyesLogarithm of the value in the specified base: log_base(value)

No examples provided.

lora_airtime ~339

Calculates LoRa packet time-on-air using the Semtech AN1200.13 formula. Computes symbol duration, preamble time, payload symbol count, effective data rate, and the minimum transmission interval for 1% duty cycle compliance. Essential for capacity planning in LoRaWAN and Meshtastic mesh networks. Accepts spreading factor (SF7-SF12), bandwidth (125/250/500 kHz), coding rate (4/5-4/8), payload size, header mode, CRC, and optional low data rate optimization. Feeds airtime_ms to channel_utilization for mesh load analysis.

NameTypeReqDescription
bw_khznumberLoRa channel bandwidth in kHz. Common values: 125, 250, or 500.
crintegerLoRa coding rate denominator (5-8). Represents 4/5 through 4/8 FEC ratio.
crcbooleanWhether CRC is appended to payload. Recommended true for reliability.
explicit_headerbooleanWhether to use explicit header mode. True for LoRaWAN; false for implicit header.
low_data_rate_optimizebooleanEnable low data rate optimization. Auto-calculated if omitted: enabled for SF >= 11 at BW 125 kHz.
payload_bytesintegeryesApplication payload size in bytes (0-255).
preamble_symbolsintegerNumber of preamble symbols. LoRaWAN uses 8; raw LoRa may vary.
sfintegerLoRa spreading factor (7-12). Higher SF = longer range but slower data rate.
NameTypeReqDescription
airtime_msnumberyesTotal packet time-on-air in milliseconds.
data_rate_bpsnumberyesEffective data rate in bits per second.
duty_cycle_1pct_interval_snumberyesMinimum interval between transmissions in seconds to respect 1% duty cycle regulation.
payload_symbolsintegeryesNumber of symbols used for the payload + header portion.
preamble_time_msnumberyesPreamble duration in milliseconds (includes 4.25 sync symbols).
symbol_time_msnumberyesDuration of a single LoRa symbol in milliseconds.

No examples provided.

lora_param_optimizer ~332

Recommends optimal LoRa spreading factor, bandwidth, and TX power based on target range, terrain, and optimization priority. Iterates through all SF (7-12) and BW (125/250/500 kHz) combinations, computing achievable range, airtime, data rate, and battery impact for each. Ranks candidates by priority: 'range' maximizes distance, 'speed' minimizes airtime, 'battery' minimizes power consumption, 'balanced' penalizes extremes. Respects regional TX power limits (FCC/ETSI/ACMA) and duty cycle constraints. Returns the recommended parameters with estimated range, airtime, duty-cycle message limit, battery life, and data rate. Essential for tuning Meshtastic and LoRa deployments to specific requirements.

NameTypeReqDescription
antenna_gain_dbinumberAntenna gain in dBi. 2.15 = half-wave dipole reference.
max_payload_bytesintegerMaximum payload size in bytes for airtime calculation.
prioritystringOptimization priority. range: maximize distance (high SF, low BW). speed: minimize airtime (low SF, high BW). battery: minimize power draw. balanced: best trade-off across all factors.
regionstringRegulatory region. Determines max TX power and duty cycle limit.
target_range_kmnumberyesDesired communication range in kilometers.
terrainstringTerrain type for path loss model. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.
NameTypeReqDescription
airtime_msnumberyesPacket airtime in milliseconds for the given payload.
data_rate_bpsnumberyesEffective data rate in bits per second.
estimated_battery_hoursnumberyesEstimated battery life in hours with a 3000 mAh reference battery.
estimated_range_kmnumberyesEstimated achievable range in km with the recommended parameters.
messages_per_hour_limitintegeryesMaximum messages per hour under regional duty cycle constraint.
recommended_bw_khznumberyesRecommended bandwidth in kHz (125, 250, or 500).
recommended_sfintegeryesRecommended spreading factor (7-12).
recommended_tx_dbmnumberyesRecommended transmit power in dBm.

No examples provided.

lora_range_estimate ~323

Estimates LoRa maximum communication range by computing the free-space path loss (FSPL) link budget and applying terrain-dependent correction factors. Calculates total link budget from transmit power, antenna gains, and receiver sensitivity, then solves the FSPL equation for distance after subtracting terrain losses (0 dB open to 50 dB indoor). Returns estimated range in km, link margin at 1 km, and effective path loss. Useful for Meshtastic deployment planning and coverage mapping. Terrain corrections are empirical estimates; real-world range varies with elevation, foliage, and weather.

NameTypeReqDescription
freq_mhznumberCarrier frequency in MHz. Common: 868 (EU), 915 (US/AU), 433 (Asia).
rx_gain_dbinumberReceive antenna gain in dBi. 2.15 dBi = half-wave dipole.
rx_sensitivity_dbmnumberReceiver sensitivity in dBm. Typical LoRa SF10/BW125: -130 dBm. Varies by SF and bandwidth.
terrainstringTerrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.
tx_dbmnumberTransmit power in dBm. Typical LoRa: 14-30 dBm depending on region and module.
tx_gain_dbinumberTransmit antenna gain in dBi. 2.15 dBi = half-wave dipole.
NameTypeReqDescription
effective_path_loss_dbnumberyesMaximum allowable path loss in dB (link budget minus terrain correction).
margin_at_1km_dbnumberyesLink margin at 1 km distance in dB. Positive means signal above sensitivity.
max_range_kmnumberyesEstimated maximum range in kilometers accounting for terrain correction.

No examples provided.

lora_sensitivity ~205

Calculates LoRa receiver sensitivity from spreading factor, bandwidth, and noise figure using the Semtech SX1276 datasheet SNR thresholds. Computes the noise floor from thermal noise density (-174 dBm/Hz), channel bandwidth, and receiver noise figure, then adds the spreading-factor-dependent minimum demodulation SNR. Returns sensitivity in dBm, noise floor, required SNR, and thermal noise reference. Essential for link budget planning in LoRaWAN and Meshtastic networks. Feeds sensitivity_dbm to link_budget and lora_range_estimate for end-to-end coverage analysis.

NameTypeReqDescription
bw_khznumberLoRa channel bandwidth in kHz. Lower bandwidth = better sensitivity.
noise_figure_dbnumberReceiver noise figure in dB. Typical LoRa radio NF is 6 dB (SX1276).
sfintegerLoRa spreading factor (7-12). Higher SF = better sensitivity but slower data rate.
NameTypeReqDescription
noise_floor_dbmnumberyesReceiver noise floor in dBm, computed from thermal noise, bandwidth, and noise figure.
required_snr_dbnumberyesMinimum SNR required for LoRa demodulation at the given spreading factor.
sensitivity_dbmnumberyesReceiver sensitivity in dBm. The minimum signal power for successful demodulation.
thermal_noise_dbmnumberyesThermal noise power density at room temperature: -174 dBm/Hz.

No examples provided.

mah_to_wh ~156

Converts battery capacity from milliamp-hours (mAh) to watt-hours (Wh), kilowatt-hours (kWh), and joules (J) given the nominal cell voltage. This is the most common battery unit conversion needed when comparing cells rated in mAh (e.g. 18650, AA) against energy budgets specified in Wh. Essential for airline lithium battery compliance (100 Wh limit for carry-on), solar battery bank sizing, and UPS capacity planning. Echoes back input values for easy chaining into battery_life, solar_sizing, and ups_runtime tools.

NameTypeReqDescription
capacity_mahnumberyesBattery capacity in milliamp-hours (mAh)
voltage_vnumberyesNominal battery voltage (V)
NameTypeReqDescription
joulesnumberyesEnergy in joules
kwhnumberyesEnergy in kilowatt-hours
mahnumberyesInput capacity echoed back (mAh)
voltage_vnumberyesInput voltage echoed back (V)
whnumberyesEnergy in watt-hours

No examples provided.

meshtastic_power ~380

Calculates Meshtastic node power consumption and battery runtime using device-specific power profiles and firmware role-based duty cycling. Models sleep, RX, and TX current draw for Heltec V3, RAK WisBlock, T-Beam, T-Beam Supreme, and Station G2 with GPS, BLE, and display peripheral toggles. Role selection (client, router, repeater, client_muted) controls the duty cycle model: routers stay in RX mode continuously while clients sleep between events. Returns average current, runtime in hours/days, daily Wh consumption, and time distribution across TX/RX/sleep states. Feed daily_wh to solar_sizing for off-grid planning.

NameTypeReqDescription
battery_mahnumberBattery capacity in milliamp-hours. Common: 1100 (18650 min), 3000 (typical), 6000 (large).
battery_voltagenumberNominal battery voltage. 3.7V for single-cell LiPo/Li-ion, 7.4V for 2S packs.
bluetooth_enabledbooleanWhether Bluetooth is enabled for phone connection.
channel_presetstringMeshtastic channel preset. Affects TX airtime per message and thus power consumption.
devicestringMeshtastic hardware device. Selects power consumption profile for sleep, RX, TX, GPS, and BLE.
gps_enabledbooleanWhether GPS is enabled. Significantly increases power draw on devices with built-in GPS.
messages_per_hournumberExpected messages sent and received per hour. Includes both TX and RX message events.
rolestringMeshtastic node role. client: sleeps between events. router: always listening. repeater: always listening, no display/BLE. client_muted: aggressive sleep.
NameTypeReqDescription
avg_current_manumberyesEstimated average current draw in milliamps.
daily_whnumberyesEstimated daily energy consumption in watt-hours.
runtime_daysnumberyesEstimated battery runtime in days.
runtime_hoursnumberyesEstimated battery runtime in hours.
rx_time_pctnumberyesPercentage of time spent in receive mode (radio listening).
sleep_time_pctnumberyesPercentage of time spent in sleep/low-power mode.
tx_time_pctnumberyesPercentage of time spent transmitting.

No examples provided.

meshtastic_range ~376

Estimates Meshtastic node communication range using real hardware profiles and firmware channel presets. Combines device-specific TX power and antenna gain (Heltec V3, RAK WisBlock, T-Beam, T-Beam Supreme, Station G2) with firmware modem presets (Long Fast, Long Slow, Very Long Slow, Medium, Short) to compute receiver sensitivity and FSPL-based range with terrain correction. Automatically populates LoRa parameters from device and channel selection, with optional overrides for custom antennas or power levels. Essential for Meshtastic deployment planning and node placement. Returns range, sensitivity, link budget, and the effective radio parameters used.

NameTypeReqDescription
antenna_gain_dbinumberOverride device default antenna gain in dBi. Useful for aftermarket antennas.
bw_khznumberCustom bandwidth in kHz. Only used when channel_preset is 'custom'.
channel_presetstringMeshtastic firmware channel preset. Selects spreading factor, bandwidth, and coding rate. long_fast is the default; very_long_slow maximizes range at the cost of throughput.
crintegerCustom coding rate denominator (5-8). Only used when channel_preset is 'custom'.
devicestringMeshtastic hardware device. Selects default TX power, antenna gain, and noise figure. Use 'custom' to override all radio parameters manually.
sfintegerCustom spreading factor (7-12). Only used when channel_preset is 'custom'.
terrainstringTerrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.
tx_power_dbmnumberOverride device default transmit power in dBm.
NameTypeReqDescription
antenna_gain_dbinumberyesAntenna gain in dBi used for the calculation.
channel_namestringyesHuman-readable channel preset name.
device_namestringyesHuman-readable device name.
effective_bw_khznumberyesBandwidth in kHz used for the calculation.
effective_sfnumberyesSpreading factor used for the calculation.
link_budget_dbnumberyesTotal link budget in dB before terrain correction.
max_range_kmnumberyesEstimated maximum range in km accounting for terrain correction.
rx_sensitivity_dbmnumberyesReceiver sensitivity in dBm for the selected channel preset.
tx_power_dbmnumberyesTransmit power in dBm used for the calculation.

No examples provided.

microstrip ~203

Calculate PCB microstrip trace width for a target characteristic impedance using the Hammerstad-Jensen closed-form equations. Given target impedance (Z0), substrate dielectric constant (er), substrate height, and copper weight, returns the required trace width and effective dielectric constant. Optionally computes effective wavelength at a given frequency. Essential for RF PCB layout to achieve controlled impedance traces (e.g. 50 ohm for SMA connectors). References IPC-2141.

NameTypeReqDescription
copper_oznumberCopper weight in oz/ft2 (1 oz = 0.035 mm thickness)
ernumberSubstrate relative dielectric constant (default 4.6 for FR-4)
freq_mhznumberOptional frequency in MHz for effective wavelength calculation
height_mmnumberyesSubstrate height (dielectric thickness) in millimetres
z0_ohmnumberTarget characteristic impedance in ohms (default 50)
NameTypeReqDescription
er_effnumberyesEffective dielectric constant of the microstrip
wavelength_eff_mmnumber|nullyesEffective wavelength in millimetres at the given frequency (null if freq not provided)
width_mmnumberyesRequired trace width in millimetres

No examples provided.