{"serverId":"mcp-registry/engineer.calc/calc","tools":[{"name":"battery_charge_time","fixed":{"name":"battery_charge_time","description":"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 ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["capacity_mah","charge_current_ma"],"properties":{"voltage_v":{"type":"number","default":3.7,"description":"Nominal battery voltage for energy calculation (V), default 3.7 for Li-ion","exclusiveMinimum":0},"efficiency":{"type":"number","default":0.85,"maximum":1,"minimum":0,"description":"Charger efficiency factor (0-1), default 0.85"},"capacity_mah":{"type":"number","description":"Total battery capacity in milliamp-hours (mAh)","exclusiveMinimum":0},"initial_soc_pct":{"type":"number","default":0,"maximum":100,"minimum":0,"description":"Initial state of charge as percentage (0-100), default 0 (empty)"},"charge_current_ma":{"type":"number","description":"Charge current in milliamps (mA)","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"battery charge time"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":387,"tokensAfter":387},{"name":"capacitor_charge","fixed":{"name":"capacitor_charge","description":"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, pow","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["resistance_ohm","capacitance_f","v_supply"],"properties":{"v_supply":{"type":"number","description":"Supply voltage in volts. The voltage the capacitor charges toward.","exclusiveMinimum":0},"v_target":{"type":"number","description":"Target voltage to reach in volts (optional). When provided, calculates time to reach this voltage. Must be between v_initial and v_supply."},"v_initial":{"type":"number","default":0,"description":"Initial capacitor voltage in volts (default 0 for fully discharged)."},"capacitance_f":{"type":"number","description":"Capacitance in farads (C). Use scientific notation, e.g. 1e-6 for 1 µF.","exclusiveMinimum":0},"resistance_ohm":{"type":"number","description":"Series resistance in ohms (R). Controls charge/discharge rate.","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"capacitor charge"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":404,"tokensAfter":404},{"name":"dbm_convert","fixed":{"name":"dbm_convert","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["dbm"],"properties":{"dbm":{"type":"number","description":"Power level in dBm (decibels relative to 1 milliwatt)"},"impedance_ohm":{"type":"number","default":50,"description":"Load impedance in ohms for Vrms calculation (default 50)","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"dbm convert"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"hex_converter","fixed":{"name":"hex_converter","description":"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 ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["value"],"properties":{"value":{"type":"string","description":"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."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"hex converter"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":254,"tokensAfter":254},{"name":"lora_range_estimate","fixed":{"name":"lora_range_estimate","description":"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 corr","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"tx_dbm":{"type":"number","default":20,"description":"Transmit power in dBm. Typical LoRa: 14-30 dBm depending on region and module."},"terrain":{"enum":["open","suburban","urban","dense_urban","indoor"],"type":"string","default":"suburban","description":"Terrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings."},"freq_mhz":{"type":"number","default":915,"description":"Carrier frequency in MHz. Common: 868 (EU), 915 (US/AU), 433 (Asia)."},"rx_gain_dbi":{"type":"number","default":2.15,"description":"Receive antenna gain in dBi. 2.15 dBi = half-wave dipole."},"tx_gain_dbi":{"type":"number","default":2.15,"description":"Transmit antenna gain in dBi. 2.15 dBi = half-wave dipole."},"rx_sensitivity_dbm":{"type":"number","default":-130,"description":"Receiver sensitivity in dBm. Typical LoRa SF10/BW125: -130 dBm. Varies by SF and bandwidth."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"lora range estimate"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":454,"tokensAfter":454},{"name":"timestamp_converter","fixed":{"name":"timestamp_converter","description":"Convert between Unix timestamps and human-readable date/time formats. Accepts Unix epoch (in seconds or milliseconds), ISO 8601 strings, or 'now' for the current time. Returns both Unix seconds and milliseconds, ISO 8601 UTC string, date and time components, day of the week, relative time description ('2 hours ago'), and past/future indicator. Auto-detects whether a numeric input is seconds or milliseconds based on magnitude. Essential for debugging logs, API timestamps, cron scheduling, and tim","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["value"],"properties":{"value":{"type":"string","description":"A timestamp to convert. Accepts Unix epoch (seconds or milliseconds), ISO 8601 string (e.g. '2024-01-15T10:30:00Z'), or 'now' for the current time."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"timestamp converter"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":247,"tokensAfter":247},{"name":"unit_convert","fixed":{"name":"unit_convert","description":"Convert between units across 10 categories: length (m, km, mi, ft, in, yd, nmi), mass (kg, lb, oz, g, ton), volume (l, gal, ml, cup, fl_oz), area (m2, ft2, acre, hectare), speed (mps, kph, mph, knot), pressure (pa, psi, bar, atm, mmhg), energy (j, kwh, btu, cal, wh), data (b, kb, mb, gb, tb), time (s, ms, min, hr, day, year), and temperature (c, f, k). Accepts any value with source and target unit abbreviations. Returns the converted result with the formula used.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["value","from","to"],"properties":{"to":{"type":"string","description":"Target unit abbreviation (e.g., 'mi', 'kg', 'c', 'bar', 'btu'). Case-insensitive."},"from":{"type":"string","description":"Source unit abbreviation (e.g., 'km', 'lb', 'f', 'psi', 'kwh'). Case-insensitive."},"value":{"type":"number","description":"The numeric value to convert."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"unit convert"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":274,"tokensAfter":274},{"name":"ups_runtime","fixed":{"name":"ups_runtime","description":"Estimates UPS (Uninterruptible Power Supply) backup runtime from battery specifications and connected load. Takes VA rating, watt rating, load in watts, and battery configuration (count, voltage, amp-hours) to compute effective stored energy after efficiency losses and runtime in minutes and hours. Detects overload conditions when load exceeds the UPS watt rating. Calculates power factor from VA/W ratings. Ideal for server rack planning, homelab power budgeting, network closet UPS selection, and","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["va_rating","watt_rating","load_watts"],"properties":{"va_rating":{"type":"number","description":"UPS VA (volt-ampere) rating","exclusiveMinimum":0},"battery_ah":{"type":"number","default":9,"description":"Capacity per battery in amp-hours (Ah)","exclusiveMinimum":0},"efficiency":{"type":"number","default":0.9,"maximum":1,"minimum":0,"description":"Inverter/conversion efficiency (0-1), default 0.9"},"load_watts":{"type":"number","description":"Connected load in watts","exclusiveMinimum":0},"watt_rating":{"type":"number","description":"UPS real power (watt) rating","exclusiveMinimum":0},"battery_count":{"type":"integer","default":1,"description":"Number of batteries in the UPS","exclusiveMinimum":0},"battery_voltage":{"type":"number","default":12,"description":"Voltage per battery (V)","exclusiveMinimum":0}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"ups runtime"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":412,"tokensAfter":412},{"name":"voltage_drop","fixed":{"name":"voltage_drop","description":"Calculates voltage drop across a conductor run given current, wire length, AWG gauge, system voltage, and conductor material (copper or aluminum). Computes round-trip resistance, voltage drop in volts and percent, voltage at the load end, power dissipated in the wire, and NEC compliance flags (3% max for branch circuits, 5% max for feeders). Use this after wire_gauge to verify a specific gauge meets requirements, or to evaluate an existing installation. Critical for solar panel string wiring, EV","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["current_amps","wire_length_m","wire_gauge_awg","voltage_v"],"properties":{"conductor":{"enum":["copper","aluminum"],"type":"string","default":"copper","description":"Conductor material: copper or aluminum"},"voltage_v":{"type":"number","description":"System voltage (V)","exclusiveMinimum":0},"current_amps":{"type":"number","description":"Load current in amperes (A)","exclusiveMinimum":0},"wire_length_m":{"type":"number","description":"One-way wire length in meters","exclusiveMinimum":0},"wire_gauge_awg":{"type":"number","description":"Wire gauge in AWG (e.g. 14, 12, 10; use negative for large gauges: -3 = 4/0)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false},"title":"voltage drop"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":358,"tokensAfter":358}],"toolsChanged":9,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}