Skip to main content
Glama

calc.engineer

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.

Tool Definition Quality

Score is being calculated. Check back soon.

Available Tools

89 tools
attenuator_piattenuator piInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
z0_ohmNoCharacteristic impedance in ohms (default 50)
attenuation_dbYesDesired attenuation in decibels (positive value)

Output Schema

ParametersJSON Schema
NameRequiredDescription
r1_ohmYesShunt resistor R1 (input side) in ohms
r2_ohmYesSeries resistor R2 (middle) in ohms
r3_ohmYesShunt resistor R3 (output side) in ohms
topologyYesAttenuator topology identifier
attenuator_teeattenuator teeAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
z0_ohmNoCharacteristic impedance in ohms (default 50)
attenuation_dbYesDesired attenuation in decibels (positive value)

Output Schema

ParametersJSON Schema
NameRequiredDescription
r1_ohmYesSeries resistor R1 (input side) in ohms
r2_ohmYesShunt resistor R2 (middle) in ohms
r3_ohmYesSeries resistor R3 (output side) in ohms
topologyYesAttenuator topology identifier
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It explains the computation of three resistor values and the symmetrical nature. However, it does not detail the output format, though an output schema is present (not shown). Overall, it sufficiently discloses the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two substantial sentences and a comparison. Every sentence adds value without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (2 parameters, output schema exists), the description is complete enough. It covers the purpose, typical use, and topology. Minor missing details like output format are compensated by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds context by explaining that attenuation_db is in decibels, z0_ohm defaults to 50 ohms, and describes the roles of R1, R2, R3. This goes beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it designs a Tee-topology resistive attenuator pad, computes resistor values, and is used in RF signal chains. It distinguishes itself from the sibling tool attenuator_pi by explicitly mentioning the topology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool (for Tee topology) and compares it with an alternative (attenuator_pi for Pi-pad topology), aiding tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

battery_autonomybattery autonomyAInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dodNoDepth of discharge (0-1), default 0.8 for lithium
daily_kwhYesDaily energy consumption in kilowatt-hours (kWh)
battery_kwhYesTotal installed battery capacity in kWh
min_soc_pctNoMinimum state of charge percentage, default 20%
round_trip_efficiencyNoBattery round-trip efficiency (0-1), default 0.90 for lithium, use 0.80 for lead-acid
avg_solar_contribution_pctNoAverage solar contribution during autonomy period (0-100%), default 0 for worst-case

Output Schema

ParametersJSON Schema
NameRequiredDescription
usable_kwhYesUsable battery capacity after DoD and efficiency losses (kWh)
autonomy_daysYesNumber of days the battery can sustain loads
autonomy_hoursYesNumber of hours the battery can sustain loads
daily_deficit_kwhYesEffective daily energy need after solar contribution (kWh)
battery_cycles_per_yearYesEstimated full discharge cycles per year (365 / autonomy_days)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses outputs (autonomy days/hours, usable capacity, daily deficit) and accounts for multiple factors. Lacks mention of error handling or potential side effects, but as a pure calculation tool, behavior is well-covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences: purpose, factors, outputs, usage. Front-loaded with critical info, every sentence adds value. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and existence of output schema, description is complete. Covers inputs, outputs, usage, and chaining context. No missing information for a calculation tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds significant value beyond schema: explains how to set avg_solar_contribution_pct, provides defaults for round_trip_efficiency (lithium vs lead-acid) and dod for lithium. This enriches understanding of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool calculates battery autonomy in days, specific verb 'calculates', and resource 'battery bank autonomy'. Distinguishes from siblings by mentioning it chains from solar_sizing and solar_load_audit, implying differentiation from similar tools like battery_charge_time or battery_life.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: use avg_solar_contribution_pct = 0 for worst-case, 20-30% for cloudy-day modeling. Mentions it chains from other tools, giving context. Does not explicitly exclude alternative tools like battery_life for lifespan calculations, which would strengthen guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

battery_charge_timebattery charge timeInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
voltage_vNoNominal battery voltage for energy calculation (V), default 3.7 for Li-ion
efficiencyNoCharger efficiency factor (0-1), default 0.85
capacity_mahYesTotal battery capacity in milliamp-hours (mAh)
initial_soc_pctNoInitial state of charge as percentage (0-100), default 0 (empty)
charge_current_maYesCharge current in milliamps (mA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
c_rateYesC-rate of the charge (charge_current / capacity)
charge_time_hoursYesEstimated charge time in hours
energy_required_whYesEnergy required to charge at nominal voltage (Wh)
charge_time_minutesYesEstimated charge time in minutes
battery_lifebattery lifeAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
voltageNoNominal battery voltage (V), default 3.7 for Li-ion
efficiencyNoDischarge efficiency factor (0-1), accounts for conversion losses and derating, default 0.85
capacity_mahYesBattery capacity in milliamp-hours (mAh)
current_draw_maYesAverage current draw in milliamps (mA)

Output Schema

ParametersJSON Schema
NameRequiredDescription
energy_whYesTotal battery energy in watt-hours (capacity_mah * voltage / 1000)
runtime_daysYesEstimated runtime in days
runtime_hoursYesEstimated runtime in hours
effective_capacity_mahYesEffective usable capacity after efficiency derating (mAh)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses a 'Peukert-adjacent derating' efficiency factor and lists outputs (effective capacity, Wh, runtime). No mention of destructive behavior or auth needs, but the tool is read-only and adequately described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words. The first sentence immediately conveys the core function, followed by efficiency accounting and use cases. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no annotations, and an output schema, the description fully covers inputs, behavioral nuance (efficiency), and outputs (capacity, energy, runtime). It also links to sibling tools for modeling completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. The description restates key terms (capacity, voltage, current, efficiency) but adds minimal insight beyond the schema, such as clarifying that voltage is nominal and current is average. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates battery runtime and energy capacity from cell capacity, voltage, and current draw. It distinguishes from siblings by mentioning outputs feed into solar_sizing and ups_runtime, differentiating it from related tools like battery_charge_time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Lists specific use cases (IoT sensor planning, portable device design, UPS estimation, solar cycling) and mentions downstream integration with other tools. Lacks explicit when-not-to-use or alternative selections, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bmi_calculatorbmi calculatorAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit system. 'metric' = kg and cm. 'imperial' = lbs and inches. Defaults to 'metric'.metric
heightYesHeight. Units determined by the 'unit' parameter.
weightYesBody weight. Units determined by the 'unit' parameter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bmiYesBody Mass Index value rounded to 1 decimal.
categoryYesWHO BMI classification: Underweight, Normal weight, Overweight, Obese Class I/II/III.
weight_unitYesUnit of the weight values in this response (kg or lbs).
healthy_weight_range_lowYesLow end of healthy weight range (BMI 18.5) in the input unit system.
healthy_weight_range_highYesHigh end of healthy weight range (BMI 24.9) in the input unit system.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It discloses unit system support, formula, and expected outputs (BMI, classification, healthy weight range). No contradictions with annotations (none present). A score of 4 reflects strong transparency with minor room for details like error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient, using two substantive sentences. It front-loads the core purpose and formula, then adds use cases. Every sentence contributes, though the second sentence could be slightly more concise. Still, well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (3 parameters, all documented, output schema exists), the description fully enables correct use. It explains the formula, unit support, and return fields. No gaps in understanding are likely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds marginal value by stating unit system options and formula units, but the schema already describes each parameter. No additional constraints or formatting details are provided beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Calculate Body Mass Index (BMI) from weight and height using the WHO standard formula.' It clearly identifies the verb (calculate), resource (BMI), and scope (WHO formula), and distinguishes itself from sibling tools by specifying a unique health-focused purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions use cases ('health screening, fitness planning, and clinical intake forms') but does not provide explicit guidance on when not to use it or compare it to sibling tools. The implied usage is clear but lacks exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

capacitor_chargecapacitor chargeAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
v_supplyYesSupply voltage in volts. The voltage the capacitor charges toward.
v_targetNoTarget voltage to reach in volts (optional). When provided, calculates time to reach this voltage. Must be between v_initial and v_supply.
v_initialNoInitial capacitor voltage in volts (default 0 for fully discharged).
capacitance_fYesCapacitance in farads (C). Use scientific notation, e.g. 1e-6 for 1 µF.
resistance_ohmYesSeries resistance in ohms (R). Controls charge/discharge rate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tau_sYesRC time constant (τ = R×C) in seconds.
tau_msYesRC time constant in milliseconds.
energy_mjYesEnergy stored at full charge in millijoules.
v_at_1tauYesCapacitor voltage after 1τ in volts.
v_at_2tauYesCapacitor voltage after 2τ in volts.
v_at_5tauYesCapacitor voltage after 5τ in volts.
energy_joulesYesEnergy stored at full charge: E = ½CV² in joules.
peak_current_maYesPeak charging current at t=0 in milliamps: Ipeak = (Vsupply − Vinitial) / R.
time_to_63pct_msYesTime to reach 63.2% of (Vsupply − Vinitial) in milliseconds (1τ).
time_to_86pct_msYesTime to reach 86.5% of (Vsupply − Vinitial) in milliseconds (2τ).
time_to_95pct_msYesTime to reach 95.0% of (Vsupply − Vinitial) in milliseconds (3τ).
time_to_99pct_msYesTime to reach 99.3% of (Vsupply − Vinitial) in milliseconds (5τ).
time_to_target_msYesTime to reach v_target in milliseconds (null if v_target not specified).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, but the description thoroughly explains the tool's behavior: formulas (RC time constant, target voltage calculation), outputs (time, voltage, energy, current), and parameter constraints (v_target bounds). This fully compensates for missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused paragraph that front-loads the main purpose and lists outputs and use cases efficiently. Slight improvement possible with structured bullet points, but no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (not shown) and the description enumerates all computed quantities (time constant, thresholds, voltages, energy, peak current), the tool is completely specified for a physics calculator with clear parameter constraints and chaining hints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds value by explaining the RC time constant formula, the optional target voltage calculation, and example scientific notation, going beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Calculates RC capacitor charge timing, energy storage, and transient voltages' using specific verbs. It distinguishes from siblings by naming rc_filter and timer_555 as tools to chain from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies specific applications (timing circuits, power-on reset delays, debounce networks, soft-start designs) and suggests chaining context, but no explicit when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

channel_utilizationchannel utilizationAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodesYesNumber of active nodes in the mesh network.
airtime_msYesTime-on-air per packet in milliseconds. Obtain from lora_airtime tool.
max_duty_cycle_pctNoMaximum acceptable channel utilization percentage. Default 10% is a common Meshtastic guideline.
messages_per_hour_per_nodeNoAverage messages transmitted per hour per node. Includes position beacons and user messages.

Output Schema

ParametersJSON Schema
NameRequiredDescription
headroom_pctYesRemaining headroom before hitting the duty cycle limit (can be negative if over limit).
utilization_pctYesCurrent channel utilization as a percentage of total airtime.
packets_per_hourYesTotal packets per hour across all nodes.
max_nodes_at_limitYesMaximum number of nodes before exceeding the duty cycle limit.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully carries the burden. It discloses outputs (utilization percentage, headroom, total packet count) and input requirements. For a pure calculation tool, this is transparent, though it could mention assumptions about the model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured: purpose, function, outputs, chaining advice, and importance. Every sentence contributes. Could slightly tighten the first sentence, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given moderate complexity (4 parameters, no enums) and existence of output schema, the description is complete. It covers purpose, inputs, outputs, chaining, and practical significance. No other contextual gaps are apparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds value by explicitly mapping 'message rate' to messages_per_hour_per_node and 'per-packet airtime' to airtime_ms, and by advising to obtain airtime_ms from lora_airtime. This enriches understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool estimates channel utilization percentage for Meshtastic/LoRa mesh networks, with specific verbs ('Estimates', 'Determines', 'Returns'). It distinguishes from sibling lora_airtime by indicating chaining, and positions itself as essential for deployment planning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises chaining from lora_airtime to obtain airtime_ms input, providing clear usage context. Does not explicitly state when not to use or list alternatives, but the purpose is well-defined enough to infer appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

circumferencecircumferenceAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
radiusNoThe radius of the circle (takes precedence over diameter)
diameterNoThe diameter of the circle

Output Schema

ParametersJSON Schema
NameRequiredDescription
areaYesArea of the circle (A = πr²)
radiusYesRadius of the circle
diameterYesDiameter of the circle
circumferenceYesCircumference of the circle (C = 2πr)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description explains calculations and return values but lacks details on edge cases, limitations, or error handling. It is functionally transparent but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose and usage hint. The domain list adds context without being excessive, but one could argue it's slightly verbose. Overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with output schema, the description covers usage, precedence, and domains. It does not need to detail return values. Sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already describes precedence. The description adds 'provide one or both' which is helpful but not substantial. Baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates circumference and area of a circle given radius or diameter, with precedence rules. It distinguishes from sibling tools which are for other engineering calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions providing one or both parameters with precedence, and lists application domains, but does not explicitly state when not to use this tool or compare with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compound_interestcompound interestAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsYesInvestment duration in years. Max 100.
principalYesInitial investment or deposit amount (any currency unit).
annual_rate_pctYesAnnual interest rate as a percentage (e.g., 5.5 for 5.5%).
compounds_per_yearNoHow often interest compounds per year. Allowed: 1 (annually), 2 (semi-annually), 4 (quarterly), 12 (monthly), 52 (weekly), 365 (daily). Defaults to 12.
monthly_contributionNoOptional recurring monthly contribution added at each month. Defaults to 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scheduleYesYear-by-year growth schedule.
future_valueYesFinal balance after all compounding and contributions.
total_interestYesTotal interest earned over the full period.
total_contributionsYesTotal of all contributions (principal + recurring).
effective_annual_rate_pctYesEffective annual rate accounting for compounding frequency (APY).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description details the formula, inputs, and outputs (future value, total interest, APY, schedule). It is transparent about optional contributions and currency-agnostic nature. No hidden behaviors or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences), front-loaded with the formula, and provides essential information without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the formula, all inputs, optional monthly contributions, return values, and use cases. With 5 parameters and full schema coverage, plus an output schema, the description is comprehensive and sufficient for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description adds context like 'currency-agnostic' and explains the formula, but does not significantly enhance parameter meanings beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates compound interest growth, specifies the formula, and lists inputs. It is distinct from sibling calculators like 'loan_amortization' and 'savings' related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions appropriate use cases (savings accounts, CDs, investment returns, retirement planning). It does not explicitly state when not to use, but the specificity is adequate for differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confidence_intervalconfidence intervalAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sample_meanYesThe observed sample mean (x-bar) around which the confidence interval is centered.
sample_sizeYesThe number of observations in the sample (n). Must be a positive integer.
population_sizeNoTotal population size for finite population correction (FPC). Omit for infinite population assumption.
confidence_levelNoConfidence level as a decimal between 0 and 1 (e.g. 0.95 for 95%). Default is 0.95.
standard_deviationYesThe standard deviation of the sample or population. Must be a positive number.

Output Schema

ParametersJSON Schema
NameRequiredDescription
z_scoreYesCritical z-value used for the given confidence level.
lower_boundYesLower bound of the confidence interval.
upper_boundYesUpper bound of the confidence interval.
standard_errorYesStandard error of the mean, optionally adjusted with finite population correction.
margin_of_errorYesHalf-width of the confidence interval (z_score * standard_error).
confidence_levelYesThe confidence level used (echoed back).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the algorithm (Abramowitz & Stegun rational approximation for inverse normal CDF) and explains the finite population correction feature. This adds value beyond the input schema, though it could be more explicit about assumptions like normal distribution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear first sentence stating purpose, followed by outputs, features, algorithm, and use cases. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description need not detail return values but mentions them anyway. It covers algorithm, FPC, and use cases, but could more explicitly state the normality assumption.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds semantic context: sample mean as x-bar, sample size as n, and explains FPC for population_size. It clarifies the default confidence level, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates a confidence interval for a sample mean, listing specific outputs. It distinguishes itself from statistical siblings like p_value by focusing on interval estimation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions common use cases such as survey analysis, A/B testing, and quality control, providing context for when to use. However, it does not explicitly exclude alternatives or specify when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cooling_btucooling btuAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
insulationNoWall/ceiling insulation quality: poor (uninsulated garage), average (standard drywall), good (insulated interior), excellent (server room with vapor barrier)average
total_wattsYesTotal power consumption in watts — all power becomes heat
sun_exposureNoSolar heat gain: none (interior/basement room), partial (one exterior wall with window), full (multiple sun-facing windows)partial
room_width_ftNoRoom width in feet
target_temp_fNoDesired room temperature in degrees Fahrenheit
ambient_temp_fNoAmbient temperature outside the room in degrees Fahrenheit
room_height_ftNoRoom ceiling height in feet
room_length_ftNoRoom length in feet

Output Schema

ParametersJSON Schema
NameRequiredDescription
ac_tonsYesCooling capacity needed in tons of refrigeration (1 ton = 12,000 BTU/hr)
total_btuYesTotal cooling load in BTU/hr (equipment + envelope + sun)
envelope_btuYesHeat gain/loss through walls based on room size, insulation, and delta-T
equipment_btuYesHeat generated by equipment in BTU/hr (watts * 3.412)
will_overheatYesTrue if total heat load is positive and no cooling is provided
exhaust_cfm_neededYesExhaust fan airflow needed in cubic feet per minute if using ventilation instead of AC
mini_split_btu_recommendedYesRecommended mini-split size rounded up to nearest 6,000 BTU increment
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that all electrical power converts to heat, calculates equipment heat output, envelope and solar gain, and recommends AC tonnage, mini-split sizing (rounded to 6K BTU increments), and exhaust fan CFM, giving a comprehensive view of behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loaded with purpose and key outputs, and includes essential details without unnecessary repetition. It is well-structured and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters and an output schema (not shown but referenced), the description explains inputs and outputs including tonnage, mini-split sizing, and CFM, and provides usage context (after power_cost). It is sufficiently complete for a specialized calculator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes each parameter. The description adds overall context but does not provide additional details beyond what the schema offers for individual parameters, justifying a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it estimates cooling load (BTU/hr) for a homelab or server closet, specifying inputs like equipment wattage, room dimensions, insulation, and solar exposure. It distinguishes itself from sibling tools like power_cost by suggesting use after that tool, making its purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use after power_cost to size cooling for your homelab room,' providing clear context for when to use. Does not explicitly state when not to use, but given the narrow domain, it is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

date_differencedate differenceAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesEnd date in YYYY-MM-DD format (e.g., '2024-12-31').
start_dateYesStart date in YYYY-MM-DD format (e.g., '2024-01-15').

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysYesTotal number of days between the two dates (absolute value).
weeksYesNumber of complete weeks.
yearsYesApproximate number of years (days / 365.25).
monthsYesApproximate number of months (days / 30.44).
is_futureYesTrue if end_date is after start_date.
business_daysYesNumber of weekdays (Monday-Friday) between the dates.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavioral traits: absolute difference (order irrelevant), a flag indicating if end date is in future, and business days defined as Monday–Friday. No destructive actions or auth requirements are needed for this calculator tool, so coverage is complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each adding unique information: core functionality, format and behavior, and use cases. No redundancy or fluff. Front-loaded with the main verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers input format, behavioral details, and use cases. Since an output schema exists (not shown but indicated), explanation of return values is unnecessary. The tool is simple and the description is sufficient for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, describing both parameters with patterns and descriptions. The description adds context beyond the schema: it notes that order doesn't matter and explains the future flag. This adds modest but valuable behavioral clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: calculating the difference between two dates in multiple units (days, weeks, months, years, business days). It specifies input format and behavioral nuances (absolute difference, future flag). No sibling tools perform similar date difference calculations, so it stands out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists relevant use cases (project planning, deadline tracking, contract duration, age computations), providing clear guidance on when to use it. However, it does not mention when not to use or alternatives, though given the sibling tools list, no direct competitors exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dbm_convertdbm convertInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dbmYesPower level in dBm (decibels relative to 1 milliwatt)
impedance_ohmNoLoad impedance in ohms for Vrms calculation (default 50)

Output Schema

ParametersJSON Schema
NameRequiredDescription
mwYesPower in milliwatts
dbwYesPower in dBW (decibels relative to 1 watt)
vrmsYesRMS voltage across the load impedance in volts
wattsYesPower in watts
dipoledipoleInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoAntenna type: half_wave dipole or quarter_wave monopolehalf_wave
freq_mhzYesOperating frequency in megahertz (MHz)

Output Schema

ParametersJSON Schema
NameRequiredDescription
length_mYesElement length in metres
length_ftYesElement length in feet
length_inYesElement length in inches
wavelength_mYesFull wavelength in metres
duty_cycle_budgetduty cycle budgetInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoLoRa 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.EU868
airtime_msYesPacket time-on-air in milliseconds. Obtain from the lora_airtime tool.

Output Schema

ParametersJSON Schema
NameRequiredDescription
duty_cycle_pctYesApplicable duty cycle limit as a percentage. 100 means no duty cycle restriction.
min_interval_sYesMinimum interval between transmissions in seconds to comply with duty cycle regulation.
dwell_time_limitedYesTrue if the region enforces a per-transmission dwell time limit (e.g., US915 400 ms).
max_messages_per_hourYesMaximum messages per hour allowed under the regional duty cycle constraint.
effective_data_rate_bpsYesEffective throughput in bits per second considering duty cycle. For duty-cycle-limited regions, this reflects actual achievable throughput.
eirp_complianceeirp complianceInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoRegulatory region for EIRP limit lookup. FCC_US: 36 dBm, ETSI_EU: ~16 dBm, ACMA_AU: 30 dBm, IC_CA: 36 dBm, JP: 13 dBm.FCC_US
tx_power_dbmYesConducted transmit power at the radio output in dBm. Typical LoRa: 14-22 dBm.
cable_loss_dbNoCoaxial cable and connector loss in dB. Set 0 for devices with integrated antennas.
antenna_gain_dbiYesAntenna gain in dBi. Stock Meshtastic antennas: 2-3 dBi. External: 6-10+ dBi.
custom_limit_dbmNoCustom EIRP limit in dBm. Only used when region is 'custom'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
warningYesWarning message if non-compliant, or empty string if compliant.
eirp_dbmYesCalculated EIRP in dBm: tx_power + antenna_gain - cable_loss.
compliantYesTrue if EIRP is at or below the regional limit.
limit_dbmYesRegional EIRP limit in dBm.
margin_dbYesMargin below the limit in dB. Positive = compliant, negative = over limit.
eirp_wattsYesCalculated EIRP converted to watts.
limit_wattsYesRegional EIRP limit converted to watts.
region_nameYesHuman-readable region name.
exponent_calcexponent calcAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesThe base number
exponentYesThe exponent (power) to raise the base to

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe computed value of base^exponent
scientific_notationYesResult in scientific notation for very large/small values
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses handling of various exponent types and that results include numeric and scientific notation. However, it does not mention edge cases like complex results or overflow behavior, which would make it more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with the core operation, followed by details and use cases. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters) and presence of an output schema, the description sufficiently explains the tool's behavior and return values. It is complete for the intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes both parameters with 100% coverage. The description adds value by explaining the supported exponent types and the output format, going beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes base^exponent and lists supported exponent types (positive, negative, fractional, zero). It also distinguishes itself from siblings like log_calc and scientific_notation by mentioning their relationships.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases (compound interest, exponential growth/decay, physics power laws, combinatorics) and notes the inverse relationship with log_calc and chaining with scientific_notation, guiding when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fresnel_zonefresnel zoneAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dist_kmYesTotal link distance in kilometres
freq_mhzYesOperating frequency in megahertz (MHz)
zone_numberNoFresnel zone number (1-5, default 1)

Output Schema

ParametersJSON Schema
NameRequiredDescription
radius_mYesFresnel zone radius at midpoint in metres
radius_ftYesFresnel zone radius at midpoint in feet
wavelength_mYesRF wavelength in metres
clearance_60pct_mYes60% Fresnel zone clearance (practical minimum) in metres
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool returns radius in metres and feet plus clearance threshold, and explains the significance of the first Fresnel zone. Could be improved by noting input constraints (e.g., positive values), but sufficient for a straightforward calculation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, inputs/outputs, practical context. No wasted words; every sentence adds value. Front-loaded with action verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, existing output schema, and no annotation gaps, the description explains inputs, outputs, and practical relevance (60% clearance, link_budget integration). No missing information for agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. Description repeats parameter info (frequency in MHz, distance in km, zone number 1-5) and adds context about outputs but not new semantic detail beyond schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Calculate the Fresnel zone radius at the midpoint of a radio link.' Specifies inputs (frequency, distance, zone number) and outputs (radius in m/ft, 60% threshold). Distinguishes from sibling 'link_budget' by noting it feeds into that tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for use: calculation of Fresnel zone for path clearance analysis. Mentions practical relevance (60% threshold for obstructions) and relationship to link_budget. Does not explicitly state when not to use, but overall guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fsplfsplInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dist_kmYesDistance between transmitter and receiver in kilometres
freq_mhzYesCarrier frequency in megahertz (MHz)

Output Schema

ParametersJSON Schema
NameRequiredDescription
fspl_dbYesFree-space path loss in decibels (dB)
wavelength_mYesRF wavelength in metres
generator_offsetgenerator offsetAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
battery_kwhNoBattery storage capacity in kWh (0 means no battery, generator needed at night), default 0
daily_kwh_neededYesTotal daily energy requirement in kWh
years_to_compareNoNumber of years to compare, default 10
solar_system_cost_usdYesTotal solar+battery system cost in USD
generator_hours_per_dayNoGenerator runtime hours per day, default 8
solar_daily_kwh_producedYesDaily solar energy production in kWh
generator_consumption_gphNoGenerator fuel consumption in gallons per hour at load, default 1.0
generator_fuel_cost_per_gallonNoFuel cost per gallon in USD, default $3.50
generator_maintenance_per_1000hrsNoGenerator maintenance cost per 1000 running hours in USD, default $200

Output Schema

ParametersJSON Schema
NameRequiredDescription
savings_pctYesPercentage savings of solar vs generator
savings_usdYesTotal savings of solar over generator in USD (negative means generator is cheaper)
breakeven_yearYesYear when solar cumulative cost becomes cheaper than generator (0 if never)
solar_coverage_pctYesPercentage of daily energy needs covered by solar+battery
solar_total_cost_usdYesTotal solar cost over comparison period in USD
solar_yearly_cost_usdYesAnnualized solar system cost (amortized + maintenance) in USD
generator_total_cost_usdYesTotal generator cost over comparison period in USD
generator_yearly_cost_usdYesAnnual generator cost (fuel + maintenance) in USD
generator_hours_saved_per_yearYesGenerator hours eliminated per year by solar
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: it calculates yearly and cumulative costs for three scenarios, accounts for multiple cost factors, and outputs specific metrics. It does not disclose assumptions or limitations, but provides sufficient transparency for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, no redundancy. Each sentence adds value: one defines the tool, the second lists outputs and use cases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 parameters, no annotations, and an output schema, the description covers the tool's purpose, inputs (indirectly through parameter list), and outputs. It could mention that results are structured (e.g., JSON), but the output schema exists to handle that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The description adds context by grouping parameters (e.g., 'fuel cost, generator consumption rate') and clarifying that the tool accounts for various costs. However, this does not significantly surpass the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it compares TCO between a fuel generator and solar+battery system over a configurable horizon. It lists specific outputs (yearly costs, savings, breakeven year) and use cases. This distinguishes it from all sibling tools, which are unrelated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists application scenarios: off-grid site planning, remote telecom towers, construction sites, rural electrification. It does not mention when not to use, but given no direct sibling alternative, this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

heatsink_cfdheatsink cfdAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fin_countYesNumber of fins
heat_load_wYesTotal heat load applied to base in watts
base_width_mYesHeatsink base width in metres
fin_height_mYesFin height in metres
mesh_densityNoMesh densitymedium
base_height_mYesBase plate thickness in metres
base_length_mYesHeatsink base length in metres
ambient_temp_cNoAmbient air temperature in Celsius
fin_thickness_mYesFin thickness in metres
airflow_velocity_msYesIncoming airflow velocity in m/s

Output Schema

ParametersJSON Schema
NameRequiredDescription
warningsYesSolver warnings
mesh_cellsYesMesh cell count
runtime_msYesSimulation time in ms
fin_efficiencyYesFin efficiency (0-1)
fin_tip_temp_cYesAverage fin tip temperature (°C)
avg_base_temp_cYesAverage base temperature (°C)
max_base_temp_cYesMaximum base temperature (°C)
pressure_drop_paYesPressure drop across the heatsink (Pa)
optimal_fin_spacing_mYesSuggested optimal fin spacing for this airflow (m)
thermal_resistance_cwYesThermal resistance from base to air (°C/W)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavioral traits: runs instantly in-worker, uses correlations, lists computed outputs, and notes limitations regarding mesh-level CFD.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with purpose, then outputs, then usage guidance. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters with 100% schema coverage and an output schema, the description adequately explains the tool's purpose, outputs, and limitations, making it complete for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions, so baseline is 3. The tool description does not add significant meaning beyond what the property descriptions already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Analyze', the specific resource 'forced-convection fin-array heatsink', and the method 'channel-flow correlations', distinguishing it from sibling tools like pcb_thermal or thermal_enclosure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states usage for 'heatsink selection and first-pass optimization in electronics cooling'. Implicitly distinguishes from full CFD by noting mesh-level CFD is planned but not yet available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hex_converterhex converterAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hexYesHexadecimal string with 0x prefix (e.g. '0xFF').
bitsYesMinimum number of bits needed to represent this value (unsigned).
asciiYesASCII character if the value is a printable character (32-126), null otherwise.
bytesYesMinimum number of bytes needed (ceil(bits/8)).
octalYesOctal string with 0o prefix (e.g. '0o377').
binaryYesBinary string with 0b prefix (e.g. '0b11111111').
decimalYesDecimal (base-10) value.
signed_8YesSigned 8-bit interpretation (-128 to 127), null if out of range.
hex_upperYesHexadecimal with uppercase letters (e.g. '0xFF').
signed_16YesSigned 16-bit interpretation (-32768 to 32767), null if out of range.
signed_32YesSigned 32-bit interpretation, null if out of range.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it returns all four representations, bit width, byte count, ASCII character, and signed interpretations. As a read-only converter tool, no side effects are expected, but the description could explicitly state it does not modify any data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is informative and front-loaded with purpose, but slightly verbose. Every sentence adds value, but it could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to explain return values. It covers all necessary aspects for a simple conversion tool with one parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning to the 'value' parameter beyond the schema, explaining the use of prefixes (0x, 0b, 0o) and that plain numbers are decimal, supports negatives. The schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts numbers between hexadecimal, binary, decimal, and octal bases. It provides specific examples and usage contexts, distinguishing it from sibling tools like unit_convert.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists use cases (embedded programming, register debugging, etc.) and gives an example, implying when to use it. However, it does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

impedance_matchimpedance matchInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
freq_mhzYesDesign frequency in megahertz for component value calculation.
load_ohmYesLoad impedance in ohms (real, resistive). Must differ from source impedance.
source_ohmYesSource impedance in ohms (real, resistive). Must differ from load impedance.

Output Schema

ParametersJSON Schema
NameRequiredDescription
q_factorYesNetwork Q factor = sqrt(Rh/Rl - 1), where Rh is the higher impedance.
topologyYesDescription of the L-network arrangement (which side gets shunt vs series element).
shunt_componentYesThe shunt (parallel) component of the L-network.
series_componentYesThe series component of the L-network.
inverter_sizinginverter sizingAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
efficiencyNoInverter 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.
surge_wattsNoPeak 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.
derating_pctNoDerating percentage for temperature, altitude, and safety margin. NEC recommends 20% (80% continuous rating). Range 0-50%.
power_factorNoPower 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.
system_voltageNoDC system voltage. 12V for small/mobile, 24V for medium, 48V for large residential/commercial. Higher voltage = lower current = thinner cables.48
continuous_wattsYesTotal continuous load in watts. Sum of all appliances that may run simultaneously. Chain from solar_load_audit.peak_watts.
largest_load_wattsNoWattage of the single largest appliance. Used to estimate surge if surge_watts is not provided. Chain from solar_load_audit.largest_load_watts.

Output Schema

ParametersJSON Schema
NameRequiredDescription
surge_margin_pctYesHow much surge headroom the recommended inverter provides above the estimated surge requirement.
required_surge_vaYesRequired surge/peak VA capacity for motor starting loads.
battery_cable_noteYesGuidance on DC cable sizing based on the continuous current draw.
dc_current_surge_aYesPeak DC input current during surge. Sizes the DC fuse and battery cable.
derated_continuous_vaYesContinuous VA after applying derating factor. The inverter must be rated at or above this value.
efficiency_loss_wattsYesPower lost to inverter inefficiency at continuous load, in watts.
recommended_size_wattsYesNearest standard inverter size (watts) that meets the derated requirement.
required_continuous_vaYesRequired continuous VA rating accounting for power factor: continuous_watts / power_factor.
dc_current_continuous_aYesContinuous DC input current draw at system voltage: VA / (voltage * efficiency). Sizes the DC wiring and fuses.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains computations, assumptions (e.g., surge estimation as 3x largest load), and outputs (DC input current for cable sizing). While it lacks details on error handling or input validation, the schema covers constraints, making the behavior sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet comprehensive, starting with purpose, then detailing computational steps, chaining, and use cases. Every sentence is informative with no redundancy. It fits in a single paragraph and is efficiently front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters (1 required), an output schema (not shown but present), and no nested objects, the description covers purpose, usage, chaining, and high-level process. It provides enough context for an agent to invoke the tool correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining how each parameter is used in calculations (e.g., power factor effect, surge estimation from largest_load_watts, derating for NEC). This goes beyond basic schema descriptions, aiding the agent in proper invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it sizes a DC-to-AC inverter, specifying the computation of continuous VA rating, surge capacity, derating, and selection of standard size. It distinguishes from siblings like solar_sizing (panel sizing) and battery_autonomy by mentioning chaining from solar_load_audit and to wire_gauge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists use cases: off-grid solar, battery backup, mobile power systems. It provides chaining guidance (from solar_load_audit, to wire_gauge). It does not explicitly state when not to use, but the context and sibling tools imply clear boundaries. Slightly more specific exclusions would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lc_resonancelc resonanceAInspect

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/(2pisqrt(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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inductance_hYesInductance in henries (H). The inductive element of the LC circuit.
capacitance_fYesCapacitance in farads (F). The capacitive element of the LC circuit.
resistance_ohmNoOptional series resistance in ohms for Q factor and bandwidth calculation. Omit for ideal LC analysis.

Output Schema

ParametersJSON Schema
NameRequiredDescription
q_factorYesQuality factor Q = (1/R)*sqrt(L/C). Null if no resistance provided.
bandwidth_hzYes3 dB bandwidth in hertz (f0/Q). Null if no resistance provided.
angular_freq_radYesAngular resonant frequency in radians per second (omega_0 = 2*pi*f0).
resonant_freq_hzYesResonant frequency in hertz.
resonant_freq_mhzYesResonant frequency in megahertz for convenience.
impedance_at_resonance_ohmYesImpedance at resonance in ohms. Equals the series resistance R if provided; null if ideal (no R).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the formulas used, the optional nature of resistance, and what Q factor and bandwidth are computed. It could mention that it assumes ideal components, but the information is sufficient for a calculator tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences total: first states the main purpose, second gives formulas, third lists use cases and chaining option. No wasted words, front-loaded with the primary function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema (which covers return values), the description fully explains what the tool does, its formula, use cases, and optional parameters. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already described. The description adds meaning by explaining the role of each parameter (inductive element, capacitive element, optional series resistance) and how they are used in the computations, providing context beyond the schema's plain descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Calculates' and clearly identifies the resource: 'resonant frequency of an LC circuit'. It also distinguishes itself from sibling tools by mentioning chaining into 'impedance_match'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases such as tank circuits, oscillators, bandpass filters, and antenna matching networks. It does not explicitly state when not to use, but the context is clear. It also hints at related tools via chaining.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

led_resistorled resistorAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
led_countNoNumber of LEDs in series. Defaults to 1.
led_forward_vNoLED forward voltage in volts (V). Defaults to 2.0V (typical red LED).
led_current_maNoDesired LED current in milliamps (mA). Defaults to 20mA.
supply_voltage_vYesSupply voltage in volts (V). Must be positive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resistance_ohmYesExact calculated resistance in ohms.
nearest_e24_ohmYesNearest standard E24 series resistor value in ohms.
actual_current_maYesActual LED current in milliamps (mA) when using the nearest E24 resistor.
power_dissipation_mwYesPower dissipated by the resistor in milliwatts (mW), using the E24 value.
voltage_across_resistor_vYesVoltage drop across the current-limiting resistor in volts.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description fully carries behavioral disclosure. It details computation steps, standard resistor selection, validation, and reported outputs (current, dissipation, voltage). No hidden behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured, front-loaded with purpose. Every sentence adds value: computation, standard selection, reports, validation, chaining. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description covers inputs, validation, output values, and chaining to related tools. With output schema present, return values are fully addressed. Highly complete for a resistor calculation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good descriptions. Description adds formula context, E24 selection, and validation logic beyond schema. The mention of series strings adds extra meaning to led_count parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states tool calculates current-limiting resistor for LEDs, uses formula R=(Vsupply-n*Vf)/I, selects E24 standard resistor, and reports additional values. It distinguishes from siblings (ohms_law, trace_width) by mentioning chaining.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use: driving one or more LEDs in series from DC supply. Mentions validation (supply voltage > total forward voltage). Chaining into ohms_law or trace_width provides alternative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loan_amortizationloan amortizationAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
principalYesLoan principal amount in dollars (or any currency unit).
term_monthsYesLoan term in months. Max 600 (50 years). Common values: 360 (30yr), 180 (15yr), 60 (5yr auto).
extra_paymentNoOptional fixed extra monthly payment toward principal. Defaults to 0.
annual_rate_pctYesAnnual interest rate as a percentage (e.g., 6.5 for 6.5%).

Output Schema

ParametersJSON Schema
NameRequiredDescription
scheduleYesMonth-by-month amortization schedule.
payoff_monthsYesActual number of months to pay off (may be less than term with extra payments).
interest_savedYesInterest saved by extra payments vs. full term. 0 if no extra payments.
total_interestYesTotal interest paid over the life of the loan.
total_paymentsYesSum of all payments over the life of the loan.
monthly_paymentYesFixed monthly payment (excluding extra payments).
total_extra_paidYesTotal extra payments made.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses pagination behavior, support for extra payments, and currency-agnostic nature. For a read-only computation, behavior is well-documented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, no fluff. First sentence core function, then returns, then extra payment feature, then loan types and pagination. Well-structured and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, description need not explain returns. Covers core compute, optional feature, applicable loans, pagination. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of params, but description adds value: notes extra payment shows months saved/interest saved, mentions common term values (360, 180, 60). Adds beyond schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it computes a full amortization schedule with specific outputs (monthly payment, total interest, schedule breakdown). Distinguishes from sibling tools which are unrelated calculators. Verb 'computes' plus resource 'loan amortization schedule' is specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists applicable loan types (mortgage, auto, personal, student) and provides pagination usage for schedule array. Does not specify when not to use, but context is clear given no similar sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_calclog calcAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoThe logarithm base (default 10). Must be positive and not equal to 1
valueYesThe positive number to compute the logarithm of

Output Schema

ParametersJSON Schema
NameRequiredDescription
log2YesBinary logarithm (base 2) of the value
log10YesCommon logarithm (base 10) of the value
resultYesLogarithm of the value in the specified base: log_base(value)
natural_logYesNatural logarithm (ln) of the value
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It reveals the return values (four logarithms), the change-of-base formula used, and implies no destructive side effects. However, it does not explicitly handle error cases (e.g., invalid input) or confirm atomicity, though the schema constraints provide some implicit guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each adding distinct value: purpose, use cases, and relationships. It is front-loaded with the core function and avoids fluff. Every sentence earns its place, making it highly efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (two parameters) and presence of output schema (though not provided), the description sufficiently covers inputs, outputs, and usage context. It lists the four return types and the formula. Without the output schema text, the agent can infer the structure from the description, making it complete enough for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions (default base, exclusive minima). The description adds meaning by explaining the tool supports 'any base' and mentions the underlying formula, which complements the schema without redundancy. The use-case examples further clarify parameter intent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes logarithms of positive numbers in any base and lists the specific log types (custom-base, ln, log10, log2). It also provides concrete use cases (signal processing, information theory, etc.) and explicitly mentions relationships with sibling tools exponent_calc and scientific_notation, distinguishing its role as a logarithm calculator.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers context for when to use the tool (e.g., signal processing, pH chemistry) but does not explicitly state when not to use it or provide alternative tools for other mathematical operations. It mentions related siblings but frames them as complementary rather than alternatives, leaving room for ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lora_airtimelora airtimeInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
crNoLoRa coding rate denominator (5-8). Represents 4/5 through 4/8 FEC ratio.
sfNoLoRa spreading factor (7-12). Higher SF = longer range but slower data rate.
crcNoWhether CRC is appended to payload. Recommended true for reliability.
bw_khzNoLoRa channel bandwidth in kHz. Common values: 125, 250, or 500.
payload_bytesYesApplication payload size in bytes (0-255).
explicit_headerNoWhether to use explicit header mode. True for LoRaWAN; false for implicit header.
preamble_symbolsNoNumber of preamble symbols. LoRaWAN uses 8; raw LoRa may vary.
low_data_rate_optimizeNoEnable low data rate optimization. Auto-calculated if omitted: enabled for SF >= 11 at BW 125 kHz.

Output Schema

ParametersJSON Schema
NameRequiredDescription
airtime_msYesTotal packet time-on-air in milliseconds.
data_rate_bpsYesEffective data rate in bits per second.
symbol_time_msYesDuration of a single LoRa symbol in milliseconds.
payload_symbolsYesNumber of symbols used for the payload + header portion.
preamble_time_msYesPreamble duration in milliseconds (includes 4.25 sync symbols).
duty_cycle_1pct_interval_sYesMinimum interval between transmissions in seconds to respect 1% duty cycle regulation.
lora_param_optimizerlora param optimizerInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoRegulatory region. Determines max TX power and duty cycle limit.US915
terrainNoTerrain type for path loss model. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.suburban
priorityNoOptimization 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.balanced
target_range_kmYesDesired communication range in kilometers.
antenna_gain_dbiNoAntenna gain in dBi. 2.15 = half-wave dipole reference.
max_payload_bytesNoMaximum payload size in bytes for airtime calculation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
airtime_msYesPacket airtime in milliseconds for the given payload.
data_rate_bpsYesEffective data rate in bits per second.
recommended_sfYesRecommended spreading factor (7-12).
estimated_range_kmYesEstimated achievable range in km with the recommended parameters.
recommended_bw_khzYesRecommended bandwidth in kHz (125, 250, or 500).
recommended_tx_dbmYesRecommended transmit power in dBm.
estimated_battery_hoursYesEstimated battery life in hours with a 3000 mAh reference battery.
messages_per_hour_limitYesMaximum messages per hour under regional duty cycle constraint.
lora_range_estimatelora range estimateInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tx_dbmNoTransmit power in dBm. Typical LoRa: 14-30 dBm depending on region and module.
terrainNoTerrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.suburban
freq_mhzNoCarrier frequency in MHz. Common: 868 (EU), 915 (US/AU), 433 (Asia).
rx_gain_dbiNoReceive antenna gain in dBi. 2.15 dBi = half-wave dipole.
tx_gain_dbiNoTransmit antenna gain in dBi. 2.15 dBi = half-wave dipole.
rx_sensitivity_dbmNoReceiver sensitivity in dBm. Typical LoRa SF10/BW125: -130 dBm. Varies by SF and bandwidth.

Output Schema

ParametersJSON Schema
NameRequiredDescription
max_range_kmYesEstimated maximum range in kilometers accounting for terrain correction.
margin_at_1km_dbYesLink margin at 1 km distance in dB. Positive means signal above sensitivity.
effective_path_loss_dbYesMaximum allowable path loss in dB (link budget minus terrain correction).
lora_sensitivitylora sensitivityAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sfNoLoRa spreading factor (7-12). Higher SF = better sensitivity but slower data rate.
bw_khzNoLoRa channel bandwidth in kHz. Lower bandwidth = better sensitivity.
noise_figure_dbNoReceiver noise figure in dB. Typical LoRa radio NF is 6 dB (SX1276).

Output Schema

ParametersJSON Schema
NameRequiredDescription
noise_floor_dbmYesReceiver noise floor in dBm, computed from thermal noise, bandwidth, and noise figure.
required_snr_dbYesMinimum SNR required for LoRa demodulation at the given spreading factor.
sensitivity_dbmYesReceiver sensitivity in dBm. The minimum signal power for successful demodulation.
thermal_noise_dbmYesThermal noise power density at room temperature: -174 dBm/Hz.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It details the computation steps: noise floor from thermal noise density, bandwidth, noise figure, then adding SNR thresholds. It lists return values (sensitivity, noise floor, required SNR, thermal noise reference).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise with 3 substantive sentences plus a usage line. It front-loads the main purpose. Could be slightly tighter but remains clear and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (implied by context signals), the description explains the purpose, computation, and usage context fully. No additional behavioral details are needed for a calculator tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and each parameter has a description in the input schema. The description adds context about the formula and datasheet source but does not provide new semantic details beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool calculates LoRa receiver sensitivity using spreading factor, bandwidth, and noise figure based on Semtech SX1276 datasheet. It distinguishes from sibling tools by noting it feeds into link_budget and lora_range_estimate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions the tool is essential for link budget planning in LoRaWAN and Meshtastic networks and feeds output to other tools. It does not state when not to use it, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mah_to_whmah to whAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
voltage_vYesNominal battery voltage (V)
capacity_mahYesBattery capacity in milliamp-hours (mAh)

Output Schema

ParametersJSON Schema
NameRequiredDescription
whYesEnergy in watt-hours
kwhYesEnergy in kilowatt-hours
mahYesInput capacity echoed back (mAh)
joulesYesEnergy in joules
voltage_vYesInput voltage echoed back (V)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It discloses echoing back input values for chaining. Does not mention destructive behavior (none relevant). Output schema exists, so return values need not be described. Minor lack: no mention of handling edge cases, but schema provides constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single paragraph that front-loads purpose, then gives applications, then mentions chaining. Every sentence adds value, though slightly verbose with multiple application examples. Could be tightened without losing content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full output schema and description covering typical use cases, applications, and chaining behavior, the description is complete. No obvious gaps for a conversion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context (nominal voltage, typical battery types) but doesn't elaborate on parameter format or constraints beyond schema. Adequate but not extraordinary given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it converts mAh to Wh/kWh/J given voltage, specifying the resource (battery capacity) and action (convert). It distinguishes from sibling tools by mentioning specific applications (airline compliance, solar sizing, UPS) and chaining into battery_life, solar_sizing, ups_runtime.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use the tool: for comparing cells rated in mAh against energy budgets in Wh. Lists concrete use cases (airline 100 Wh limit, solar bank sizing, UPS planning) and mentions chaining to other tools, implying when not to use alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meshtastic_powermeshtastic powerInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoMeshtastic node role. client: sleeps between events. router: always listening. repeater: always listening, no display/BLE. client_muted: aggressive sleep.client
deviceNoMeshtastic hardware device. Selects power consumption profile for sleep, RX, TX, GPS, and BLE.heltec_v3
battery_mahNoBattery capacity in milliamp-hours. Common: 1100 (18650 min), 3000 (typical), 6000 (large).
gps_enabledNoWhether GPS is enabled. Significantly increases power draw on devices with built-in GPS.
channel_presetNoMeshtastic channel preset. Affects TX airtime per message and thus power consumption.long_fast
battery_voltageNoNominal battery voltage. 3.7V for single-cell LiPo/Li-ion, 7.4V for 2S packs.
bluetooth_enabledNoWhether Bluetooth is enabled for phone connection.
messages_per_hourNoExpected messages sent and received per hour. Includes both TX and RX message events.

Output Schema

ParametersJSON Schema
NameRequiredDescription
daily_whYesEstimated daily energy consumption in watt-hours.
rx_time_pctYesPercentage of time spent in receive mode (radio listening).
tx_time_pctYesPercentage of time spent transmitting.
runtime_daysYesEstimated battery runtime in days.
runtime_hoursYesEstimated battery runtime in hours.
avg_current_maYesEstimated average current draw in milliamps.
sleep_time_pctYesPercentage of time spent in sleep/low-power mode.
meshtastic_rangemeshtastic rangeInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
crNoCustom coding rate denominator (5-8). Only used when channel_preset is 'custom'.
sfNoCustom spreading factor (7-12). Only used when channel_preset is 'custom'.
bw_khzNoCustom bandwidth in kHz. Only used when channel_preset is 'custom'.
deviceNoMeshtastic hardware device. Selects default TX power, antenna gain, and noise figure. Use 'custom' to override all radio parameters manually.heltec_v3
terrainNoTerrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.suburban
tx_power_dbmNoOverride device default transmit power in dBm.
channel_presetNoMeshtastic 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.long_fast
antenna_gain_dbiNoOverride device default antenna gain in dBi. Useful for aftermarket antennas.

Output Schema

ParametersJSON Schema
NameRequiredDescription
device_nameYesHuman-readable device name.
channel_nameYesHuman-readable channel preset name.
effective_sfYesSpreading factor used for the calculation.
max_range_kmYesEstimated maximum range in km accounting for terrain correction.
tx_power_dbmYesTransmit power in dBm used for the calculation.
link_budget_dbYesTotal link budget in dB before terrain correction.
antenna_gain_dbiYesAntenna gain in dBi used for the calculation.
effective_bw_khzYesBandwidth in kHz used for the calculation.
rx_sensitivity_dbmYesReceiver sensitivity in dBm for the selected channel preset.
microstripmicrostripAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
erNoSubstrate relative dielectric constant (default 4.6 for FR-4)
z0_ohmNoTarget characteristic impedance in ohms (default 50)
freq_mhzNoOptional frequency in MHz for effective wavelength calculation
copper_ozNoCopper weight in oz/ft2 (1 oz = 0.035 mm thickness)
height_mmYesSubstrate height (dielectric thickness) in millimetres

Output Schema

ParametersJSON Schema
NameRequiredDescription
er_effYesEffective dielectric constant of the microstrip
width_mmYesRequired trace width in millimetres
wavelength_eff_mmYesEffective wavelength in millimetres at the given frequency (null if freq not provided)
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It states the calculation method (Hammerstad-Jensen) and mentions optional frequency for wavelength, but lacks details on assumptions, accuracy, or limitations. Adequate but could disclose more behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences cover purpose, equations, optional feature, and application. No wasted words; front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description explains return values (width, effective dielectric constant, optional wavelength), references IPC-2141, and provides RF layout context. With an output schema present (context signals), completeness is high. Could add parameter constraints or units, but sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by explaining parameters in context (target impedance, substrate height, copper weight) and specifying outputs (trace width, effective dielectric constant). Also references equation type and application.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates microstrip trace width for target impedance using Hammerstad-Jensen equations, specifies outputs (width, effective dielectric constant), and optionally wavelength. It distinguishes itself from sibling tools like 'trace_width' and 'impedance_match' by being microstrip-specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides context: 'Essential for RF PCB layout... controlled impedance traces (e.g., 50 ohm for SMA connectors).' It implies use cases but does not explicitly state when not to use or compare with alternatives like 'trace_width' or 'impedance_match'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

network_bandwidthnetwork bandwidthInspect

Plan and validate network link capacity for homelab workloads. Determine whether a 1G, 2.5G, 10G, or faster link can handle your concurrent streams (VMs, backups, media, iSCSI). Calculates effective bandwidth after TCP/IP overhead, total required bandwidth, utilization percentage, and remaining headroom. Flags saturation at 80% utilization and identifies whether the bottleneck is network or storage. Provides a 1TB transfer time reference and recommends the next link speed upgrade if your current link is saturated. Useful for planning NIC upgrades, switch purchases, and storage network design.

ParametersJSON Schema
NameRequiredDescriptionDefault
link_speed_gbpsYesNetwork link speed in gigabits per second (e.g. 1, 2.5, 5, 10, 25, 40, 100)
concurrent_streamsNoNumber of concurrent data streams / transfers
protocol_overhead_pctNoTCP/IP protocol overhead as a percentage (typically 3-5% for TCP, ~1% for UDP)
stream_bandwidth_mbpsNoBandwidth required per stream in megabits per second
storage_throughput_mbpsNoMaximum storage read/write throughput in megabits per second. If provided, checks whether storage is the bottleneck

Output Schema

ParametersJSON Schema
NameRequiredDescription
saturatedYesTrue if utilization exceeds 80% — link is effectively saturated
bottleneckYesIdentified bottleneck: 'storage', 'network', or 'none'
headroom_mbpsYesRemaining bandwidth after all streams (negative means oversubscribed)
utilization_pctYesPercentage of effective bandwidth used by all streams
required_bandwidth_mbpsYesTotal bandwidth required by all streams in Mbps
effective_bandwidth_mbpsYesUsable bandwidth after protocol overhead in Mbps
time_to_transfer_1tb_hoursYesTime to transfer 1 TB over the effective bandwidth, in hours
recommended_link_speed_gbpsYesSuggested next link speed upgrade if saturated, null if current link is sufficient
noise_figure_cascadenoise figure cascadeInspect

Calculate the cascaded noise figure of a multi-stage receiver chain using the Friis formula. Each stage has a noise figure and gain in dB. The first stage dominates overall system noise, which is why low-noise amplifiers (LNAs) are placed at the front of the chain. Returns total cascaded noise figure, total gain, and equivalent noise temperature. Feeds into link_budget for complete receive-chain sensitivity analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
stagesYesOrdered array of receiver chain stages, each with nf_db and gain_db

Output Schema

ParametersJSON Schema
NameRequiredDescription
total_nf_dbYesTotal cascaded noise figure in dB
noise_temp_kYesEquivalent noise temperature in kelvin (T0 = 290 K)
total_gain_dbYesTotal gain of the chain in dB
ohms_lawohms lawInspect

Solves Ohm's Law and the power equation given any two of four electrical quantities: voltage (V), current (I), resistance (R), and power (P). Uses V=IR, P=VI, P=I^2R, and P=V^2/R to derive the missing two values. Fundamental for every circuit design task: sizing resistors, estimating current draw, checking power dissipation, and verifying component ratings. Chain into led_resistor for LED circuits or voltage_divider for bias networks.

ParametersJSON Schema
NameRequiredDescriptionDefault
power_wNoPower in watts (W). Provide exactly 2 of the 4 parameters.
current_aNoCurrent in amps (A). Provide exactly 2 of the 4 parameters.
voltage_vNoVoltage in volts (V). Provide exactly 2 of the 4 parameters.
resistance_ohmNoResistance in ohms. Provide exactly 2 of the 4 parameters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
power_wYesPower in watts (W).
current_aYesCurrent in amps (A).
voltage_vYesVoltage in volts (V).
resistance_ohmYesResistance in ohms.
op_amp_gainop amp gainAInspect

Calculate voltage gain and output for operational amplifier circuits in inverting, non-inverting, and differential configurations. For inverting: Av = -Rf/Ri with input impedance equal to Ri. For non-inverting: Av = 1 + Rf/Rg with very high input impedance. For differential: Av = Rf/Ri applied to (V1 - V2). Reports gain in linear and dB, output voltage when input is provided, input impedance, and phase inversion status. Ideal op-amp assumptions (infinite open-loop gain, zero input bias current). Chain from ohms_law for power budgeting or resistor_color_code for component selection.

ParametersJSON Schema
NameRequiredDescriptionDefault
vin_vNoInput voltage in volts (optional). When provided, computes actual output voltage. For differential topology, this is V1 (non-inverting input).
rf_ohmYesFeedback resistor Rf in ohms. Sets gain magnitude in all topologies.
ri_ohmYesInput/gain resistor in ohms. For inverting: input resistor Ri. For non-inverting: ground resistor Rg. For differential: input resistor on both channels.
vin2_vNoSecond input voltage in volts (differential topology only). This is V2 (inverting input).
topologyYesOp-amp circuit topology. 'inverting' uses Rf/Ri feedback with input to inverting terminal. 'non_inverting' applies input to non-inverting terminal with Rf/Rg feedback. 'differential' amplifies the voltage difference between two inputs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
gainYesVoltage gain (Av). Negative for inverting topology.
rf_ohmYesFeedback resistor value used in ohms.
ri_ohmYesInput/gain resistor value used in ohms.
vout_vYesOutput voltage in volts (null if no input voltage provided).
gain_dbYesGain in decibels: 20 * log10(|Av|).
gain_absYesAbsolute value of voltage gain.
topologyYesOp-amp topology used.
phase_inversionYesTrue if the output is phase-inverted relative to the input.
input_impedance_ohmYesInput impedance in ohms. Inverting: Ri. Non-inverting: very high (returned as 1e12). Differential: Ri.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It discloses behavioral assumptions ('Ideal op-amp assumptions'), lists computed outputs (gain in linear/dB, output voltage, input impedance, phase inversion), and explains topology-specific input impedance. Lacks mention of edge cases or constraints but is otherwise transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single paragraph of 6 sentences, front-loaded with purpose, followed by essential formulas, results, assumptions, and chaining suggestions. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, description need not detail return values. It adequately covers all topologies, parameters, and output types. Includes chaining context, making the tool self-contained for the intended use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions. Description adds meaning by clarifying resistor roles per topology (e.g., 'For inverting: input resistor Ri. For non-inverting: ground resistor Rg.'), explains optional vin_v and differential vin2_v, and interprets topology enum values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Calculate voltage gain and output for operational amplifier circuits in inverting, non-inverting, and differential configurations.' It specifies the exact resource (op-amp circuits) and action (calculate gain/output), and distinguishes by providing topology-specific formulas and results (gain in linear/dB, output voltage, input impedance, phase inversion).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides context for each topology and mentions chaining from ohms_law and resistor_color_code, implying usage after component selection. It does not explicitly state when-not-to-use or compare to siblings, but the context is sufficient for typical scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pcb_layoutpcb layoutInspect

Turn a SPICE netlist into a fab-ready 2-layer PCB: assigns real footprints (0805, TO-92, DO-35, DIP-8, headers, LED, radial-cap), auto-places components (connectivity-aware; or use your own placement), routes a 2-layer maze router with vias, and VERIFIES the result with DRC (clearance/crossing checks) and ERC (union-find copper connectivity proven against the netlist). Returns the board, routing stats + honest unrouted-net list, DRC violations, ERC net status, a 'manufacturable' flag (true only when DRC+ERC clean and everything routed), SVG layers (top/bottom copper, silkscreen, drill, assembly), and optional Gerber RS-274X + Excellon drill files. Same netlist you simulate with spice_simulate — design, verify, and lay out an entire board through the tool layer. Supply a 'placement' array for production-quality boards; the auto-router is a first-pass best-of-N-seeds.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardNoOptional board size in mm; auto-sized if omitted
gerberNoAlso return Gerber RS-274X + Excellon drill files
netlistYesSPICE netlist (same format as spice_simulate). Components + nets are extracted; .model/.tran/etc. ignored.
gnd_pourNoTreat GND as a bottom-layer pour (unions all GND pads for ERC)
placementNoOptional manual placement; omit for connectivity-aware auto-placement (best of N seeds).
clearance_mmNoMinimum copper clearance in mm
trace_width_mmNoRouting trace width in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
drcNo
ercNo
netsNo
boardNo
gerberNo
routingNo
warningsYes
componentsNo
layers_svgNo
manufacturableYes
pcb_thermalpcb thermalAInspect

Estimate PCB component temperatures by solving a thermal resistance network (thermal↔electrical analogy) with the built-in MNA solver. Each component gets a junction node (package θjb from a typical-datasheet table), a local board node coupled to its neighbours through in-plane FR4/copper conduction, and convection to ambient. Computes per-component junction and case temperatures, board extremes, and flags max-junction violations. Runs instantly in-worker; mesh-level CFD via container backend is planned.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentsYesComponents on the board
mesh_densityNoMesh densitymedium
board_width_mYesBoard width in metres
ambient_temp_cNoAmbient temperature in Celsius
board_length_mYesBoard length in metres
board_thickness_mNoBoard thickness in metres (default 1.6mm FR4)
airflow_velocity_msNoAirflow velocity in m/s (0 = natural convection)

Output Schema

ParametersJSON Schema
NameRequiredDescription
warningsYesSolver warnings
mesh_cellsYesMesh cell count
runtime_msYesSimulation time in ms
violationsYesNumber of components exceeding thermal limits
total_heat_wYesTotal heat dissipation (W)
component_tempsYesPer-component thermal results
avg_board_temp_cYesAverage board temperature (°C)
max_board_temp_cYesMaximum board surface temperature (°C)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: it is an async container job (submit and poll), models a flat board, computes temperature map and junction temperatures, flags violations. No contradictions. Does not mention rate limits or auth, but sufficient for MCP context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is 5 sentences, well-structured: first sentence states action, then model details, outputs, usage, and async nature. No superfluous content, but could be slightly tighter. Still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (CFD simulation, multiple parameters, async), the description covers all necessary aspects: what it does, inputs (board dimensions, components, airflow), outputs (temperature map, junction temps, violations), and operational note (async). Output schema exists, so return values are documented elsewhere. Complete for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 7 parameters have descriptions in the input schema (100% coverage). The description summarizes parameters as 'board dimensions, component list, and airflow conditions' but adds no further meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Run a CFD thermal simulation of a PCB with discrete heat sources using OpenFOAM', specifying the action (simulate) and resource (PCB with heat sources). It also distinguishes from sibling tools like heatsink_cfd and thermal_enclosure by focusing on PCB thermal validation and component placement optimization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides intended use 'for PCB thermal validation and component placement optimization', giving clear context. It mentions 'Async container job — submit and poll' but does not explicitly state when not to use or list alternative tools. Still helpful enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pcb_via_currentpcb via currentAInspect

Calculate PCB via current-carrying capacity using the IPC-2221 standard. A plated via is a hollow copper cylinder whose cross-sectional area is the annular ring of plating: A = pi * (D - t) * t, where D is the drill diameter and t is plating thickness. The IPC-2221 empirical formula I = k * dT^0.44 * A^0.725 (k=0.048) then gives the maximum current for a given temperature rise. Also computes via barrel resistance from copper resistivity (1.724e-6 ohm-cm) and barrel length (board thickness). When a target current is specified, returns how many parallel vias are needed. Essential for power planes, high-current paths, and thermal via arrays. Chain with trace_width to verify both trace and via can handle the same current.

ParametersJSON Schema
NameRequiredDescriptionDefault
temp_rise_cNoAllowable temperature rise above ambient in degrees Celsius. IPC-2221 standard uses 10, 20, or 30 C.
target_current_aNoOptional target current in amperes. When provided, calculates how many parallel vias are needed to carry this current safely.
drill_diameter_mmNoVia drill hole diameter in millimeters. Common values: 0.2 (microvia), 0.3 (standard), 0.4, 0.6, 0.8, 1.0.
board_thickness_mmNoTotal PCB board thickness in millimeters. Standard 2-layer is 1.6 mm. Common values: 0.8, 1.0, 1.6, 2.0, 2.4.
plating_thickness_umNoCopper plating thickness on the via barrel wall in micrometers. Standard is 25 um (IPC Class 2). Heavy plating is 50 um (IPC Class 3).

Output Schema

ParametersJSON Schema
NameRequiredDescription
vias_neededYesNumber of parallel vias needed for the target current. Null if no target_current_a was provided.
max_current_aYesMaximum current capacity of a single via at the specified temperature rise, in amperes.
resistance_mohmYesDC resistance of the via barrel in milliohms, calculated from copper resistivity and barrel length.
voltage_drop_mvYesVoltage drop across the via at maximum rated current in millivolts.
cross_section_mm2YesCopper cross-sectional area of the via barrel annulus in square millimeters.
cross_section_mil2YesCopper cross-sectional area of the via barrel annulus in square mils.
power_dissipation_mwYesPower dissipated in the via at maximum rated current in milliwatts.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully explains the IPC-2221 formula, assumptions (copper resistivity, plating thickness), and output (parallel vias for target current). It is transparent about the underlying calculations and physical principles.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but well-structured: it opens with the main purpose, explains the math, describes outputs, and gives usage context. It is informative without being verbose, though bullet points could improve readability slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, IPC standard, physics formulas), the description covers all necessary aspects: equations, parameter meanings, practical applications, and integration with sibling tools. It is complete and self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds significant value by explaining the physical meaning of each parameter, common values, and how they factor into the IPC-2221 formula. This goes well beyond the schema's defaults and ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates PCB via current-carrying capacity using the IPC-2221 standard, with specific formulas and use cases like power planes and thermal via arrays. It distinguishes itself from siblings like trace_width by mentioning chaining.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for use ('Essential for power planes, high-current paths, and thermal via arrays') and suggests chaining with trace_width. Lacks explicit when-not-to-use scenarios, but the positive guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

percentage_calcpercentage calcAInspect

Calculate what percentage one number is of another. Given a value and a total, returns the percentage, decimal form, and simplified fraction. For example, 3 out of 4 yields 75%, 0.75, and '3/4'. Commonly used for test scores, survey results, financial ratios, completion rates, and unit conversions. Chain with percentage_increase to compare successive measurements or use with test_grade for academic scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
totalYesThe whole or denominator value (must not be zero)
valueYesThe part or numerator value

Output Schema

ParametersJSON Schema
NameRequiredDescription
decimalYesThe decimal form (e.g. 0.75)
percentageYesThe percentage value (e.g. 75 for 75%)
fraction_simplifiedYesSimplified fraction as a string (e.g. '3/4')
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully communicate behavior. It specifies the return values (percentage, decimal, fraction) and gives an example. However, it does not mention error handling (e.g., total=0) or edge cases, which slightly reduces transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two main sentences plus a list) and front-loaded with the core purpose. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description covers all necessary aspects: purpose, parameters, return values, examples, and relationships to sibling tools. The presence of an output schema further reduces the need for additional detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the roles of 'value' and 'total' as part/whole and providing an example, enhancing understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Calculate what percentage one number is of another', using a specific verb and resource. It explicitly distinguishes itself from sibling tools like percentage_increase and test_grade, making the tool's unique purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use the tool, listing common use cases such as test scores, survey results, and financial ratios. It also suggests chaining with percentage_increase or using with test_grade, giving clear alternatives and context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

percentage_increasepercentage increaseAInspect

Calculate the percentage change between an old value and a new value. Determines whether the change is an increase or decrease, the absolute change, and the percentage change. Essential for financial analysis (stock price changes, revenue growth), scientific measurements (before/ after experiments), performance benchmarks, and population statistics. A positive percentage indicates growth; negative indicates decline. Division by zero (old_value = 0) is handled gracefully.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_valueYesThe new or ending value
old_valueYesThe original or starting value

Output Schema

ParametersJSON Schema
NameRequiredDescription
changeYesThe signed difference (new_value - old_value)
is_increaseYesTrue if new_value > old_value, false otherwise
absolute_changeYesAbsolute value of the change
percentage_changeYesPercentage change from old to new value
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that division by zero is handled gracefully and explains the sign meaning (positive for growth, negative for decline). This provides adequate behavioral insight for a simple calculation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with the main action, and every sentence adds value—no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 simple params) and presence of an output schema, the description covers error handling, sign explanation, and typical use cases. It is fully sufficient for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters. The description adds context (e.g., original/starting, new/ending) but does not significantly extend beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Calculate the percentage change' and clearly identifies the resource (old and new values). It specifies what is determined (increase/decrease, absolute change, percentage) and lists use cases, distinguishing it from generic percentage tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides usage contexts such as financial analysis, scientific measurements, performance benchmarks, and population statistics. It does not mention when not to use or directly compare with sibling tools like percentage_calc, but the examples are clear enough for an agent to infer appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

power_costpower costInspect

Calculate total power consumption, electricity cost, and circuit requirements for a homelab. Enter each device's wattage to get daily/monthly/yearly kWh and cost at your local electricity rate. Accounts for cooling overhead via PUE (Power Usage Effectiveness). Shows amperage draw at 120V and 240V and warns if you exceed the NEC 80% continuous load limit on a 15A breaker. Essential for budgeting homelab operating expenses and ensuring your electrical panel can handle the load. Chain output total_watts into cooling_btu for heat load sizing.

ParametersJSON Schema
NameRequiredDescriptionDefault
pueNoPower Usage Effectiveness — ratio of total facility power to IT equipment power. 1.0 means no cooling overhead, 1.2 is typical for a home server closet, 1.5+ for poorly ventilated spaces
devicesYesList of devices with their wattage
hours_per_dayNoHours per day the devices are running
kwh_rate_centsNoElectricity cost in cents per kilowatt-hour

Output Schema

ParametersJSON Schema
NameRequiredDescription
daily_kwhYesDaily energy consumption in kilowatt-hours
yearly_kwhYesYearly energy consumption in kilowatt-hours (365.25 day average)
monthly_kwhYesMonthly energy consumption in kilowatt-hours (30.44 day average)
total_wattsYesSum of all device wattages before PUE adjustment
amps_at_120vYesCurrent draw at 120V (typical North American outlet)
amps_at_240vYesCurrent draw at 240V (typical European / high-power outlet)
breaker_15a_pctYesPercentage of a 15A / 120V circuit used. NEC requires continuous loads stay under 80% (12A)
yearly_cost_usdYesEstimated yearly electricity cost in USD
monthly_cost_usdYesEstimated monthly electricity cost in USD
total_with_pue_wattsYesTotal power draw including cooling overhead (watts * PUE)
power_supply_decouplingpower supply decouplingAInspect

Select bypass and bulk decoupling capacitors for IC power supply pins. Computes the target PDN (Power Distribution Network) impedance from supply current, voltage, and allowable ripple using Z_target = V_ripple / I_total. Recommends a ceramic bypass capacitor (high-frequency decoupling, placed closest to IC pins) and a bulk capacitor (low-frequency decoupling, near the regulator). Calculates the ceramic cap's self-resonant frequency assuming typical lead inductance, and checks whether ESR-induced ripple stays within limits. Essential for digital, analog, and mixed-signal PCB design. Chain with lc_resonance to verify the decoupling capacitor's resonant behavior, or with trace_width to size the power trace.

ParametersJSON Schema
NameRequiredDescriptionDefault
num_icsNoNumber of identical ICs sharing this supply rail. Scales the total current demand.
esr_mohmNoEquivalent series resistance (ESR) of the ceramic bypass capacitor in milliohms. Typical MLCC: 5-20 mohm.
max_ripple_mvNoMaximum allowable supply ripple in millivolts (mV). Typical: 50 mV for digital, 10 mV for analog/RF.
supply_voltage_vYesSupply voltage in volts (V). Common values: 1.8, 2.5, 3.3, 5.0, 12.0.
supply_current_maYesIC supply current draw in milliamps (mA). Use the maximum or typical from the datasheet.
switching_freq_mhzNoPrimary switching or clock frequency of the IC in MHz. Determines the target impedance frequency range.

Output Schema

ParametersJSON Schema
NameRequiredDescription
bulk_cap_ufYesRecommended bulk capacitor value in microfarads (uF). Placed near the voltage regulator for low-frequency decoupling.
bulk_cap_valueYesNearest standard bulk capacitor value with unit (e.g. '10 uF', '47 uF').
ceramic_cap_ufYesRecommended ceramic bypass capacitor value in microfarads (uF). Placed closest to IC pins.
bypass_adequateYesWhether the ESR-induced ripple is within the specified max_ripple_mv limit.
ripple_at_esr_mvYesEstimated ripple voltage due to ESR at the switching frequency: V = I_peak * ESR.
total_current_maYesTotal supply current for all ICs on this rail.
ceramic_cap_valueYesNearest standard E12 capacitor value with unit (e.g. '100 nF', '1 uF').
target_impedance_ohmYesTarget supply impedance at the switching frequency: Z_target = V_ripple / I_total. The decoupling network must keep PDN impedance below this value.
self_resonant_freq_mhzYesSelf-resonant frequency of the recommended ceramic capacitor assuming 0.5 nH lead inductance. Above this frequency, the capacitor becomes inductive.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully describes behavioral traits: computes target impedance, recommends capacitor types, calculates self-resonant frequency, and checks ESR ripple. No contradictions, but could mention any assumptions or limitations (e.g., ideal lead inductance).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, well-structured, and front-loaded: first sentence states purpose, subsequent sentences detail computation and recommendations. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description need not explain return values. It thoroughly covers input parameters, tool purpose, usage context, and chaining suggestions, making it complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds significant value by explaining the Z_target formula, providing typical ripple values (50 mV digital, 10 mV analog), and clarifying parameter roles beyond schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description begins with 'Select bypass and bulk decoupling capacitors for IC power supply pins,' clearly stating the verb (select) and resource (capacitors). It explains the computation and differentiates from siblings by suggesting chaining with lc_resonance and trace_width.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States 'Essential for digital, analog, and mixed-signal PCB design' and provides chain recommendations, offering clear context on when to use. Lacks explicit 'when not to use' or alternatives, but the sibling list implicitly covers other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

p_valuep valueInspect

Calculate the p-value for a z-score or t-statistic. Supports one-tailed (left or right) and two-tailed hypothesis tests using either the standard normal distribution or the Student's t-distribution when degrees of freedom are specified. Returns significance flags at the 0.01, 0.05, and 0.10 alpha levels. Essential for interpreting results from t-tests, z-tests, ANOVA post-hoc comparisons, and regression coefficients. Uses the Abramowitz & Stegun normal CDF approximation and regularized incomplete beta function for the t-distribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
test_typeNoTail type: one_tail_left (p from left), one_tail_right (p from right), or two_tail (both tails combined).two_tail
test_statisticYesThe z-score or t-statistic from your hypothesis test. Positive values indicate the observed value is above the null hypothesis mean.
degrees_of_freedomNoDegrees of freedom for the t-distribution. Omit to use the standard normal (z) distribution.

Output Schema

ParametersJSON Schema
NameRequiredDescription
p_valueYesThe computed p-value representing the probability of observing a result at least as extreme as the test statistic under the null hypothesis.
test_typeYesThe tail type used for this calculation.
significant_at_01YesWhether the result is statistically significant at the 0.01 (1%) level.
significant_at_05YesWhether the result is statistically significant at the 0.05 (5%) level.
significant_at_10YesWhether the result is statistically significant at the 0.10 (10%) level.
pythagorean_theorempythagorean theoremAInspect

Solve for any side of a right triangle using the Pythagorean theorem (a² + b² = c²). Provide any two of the three sides (a, b, c) and the missing side is computed. Also returns the triangle area (0.5 * a * b), perimeter, and confirms it is a right triangle. Side c is always the hypotenuse. Fundamental to surveying, construction (squaring corners), navigation (distance calculations), physics (vector decomposition), and 3D graphics. Chain with slope_calc for coordinate geometry or square_root for simplified radical answers.

ParametersJSON Schema
NameRequiredDescriptionDefault
aNoLength of side a (leg)
bNoLength of side b (leg)
cNoLength of side c (hypotenuse)

Output Schema

ParametersJSON Schema
NameRequiredDescription
aYesLength of side a
bYesLength of side b
cYesLength of side c (hypotenuse)
areaYesArea of the right triangle (0.5 * a * b)
perimeterYesPerimeter of the triangle (a + b + c)
is_right_triangleYesAlways true when computed from two sides
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description fully discloses behavior: it computes the missing side, returns area, perimeter, and confirms right triangle. It emphasizes that side c is always the hypotenuse. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (~100 words) and well-structured: core purpose, input/output, use cases, and chaining suggestions. Every sentence provides value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description fully covers what the tool does, how to use it, what it returns, and how to combine with related tools. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for each parameter. The description adds meaningful context: only two sides are needed, and c must be the hypotenuse, which is not explicit in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Solve for any side of a right triangle using the Pythagorean theorem.' It specifies the verb and resource, and differentiates from siblings like slope_calc and square_root by focusing on right triangles and suggesting chaining.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to provide any two sides, and the third is computed. It lists domains (surveying, construction, etc.) and suggests chaining with slope_calc for coordinate geometry or square_root for simplified radicals, providing clear when-to-use and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rack_capacityrack capacityAInspect

Quick rack space and weight sizing calculator for homelab and small data center racks. Enter your devices with their height in rack units, weight, and wattage to get total utilization, remaining free space, weight totals in lbs and kg, and recommended PDU count based on the NEC 80% continuous load rule (1920W per 20A/120V PDU). Estimates cable management overhead at 2U per 10U of installed gear. Outputs total_watts that chains into power_cost and cooling_btu for full infrastructure planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
devicesYesList of devices to place in the rack
rack_unitsNoTotal rack height in rack units (standard is 42U)

Output Schema

ParametersJSON Schema
NameRequiredDescription
free_uYesRemaining empty rack units
used_uYesTotal rack units consumed by devices
overhead_uYesEstimated cable management overhead in rack units (2U per 10U of gear)
total_wattsYesTotal power draw of all devices in watts
total_weight_kgYesTotal weight of all devices in kilograms
utilization_pctYesPercentage of rack space used by devices
effective_free_uYesFree rack units after subtracting cable management overhead
total_weight_lbsYesTotal weight of all devices in pounds
recommended_pdu_countYesRecommended number of PDUs (each PDU = 80% of 20A/120V = 1920W)
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but the description fully discloses behavior: it is a read-only calculator, explains NEC 80% rule, cable management overhead estimation, and output fields. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the tool's main purpose. While slightly long, each sentence adds value—no filler. Could be slightly more concise but appropriately detailed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description adequately lists all key outputs (total_watts, utilization, free space, weights, PDU count) and mentions chaining. For a calculator tool, it provides complete context for use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds meaningful context beyond schema: explains cable management overhead, PDU count logic, and that rack_units defaults to 42. Provides how parameters are used in calculations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's a 'quick rack space and weight sizing calculator' for homelab and small data center racks, listing specific inputs (height, weight, wattage) and outputs (utilization, free space, weights, PDU count). It differentiates from siblings by specifying the use case and chainable outputs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (homelab, small data center) and mentions chaining outputs into power_cost and cooling_btu, guiding downstream usage. It does not explicitly exclude alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

raid_iopsraid iopsInspect

Estimate RAID array IOPS performance and latency for ZFS and traditional RAID configurations. Calculates maximum read IOPS, write IOPS (accounting for write penalty/amplification per RAID level), blended IOPS for a configurable read/write workload mix, and rough per-disk latency. Supports stripe, mirror, raidz1, raidz2, and raidz3. Use with HDD IOPS (~150), SATA SSD (~50000), or NVMe SSD (~100000) to compare RAID topologies and plan storage performance for databases, VMs, media servers, and general homelab NAS workloads. Chains from zfs_capacity.data_disks for integrated capacity+performance planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
read_pctNoPercentage of workload that is reads (0-100). Typical: 70 for mixed, 90 for read-heavy, 30 for write-heavy
disk_iopsNoIOPS per individual disk. Typical values: HDD ~150, SATA SSD ~50000, NVMe SSD ~100000
raid_typeNoRAID level: stripe (no redundancy, write penalty 1), mirror (write penalty 2), raidz1 (write penalty 2), raidz2 (write penalty 3), raidz3 (write penalty 4)raidz1
disk_countYesTotal number of physical disks in the array

Output Schema

ParametersJSON Schema
NameRequiredDescription
read_iopsYesMaximum read IOPS: disk_count * disk_iops
write_iopsYesMaximum write IOPS: disk_count * disk_iops / write_penalty
blended_iopsYesEffective IOPS for the given read/write mix: (read_pct * read_iops + write_pct * write_iops) / 100
write_penaltyYesWrite amplification factor for the chosen RAID level
estimated_latency_msYesRough per-disk latency estimate in milliseconds: 1000 / (blended_iops / disk_count)
rc_filterrc filterAInspect

Computes the cutoff frequency, time constant, impedance, and phase shift of a first-order RC filter. Supports both lowpass and highpass topologies. The cutoff frequency is f = 1/(2piRC) where the signal is attenuated by 3 dB. The time constant tau = RC governs transient response — the capacitor reaches 63.2% of its final value after one tau. Use for anti-aliasing before ADCs, DC blocking, noise filtering, and signal conditioning. Chain from voltage_divider to design filtered bias networks.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_typeNoFilter topology: 'lowpass' (R then C to ground) or 'highpass' (C then R to ground).lowpass
capacitance_fYesCapacitance in farads (C). The capacitive element of the RC filter.
resistance_ohmYesResistance in ohms (R). The resistive element of the RC filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cutoff_freq_hzYesCutoff frequency (-3 dB point) in hertz.
cutoff_freq_khzYesCutoff frequency in kilohertz for convenience.
time_constant_sYesRC time constant (tau) in seconds.
time_constant_msYesRC time constant in milliseconds.
phase_at_cutoff_degYesPhase shift at the cutoff frequency in degrees. -45 for lowpass, +45 for highpass.
impedance_at_cutoff_ohmYesTotal impedance magnitude at the cutoff frequency in ohms. Equals R * sqrt(2) for a first-order RC filter.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full burden. It explains the mathematical operations (f=1/(2piRC), tau=RC) and their physical meaning (3dB attenuation, 63.2% transient). It does not mention state modification or authorization needs, which are irrelevant for a computation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a focused paragraph of 5 sentences, front-loading the core function. It efficiently conveys formulas and usage. The mention of voltage_divider at the end adds context but is slightly tangential; overall it is well-structured without excess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not shown but indicated), the description complements it by explaining return values' physical meaning. The tool is for a narrow domain (RC filters), and the description covers inputs, outputs, and applications, making it complete for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds value beyond the schema by explaining the formulas and physical significance (e.g., why tau matters for transients). The schema already documents resistance and capacitance, but the description enriches understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes cutoff frequency, time constant, impedance, and phase shift for first-order RC filters, supporting lowpass and highpass topologies. This specific verb+resource combination distinguishes it from engineering siblings like attenuator_* and lc_resonance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use cases: anti-aliasing, DC blocking, noise filtering, and signal conditioning. It also suggests chaining from voltage_divider tool. While it doesn't explicitly exclude alternatives, the context is clear and practical for an RC filter tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resistor_color_coderesistor color codeAInspect

Decodes 4-band or 5-band resistor color codes into resistance value, tolerance, and min/max range. Accepts an ordered array of color names (left-to-right as printed on the resistor body). Supports standard EIA color codes including gold and silver multiplier/tolerance bands. Outputs the nominal resistance in ohms, a human-readable formatted value (e.g. '4.7kΩ'), tolerance percentage, and the min/max resistance range. Chain into ohms_law or led_resistor for circuit analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandsYesArray of 4 or 5 color band names from left to right. 4-band: [digit1, digit2, multiplier, tolerance]. 5-band: [digit1, digit2, digit3, multiplier, tolerance].

Output Schema

ParametersJSON Schema
NameRequiredDescription
max_ohmYesMaximum resistance within tolerance.
min_ohmYesMinimum resistance within tolerance.
band_countYesNumber of bands (4 or 5).
tolerance_pctYesTolerance in percent.
resistance_ohmYesResistance value in ohms.
resistance_formattedYesHuman-readable resistance string, e.g. '4.7kΩ'.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description fully explains behavior: it decodes input, calculates nominal resistance, formatted value, tolerance, and min/max range. No side effects or destructive actions; it's a pure computation tool. Transparent about output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, front-loaded with main purpose. Every sentence adds information: input format, support for standards, output fields, and chaining hints. No redundant or vague wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete enough for a simple decode tool with one parameter and expected output schema. Covers input, output, and usage context (chaining). Does not detail color-to-digit mapping, but that is inherent to tool logic and not required for selection/invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter 'bands' with 100% schema coverage. Description adds value beyond schema by explaining the left-to-right order and the difference between 4-band and 5-band patterns, clarifying how the array maps to digits, multiplier, and tolerance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it decodes 4-band or 5-band resistor color codes into resistance value, tolerance, and min/max range. It specifies input format (ordered array of color names left-to-right) and distinguishes from sibling tools by suggesting chaining into ohms_law or led_resistor for circuit analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on when to use: decoding resistor color codes. Mentions standard EIA codes and gold/silver bands. Suggests chaining into related tools but doesn't explicitly state when not to use. Since no sibling tool overlaps, this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

salary_to_hourlysalary to hourlyAInspect

Converts compensation between annual salary, monthly pay, weekly pay, and hourly wage. Accepts any of the four pay periods as input and derives all others. Uses configurable hours per week (default 40) and weeks per year (default 52). Daily rate assumes an 8-hour workday; monthly is annual divided by 12. Useful for comparing job offers quoted in different pay periods, freelance rate-setting, and budgeting. Chain from sales_tax to see how many hours a purchase costs.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesThe salary or wage amount to convert.
from_typeNoThe pay period of the input amount. Defaults to 'annual'.annual
hours_per_weekNoHours worked per week. Defaults to 40 for a standard full-time schedule.
weeks_per_yearNoWorking weeks per year. Defaults to 52. Use 50 to account for 2 weeks unpaid vacation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dailyYesDaily earnings assuming an 8-hour workday.
annualYesAnnual salary.
hourlyYesHourly wage.
weeklyYesWeekly earnings.
monthlyYesMonthly earnings (annual / 12).
biweeklyYesBiweekly (every two weeks) earnings.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains default assumptions (40 hours/week, 52 weeks/year), daily rate (8-hour day), and monthly calculation (annual/12). Lacks error handling details, but sufficient for a simple calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences immediately convey the core function, configuration, and usage. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and full schema coverage, the description covers purpose, assumptions, and application. An output schema exists to handle return value details, so no gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by stating that any pay period can be input and all others are derived, and by clarifying the defaults for hours_per_week and weeks_per_year.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Converts compensation between annual salary, monthly pay, weekly pay, and hourly wage' – a specific verb and resource. It also distinguishes from sibling calculators by focusing on pay period conversion, which is unique among the listed sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear use cases: 'comparing job offers', 'freelance rate-setting', and 'budgeting'. Suggests chaining with sales_tax. Does not include explicit when-not-to-use or alternatives, but the context is strong enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sales_taxsales taxInspect

Calculates total cost including sales tax for a purchase. Given a unit price, tax rate percentage, and optional quantity, computes the subtotal (price times quantity), the tax amount rounded to two decimal places, and the final total. Useful for estimating purchase costs across US states and municipalities with different tax rates, comparing pre-tax and post-tax prices, and budgeting. Chain into salary_to_hourly to see how many work-hours a purchase represents.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesUnit price of the item in dollars (or any currency). Must be positive.
quantityNoNumber of items to purchase. Defaults to 1.
tax_rate_pctNoSales tax rate as a percentage (e.g. 8.875 for 8.875%). Defaults to 0 — enter your local rate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYesSubtotal plus tax amount.
subtotalYesPrice times quantity before tax.
tax_amountYesTotal tax amount, rounded to two decimal places.
effective_rate_pctYesThe tax rate applied, echoed back for confirmation.
scientific_notationscientific notationAInspect

Convert any number to scientific notation and engineering notation. Returns the coefficient, exponent, a formatted string with Unicode superscripts (e.g. '3.14 × 10²'), and engineering notation where the exponent is a multiple of 3. Useful for expressing very large or very small values compactly, common in physics, electronics (picofarads, gigahertz), and astronomy. Accepts output from sig_figs and log_calc for precision-aware formatting.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe number to convert to scientific notation

Output Schema

ParametersJSON Schema
NameRequiredDescription
exponentYesThe power-of-10 exponent
coefficientYesThe coefficient (mantissa) between 1 and 10
notation_stringYesFormatted scientific notation with Unicode superscripts (e.g. '3.14 × 10²')
engineering_notationYesEngineering notation with exponent divisible by 3
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavior: it returns coefficient, exponent, Unicode-superscripted string, and engineering notation. It also notes input compatibility with other tools, leaving no ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action and output, then usage context. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and the simplicity of the tool, the description covers all necessary aspects: input, process, outputs, and use cases. It also mentions integration with sibling tools for precision-aware formatting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description is clear. The tool description adds minor context ('convert to scientific/engineering notation') but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Convert any number') and resource ('to scientific notation and engineering notation'), clearly distinguishing it from sibling tools like log_calc and sig_figs by focusing on notation conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context ('useful for expressing very large or very small values') and mentions integration with sig_figs and log_calc, but lacks explicit guidance on when not to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sig_figssig figsInspect

Count significant figures in a number and optionally round to N significant figures. Accepts the number as a string to preserve trailing zeros (e.g. '1.200' has 4 sig figs). Applies standard sig fig rules: leading zeros do not count, trailing zeros after a decimal point count, trailing zeros before a decimal point are treated as significant. Also returns the number in scientific notation. Essential for laboratory measurements, error analysis, and maintaining proper precision in chained calculations.

ParametersJSON Schema
NameRequiredDescriptionDefault
number_strYesThe number as a string to preserve trailing zeros (e.g. '1.200')
round_to_nNoOptionally round the number to this many significant figures

Output Schema

ParametersJSON Schema
NameRequiredDescription
rounded_to_nYesThe number rounded to N significant figures (null if N not provided)
sig_figs_countYesNumber of significant figures in the input
scientific_notationYesThe number expressed in scientific notation
slope_calcslope calcAInspect

Calculate the slope, y-intercept, line equation, angle, and distance between two points in a 2D Cartesian plane. Given coordinates (x1, y1) and (x2, y2), computes slope (rise/run), y-intercept, the equation in slope-intercept form (y = mx + b), angle in degrees relative to the x-axis, and Euclidean distance. Handles vertical and horizontal lines as special cases. Useful for surveying, civil engineering grade calculations, linear regression visualization, and physics kinematics problems.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesX-coordinate of the first point
x2YesX-coordinate of the second point
y1YesY-coordinate of the first point
y2YesY-coordinate of the second point

Output Schema

ParametersJSON Schema
NameRequiredDescription
slopeYesSlope of the line (null for vertical lines)
distanceYesEuclidean distance between the two points
equationYesLine equation in slope-intercept form or 'x = c' for vertical
is_verticalYesTrue if the line is vertical (undefined slope)
y_interceptYesY-intercept of the line (null for vertical lines)
angle_degreesYesAngle of the line relative to the positive x-axis in degrees
is_horizontalYesTrue if the line is horizontal (slope = 0)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It mentions handling vertical and horizontal lines as special cases, which adds transparency. It does not mention side effects, but as a read-only calculation, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (5 sentences) and well-structured, starting with the main outputs, then special cases, then use cases. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to explain return values. It covers special cases and use cases, making it complete for a calculator tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds overall context but does not add meaning beyond the schema's existing parameter descriptions. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes slope, y-intercept, line equation, angle, and distance between two points. It uses specific verbs and resources, distinguishing it from sibling calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists use cases (surveying, engineering, physics) but does not explicitly exclude alternatives or mention when not to use. However, the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snr_marginsnr marginAInspect

Computes LoRa link SNR margin by comparing received power against the noise floor and the spreading-factor-dependent demodulation threshold from the Semtech SX1276 datasheet. Calculates receiver noise floor from thermal noise (-174 dBm/Hz), channel bandwidth, and receiver noise figure. Returns margin in dB and a boolean link-OK indicator. Use to validate whether a LoRa or Meshtastic link will reliably decode packets. Accepts rx_power from link_budget tool output for end-to-end chain analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
sfNoLoRa spreading factor (7-12). Higher SF tolerates lower SNR.
bw_khzNoLoRa channel bandwidth in kHz. Affects noise floor.
rx_power_dbmYesReceived signal power in dBm (e.g., -110). Typically from a link budget calculation or field measurement.
noise_figure_dbNoReceiver noise figure in dB. Typical LoRa radio NF is 6 dB (SX1276).

Output Schema

ParametersJSON Schema
NameRequiredDescription
link_okYesTrue if margin_db > 0 (signal exceeds demodulation threshold).
margin_dbYesSNR margin above demodulation threshold in dB. Positive = link OK, negative = link failure.
noise_floor_dbmYesReceiver noise floor in dBm, computed from bandwidth and noise figure.
required_snr_dbYesMinimum SNR required for successful LoRa demodulation at the given SF.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Reveals the calculation details (noise floor, demod threshold, returns margin and boolean) and notes it is a pure computation. No annotations to contradict, but could mention edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

All sentences are essential: function, method, output, usage, integration. No redundancy. Well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers functionality, calculation, parameters, usage, and integration. Does not define the threshold for 'link-OK' boolean, but output schema likely covers that. Otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. Description adds context: rx_power typically from link_budget, sf affects threshold, bw affects noise, noise_figure_db typical value. Adds value beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Computes LoRa link SNR margin' and specifies the calculation method. Distinguishes itself from siblings like link_budget by explaining it consumes that tool's output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states 'Use to validate whether a LoRa or Meshtastic link will reliably decode packets' and recommends integration with link_budget. Could mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solar_load_auditsolar load auditAInspect

Calculates total daily energy consumption from an appliance list — the critical first step before sizing solar panels or batteries. Enter each appliance with its wattage, hours of daily use, and quantity. Outputs total daily kWh (with configurable safety margin for surge and inrush current), peak simultaneous wattage, and recommended inverter VA rating per NEC 125% continuous load rule. Feeds directly into solar_sizing (daily_kwh) and battery_autonomy (daily_kwh). Essential for residential, RV, cabin, and off-grid system design.

ParametersJSON Schema
NameRequiredDescriptionDefault
appliancesYesList of appliances with wattage, hours per day, and quantity
safety_margin_pctNoSafety margin percentage to account for surge/inrush current, default 20%

Output Schema

ParametersJSON Schema
NameRequiredDescription
peak_wattsYesPeak simultaneous wattage if all appliances run at once (W)
total_daily_whYesTotal daily energy consumption in watt-hours (Wh)
appliance_countYesTotal number of appliance entries
total_daily_kwhYesTotal daily energy consumption in kilowatt-hours (kWh)
with_margin_kwhYesDaily kWh including safety margin
largest_load_wattsYesWattage of the single largest appliance (W)
recommended_inverter_vaYesRecommended inverter size in VA (peak watts * 1.25 per NEC)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses outputs (total daily kWh, peak simultaneous wattage, recommended inverter VA rating per NEC rule) and the configurable safety margin. It also clarifies the tool's role as a calculator with no destructive side effects, which is adequate for a non-destructive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph but packs essential information efficiently. It front-loads the main purpose and does not contain redundant or fluff sentences. Minor improvement could be breaking into multiple sentences, but it remains clear and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 parameters (one required), no enums, no nested objects, and an output schema exists, the description is entirely sufficient. It explains the tool's role in the broader system, the inputs, the outputs, and the safety margin. The mention of NEC rule and inverter sizing adds credibility and completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the overall workflow (e.g., 'Enter each appliance with its wattage, hours of daily use, and quantity') and the purpose of the safety margin. This goes beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it calculates total daily energy consumption from an appliance list and identifies it as the first step for solar/battery sizing. It distinguishes from siblings like solar_sizing and battery_autonomy by explicitly stating it feeds into them, and lists specific use cases (residential, RV, cabin, off-grid).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says it's for calculating energy consumption before sizing solar panels or batteries, and mentions it feeds directly into solar_sizing and battery_autonomy, implying usage context. However, it does not explicitly state when not to use it or provide alternatives, but the context is clear enough for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solar_roisolar roiAInspect

Calculates solar system return on investment, payback period, and levelized cost of energy (LCOE). Models year-by-year savings accounting for panel degradation, utility rate inflation, federal Investment Tax Credit (ITC), state rebates, and annual maintenance. Outputs net cost after incentives, payback year, total lifetime savings, ROI percentage, and LCOE in cents/kWh. Essential for residential and commercial solar financial analysis, installer proposals, and comparing solar vs. grid economics over a 25-year system lifetime.

ParametersJSON Schema
NameRequiredDescriptionDefault
system_size_kwYesSystem size in kilowatts (kW)
federal_itc_pctNoFederal Investment Tax Credit percentage, default 30% (US ITC)
system_cost_usdYesTotal installed system cost in USD
state_rebate_usdNoState or local rebate amount in USD, default 0
annual_production_kwhYesEstimated annual energy production in kWh (from PVWatts or system_size_kw * peak_sun_hours * 365 * 0.80)
system_lifetime_yearsNoSystem lifetime in years, default 25
annual_degradation_pctNoAnnual panel degradation rate, default 0.5% per year
annual_maintenance_usdNoAnnual maintenance cost in USD, default $100
electricity_rate_centsNoCurrent electricity rate in cents per kWh, default 15
annual_rate_increase_pctNoAnnual utility rate increase percentage, default 3%

Output Schema

ParametersJSON Schema
NameRequiredDescription
roi_pctYesReturn on investment percentage over system lifetime
net_cost_usdYesNet system cost after federal ITC and state rebates (USD)
payback_yearsYesNumber of years to recoup net cost from savings
total_savings_usdYesTotal cumulative savings over system lifetime (USD)
lcoe_cents_per_kwhYesLevelized cost of energy in cents per kWh
year_1_savings_usdYesFirst year net savings (USD)
year_25_savings_usdYesFinal year net savings (USD), or last year if lifetime < 25
lifetime_production_kwhYesTotal energy produced over system lifetime (kWh)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It discloses modeled factors (degradation, inflation, ITC, rebates, maintenance) and outputs (net cost, payback, savings, ROI, LCOE). It does not mention side effects or assumptions, but as a pure calculation tool this is reasonable transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a concise 4-sentence paragraph with clear structure: primary function, model details, outputs, and use cases. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, output schema exists), the description provides sufficient context about inputs and outputs. It covers model components and applications, though edge cases or formula details are omitted. With an output schema, return values are adequately documented elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for all parameters, meeting the baseline. The description reinforces key parameters (degradation, inflation, etc.) but does not add significant new semantics beyond the schema's existing detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool calculates solar ROI, payback period, and LCOE. It clearly distinguishes from sibling tools like 'solar_sizing' or 'solar_load_audit' by focusing on financial analysis and specifying use cases (installer proposals, grid comparison).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies use cases (residential/commercial analysis, proposals, grid comparison) and model components, but does not explicitly state when not to use or list alternatives. The implied guidance is clear though not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solar_sizingsolar sizingAInspect

Sizes an off-grid solar power system by calculating the number of panels and battery bank capacity required for a given daily energy consumption. Accounts for system losses (inverter, wiring, charge controller), battery depth-of-discharge, and autonomy days for cloudy weather. Outputs panel count, total panel wattage, battery capacity in kWh and Ah, and minimum charge controller amperage (with 25% safety margin per NEC 690.8). Supports 12V, 24V, and 48V system architectures. Use for cabin, RV, telecom tower, and remote IoT deployments.

ParametersJSON Schema
NameRequiredDescriptionDefault
dodNoBattery depth of discharge (0-1), default 0.8 for LiFePO4
daily_kwhYesDaily energy consumption in kilowatt-hours (kWh)
panel_wattsNoRated wattage per solar panel (W)
peak_sun_hoursNoAverage peak sun hours per day for your location (hours)
system_voltageNoBattery bank system voltage: 12, 24, or 48 V
system_efficiencyNoOverall system efficiency (0-1), accounts for inverter, wiring, and controller losses
battery_autonomy_daysNoNumber of days the battery bank should sustain load without solar input

Output Schema

ParametersJSON Schema
NameRequiredDescription
battery_ahYesRequired battery bank capacity in amp-hours at system voltage
battery_kwhYesRequired battery bank capacity in kWh (before DoD)
panels_neededYesNumber of solar panels required (rounded up)
daily_solar_kwhYesDaily solar energy needed after accounting for system losses (kWh)
total_panel_wattsYesTotal installed panel wattage (W)
charge_controller_ampsYesMinimum charge controller current rating in amps (with 25% margin)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even without annotations, the description discloses that it accounts for system losses, depth of discharge, autonomy days, and includes a safety margin per NEC 690.8. It also mentions supported voltages. No contradictions or missing critical behavior for a calculator tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and wastes no words. It lists outputs and key considerations in a well-structured manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, engineering domain) and the presence of an output schema, the description is reasonably complete. It covers essential aspects but could mention typical ranges or constraints for parameters like panel_watts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds context for some parameters (e.g., losses, DOD, autonomy) but does not elaborate on all seven parameters individually. It provides useful overall context but repeats some schema info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sizes an off-grid solar power system, listing specific outputs like panel count, total wattage, battery capacity, and charge controller amperage. It distinguishes from sibling tools (e.g., inverter_sizing, battery_autonomy) by focusing on full off-grid sizing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use cases (cabin, RV, telecom, IoT) and implies when to use it, but does not explicitly state when not to use or mention alternatives among siblings. It is clear but could be more directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spice_simulatespice simulateInspect

Run a SPICE circuit simulation directly in the worker. Accepts a standard SPICE netlist and performs operating-point (.op), DC sweep (.dc), AC frequency sweep (.ac), or transient (.tran) analysis using a built-in modified-nodal-analysis engine with Newton-Raphson nonlinear solving. Supports R, L, C, V, I sources (DC/AC/SIN/PULSE), diodes, BJTs (Ebers-Moll), MOSFETs (Shichman-Hodges level 1), controlled sources (E/G), .param expressions, .subckt/X hierarchical subcircuits, .measure and .four (Fourier/THD), and a built-in parts library (reference 2n3904/2n2222/1n4148/1n5819/2n7000/tl072/lm358/led_red etc. by name and the model is auto-injected), up to 150 components. Returns voltage vectors for all circuit nodes (magnitude + phase for AC). Use spice_template to generate netlists from parameterized templates.

ParametersJSON Schema
NameRequiredDescriptionDefault
certifyNoIf true, attach an a-posteriori existence certificate for the DC operating point (Newton–Kantorovich: proves a true solution exists within a computed radius, or refuses). Adds ~one extra back-solve.
netlistYesSPICE netlist (ngspice-compatible). Must include at least one analysis command (.ac, .dc, .tran, .op) and end with .end
optionsNoAdditional ngspice .options (e.g. { reltol: 0.001 })
analysisNoOverride analysis type (auto-detected from netlist if omitted)
tolerancesNoComponent-tolerance box, e.g. {"R1":0.05,"V1":0.02} (fractional). With output_node, returns a certified min/max interval for that node over all component variations. R/V/I elements only.
output_nodeNoNode whose voltage is certified over the tolerance box (required with tolerances).
temperature_cNoSimulation temperature in Celsius

Output Schema

ParametersJSON Schema
NameRequiredDescription
nodesYesList of circuit node names
fourierNoPresent when the netlist has .four cards: Fourier harmonics + THD per node
vectorsYesNamed voltage/current vectors keyed by node name
measuresNoPresent when the netlist has .measure cards: {name: value}
warningsYesAny ngspice warnings generated during simulation
runtime_msYesSimulation wall-clock time in milliseconds
certificateNoPresent when certify=true: {certified, rho, eta, h, ...} existence certificate for the DC operating point
analysis_typeYesAnalysis type that was performed
component_countYesNumber of components in the netlist
tolerance_certificateNoPresent when tolerances+output_node given: {certified, interval, nominal, ...} certified output range over the component-tolerance box
spice_templatespice templateInspect

Generate a complete SPICE netlist from a parameterized template. Supports common circuit topologies: low-pass RC filter, voltage divider, common emitter amplifier. Returns a ready-to-simulate netlist string that can be passed directly to spice_simulate. Use this when an agent needs to construct a circuit from high-level parameters without writing raw SPICE syntax. Feeds into spice_simulate for AC/DC/transient analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYesTemplate-specific parameters (e.g. r_ohms, c_farads, v_source)
analysisNoSPICE analysis type to include in netlistac
templateYesCircuit template name

Output Schema

ParametersJSON Schema
NameRequiredDescription
netlistYesComplete SPICE netlist ready for simulation
analysis_typeYesAnalysis type included in the netlist
template_nameYesTemplate used
component_countYesNumber of components in the generated circuit
square_footagesquare footageAInspect

Calculates area and perimeter for common shapes — rectangle, circle, or triangle — in both imperial and metric units. Returns area in square feet, square meters, and acres, plus perimeter in feet and meters. For rectangles: area = length * width, perimeter = 2*(length + width). For circles: area = pi * r^2, perimeter = 2 * pi * r. For triangles: area = 0.5 * base * height, perimeter approximated as base + height + sqrt(base^2 + height^2). Useful for real estate, flooring, landscaping, and construction estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
area_sqmYesArea in square meters (sqft * 0.092903).
area_sqftYesArea in square feet.
area_acresYesArea in acres (sqft / 43560).
perimeter_mYesPerimeter in meters.
perimeter_ftYesPerimeter in feet.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the formulas used for each shape, which is thorough for a calculator. However, it does not mention potential limitations (e.g., triangle perimeter is approximate) or what happens with invalid inputs (e.g., negative dimensions). This is minor for a read-only tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose first, then formulas and use cases. It's a bit long but every sentence adds value. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple shapes, units) and the presence of an output schema (not shown but indicated), the description covers return values (area in sq ft, sq m, acres; perimeter in ft, m) and formulas. It lacks only the input mechanism, which is a notable omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, yet the description implies the tool needs shape type and dimensions. Since schema description coverage is 100% (trivially), baseline for 0 parameters is 4, but the lack of parameters is a design issue. The description does not explain how to provide inputs, leaving the agent without guidance on invocation. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool calculates area and perimeter for rectangle, circle, and triangle shapes in imperial and metric units. It uses specific verbs ('calculates', 'returns') and clearly identifies the resources (shapes, units). Among many sibling calculator tools, 'square_footage' uniquely performs these geometric calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it is 'useful for real estate, flooring, landscaping, and construction estimates,' providing context for appropriate use cases. However, it does not specify when not to use it, nor does it name alternative tools from the sibling list for different types of calculations (e.g., area vs. volume). The guidance is clear but lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

square_rootsquare rootInspect

Compute the square root of a non-negative number. Returns the decimal result, whether the input is a perfect square, and a simplified radical form (e.g. '√12' simplifies to '2√3'). For integer inputs, factors are extracted from under the radical sign. Useful for geometry (diagonal/hypotenuse calculations), statistics (standard deviation from variance), signal processing (RMS values), and general algebra. Chain with pythagorean_theorem for triangle side calculations.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesThe non-negative number to compute the square root of

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe square root of the input value
is_perfect_squareYesTrue if the input is a perfect square integer
simplified_radicalYesSimplified radical form (e.g. '2√3' for √12)
string_sizingstring sizingAInspect

Calculates optimal solar panel string and MPPT configuration based on panel electrical specs, inverter/charge-controller MPPT limits, and site temperature extremes. Applies temperature coefficients to determine Voc at minimum temperature (cold) and Vmp at maximum temperature (hot), then computes the safe range of panels per string, maximum parallel strings, and total array wattage. Prevents over-voltage damage in winter and under-voltage MPPT dropout in summer. Essential for NEC 690.7 compliant residential and commercial solar design.

ParametersJSON Schema
NameRequiredDescriptionDefault
mppt_imaxYesMaximum MPPT input current in amps
mppt_vmaxYesMaximum MPPT input voltage in volts
mppt_vminYesMinimum MPPT start/operating voltage in volts
panel_impYesPanel maximum power current (Imp) at STC in amps
panel_iscYesPanel short circuit current (Isc) at STC in amps
panel_vmpYesPanel maximum power voltage (Vmp) at STC in volts
panel_vocYesPanel open circuit voltage (Voc) at STC in volts
temp_max_cNoMaximum expected cell temperature in Celsius, default 60
temp_min_cNoMinimum expected site temperature in Celsius, default -10
temp_coeff_voc_pct_per_cNoVoc temperature coefficient in %/C (negative for silicon), default -0.30

Output Schema

ParametersJSON Schema
NameRequiredDescription
isc_totalYesTotal short circuit current from all parallel strings (A)
array_wattsYesTotal array power at maximum power point (W)
total_panelsYesTotal panels in the array (strings * panels per string)
vmp_hot_per_stringYesString Vmp at maximum temperature (V)
voc_cold_per_stringYesString Voc at minimum temperature (V)
max_parallel_stringsYesMaximum parallel strings (limited by MPPT Imax)
max_panels_per_stringYesMaximum panels per string (limited by Voc at cold temp)
min_panels_per_stringYesMinimum panels per string (to meet MPPT Vmin at hot temp)
recommended_panels_per_stringYesRecommended panels per string (uses max for best output)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explains the algorithmic steps: applying temperature coefficients, computing safe ranges, and preventing over-voltage/under-voltage. This discloses key behavioral traits beyond mere calculation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with three sentences: purpose, method, and benefit. It is concise without redundancy, though slightly verbose for a calculator tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, solar engineering domain) and presence of an output schema, the description sufficiently covers functionality, algorithm, and compliance context. It lacks details on default handling but is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds context about temperature coefficient usage but does not significantly enhance per-parameter understanding beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates optimal solar panel string and MPPT configuration, specifying the exact function. It distinguishes from siblings like 'inverter_sizing' and 'solar_sizing' by focusing on string and MPPT specifics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it is essential for NEC 690.7 compliant design, implying usage context for solar string sizing. However, it does not explicitly state when not to use it or mention alternative tools, leaving some ambiguity for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subnet_calculatorsubnet calculatorAInspect

Calculate IPv4 subnet details from CIDR notation. Parses a CIDR block (e.g. 192.168.1.0/24) and returns the network address, broadcast address, subnet mask, wildcard mask, first and last usable host addresses, total and usable host counts, prefix length, and classful IP class (A/B/C/D/E). Essential for homelab network planning, VLAN segmentation, firewall rule design, and understanding address space allocation. Handles special cases for /31 point-to-point links (RFC 3021) and /32 host routes.

ParametersJSON Schema
NameRequiredDescriptionDefault
cidrYesIPv4 address in CIDR notation, e.g. 192.168.1.0/24

Output Schema

ParametersJSON Schema
NameRequiredDescription
ip_classYesClassful IP address class: A, B, C, D (multicast), or E (reserved)
last_usableYesLast usable host address in the subnet
subnet_maskYesSubnet mask in dotted decimal notation, e.g. 255.255.255.0
total_hostsYesTotal number of addresses in the subnet including network and broadcast
first_usableYesFirst usable host address in the subnet
usable_hostsYesNumber of usable host addresses (excluding network and broadcast)
prefix_lengthYesCIDR prefix length, e.g. 24
wildcard_maskYesWildcard (inverse) mask, e.g. 0.0.0.255
network_addressYesNetwork address of the subnet
broadcast_addressYesBroadcast address of the subnet
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It fully discloses behavior: it parses CIDR notation, returns various subnet details, and handles special cases for /31 (RFC 3021) and /32 host routes. There are no contradictions or hidden side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences long, efficiently covering purpose, inputs, outputs, usage scenarios, and edge cases. No filler or redundant information. The main action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not shown but indicated), the description appropriately omits return value details. It covers usage context, input format, and special handling of /31 and /32, which is sufficient for an AI agent to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, baseline is 3. The description adds value by explaining the parameter format, providing an example (192.168.1.0/24), and stating it handles special cases. This extra context raises the score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb+resource: 'Calculate IPv4 subnet details from CIDR notation.' It clearly states the input (CIDR notation) and lists the outputs (network address, broadcast, etc.). Among sibling tools, which are various other calculators, this tool is uniquely identified as a subnet calculator, so no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: 'Essential for homelab network planning, VLAN segmentation, firewall rule design, and understanding address space allocation.' While it does not explicitly state when not to use or list alternatives, the context strongly implies its appropriate use cases. A slight deduction because a note about when to use a different tool (e.g., for IPv6) could be added.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tcp_throughputtcp throughputAInspect

Calculate maximum TCP throughput using the Bandwidth-Delay Product (BDP) formula. Given link bandwidth and round-trip latency, computes the BDP (maximum in-flight data), achievable throughput with a given TCP window size, link utilization percentage, and recommended window size for full utilization. Critical for diagnosing slow transfers over high-latency links (WAN, VPN, satellite), tuning TCP buffers, and understanding why a 1Gbps link may only deliver 25Mbps with default 64KB windows. Applies to iperf testing, WAN optimization, and network capacity planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
rtt_msYesRound-trip time (latency) in milliseconds
mss_bytesNoMaximum Segment Size in bytes (typically 1460 for Ethernet)
bandwidth_mbpsYesAvailable link bandwidth in megabits per second
window_size_kbNoTCP receive window size in kilobytes

Output Schema

ParametersJSON Schema
NameRequiredDescription
bdp_kbYesBandwidth-Delay Product in kilobytes
bdp_bytesYesBandwidth-Delay Product in bytes: maximum data in flight
utilization_pctYesPercentage of available bandwidth that can actually be used
window_sufficientYesWhether the current window size is large enough to fill the pipe
max_throughput_mbpsYesMaximum achievable TCP throughput in megabits per second given the window size
recommended_window_kbYesMinimum window size in kilobytes needed to fully utilize the link
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It accurately describes the calculation behavior without contradictions. It doesn't discuss side effects or assumptions, but for a pure calculator, the computational behavior is adequately transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise single paragraph of 4-5 sentences. Front-loaded with core purpose, then outputs, then practical applications. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists (as per context), the description adequately covers purpose, parameters, use cases, and relevance. For a calculation tool, it is complete and provides sufficient context for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining parameters in context (bandwidth, RTT, window size, MSS) and linking them to practical outputs like 'recommended window size for full utilization', going beyond schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates maximum TCP throughput using BDP formula, specifies inputs (bandwidth, RTT) and outputs (BDP, throughput, utilization, recommended window). It distinguishes from sibling tools like network_bandwidth by focusing on TCP-specific calculation with latency and window size.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context: 'Critical for diagnosing slow transfers over high-latency links...', 'Applies to iperf testing, WAN optimization, and network capacity planning.' Clearly indicates when to use it, though no direct mention of when not to use or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_gradetest gradeAInspect

Calculates a test or exam grade from the number of correct answers and total questions. Returns the percentage score, letter grade, points missed, and GPA points. Supports US grading (A/B/C/D/F with 4.0 GPA scale), UK grading (First/2:1/2:2/Third/Fail), and percentage-only mode. US thresholds: A>=90, B>=80, C>=70, D>=60, F<60. UK thresholds: First>=70, 2:1>=60, 2:2>=50, Third>=40, Fail<40. Useful for students checking scores and teachers computing class statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
totalYesTotal number of questions on the test. Must be a positive integer.
correctYesNumber of questions answered correctly. Must be a non-negative integer.
grading_scaleNoGrading scale to use. 'us' for A-F letter grades, 'uk' for First/2:1/2:2/Third/Fail, 'percentage_only' for just the percentage.us

Output Schema

ParametersJSON Schema
NameRequiredDescription
gpa_pointsYesGPA points on a 4.0 scale (US only). A=4.0, B=3.0, C=2.0, D=1.0, F=0. Null for UK and percentage_only.
percentageYesScore as a percentage (0-100).
letter_gradeYesLetter grade based on the selected grading scale. Null if percentage_only.
points_missedYesNumber of questions answered incorrectly (total - correct).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses the tool's behavior: it calculates grades based on correct answers and total questions, and returns multiple outputs. It lists grading scale thresholds and modes, providing transparency without contradicting any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, front-loading the main purpose and then detailing grading scales. It is concise, with no redundant phrases, though it could be slightly shorter without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity and existence of an output schema (mentioned but not shown), the description adequately explains the inputs, grading options, and output components, leaving little ambiguity about the tool's functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all parameters, but the description adds meaning by explaining the grading scale options and thresholds, augmenting the schema's parameter descriptions. This helps the agent select appropriate values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies calculating test grades from correct and total questions, returning percentage, letter grade, points missed, and GPA points. It distinguishes three grading scales with explicit thresholds, making the tool's purpose clear and differentiating it from sibling calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions usefulness for students and teachers, providing context for when to use the tool. It does not explicitly exclude scenarios or mention alternatives, but the context is sufficient to guide appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thermal_enclosurethermal enclosureInspect

Estimate steady-state thermal behaviour of a rectangular enclosure (server rack, electronics housing, equipment cabinet) using a lumped-parameter energy balance with natural-convection and radiation correlations, or forced-flow air energy balance. Accepts enclosure dimensions, heat source positions and wattages, and airflow configuration. Returns temperature extremes, estimated hotspot location, airflow velocity summary, and overall thermal resistance. Runs instantly in-worker; a full CFD container backend is planned for mesh-level detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
width_mYesEnclosure width (Y) in metres
height_mYesEnclosure height (Z) in metres
length_mYesEnclosure length (X) in metres
flow_typeYesAirflow type
heat_sourcesYesHeat sources inside the enclosure
mesh_densityNoMesh density — coarse (~50K cells), medium (~200K), fine (~500K)medium
ambient_temp_cNoAmbient air temperature in Celsius
inlet_positionNoInlet locationfront_bottom
outlet_positionNoOutlet locationrear_top
inlet_velocity_msNoInlet air velocity in m/s (required for forced flow)

Output Schema

ParametersJSON Schema
NameRequiredDescription
solverYesOpenFOAM solver used
warningsYesAny solver warnings
avg_temp_cYesVolume-averaged temperature (°C)
iterationsYesNumber of solver iterations to convergence
max_temp_cYesMaximum temperature in the enclosure (°C)
mesh_cellsYesNumber of mesh cells used
min_temp_cYesMinimum temperature (°C)
runtime_msYesSimulation wall-clock time in milliseconds
total_heat_wYesTotal heat load (W)
avg_velocity_msYesAverage airflow velocity (m/s)
max_velocity_msYesPeak airflow velocity (m/s)
hotspot_locationYesLocation of the temperature maximum
thermal_resistance_cwYesOverall thermal resistance (°C/W)
timer_555timer 555AInspect

Calculates timing parameters for the ubiquitous NE555 / LM555 timer IC in astable (free-running oscillator) and monostable (one-shot pulse) modes. In astable mode, computes frequency, period, duty cycle, and HIGH/LOW durations from R1, R2, and C using f = 1.44 / ((R1 + 2·R2) · C). In monostable mode, computes pulse width from R and C using t = 1.1 · R · C. Standard 555 astable duty cycle is always >50%; for 50% duty cycle use a diode across R2. Useful for generating clock signals, PWM, delays, and debounce circuits. Chain from ohms_law for power calculations or resistor_color_code for component selection.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesOperating mode. 'astable' produces a continuous square wave. 'monostable' produces a single timed pulse.
r1_ohmYesResistance R1 in ohms. In astable mode this is the charge-path resistor between Vcc and the discharge pin. In monostable mode this is the timing resistor.
r2_ohmNoResistance R2 in ohms (astable mode only). Charge/discharge resistor between the discharge and threshold pins. Required for astable mode.
c_faradYesTiming capacitor in farads. Typical values range from 1 pF to 1000 µF. Use scientific notation, e.g. 1e-6 for 1 µF.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYesOperating mode used for calculation.
r1_ohmYesR1 value used in ohms.
r2_ohmYesR2 value used in ohms (null for monostable).
c_faradYesCapacitor value used in farads.
period_sYesTotal period in seconds (astable only, null for monostable).
c_displayYesHuman-readable capacitor value string (e.g. '100 nF', '4.7 µF').
time_low_sYesOutput LOW duration in seconds (astable only, null for monostable).
time_high_sYesOutput HIGH duration in seconds. In astable this is the charge time; in monostable this is the pulse width.
frequency_hzYesOutput frequency in Hz (astable only, null for monostable).
duty_cycle_pctYesDuty cycle as a percentage (astable only, null for monostable). Always > 50% for standard 555.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses it is a computational tool with no side effects. It states formulas and limitations clearly. Could add an explicit 'read-only' statement, but the context makes it clear it calculates parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four well-structured sentences with no redundancy: first sentence states purpose, second and third detail each mode with formulas and limitations, fourth provides use cases and chaining suggestions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and schema coverage is 100%, the description covers all necessary aspects: purpose, mode differentiation, formulas, limitations, typical applications, and related tools. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining the role of each resistor (charge-path, discharge), capacitor units, and mode-specific computation details (frequency, period, pulse width).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly identifies verb ('calculates'), resource (timing parameters for NE555/LM555 timer IC), and specifies two modes. Distinguishes from siblings by focusing on the 555 timer, while siblings like ohms_law or resistor_color_code cover different domains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly explains when to use each mode ('astable' for generating square waves, 'monostable' for timed pulses), provides formulas, notes limitation (duty cycle >50%), and suggests workaround (diode for 50% duty). Also suggests chaining with related tools (ohms_law, resistor_color_code).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

timestamp_convertertimestamp converterAInspect

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 time zone conversions.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesA 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
is_pastYesTrue if the timestamp is in the past.
iso_8601YesISO 8601 formatted string in UTC (e.g. '2024-01-15T10:30:00.000Z').
iso_dateYesDate portion only (YYYY-MM-DD).
iso_timeYesTime portion only (HH:MM:SS).
relativeYesHuman-readable relative time (e.g. '2 hours ago', 'in 3 days').
day_of_weekYesDay of the week (e.g. 'Monday').
unix_secondsYesUnix timestamp in seconds since epoch (Jan 1 1970 00:00:00 UTC).
unix_millisecondsYesUnix timestamp in milliseconds since epoch.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: auto-detection of seconds vs milliseconds, acceptance of multiple formats, and detailed output (both Unix formats, ISO 8601, date components, relative time, past/future indicator). No hidden traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured, starting with the primary purpose and then detailing inputs and outputs. It is slightly verbose in listing all output components but every sentence adds value for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of timestamp conversion and the availability of an output schema, the description covers all necessary input details and expected output, making it fully complete for selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'value' has 100% schema coverage with a description, but the tool description adds context by listing acceptable formats (Unix epoch, ISO 8601, 'now') and explaining auto-detection, going beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts between Unix timestamps and human-readable formats, lists specific input types (Unix epoch, ISO 8601, 'now') and output components, and distinguishes it from sibling tools which are different calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use cases (debugging logs, API timestamps, cron scheduling, time zone conversions) but does not explicitly state when not to use or mention alternatives. However, no direct sibling alternatives exist, so it is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tip_calculatortip calculatorAInspect

Calculate tip and split a restaurant bill among multiple people. Given a bill amount, tip percentage, and number of diners, returns the tip amount, total with tip, per-person share, and effective tip percentage. Supports rounding up to the nearest whole number for convenience. Defaults to 18% tip for 1 person. Currency-agnostic — works with any monetary unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
splitNoNumber of people splitting the bill. Defaults to 1 (no split).
tip_pctNoTip percentage. Common values: 15 (standard), 18 (good), 20 (great), 25 (excellent). Defaults to 18%.
round_upNoRound the total up to the nearest whole number. Defaults to false.
bill_amountYesTotal bill amount before tip (any currency).

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYesBill plus tip.
tip_amountYesTip amount.
per_person_tipYesEach person's share of the tip.
per_person_totalYesEach person's total including their share of the bill and tip.
effective_tip_pctYesActual tip percentage after rounding (if round_up is true, may differ from input).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses return values (tip amount, total, per-person share, effective percentage), rounding support, defaults, and currency-agnostic behavior. It covers key behavioral aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the main purpose, and every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and existence of an output schema, the description covers all necessary aspects: inputs, outputs, defaults, rounding, and currency handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds common tip percentage values, explains rounding, and notes currency-agnostic nature, providing extra context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'calculate' and the resource 'tip and split a restaurant bill among multiple people.' It clearly distinguishes from sibling calculators by focusing on a specific use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains inputs and outputs, includes defaults, and mentions rounding. It does not explicitly exclude scenarios or compare to alternatives, but the context is clear enough given the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trace_widthtrace widthAInspect

Calculates the minimum PCB trace width for a given current using the IPC-2221 standard formula. The IPC-2221 empirical equation relates current capacity to cross-sectional area and temperature rise: I = k * dT^0.44 * A^0.725, where k=0.048 for external layers and k=0.024 for internal layers. Supports configurable copper weight (oz/ft^2) and temperature rise. Also computes approximate DC resistance per centimeter. Essential for power delivery, high-current motor drivers, and ensuring PCB reliability. Chain from voltage_divider or impedance_match to verify trace sizing for computed currents.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoPCB layer type. External layers dissipate heat better (k=0.048); internal layers use k=0.024.external
copper_ozNoCopper weight in ounces per square foot. 1 oz/ft^2 = 1.37 mil (34.8 um) thickness. Common values: 0.5, 1, 2.
temp_rise_cNoAllowable temperature rise above ambient in degrees Celsius. IPC-2221 standard uses 10, 20, or 30 C.
current_ampsYesRequired current capacity in amperes (A).

Output Schema

ParametersJSON Schema
NameRequiredDescription
width_mmYesRequired trace width in millimeters.
area_mil2YesRequired cross-sectional area in square mils.
width_milYesRequired trace width in mils (thousandths of an inch).
resistance_per_cm_mohmYesApproximate DC resistance per centimeter of trace in milliohms, using copper resistivity.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses the IPC-2221 formula, constants for internal/external layers, and that it computes DC resistance. It does not mention rate limits or destructive actions, but as a calculator, the behavior is well-explained and non-contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a tight paragraph of four sentences: what it does, the formula, parameter details, and usage context. No superfluous words, yet complete.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers the calculation standard, parameter roles, typical use cases, and tool chaining. It is fully adequate for an agent to decide when and how to use it, especially with a complete input schema and output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds context: explains k values for layer, typical copper weights, temperature rise standards, and the formula. This goes beyond the schema's brief descriptions, enriching parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it calculates minimum PCB trace width using the IPC-2221 standard formula. It specifies the verb 'calculates' and resource 'PCB trace width', and distinguishes from sibling tools like pcb_thermal or pcb_via_current by focusing on trace sizing for current.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage context: essential for power delivery, motor drivers, and reliability. It also recommends chaining from voltage_divider or impedance_match, giving a clear workflow. However, it does not explicitly exclude alternative tools or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unit_convertunit convertAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget unit abbreviation (e.g., 'mi', 'kg', 'c', 'bar', 'btu'). Case-insensitive.
fromYesSource unit abbreviation (e.g., 'km', 'lb', 'f', 'psi', 'kwh'). Case-insensitive.
valueYesThe numeric value to convert.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesThe converted value.
formulaYesHuman-readable conversion formula applied.
to_unitYesNormalized target unit abbreviation.
categoryYesUnit category (length, mass, volume, area, speed, pressure, energy, data, time, temperature).
from_unitYesNormalized source unit abbreviation.
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description partially discloses behavior (returns result with formula, case-insensitive units) but omits details like error handling, precision, or limits on input values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences cover purpose with front-loaded category list and unit examples. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema existence, the description explains return format (result and formula) and lists all supported unit categories, adequately covering conversion complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema provides parameter descriptions and 100% coverage. The description adds value by noting case-insensitivity, listing supported units and categories, which aids correct parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts units across 10 categories with specific verb 'Convert between units' and lists example units, distinguishing it from sibling domain-specific calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Accepts any value with source and target unit abbreviations', implying usage for unit conversion tasks, but does not explicitly state when to use this tool over specialized siblings or provide when-not scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ups_runtimeups runtimeAInspect

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 graceful shutdown timer configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
va_ratingYesUPS VA (volt-ampere) rating
battery_ahNoCapacity per battery in amp-hours (Ah)
efficiencyNoInverter/conversion efficiency (0-1), default 0.9
load_wattsYesConnected load in watts
watt_ratingYesUPS real power (watt) rating
battery_countNoNumber of batteries in the UPS
battery_voltageNoVoltage per battery (V)

Output Schema

ParametersJSON Schema
NameRequiredDescription
pfYesPower factor (watt_rating / va_rating)
load_pctYesLoad as percentage of UPS watt capacity
battery_whYesTotal battery energy in watt-hours (before efficiency)
overloadedYesTrue if load exceeds UPS watt rating
effective_whYesUsable battery energy after efficiency losses (Wh)
runtime_hoursYesEstimated backup runtime in hours
runtime_minutesYesEstimated backup runtime in minutes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses behavioral traits: detection of overload conditions when load exceeds watt rating, calculation of power factor, and computation of effective stored energy after efficiency losses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single coherent paragraph of about 100 words, front-loading the main purpose. All sentences add value, though slightly verbose. Could be slightly more terse but remains effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, 3 required, output schema present), the description thoroughly covers inputs, behaviors (overload, power factor), and use cases. Output format is handled by the schema, so description is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds meaning by grouping parameters (battery configuration: count, voltage, amp-hours) and explaining their role in computing runtime. It clarifies the efficiency parameter and overload detection logic.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool estimates UPS backup runtime from battery specifications and connected load, with specific verb 'Estimates'. It lists use cases like server rack planning and homelab power budgeting, distinguishing it from related sibling tools such as battery_autonomy or battery_life.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context ('Ideal for server rack planning, homelab power budgeting, network closet UPS selection, and graceful shutdown timer configuration') but lacks explicit when-not-to-use or mention of alternatives available among sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

voltage_dividervoltage dividerAInspect

Calculates output voltage, current draw, and power dissipation for a resistive voltage divider. Given an input voltage Vin and two resistor values R1 (upper) and R2 (lower), computes Vout = Vin * R2 / (R1 + R2), divider current, individual resistor power dissipation, and the division ratio. Essential for biasing circuits, level shifting, ADC input scaling, and feedback networks. Use before trace_width to size traces for divider current, or chain from a power supply output to verify signal levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYesInput voltage in volts (V). Must be positive.
r1_ohmYesUpper resistor value in ohms (R1), connected between Vin and Vout node.
r2_ohmYesLower resistor value in ohms (R2), connected between Vout node and ground.

Output Schema

ParametersJSON Schema
NameRequiredDescription
voutYesOutput voltage in volts at the R1-R2 junction.
ratioYesVoltage division ratio R2/(R1+R2), dimensionless 0-1.
current_maYesCurrent through the divider in milliamps (mA).
power_r1_mwYesPower dissipated by R1 in milliwatts (mW).
power_r2_mwYesPower dissipated by R2 in milliwatts (mW).
total_power_mwYesTotal power dissipated by the divider in milliwatts (mW).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the formula and computed quantities (Vout, divider current, power dissipation, ratio). No side effects or hidden behaviors are omitted. Could be more explicit about assumptions (e.g., ideal resistors).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the verb and formula, and uses two sentences to cover purpose and usage. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and schema coverage is complete, the description provides sufficient context: the formula, typical applications, and integration with sibling tools like trace_width. No critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description adds meaning by explaining the roles of R1 (upper, between Vin and Vout) and R2 (lower, between Vout and ground). It also mentions Vin must be positive, which is already in schema but reinforces constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates output voltage, current draw, and power dissipation for a resistive voltage divider. It provides the formula and typical use cases. However, it does not explicitly differentiate from sibling tools like attenuator_pi or attenuator_tee, which could be clearer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies when to use the tool: for biasing, level shifting, ADC scaling, feedback networks. It also suggests chaining with trace_width tool. It does not mention when not to use, but the context is helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

voltage_dropvoltage dropAInspect

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 charger circuits, low-voltage lighting, and any long DC or AC cable run where resistive losses matter.

ParametersJSON Schema
NameRequiredDescriptionDefault
conductorNoConductor material: copper or aluminumcopper
voltage_vYesSystem voltage (V)
current_ampsYesLoad current in amperes (A)
wire_length_mYesOne-way wire length in meters
wire_gauge_awgYesWire gauge in AWG (e.g. 14, 12, 10; use negative for large gauges: -3 = 4/0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
compliantYesTrue if voltage drop is within NEC limits (<=3% branch, <=5% feeder)
power_loss_wYesPower dissipated as heat in the conductor (W)
resistance_ohmYesTotal round-trip conductor resistance (ohm)
voltage_drop_vYesVoltage drop across the conductor run (V)
voltage_drop_pctYesVoltage drop as a percentage of system voltage
voltage_at_load_vYesVoltage at the load end (V)
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool computes voltage drop, power dissipated, and NEC compliance flags (3% max for branch circuits, 5% max for feeders). However, it omits details like whether the calculation uses standard resistivity values or any assumptions about temperature. Still, for a calculator tool, the behavior is mostly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences) and front-loaded: first sentence states purpose and inputs, second sentence describes outputs, third sentence provides usage guidance. Every sentence adds essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, multiple outputs, NEC compliance), the description covers all necessary aspects: inputs, outputs, and usage scenarios. The presence of an output schema (not shown) likely further details return values, so the description is complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, but the description adds significant context beyond schema: it lists computed outputs (round-trip resistance, voltage drop in volts and percent, voltage at load end, power dissipated, NEC flags). This helps the agent understand what the tool returns and how parameters relate to results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'calculates' and the resource 'voltage drop' with a clear list of inputs. It distinguishes from sibling tool 'wire_gauge' by stating 'Use this after wire_gauge' and provides concrete use cases like solar panel wiring and EV charger circuits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit instructions: 'Use this after wire_gauge to verify a specific gauge meets requirements, or to evaluate an existing installation.' Also lists critical scenarios where the tool is applicable, leaving no ambiguity about when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vswrvswrInspect

Convert between VSWR, return loss, and reflection coefficient — provide any one parameter and get all related impedance-mismatch metrics. Computes VSWR (voltage standing wave ratio), return loss in dB, reflection coefficient (gamma), mismatch loss, and percentage of power reflected vs transmitted. Essential for antenna matching, transmission line analysis, and RF system budgeting. Feeds into link_budget for system-level mismatch accounting.

ParametersJSON Schema
NameRequiredDescriptionDefault
vswrNoVoltage standing wave ratio (>= 1.0, where 1.0 is perfect match)
return_loss_dbNoReturn loss in decibels (positive value, higher is better match)
reflection_coefficientNoReflection coefficient magnitude (gamma), 0 to 1

Output Schema

ParametersJSON Schema
NameRequiredDescription
vswrYesVoltage standing wave ratio
return_loss_dbYesReturn loss in decibels (positive)
mismatch_loss_dbYesMismatch loss in decibels
power_reflected_pctYesPercentage of power reflected back toward source
power_transmitted_pctYesPercentage of power delivered to load
reflection_coefficientYesReflection coefficient magnitude (gamma)
watts_to_ampswatts to ampsInspect

Converts electrical power in watts to current in amps (and milliamps) for a given voltage, using the DC power formula P = V * I. Also computes the implied load resistance via Ohm's law (R = V / I) assuming a purely resistive load. This is the most common electrical conversion for circuit design, fuse selection, wire sizing, and breaker rating. Use the output amps value to feed into wire_gauge for conductor sizing or voltage_drop for cable loss analysis. Covers DC circuits; for AC with power factor, adjust watts to true power first.

ParametersJSON Schema
NameRequiredDescriptionDefault
wattsYesPower in watts (W)
voltage_vYesVoltage in volts (V)

Output Schema

ParametersJSON Schema
NameRequiredDescription
ampsYesCurrent in amperes (A)
wattsYesInput power echoed back (W)
milliampsYesCurrent in milliamperes (mA)
voltage_vYesInput voltage echoed back (V)
implied_resistance_ohmYesImplied load resistance in ohms assuming resistive load (V/I)
wavelength_freqwavelength freqInspect

Convert between radio frequency and wavelength. Provide either frequency in MHz or wavelength in metres, and get the full set of equivalent values: frequency in MHz and GHz, wavelength in metres, centimetres, millimetres, and feet. Essential for antenna dimensioning, waveguide selection, and quick band identification. The fundamental relationship is lambda = c / f where c is the speed of light (299 792 458 m/s).

ParametersJSON Schema
NameRequiredDescriptionDefault
freq_mhzNoFrequency in megahertz (MHz)
wavelength_mNoWavelength in metres

Output Schema

ParametersJSON Schema
NameRequiredDescription
freq_ghzYesFrequency in gigahertz (GHz)
freq_mhzYesFrequency in megahertz (MHz)
wavelength_mYesWavelength in metres
wavelength_cmYesWavelength in centimetres
wavelength_ftYesWavelength in feet
wavelength_mmYesWavelength in millimetres
wire_ampacitywire ampacityInspect

Determine minimum wire gauge using NEC Table 310.16 ampacity ratings with full derating. Looks up base ampacity for copper or aluminum conductors at 60°C, 75°C, or 90°C insulation rating, then applies NEC 310.15(C)(1) ambient temperature correction and NEC 310.15(C)(2) conductor count adjustment. Automatically applies the 125% continuous load factor per NEC 210.20(A) when flagged. Returns the minimum AWG that meets the derated requirement, plus a comparison table of all gauges. Different from wire_gauge which focuses on voltage drop — use both together for complete wire sizing. Essential for residential panels, commercial feeders, solar arrays, and EV charging installations.

ParametersJSON Schema
NameRequiredDescriptionDefault
conductorNoConductor material. Copper has higher ampacity; aluminum is lighter and cheaper for large feeders.copper
insulationNoInsulation temperature rating in °C. 60=TW/UF-B, 75=THW/THWN/XHHW (most common), 90=THHN/THWN-2.75
current_ampsYesRequired circuit current in amperes. Use 125% of continuous load per NEC 210.20(A).
ambient_temp_cNoAmbient temperature in °C. NEC base is 30°C. Higher temps require derating. Typical: 30 (indoor), 40 (attic/hot), 45+ (rooftop conduit).
continuous_loadNoWhether the load operates continuously (3+ hours). NEC requires 125% sizing for continuous loads. Set false for intermittent loads.
conductors_in_racewayNoNumber of current-carrying conductors in a single raceway or cable. More than 3 requires derating per NEC 310.15(C)(2).

Output Schema

ParametersJSON Schema
NameRequiredDescription
all_gaugesYesAll available gauges with their ampacities for comparison.
minimum_awgYesMinimum AWG wire gauge that meets the derated ampacity requirement.
base_ampacity_aYesBase ampacity from NEC 310.16 before any derating, in amperes.
insulation_labelYesInsulation rating description.
minimum_awg_labelYesHuman-readable AWG label (e.g. '4/0', '12', '2').
ambient_correctionYesAmbient temperature correction factor applied (1.0 at 30°C).
derated_ampacity_aYesFinal ampacity after applying ambient temperature and conductor count correction factors, in amperes.
required_ampacity_aYesAmpacity required to carry the load (includes 125% factor if continuous).
conductor_count_correctionYesConductor count correction factor (1.0 for 3 or fewer).
wire_gaugewire gaugeAInspect

Determines the minimum AWG (American Wire Gauge) conductor size for a given current, voltage, one-way cable distance, and maximum allowable voltage drop percentage. Supports copper and aluminum conductors. Computes round-trip resistance, actual voltage drop in volts and percent, and wire cross-sectional area. Essential for DC solar runs, battery bank wiring, EV charging circuits, and low-voltage landscape lighting. NEC recommends 3% max drop for branch circuits and 5% total including feeder. Outputs the smallest AWG that satisfies the drop constraint.

ParametersJSON Schema
NameRequiredDescriptionDefault
voltageYesSystem voltage (V)
conductorNoConductor material: copper or aluminumcopper
distance_mYesOne-way conductor distance in meters
current_ampsYesLoad current in amperes (A)
max_drop_pctNoMaximum allowable voltage drop as percentage (default 3%)

Output Schema

ParametersJSON Schema
NameRequiredDescription
insufficientYesTrue if even the largest AWG (4/0) cannot meet the voltage drop target
actual_drop_vYesActual voltage drop in volts
wire_area_mm2YesCross-sectional area of recommended gauge in mm^2
actual_drop_pctYesActual voltage drop percentage with recommended gauge
recommended_awgYesRecommended AWG gauge number (smaller number = thicker wire)
resistance_per_mYesResistance per meter of the recommended gauge (ohm/m)
recommended_awg_labelYesHuman-readable AWG label (e.g. '10' or '0000 (4/0)')
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It thoroughly explains the tool's behavior: computes round-trip resistance, actual voltage drop, cross-sectional area, and outputs the smallest AWG. It also references NEC recommendations, providing rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loaded with the core purpose, and each sentence adds meaningful information. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 5-parameter complexity and presence of an output schema, the description adequately covers the tool's purpose, inputs, computed outputs, and use cases. It lacks mention of edge cases (e.g., no feasible wire size) but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 5 parameters are described in the schema with 100% coverage. The description adds little beyond restating the parameter names in prose. No additional constraints or typical values are given, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'determines' and the resource 'minimum AWG conductor size'. It distinguishes from siblings like 'voltage_drop' by focusing on sizing wire gauge to meet a drop constraint, not just computing drop for a given wire.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides specific use cases (DC solar runs, battery bank wiring, etc.) which help an agent decide when to invoke. However, it does not explicitly mention when not to use or contrast with sibling tools like 'wire_ampacity', which covers current-carrying capacity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wireguard_mtuwireguard mtuAInspect

Calculate the optimal MTU for a WireGuard VPN tunnel interface with a detailed overhead breakdown. Accounts for WireGuard header (32 bytes), outer IP header (20 bytes IPv4 or 40 bytes IPv6), UDP header (8 bytes), and optional PPPoE encapsulation (8 bytes). Prevents fragmentation and PMTUD black holes by computing the maximum inner packet size that fits within the physical link MTU. Essential for WireGuard setup on residential ISP connections (PPPoE), IPv6 tunnels, and any VPN where incorrect MTU causes slow or stalled connections.

ParametersJSON Schema
NameRequiredDescriptionDefault
ipv6NoWhether the outer (transport) IP header uses IPv6 (40 bytes) instead of IPv4 (20 bytes)
over_pppoeNoWhether the link uses PPPoE encapsulation (adds 8 bytes of overhead)
interface_mtuNoMTU of the underlying physical or virtual network interface in bytes

Output Schema

ParametersJSON Schema
NameRequiredDescription
breakdownYesItemized breakdown of each overhead component in bytes
wireguard_mtuYesOptimal MTU to set on the WireGuard tunnel interface in bytes
overhead_bytesYesTotal encapsulation overhead in bytes subtracted from interface MTU
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully explains the calculation components (headers, PPPoE) and the benefit of preventing fragmentation and PMTUD black holes. It is transparent about what the tool does and why.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph of four sentences, front-loaded with the main purpose, followed by details and use cases. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of MTU calculation, the description covers overhead details and use cases. The output schema exists, so return format isn't needed. It is nearly complete, though it doesn't explicitly state the output type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds context by linking parameters to overhead components (e.g., ipv6 to 40 bytes, over_pppoe to 8 bytes). This enriches understanding beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates the optimal MTU for a WireGuard VPN tunnel with overhead breakdown. It is distinct from all sibling tools, which are general calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides specific use cases like residential ISP connections (PPPoE) and IPv6 tunnels, indicating when to use. However, it does not explicitly exclude alternative tools or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zfs_capacityzfs capacityAInspect

Calculate usable ZFS pool capacity for any RAID level including stripe, mirror, raidz1, raidz2, and raidz3. Computes raw capacity, parity overhead, data disk count, usable terabytes after ZFS metadata overhead (checksums, block pointers, uberblocks), and storage efficiency percentage. Essential for planning NAS builds, TrueNAS/ZFS server storage, and estimating how much usable space a given disk configuration will provide. Supports variable disk sizes and configurable metadata overhead.

ParametersJSON Schema
NameRequiredDescriptionDefault
raid_typeNoZFS RAID level: stripe (no redundancy), mirror (2-way), raidz1/2/3 (single/double/triple parity)raidz1
disk_countYesTotal number of physical disks in the pool
disk_size_tbYesSize of each individual disk in terabytes
record_size_kbNoZFS record size in kilobytes, affects compression and performance
metadata_overhead_pctNoPercentage of raw capacity consumed by ZFS metadata, checksums, and internal structures

Output Schema

ParametersJSON Schema
NameRequiredDescription
raw_tbYesTotal raw capacity across all disks in terabytes
usable_tbYesUsable capacity after parity and metadata overhead in terabytes
data_disksYesNumber of disks (or disk-equivalents) available for data storage
parity_disksYesNumber of disks (or disk-equivalents) consumed by parity/mirroring
efficiency_pctYesStorage efficiency as a percentage of raw capacity
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the tool's computational nature and outputs but does not mention any side effects, preconditions, or limitations. Since it's a calculation tool with no annotations, a score of 3 is adequate—it adds value but lacks explicit behavioral context beyond what is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that is well-structured and front-loaded with the main action. Every sentence contributes value, and there is no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, output schema exists), the description is comprehensive. It covers the tool's purpose, outputs, and use cases, and the output schema handles return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not significantly add meaning to individual parameters beyond the schema descriptions. It mentions 'variable disk sizes and configurable metadata overhead' but this is generic reinforcement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Calculate usable ZFS pool capacity for any RAID level including stripe, mirror, raidz1, raidz2, and raidz3.' It lists specific outputs and distinguishes itself from sibling tools like raid_iops and zfs_ram.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions when to use the tool: 'Essential for planning NAS builds, TrueNAS/ZFS server storage, and estimating how much usable space.' It does not explicitly state when not to use or list alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zfs_ramzfs ramInspect

Calculate recommended RAM and ARC sizing for a ZFS storage pool based on workload type, pool size, deduplication status, and L2ARC cache size. Computes minimum and recommended RAM in gigabytes, ARC target size, and dedup table overhead. Accounts for workload-specific IO patterns: NAS (sequential, 1GB/TB), database (random, 2GB/TB), virtualization (mixed, 1.5GB/TB). Deduplication adds approximately 5GB per TB for the DDT. L2ARC index requires 1GB RAM per 10GB of L2ARC. Essential for TrueNAS, FreeNAS, and custom ZFS server builds.

ParametersJSON Schema
NameRequiredDescriptionDefault
workloadNoPrimary workload type: general (mixed), nas (sequential reads/writes), database (random IO), virtualization (mixed random)general
pool_size_tbYesTotal usable pool size in terabytes
dedup_enabledNoWhether ZFS deduplication is enabled (significantly increases RAM requirements)
l2arc_size_gbNoSize of L2ARC (read cache SSD) in gigabytes; requires additional RAM for index

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYesHuman-readable sizing rationale and recommendations
min_ram_gbYesMinimum recommended RAM in gigabytes for stable operation
arc_target_gbYesTarget ARC (Adaptive Replacement Cache) size in gigabytes
dedup_table_gbYesEstimated dedup table (DDT) RAM requirement in gigabytes
recommended_ram_gbYesRecommended RAM in gigabytes for optimal performance (2x minimum)

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources