calc.engineer
REMOTE · CALC.ENGINEER · SCANNED AUG 3
88 free engineering calculators: RF link budgets, LoRa/Meshtastic, PCB, solar, homelab. Keyless.
Available components
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
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 89 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS check failed: the endpoint is reachable over plaintext HTTP. See how to fix → View diagnostics → Fail
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http engineer-calc-calc https://calc.engineer/mcp
[mcp_servers.engineer-calc-calc] url = "https://calc.engineer/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"engineer-calc-calc": {
"type": "remote",
"url": "https://calc.engineer/mcp",
"enabled": true
}
}
} openclaw mcp add engineer-calc-calc --url https://calc.engineer/mcp --transport streamable-http
mcp_servers:
engineer-calc-calc:
url: "https://calc.engineer/mcp" {
"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.
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.
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 |
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.
attenuator_pi 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.
| Name | Type | Req | Description |
|---|---|---|---|
| attenuation_db | number | yes | Desired attenuation in decibels (positive value) |
| z0_ohm | number | — | Characteristic impedance in ohms (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| r1_ohm | number | yes | Shunt resistor R1 (input side) in ohms |
| r2_ohm | number | yes | Series resistor R2 (middle) in ohms |
| r3_ohm | number | yes | Shunt resistor R3 (output side) in ohms |
| topology | string | yes | Attenuator topology identifier |
No examples provided.
attenuator_tee 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.
| Name | Type | Req | Description |
|---|---|---|---|
| attenuation_db | number | yes | Desired attenuation in decibels (positive value) |
| z0_ohm | number | — | Characteristic impedance in ohms (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| r1_ohm | number | yes | Series resistor R1 (input side) in ohms |
| r2_ohm | number | yes | Shunt resistor R2 (middle) in ohms |
| r3_ohm | number | yes | Series resistor R3 (output side) in ohms |
| topology | string | yes | Attenuator topology identifier |
No examples provided.
battery_autonomy 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).
| Name | Type | Req | Description |
|---|---|---|---|
| avg_solar_contribution_pct | number | — | Average solar contribution during autonomy period (0-100%), default 0 for worst-case |
| battery_kwh | number | yes | Total installed battery capacity in kWh |
| daily_kwh | number | yes | Daily energy consumption in kilowatt-hours (kWh) |
| dod | number | — | Depth of discharge (0-1), default 0.8 for lithium |
| min_soc_pct | number | — | Minimum state of charge percentage, default 20% |
| round_trip_efficiency | number | — | Battery round-trip efficiency (0-1), default 0.90 for lithium, use 0.80 for lead-acid |
| Name | Type | Req | Description |
|---|---|---|---|
| autonomy_days | number | yes | Number of days the battery can sustain loads |
| autonomy_hours | number | yes | Number of hours the battery can sustain loads |
| battery_cycles_per_year | number | yes | Estimated full discharge cycles per year (365 / autonomy_days) |
| daily_deficit_kwh | number | yes | Effective daily energy need after solar contribution (kWh) |
| usable_kwh | number | yes | Usable battery capacity after DoD and efficiency losses (kWh) |
No examples provided.
battery_charge_time 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.
| Name | Type | Req | Description |
|---|---|---|---|
| capacity_mah | number | yes | Total battery capacity in milliamp-hours (mAh) |
| charge_current_ma | number | yes | Charge current in milliamps (mA) |
| efficiency | number | — | Charger efficiency factor (0-1), default 0.85 |
| initial_soc_pct | number | — | Initial state of charge as percentage (0-100), default 0 (empty) |
| voltage_v | number | — | Nominal battery voltage for energy calculation (V), default 3.7 for Li-ion |
| Name | Type | Req | Description |
|---|---|---|---|
| c_rate | number | yes | C-rate of the charge (charge_current / capacity) |
| charge_time_hours | number | yes | Estimated charge time in hours |
| charge_time_minutes | number | yes | Estimated charge time in minutes |
| energy_required_wh | number | yes | Energy required to charge at nominal voltage (Wh) |
No examples provided.
battery_life 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.
| Name | Type | Req | Description |
|---|---|---|---|
| capacity_mah | number | yes | Battery capacity in milliamp-hours (mAh) |
| current_draw_ma | number | yes | Average current draw in milliamps (mA) |
| efficiency | number | — | Discharge efficiency factor (0-1), accounts for conversion losses and derating, default 0.85 |
| voltage | number | — | Nominal battery voltage (V), default 3.7 for Li-ion |
| Name | Type | Req | Description |
|---|---|---|---|
| effective_capacity_mah | number | yes | Effective usable capacity after efficiency derating (mAh) |
| energy_wh | number | yes | Total battery energy in watt-hours (capacity_mah * voltage / 1000) |
| runtime_days | number | yes | Estimated runtime in days |
| runtime_hours | number | yes | Estimated runtime in hours |
No examples provided.
bmi_calculator 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.
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | yes | Height. Units determined by the 'unit' parameter. |
| unit | string | — | Unit system. 'metric' = kg and cm. 'imperial' = lbs and inches. Defaults to 'metric'. |
| weight | number | yes | Body weight. Units determined by the 'unit' parameter. |
| Name | Type | Req | Description |
|---|---|---|---|
| bmi | number | yes | Body Mass Index value rounded to 1 decimal. |
| category | string | yes | WHO BMI classification: Underweight, Normal weight, Overweight, Obese Class I/II/III. |
| healthy_weight_range_high | number | yes | High end of healthy weight range (BMI 24.9) in the input unit system. |
| healthy_weight_range_low | number | yes | Low end of healthy weight range (BMI 18.5) in the input unit system. |
| weight_unit | string | yes | Unit of the weight values in this response (kg or lbs). |
No examples provided.
capacitor_charge 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.
| Name | Type | Req | Description |
|---|---|---|---|
| capacitance_f | number | yes | Capacitance in farads (C). Use scientific notation, e.g. 1e-6 for 1 µF. |
| resistance_ohm | number | yes | Series resistance in ohms (R). Controls charge/discharge rate. |
| v_initial | number | — | Initial capacitor voltage in volts (default 0 for fully discharged). |
| v_supply | number | yes | Supply voltage in volts. The voltage the capacitor charges toward. |
| v_target | number | — | Target voltage to reach in volts (optional). When provided, calculates time to reach this voltage. Must be between v_initial and v_supply. |
| Name | Type | Req | Description |
|---|---|---|---|
| energy_joules | number | yes | Energy stored at full charge: E = ½CV² in joules. |
| energy_mj | number | yes | Energy stored at full charge in millijoules. |
| peak_current_ma | number | yes | Peak charging current at t=0 in milliamps: Ipeak = (Vsupply − Vinitial) / R. |
| tau_ms | number | yes | RC time constant in milliseconds. |
| tau_s | number | yes | RC time constant (τ = R×C) in seconds. |
| time_to_63pct_ms | number | yes | Time to reach 63.2% of (Vsupply − Vinitial) in milliseconds (1τ). |
| time_to_86pct_ms | number | yes | Time to reach 86.5% of (Vsupply − Vinitial) in milliseconds (2τ). |
| time_to_95pct_ms | number | yes | Time to reach 95.0% of (Vsupply − Vinitial) in milliseconds (3τ). |
| time_to_99pct_ms | number | yes | Time to reach 99.3% of (Vsupply − Vinitial) in milliseconds (5τ). |
| time_to_target_ms | number|null | yes | Time to reach v_target in milliseconds (null if v_target not specified). |
| v_at_1tau | number | yes | Capacitor voltage after 1τ in volts. |
| v_at_2tau | number | yes | Capacitor voltage after 2τ in volts. |
| v_at_5tau | number | yes | Capacitor voltage after 5τ in volts. |
No examples provided.
channel_utilization 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.
| Name | Type | Req | Description |
|---|---|---|---|
| airtime_ms | number | yes | Time-on-air per packet in milliseconds. Obtain from lora_airtime tool. |
| max_duty_cycle_pct | number | — | Maximum acceptable channel utilization percentage. Default 10% is a common Meshtastic guideline. |
| messages_per_hour_per_node | number | — | Average messages transmitted per hour per node. Includes position beacons and user messages. |
| nodes | integer | yes | Number of active nodes in the mesh network. |
| Name | Type | Req | Description |
|---|---|---|---|
| headroom_pct | number | yes | Remaining headroom before hitting the duty cycle limit (can be negative if over limit). |
| max_nodes_at_limit | integer | yes | Maximum number of nodes before exceeding the duty cycle limit. |
| packets_per_hour | number | yes | Total packets per hour across all nodes. |
| utilization_pct | number | yes | Current 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.
| Name | Type | Req | Description |
|---|---|---|---|
| diameter | number | — | The diameter of the circle |
| radius | number | — | The radius of the circle (takes precedence over diameter) |
| Name | Type | Req | Description |
|---|---|---|---|
| area | number | yes | Area of the circle (A = πr²) |
| circumference | number | yes | Circumference of the circle (C = 2πr) |
| diameter | number | yes | Diameter of the circle |
| radius | number | yes | Radius of the circle |
No examples provided.
compound_interest 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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_rate_pct | number | yes | Annual interest rate as a percentage (e.g., 5.5 for 5.5%). |
| compounds_per_year | integer | — | How often interest compounds per year. Allowed: 1 (annually), 2 (semi-annually), 4 (quarterly), 12 (monthly), 52 (weekly), 365 (daily). Defaults to 12. |
| monthly_contribution | number | — | Optional recurring monthly contribution added at each month. Defaults to 0. |
| principal | number | yes | Initial investment or deposit amount (any currency unit). |
| years | number | yes | Investment duration in years. Max 100. |
| Name | Type | Req | Description |
|---|---|---|---|
| effective_annual_rate_pct | number | yes | Effective annual rate accounting for compounding frequency (APY). |
| future_value | number | yes | Final balance after all compounding and contributions. |
| schedule | array | yes | Year-by-year growth schedule. |
| total_contributions | number | yes | Total of all contributions (principal + recurring). |
| total_interest | number | yes | Total interest earned over the full period. |
No examples provided.
confidence_interval 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confidence_level | number | — | Confidence level as a decimal between 0 and 1 (e.g. 0.95 for 95%). Default is 0.95. |
| population_size | integer | — | Total population size for finite population correction (FPC). Omit for infinite population assumption. |
| sample_mean | number | yes | The observed sample mean (x-bar) around which the confidence interval is centered. |
| sample_size | integer | yes | The number of observations in the sample (n). Must be a positive integer. |
| standard_deviation | number | yes | The standard deviation of the sample or population. Must be a positive number. |
| Name | Type | Req | Description |
|---|---|---|---|
| confidence_level | number | yes | The confidence level used (echoed back). |
| lower_bound | number | yes | Lower bound of the confidence interval. |
| margin_of_error | number | yes | Half-width of the confidence interval (z_score * standard_error). |
| standard_error | number | yes | Standard error of the mean, optionally adjusted with finite population correction. |
| upper_bound | number | yes | Upper bound of the confidence interval. |
| z_score | number | yes | Critical z-value used for the given confidence level. |
No examples provided.
cooling_btu 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.
| Name | Type | Req | Description |
|---|---|---|---|
| ambient_temp_f | number | — | Ambient temperature outside the room in degrees Fahrenheit |
| insulation | string | — | Wall/ceiling insulation quality: poor (uninsulated garage), average (standard drywall), good (insulated interior), excellent (server room with vapor barrier) |
| room_height_ft | number | — | Room ceiling height in feet |
| room_length_ft | number | — | Room length in feet |
| room_width_ft | number | — | Room width in feet |
| sun_exposure | string | — | Solar heat gain: none (interior/basement room), partial (one exterior wall with window), full (multiple sun-facing windows) |
| target_temp_f | number | — | Desired room temperature in degrees Fahrenheit |
| total_watts | number | yes | Total power consumption in watts — all power becomes heat |
| Name | Type | Req | Description |
|---|---|---|---|
| ac_tons | number | yes | Cooling capacity needed in tons of refrigeration (1 ton = 12,000 BTU/hr) |
| envelope_btu | number | yes | Heat gain/loss through walls based on room size, insulation, and delta-T |
| equipment_btu | number | yes | Heat generated by equipment in BTU/hr (watts * 3.412) |
| exhaust_cfm_needed | number | yes | Exhaust fan airflow needed in cubic feet per minute if using ventilation instead of AC |
| mini_split_btu_recommended | number | yes | Recommended mini-split size rounded up to nearest 6,000 BTU increment |
| total_btu | number | yes | Total cooling load in BTU/hr (equipment + envelope + sun) |
| will_overheat | boolean | yes | True if total heat load is positive and no cooling is provided |
No examples provided.
date_difference 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.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | yes | End date in YYYY-MM-DD format (e.g., '2024-12-31'). |
| start_date | string | yes | Start date in YYYY-MM-DD format (e.g., '2024-01-15'). |
| Name | Type | Req | Description |
|---|---|---|---|
| business_days | number | yes | Number of weekdays (Monday-Friday) between the dates. |
| days | number | yes | Total number of days between the two dates (absolute value). |
| is_future | boolean | yes | True if end_date is after start_date. |
| months | number | yes | Approximate number of months (days / 30.44). |
| weeks | number | yes | Number of complete weeks. |
| years | number | yes | Approximate number of years (days / 365.25). |
No examples provided.
dbm_convert 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dbm | number | yes | Power level in dBm (decibels relative to 1 milliwatt) |
| impedance_ohm | number | — | Load impedance in ohms for Vrms calculation (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| dbw | number | yes | Power in dBW (decibels relative to 1 watt) |
| mw | number | yes | Power in milliwatts |
| vrms | number | yes | RMS voltage across the load impedance in volts |
| watts | number | yes | Power 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.
| Name | Type | Req | Description |
|---|---|---|---|
| freq_mhz | number | yes | Operating frequency in megahertz (MHz) |
| type | string | — | Antenna type: half_wave dipole or quarter_wave monopole |
| Name | Type | Req | Description |
|---|---|---|---|
| length_ft | number | yes | Element length in feet |
| length_in | number | yes | Element length in inches |
| length_m | number | yes | Element length in metres |
| wavelength_m | number | yes | Full wavelength in metres |
No examples provided.
duty_cycle_budget 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.
| Name | Type | Req | Description |
|---|---|---|---|
| airtime_ms | number | yes | Packet time-on-air in milliseconds. Obtain from the lora_airtime tool. |
| region | string | — | LoRa 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| duty_cycle_pct | number | yes | Applicable duty cycle limit as a percentage. 100 means no duty cycle restriction. |
| dwell_time_limited | boolean | yes | True if the region enforces a per-transmission dwell time limit (e.g., US915 400 ms). |
| effective_data_rate_bps | number | yes | Effective throughput in bits per second considering duty cycle. For duty-cycle-limited regions, this reflects actual achievable throughput. |
| max_messages_per_hour | integer | yes | Maximum messages per hour allowed under the regional duty cycle constraint. |
| min_interval_s | number | yes | Minimum interval between transmissions in seconds to comply with duty cycle regulation. |
No examples provided.
eirp_compliance 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.
| Name | Type | Req | Description |
|---|---|---|---|
| antenna_gain_dbi | number | yes | Antenna gain in dBi. Stock Meshtastic antennas: 2-3 dBi. External: 6-10+ dBi. |
| cable_loss_db | number | — | Coaxial cable and connector loss in dB. Set 0 for devices with integrated antennas. |
| custom_limit_dbm | number | — | Custom EIRP limit in dBm. Only used when region is 'custom'. |
| region | string | — | Regulatory 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_dbm | number | yes | Conducted transmit power at the radio output in dBm. Typical LoRa: 14-22 dBm. |
| Name | Type | Req | Description |
|---|---|---|---|
| compliant | boolean | yes | True if EIRP is at or below the regional limit. |
| eirp_dbm | number | yes | Calculated EIRP in dBm: tx_power + antenna_gain - cable_loss. |
| eirp_watts | number | yes | Calculated EIRP converted to watts. |
| limit_dbm | number | yes | Regional EIRP limit in dBm. |
| limit_watts | number | yes | Regional EIRP limit converted to watts. |
| margin_db | number | yes | Margin below the limit in dB. Positive = compliant, negative = over limit. |
| region_name | string | yes | Human-readable region name. |
| warning | string | yes | Warning message if non-compliant, or empty string if compliant. |
No examples provided.
exponent_calc 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.
| Name | Type | Req | Description |
|---|---|---|---|
| base | number | yes | The base number |
| exponent | number | yes | The exponent (power) to raise the base to |
| Name | Type | Req | Description |
|---|---|---|---|
| result | number | yes | The computed value of base^exponent |
| scientific_notation | string | yes | Result in scientific notation for very large/small values |
No examples provided.
fresnel_zone 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dist_km | number | yes | Total link distance in kilometres |
| freq_mhz | number | yes | Operating frequency in megahertz (MHz) |
| zone_number | integer | — | Fresnel zone number (1-5, default 1) |
| Name | Type | Req | Description |
|---|---|---|---|
| clearance_60pct_m | number | yes | 60% Fresnel zone clearance (practical minimum) in metres |
| radius_ft | number | yes | Fresnel zone radius at midpoint in feet |
| radius_m | number | yes | Fresnel zone radius at midpoint in metres |
| wavelength_m | number | yes | RF 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dist_km | number | yes | Distance between transmitter and receiver in kilometres |
| freq_mhz | number | yes | Carrier frequency in megahertz (MHz) |
| Name | Type | Req | Description |
|---|---|---|---|
| fspl_db | number | yes | Free-space path loss in decibels (dB) |
| wavelength_m | number | yes | RF wavelength in metres |
No examples provided.
generator_offset 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.
| Name | Type | Req | Description |
|---|---|---|---|
| battery_kwh | number | — | Battery storage capacity in kWh (0 means no battery, generator needed at night), default 0 |
| daily_kwh_needed | number | yes | Total daily energy requirement in kWh |
| generator_consumption_gph | number | — | Generator fuel consumption in gallons per hour at load, default 1.0 |
| generator_fuel_cost_per_gallon | number | — | Fuel cost per gallon in USD, default $3.50 |
| generator_hours_per_day | number | — | Generator runtime hours per day, default 8 |
| generator_maintenance_per_1000hrs | number | — | Generator maintenance cost per 1000 running hours in USD, default $200 |
| solar_daily_kwh_produced | number | yes | Daily solar energy production in kWh |
| solar_system_cost_usd | number | yes | Total solar+battery system cost in USD |
| years_to_compare | integer | — | Number of years to compare, default 10 |
| Name | Type | Req | Description |
|---|---|---|---|
| breakeven_year | number | yes | Year when solar cumulative cost becomes cheaper than generator (0 if never) |
| generator_hours_saved_per_year | number | yes | Generator hours eliminated per year by solar |
| generator_total_cost_usd | number | yes | Total generator cost over comparison period in USD |
| generator_yearly_cost_usd | number | yes | Annual generator cost (fuel + maintenance) in USD |
| savings_pct | number | yes | Percentage savings of solar vs generator |
| savings_usd | number | yes | Total savings of solar over generator in USD (negative means generator is cheaper) |
| solar_coverage_pct | number | yes | Percentage of daily energy needs covered by solar+battery |
| solar_total_cost_usd | number | yes | Total solar cost over comparison period in USD |
| solar_yearly_cost_usd | number | yes | Annualized solar system cost (amortized + maintenance) in USD |
No examples provided.
heatsink_cfd 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.
| Name | Type | Req | Description |
|---|---|---|---|
| airflow_velocity_ms | number | yes | Incoming airflow velocity in m/s |
| ambient_temp_c | number | — | Ambient air temperature in Celsius |
| base_height_m | number | yes | Base plate thickness in metres |
| base_length_m | number | yes | Heatsink base length in metres |
| base_width_m | number | yes | Heatsink base width in metres |
| fin_count | integer | yes | Number of fins |
| fin_height_m | number | yes | Fin height in metres |
| fin_thickness_m | number | yes | Fin thickness in metres |
| heat_load_w | number | yes | Total heat load applied to base in watts |
| mesh_density | string | — | Mesh density |
| Name | Type | Req | Description |
|---|---|---|---|
| avg_base_temp_c | number | yes | Average base temperature (°C) |
| fin_efficiency | number | yes | Fin efficiency (0-1) |
| fin_tip_temp_c | number | yes | Average fin tip temperature (°C) |
| max_base_temp_c | number | yes | Maximum base temperature (°C) |
| mesh_cells | number | yes | Mesh cell count |
| optimal_fin_spacing_m | number | yes | Suggested optimal fin spacing for this airflow (m) |
| pressure_drop_pa | number | yes | Pressure drop across the heatsink (Pa) |
| runtime_ms | number | yes | Simulation time in ms |
| thermal_resistance_cw | number | yes | Thermal resistance from base to air (°C/W) |
| warnings | array | yes | Solver warnings |
No examples provided.
hex_converter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| value | string | yes | The 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| ascii | string|null | yes | ASCII character if the value is a printable character (32-126), null otherwise. |
| binary | string | yes | Binary string with 0b prefix (e.g. '0b11111111'). |
| bits | number | yes | Minimum number of bits needed to represent this value (unsigned). |
| bytes | number | yes | Minimum number of bytes needed (ceil(bits/8)). |
| decimal | number | yes | Decimal (base-10) value. |
| hex | string | yes | Hexadecimal string with 0x prefix (e.g. '0xFF'). |
| hex_upper | string | yes | Hexadecimal with uppercase letters (e.g. '0xFF'). |
| octal | string | yes | Octal string with 0o prefix (e.g. '0o377'). |
| signed_16 | number|null | yes | Signed 16-bit interpretation (-32768 to 32767), null if out of range. |
| signed_32 | number|null | yes | Signed 32-bit interpretation, null if out of range. |
| signed_8 | number|null | yes | Signed 8-bit interpretation (-128 to 127), null if out of range. |
No examples provided.
impedance_match 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.
| Name | Type | Req | Description |
|---|---|---|---|
| freq_mhz | number | yes | Design frequency in megahertz for component value calculation. |
| load_ohm | number | yes | Load impedance in ohms (real, resistive). Must differ from source impedance. |
| source_ohm | number | yes | Source impedance in ohms (real, resistive). Must differ from load impedance. |
| Name | Type | Req | Description |
|---|---|---|---|
| q_factor | number | yes | Network Q factor = sqrt(Rh/Rl - 1), where Rh is the higher impedance. |
| series_component | object | yes | The series component of the L-network. |
| shunt_component | object | yes | The shunt (parallel) component of the L-network. |
| topology | string | yes | Description of the L-network arrangement (which side gets shunt vs series element). |
No examples provided.
inverter_sizing 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.
| Name | Type | Req | Description |
|---|---|---|---|
| continuous_watts | number | yes | Total continuous load in watts. Sum of all appliances that may run simultaneously. Chain from solar_load_audit.peak_watts. |
| derating_pct | number | — | Derating percentage for temperature, altitude, and safety margin. NEC recommends 20% (80% continuous rating). Range 0-50%. |
| efficiency | number | — | Inverter 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_watts | number | — | Wattage of the single largest appliance. Used to estimate surge if surge_watts is not provided. Chain from solar_load_audit.largest_load_watts. |
| power_factor | number | — | Power 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_watts | number | — | Peak 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_voltage | string | — | DC system voltage. 12V for small/mobile, 24V for medium, 48V for large residential/commercial. Higher voltage = lower current = thinner cables. |
| Name | Type | Req | Description |
|---|---|---|---|
| battery_cable_note | string | yes | Guidance on DC cable sizing based on the continuous current draw. |
| dc_current_continuous_a | number | yes | Continuous DC input current draw at system voltage: VA / (voltage * efficiency). Sizes the DC wiring and fuses. |
| dc_current_surge_a | number | yes | Peak DC input current during surge. Sizes the DC fuse and battery cable. |
| derated_continuous_va | number | yes | Continuous VA after applying derating factor. The inverter must be rated at or above this value. |
| efficiency_loss_watts | number | yes | Power lost to inverter inefficiency at continuous load, in watts. |
| recommended_size_watts | number | yes | Nearest standard inverter size (watts) that meets the derated requirement. |
| required_continuous_va | number | yes | Required continuous VA rating accounting for power factor: continuous_watts / power_factor. |
| required_surge_va | number | yes | Required surge/peak VA capacity for motor starting loads. |
| surge_margin_pct | number | yes | How much surge headroom the recommended inverter provides above the estimated surge requirement. |
No examples provided.
lc_resonance 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.
| Name | Type | Req | Description |
|---|---|---|---|
| capacitance_f | number | yes | Capacitance in farads (F). The capacitive element of the LC circuit. |
| inductance_h | number | yes | Inductance in henries (H). The inductive element of the LC circuit. |
| resistance_ohm | number | — | Optional series resistance in ohms for Q factor and bandwidth calculation. Omit for ideal LC analysis. |
| Name | Type | Req | Description |
|---|---|---|---|
| angular_freq_rad | number | yes | Angular resonant frequency in radians per second (omega_0 = 2*pi*f0). |
| bandwidth_hz | number|null | yes | 3 dB bandwidth in hertz (f0/Q). Null if no resistance provided. |
| impedance_at_resonance_ohm | number|null | yes | Impedance at resonance in ohms. Equals the series resistance R if provided; null if ideal (no R). |
| q_factor | number|null | yes | Quality factor Q = (1/R)*sqrt(L/C). Null if no resistance provided. |
| resonant_freq_hz | number | yes | Resonant frequency in hertz. |
| resonant_freq_mhz | number | yes | Resonant frequency in megahertz for convenience. |
No examples provided.
led_resistor 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.
| Name | Type | Req | Description |
|---|---|---|---|
| led_count | integer | — | Number of LEDs in series. Defaults to 1. |
| led_current_ma | number | — | Desired LED current in milliamps (mA). Defaults to 20mA. |
| led_forward_v | number | — | LED forward voltage in volts (V). Defaults to 2.0V (typical red LED). |
| supply_voltage_v | number | yes | Supply voltage in volts (V). Must be positive. |
| Name | Type | Req | Description |
|---|---|---|---|
| actual_current_ma | number | yes | Actual LED current in milliamps (mA) when using the nearest E24 resistor. |
| nearest_e24_ohm | number | yes | Nearest standard E24 series resistor value in ohms. |
| power_dissipation_mw | number | yes | Power dissipated by the resistor in milliwatts (mW), using the E24 value. |
| resistance_ohm | number | yes | Exact calculated resistance in ohms. |
| voltage_across_resistor_v | number | yes | Voltage drop across the current-limiting resistor in volts. |
No examples provided.
link_budget 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dist_km | number | yes | Link distance in kilometres |
| freq_mhz | number | yes | Carrier frequency in megahertz (MHz) |
| rx_gain_dbi | number | — | Receive antenna gain in dBi (default 2.15 for a half-wave dipole) |
| rx_sensitivity_dbm | number | — | Receiver sensitivity in dBm; when provided, link margin is calculated |
| tx_dbm | number | yes | Transmitter output power in dBm |
| tx_gain_dbi | number | — | Transmit antenna gain in dBi (default 2.15 for a half-wave dipole) |
| Name | Type | Req | Description |
|---|---|---|---|
| eirp_dbm | number | yes | Effective isotropic radiated power in dBm |
| fspl_db | number | yes | Free-space path loss in dB |
| margin_db | number|null | yes | Link margin in dB (null when sensitivity is not provided) |
| rx_power_dbm | number | yes | Received signal power in dBm |
| wavelength_m | number | yes | RF wavelength in metres |
No examples provided.
loan_amortization 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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_rate_pct | number | yes | Annual interest rate as a percentage (e.g., 6.5 for 6.5%). |
| extra_payment | number | — | Optional fixed extra monthly payment toward principal. Defaults to 0. |
| principal | number | yes | Loan principal amount in dollars (or any currency unit). |
| term_months | integer | yes | Loan term in months. Max 600 (50 years). Common values: 360 (30yr), 180 (15yr), 60 (5yr auto). |
| Name | Type | Req | Description |
|---|---|---|---|
| interest_saved | number | yes | Interest saved by extra payments vs. full term. 0 if no extra payments. |
| monthly_payment | number | yes | Fixed monthly payment (excluding extra payments). |
| payoff_months | number | yes | Actual number of months to pay off (may be less than term with extra payments). |
| schedule | array | yes | Month-by-month amortization schedule. |
| total_extra_paid | number | yes | Total extra payments made. |
| total_interest | number | yes | Total interest paid over the life of the loan. |
| total_payments | number | yes | Sum of all payments over the life of the loan. |
No examples provided.
log_calc 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.
| Name | Type | Req | Description |
|---|---|---|---|
| base | number | — | The logarithm base (default 10). Must be positive and not equal to 1 |
| value | number | yes | The positive number to compute the logarithm of |
| Name | Type | Req | Description |
|---|---|---|---|
| log10 | number | yes | Common logarithm (base 10) of the value |
| log2 | number | yes | Binary logarithm (base 2) of the value |
| natural_log | number | yes | Natural logarithm (ln) of the value |
| result | number | yes | Logarithm of the value in the specified base: log_base(value) |
No examples provided.
lora_airtime 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bw_khz | number | — | LoRa channel bandwidth in kHz. Common values: 125, 250, or 500. |
| cr | integer | — | LoRa coding rate denominator (5-8). Represents 4/5 through 4/8 FEC ratio. |
| crc | boolean | — | Whether CRC is appended to payload. Recommended true for reliability. |
| explicit_header | boolean | — | Whether to use explicit header mode. True for LoRaWAN; false for implicit header. |
| low_data_rate_optimize | boolean | — | Enable low data rate optimization. Auto-calculated if omitted: enabled for SF >= 11 at BW 125 kHz. |
| payload_bytes | integer | yes | Application payload size in bytes (0-255). |
| preamble_symbols | integer | — | Number of preamble symbols. LoRaWAN uses 8; raw LoRa may vary. |
| sf | integer | — | LoRa spreading factor (7-12). Higher SF = longer range but slower data rate. |
| Name | Type | Req | Description |
|---|---|---|---|
| airtime_ms | number | yes | Total packet time-on-air in milliseconds. |
| data_rate_bps | number | yes | Effective data rate in bits per second. |
| duty_cycle_1pct_interval_s | number | yes | Minimum interval between transmissions in seconds to respect 1% duty cycle regulation. |
| payload_symbols | integer | yes | Number of symbols used for the payload + header portion. |
| preamble_time_ms | number | yes | Preamble duration in milliseconds (includes 4.25 sync symbols). |
| symbol_time_ms | number | yes | Duration of a single LoRa symbol in milliseconds. |
No examples provided.
lora_param_optimizer 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.
| Name | Type | Req | Description |
|---|---|---|---|
| antenna_gain_dbi | number | — | Antenna gain in dBi. 2.15 = half-wave dipole reference. |
| max_payload_bytes | integer | — | Maximum payload size in bytes for airtime calculation. |
| priority | string | — | Optimization 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. |
| region | string | — | Regulatory region. Determines max TX power and duty cycle limit. |
| target_range_km | number | yes | Desired communication range in kilometers. |
| terrain | string | — | Terrain type for path loss model. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings. |
| Name | Type | Req | Description |
|---|---|---|---|
| airtime_ms | number | yes | Packet airtime in milliseconds for the given payload. |
| data_rate_bps | number | yes | Effective data rate in bits per second. |
| estimated_battery_hours | number | yes | Estimated battery life in hours with a 3000 mAh reference battery. |
| estimated_range_km | number | yes | Estimated achievable range in km with the recommended parameters. |
| messages_per_hour_limit | integer | yes | Maximum messages per hour under regional duty cycle constraint. |
| recommended_bw_khz | number | yes | Recommended bandwidth in kHz (125, 250, or 500). |
| recommended_sf | integer | yes | Recommended spreading factor (7-12). |
| recommended_tx_dbm | number | yes | Recommended transmit power in dBm. |
No examples provided.
lora_range_estimate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| freq_mhz | number | — | Carrier frequency in MHz. Common: 868 (EU), 915 (US/AU), 433 (Asia). |
| rx_gain_dbi | number | — | Receive antenna gain in dBi. 2.15 dBi = half-wave dipole. |
| rx_sensitivity_dbm | number | — | Receiver sensitivity in dBm. Typical LoRa SF10/BW125: -130 dBm. Varies by SF and bandwidth. |
| terrain | string | — | Terrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings. |
| tx_dbm | number | — | Transmit power in dBm. Typical LoRa: 14-30 dBm depending on region and module. |
| tx_gain_dbi | number | — | Transmit antenna gain in dBi. 2.15 dBi = half-wave dipole. |
| Name | Type | Req | Description |
|---|---|---|---|
| effective_path_loss_db | number | yes | Maximum allowable path loss in dB (link budget minus terrain correction). |
| margin_at_1km_db | number | yes | Link margin at 1 km distance in dB. Positive means signal above sensitivity. |
| max_range_km | number | yes | Estimated maximum range in kilometers accounting for terrain correction. |
No examples provided.
lora_sensitivity 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bw_khz | number | — | LoRa channel bandwidth in kHz. Lower bandwidth = better sensitivity. |
| noise_figure_db | number | — | Receiver noise figure in dB. Typical LoRa radio NF is 6 dB (SX1276). |
| sf | integer | — | LoRa spreading factor (7-12). Higher SF = better sensitivity but slower data rate. |
| Name | Type | Req | Description |
|---|---|---|---|
| noise_floor_dbm | number | yes | Receiver noise floor in dBm, computed from thermal noise, bandwidth, and noise figure. |
| required_snr_db | number | yes | Minimum SNR required for LoRa demodulation at the given spreading factor. |
| sensitivity_dbm | number | yes | Receiver sensitivity in dBm. The minimum signal power for successful demodulation. |
| thermal_noise_dbm | number | yes | Thermal noise power density at room temperature: -174 dBm/Hz. |
No examples provided.
mah_to_wh 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.
| Name | Type | Req | Description |
|---|---|---|---|
| capacity_mah | number | yes | Battery capacity in milliamp-hours (mAh) |
| voltage_v | number | yes | Nominal battery voltage (V) |
| Name | Type | Req | Description |
|---|---|---|---|
| joules | number | yes | Energy in joules |
| kwh | number | yes | Energy in kilowatt-hours |
| mah | number | yes | Input capacity echoed back (mAh) |
| voltage_v | number | yes | Input voltage echoed back (V) |
| wh | number | yes | Energy in watt-hours |
No examples provided.
meshtastic_power 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.
| Name | Type | Req | Description |
|---|---|---|---|
| battery_mah | number | — | Battery capacity in milliamp-hours. Common: 1100 (18650 min), 3000 (typical), 6000 (large). |
| battery_voltage | number | — | Nominal battery voltage. 3.7V for single-cell LiPo/Li-ion, 7.4V for 2S packs. |
| bluetooth_enabled | boolean | — | Whether Bluetooth is enabled for phone connection. |
| channel_preset | string | — | Meshtastic channel preset. Affects TX airtime per message and thus power consumption. |
| device | string | — | Meshtastic hardware device. Selects power consumption profile for sleep, RX, TX, GPS, and BLE. |
| gps_enabled | boolean | — | Whether GPS is enabled. Significantly increases power draw on devices with built-in GPS. |
| messages_per_hour | number | — | Expected messages sent and received per hour. Includes both TX and RX message events. |
| role | string | — | Meshtastic node role. client: sleeps between events. router: always listening. repeater: always listening, no display/BLE. client_muted: aggressive sleep. |
| Name | Type | Req | Description |
|---|---|---|---|
| avg_current_ma | number | yes | Estimated average current draw in milliamps. |
| daily_wh | number | yes | Estimated daily energy consumption in watt-hours. |
| runtime_days | number | yes | Estimated battery runtime in days. |
| runtime_hours | number | yes | Estimated battery runtime in hours. |
| rx_time_pct | number | yes | Percentage of time spent in receive mode (radio listening). |
| sleep_time_pct | number | yes | Percentage of time spent in sleep/low-power mode. |
| tx_time_pct | number | yes | Percentage of time spent transmitting. |
No examples provided.
meshtastic_range 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.
| Name | Type | Req | Description |
|---|---|---|---|
| antenna_gain_dbi | number | — | Override device default antenna gain in dBi. Useful for aftermarket antennas. |
| bw_khz | number | — | Custom bandwidth in kHz. Only used when channel_preset is 'custom'. |
| channel_preset | string | — | Meshtastic 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. |
| cr | integer | — | Custom coding rate denominator (5-8). Only used when channel_preset is 'custom'. |
| device | string | — | Meshtastic hardware device. Selects default TX power, antenna gain, and noise figure. Use 'custom' to override all radio parameters manually. |
| sf | integer | — | Custom spreading factor (7-12). Only used when channel_preset is 'custom'. |
| terrain | string | — | Terrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings. |
| tx_power_dbm | number | — | Override device default transmit power in dBm. |
| Name | Type | Req | Description |
|---|---|---|---|
| antenna_gain_dbi | number | yes | Antenna gain in dBi used for the calculation. |
| channel_name | string | yes | Human-readable channel preset name. |
| device_name | string | yes | Human-readable device name. |
| effective_bw_khz | number | yes | Bandwidth in kHz used for the calculation. |
| effective_sf | number | yes | Spreading factor used for the calculation. |
| link_budget_db | number | yes | Total link budget in dB before terrain correction. |
| max_range_km | number | yes | Estimated maximum range in km accounting for terrain correction. |
| rx_sensitivity_dbm | number | yes | Receiver sensitivity in dBm for the selected channel preset. |
| tx_power_dbm | number | yes | Transmit 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.
| Name | Type | Req | Description |
|---|---|---|---|
| copper_oz | number | — | Copper weight in oz/ft2 (1 oz = 0.035 mm thickness) |
| er | number | — | Substrate relative dielectric constant (default 4.6 for FR-4) |
| freq_mhz | number | — | Optional frequency in MHz for effective wavelength calculation |
| height_mm | number | yes | Substrate height (dielectric thickness) in millimetres |
| z0_ohm | number | — | Target characteristic impedance in ohms (default 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| er_eff | number | yes | Effective dielectric constant of the microstrip |
| wavelength_eff_mm | number|null | yes | Effective wavelength in millimetres at the given frequency (null if freq not provided) |
| width_mm | number | yes | Required trace width in millimetres |
No examples provided.