Skip to main content
Glama
ethan-hub26

embedcalc-mcp

by ethan-hub26

embedcalc-mcp

Exact embedded-engineering math for AI agents. An MCP server with 38 deterministic calculators, code generators, and schematic checks — so Claude, Cursor, or any MCP-enabled agent computes CRC check values, CAN timing registers, and struct padding, and reviews schematics for MCU wiring mistakes, instead of hallucinating them.

npm MCP Registry license

Why

LLMs are confidently wrong about exactly the math that bricks boards. Ask any model for a CRC-16/MODBUS check value, an STM32 CAN_BTR register for 500 kbit/s @ 36 MHz, or the padded size of a struct — you'll get a plausible-looking wrong answer often enough that you can't trust any of them. The failure mode is the worst kind: the answer looks right.

This server gives the model tools instead. Every tool is a pure, deterministic implementation pinned with test vectors (standard CRC check values, oracle fixtures, IPC/ASTM published numbers — 174 tests).

Related MCP server: Swarm Orchestrator

Install

Claude Code:

claude mcp add embedcalc -- npx -y embedcalc-mcp

Claude Desktop / Cursor / any MCP client (JSON config):

{
  "mcpServers": {
    "embedcalc": { "command": "npx", "args": ["-y", "embedcalc-mcp"] }
  }
}

No API key, no account. Runs locally over stdio. (The optional find_component tool queries embedcalc.com over the network; everything else is offline.)

Tools (38)

Domain

Tools

Code generation

crc_to_c (7 presets + custom Rocksoft params → compilable table-driven C with check value) · regmap_to_c (LSB-first fields → shift/mask defines + bit-field struct) · bitfield_macro

Timing

can_bit_timing (bxCAN BTR / FDCAN NBTP / MCP2515 CNF1-3) · uart_baud (STM32 BRR + error %) · i2c_timing (pull-up range + STM32 TIMINGR) · spi_timing · i2s_clocks · lin_timing · rs485_bus · modbus_rtu_timing (t1.5/t3.5) · ring_buffer_size

Data representation

qformat_convert (Qm.n fixed point) · ieee754_convert (float/double, hex↔decimal↔bin) · number_base_convert (32-bit two's complement) · endian_swap (incl. Modbus BADC/CDAB) · struct_layout (C parser → offsets/padding/size, 32-bit MCU model)

Electronics

eseries_nearest (E6/E12/E24/E96) · resistor_code (color bands + SMD/EIA-96) · crystal_load_caps · lm317 · attenuator_pad (T/π) · junction_temp · microstrip_impedance (IPC-2141) · pcb_trace_width (IPC-2221) · awg_wire · ne555 · dcdc_converter (buck/boost/inverting) · op_amp (gain + bandwidth) · rc_filter (1st-order LP/HP cutoff) · bjt_bias (voltage-divider operating point) · mosfet_switch (low-side conduction + gate drive) · zener_reg (shunt regulator)

Components

find_component — real, in-stock MPNs + buy links from a computed value (parametric search)

Schematic review

review_schematic (deterministic MCU board-rule check: decoupling, bulk cap, floating pins, I2C pull-up, reset, output conflict, power short + interface packs auto-detected from net names — USB ESD/VBUS, CAN termination/transceiver, RS-485 termination/bias, SWD connector/reset, crystal load caps — + polarity & voltage/power derating rules (schema-optional ratings) + STM32F4/STM32F1/ESP32/NuMicro family rules; unevaluable rules reported as skipped) · parse_kicad (KiCad netlist export → standard schema, auto-parses voltage ratings) · get_extraction_guide (schematic image → schema, filled by the vision model) · list_schematic_rules

All tool names are prefixed embedcalc_ (e.g. embedcalc_crc_to_c).

Example prompts

"Give me MODBUS CRC-16 as a C function" → table-driven C, check("123456789") = 0x4B37 embedded for on-target verification

"CAN 500 kbit/s on STM32F103, APB1 36 MHz, sample point 87.5%" → CAN_BTR = 0x00050008 (BRP=9, TS1=6, TS2=1)

"How big is struct { uint8_t flags; uint32_t ts; uint16_t id; } on a Cortex-M?" → 12 bytes, 5 of them padding, with the layout table

"Encode −0.25 in Q1.14" / "What float is 0x7FC00000?" / "Nearest E96 to 12.3 kΩ?"

Accuracy

  • CRC: all 7 presets verified against standard check values for "123456789"

  • CAN: solver output byte-identical to the interactive calculators at embedcalc.com (oracle fixtures in tests/fixtures/)

  • IEEE-754 / AWG / IPC: pinned to reference constants and published standard values

  • struct_layout uses a 32-bit MCU model (pointers 4 B; double/int64 size 8, align 4) — stated in the tool description so the model can caveat it

Run it yourself: npm install && npm run build && npm test (174 tests, includes a stdio end-to-end pass that spawns the built server and calls the tools).

  • embedcalc.com — the same 60+ calculators as free interactive tools, no AI required

  • Found a calculation LLMs keep getting wrong? Open an issue — collecting candidates for the next batch.

License

MIT

Available Tools

29 tools
embedcalc_attenuator_padResistive Attenuator Pad (T / Pi)A
Read-onlyIdempotent

Design T-pad and Pi-pad resistive attenuators for a given attenuation and system impedance.

Args: attenuation_db, impedance_ohm (default 50). Returns (structured): { t_series_ohm, t_shunt_ohm, pi_shunt_ohm, pi_series_ohm }. Example: 3 dB @ 50 Ω -> T: 8.55 Ω series ×2 + 141.9 Ω shunt; Pi: 292.4 Ω shunt ×2 + 17.61 Ω series. Snap values with embedcalc_eseries_nearest.

ParametersJSON Schema
NameRequiredDescriptionDefault
impedance_ohmNoSystem impedance (50/75 Ω)
attenuation_dbYesAttenuation in dB

Output Schema

ParametersJSON Schema
NameRequiredDescription
t_shunt_ohmYesT-pad: center shunt resistor
pi_shunt_ohmYesPi-pad: each of the two shunt resistors
t_series_ohmYesT-pad: each of the two series resistors
pi_series_ohmYesPi-pad: center series resistor

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, non-destructive behavior. The description adds value by detailing the return structure and giving a concrete example, which enhances transparency beyond annotations.

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 extremely concise: two sentences plus an example and a cross-tool reference. It front-loads the purpose and contains 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?

For a simple computational tool with 2 inputs and 4 outputs, the description covers all aspects: purpose, inputs, output structure, example, and a hint for post-processing. It feels complete without needing additional context.

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 documents both parameters. The description mentions the default for impedance_ohm, but this adds little beyond the schema. The example helps illustrate usage but does not significantly deepen 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 the tool designs T-pad and Pi-pad resistive attenuators, specifying inputs (attenuation, impedance) and output structure. It distinguishes from sibling tools (e.g., embedcalc_eseries_nearest) by its unique purpose.

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 when to use the tool (designing attenuators) and even suggests a related tool for snapping values. However, it does not explicitly state when not to use it or list alternatives.

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

embedcalc_awg_wireAWG Wire Gauge & Voltage DropA
Read-onlyIdempotent

AWG wire properties (ASTM B258) and round-trip voltage drop for a copper pair: diameter, area, loop resistance (2× length, go & return), drop %, and a PASS/WARNING/FAIL verdict (<3% / 3-5% / >5%).

Args: awg (e.g. 20), supply_v, current_a, length_m (one-way), temp_c (default 20). Returns (structured): { diameter_mm, area_mm2, loop_resistance_ohm, voltage_drop_v, drop_percent, verdict }. Example: AWG20, 5 V, 2 A, 1 m -> 0.067 Ω loop, 2.7% drop, PASS.

ParametersJSON Schema
NameRequiredDescriptionDefault
awgYesWire gauge AWG number
temp_cNoConductor temperature in °C
length_mYesOne-way cable length in m (loop = 2×)
supply_vYesSupply voltage in V
current_aYesLoad current in A

Output Schema

ParametersJSON Schema
NameRequiredDescription
verdictYes
area_mm2Yes
diameter_mmYes
drop_percentYes
voltage_drop_vYes
loop_resistance_ohmYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations indicate read-only and idempotent. Description adds detailed behavioral traits: loop resistance calculation (2× length), temperature compensation, verdict thresholds. Exceeds annotation coverage.

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, front-loaded with purpose, then args, returns, and example. Every sentence is informative with no wasted 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 output schema exists but not shown, description fully covers return structure. For a single-purpose calculator, all necessary context is provided.

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 parameters with descriptions. Description adds meaning beyond schema by clarifying length_m is one-way and loop is 2×, and gives example values. Adds context without redundancy.

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 computes AWG wire properties and round-trip voltage drop, with specific outputs listed. Distinguishes from siblings by naming the exact resource and computation.

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 example usage and clearly describes inputs/outputs, but does not explicitly state when to use this tool versus related tools like embedcalc_pcb_trace_width. However, the specificity makes context clear.

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

embedcalc_bitfield_macroBit Field Value → C MacroA
Read-onlyIdempotent

Decompose a 32-bit register value into set bits and generate a C macro of OR'd (1U << n) terms, plus decimal/binary/popcount views.

Args:

  • value_hex (string): 32-bit value, e.g. '0x8001'.

  • macro_name (string, optional): default 'REG_VAL'.

Returns (structured): { dec, hex, bin, ones_count, c_macro }. Example: '0x8001' -> #define REG_VAL ((1U << 0) | (1U << 15)), 2 bits set.

ParametersJSON Schema
NameRequiredDescriptionDefault
value_hexYes32-bit register value in hex
macro_nameNoC macro name (default REG_VAL)

Output Schema

ParametersJSON Schema
NameRequiredDescription
binYes
decYes
hexYes
c_macroYes
ones_countYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context about the return structure (dec, hex, bin, etc.) and provides an example, which enhances transparency beyond annotations.

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 very concise: 5 lines plus args, front-loaded with the core purpose. 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 tool's simplicity, the description, schema, annotations, and output schema together provide complete context. The example and return field list ensure an agent can use it effectively.

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 parameter descriptions. The description adds value by providing an example ('0x8001') and noting the default for macro_name, 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 it decomposes a 32-bit register value into set bits and generates a C macro, with explicit verb and resource. This distinguishes it from sibling tools like resistor_code or uart_baud.

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 provides an example but does not explicitly state when to use this tool versus alternatives. The purpose is implied but lacks direct guidance on context or exclusions.

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

embedcalc_can_bit_timingCAN Bit Timing CalculatorA
Read-onlyIdempotent

Compute exact CAN bit timing (BRP, segments, SJW, register values) for STM32 bxCAN, STM32 FDCAN (nominal/arbitration phase), and MCP2515 from clock, bitrate, and target sample point.

Searches all valid prescaler/segment combinations and returns, per controller, the configuration whose sample point is closest to the target (ties: more TQ per bit, then smaller BRP). Register values are ready to write: bxCAN CAN_BTR, FDCAN FDCAN_NBTP, MCP2515 CNF1/CNF2/CNF3 (BTLMODE=1). All values follow the controller datasheets; BRP/TS values are 1-based (register encoding = value - 1 is already applied inside the hex words).

Args:

  • clock_hz (int): controller input clock in Hz. bxCAN: APB1; FDCAN: kernel clock; MCP2515: crystal Fosc (MCP2515 uses TQ = 2*BRP/Fosc).

  • bitrate_bps (int): nominal bitrate in bit/s (classic CAN: up to 1000000).

  • sample_point_percent (50-95, default 87.5): CiA 301 recommends 87.5.

Returns (structured): { bxcan, fdcan, mcp2515 } — each a timing object or null when the clock/bitrate ratio has no exact integer divider for that controller (a null means: change the clock or bitrate, do not approximate).

Examples:

  • "500 kbit/s on STM32F103 (APB1 36 MHz)" -> clock_hz=36000000, bitrate_bps=500000

  • "1 Mbit/s, 16 MHz MCP2515, sample point 75%" -> clock_hz=16000000, bitrate_bps=1000000, sample_point_percent=75 Do not guess CAN timing registers — call this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
clock_hzYesCAN controller input clock in Hz (bxCAN: APB1 clock; FDCAN: kernel clock; MCP2515: crystal Fosc). E.g. 36000000 for 36 MHz.
bitrate_bpsYesTarget nominal bitrate in bit/s, e.g. 500000 for 500 kbit/s.
sample_point_percentNoTarget sample point in percent. CiA 301 recommends 87.5 (the default).

Output Schema

ParametersJSON Schema
NameRequiredDescription
bxcanYesSTM32 bxCAN solution, or null if no exact divider exists
fdcanYesSTM32 FDCAN nominal (arbitration phase) solution, or null
mcp2515YesMCP2515 solution (BTLMODE=1, SAM=0), or null

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations (readOnly, idempotent, non-destructive), the description discloses the search algorithm, tie-breaking rules, register encoding (BRP/TS 1-based, subtraction already applied), and null handling for no exact divisor. No contradiction with 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?

Well-structured with purpose first, then algorithm, arguments, return type, examples, and warning. Slightly long (~150 words) but justified by complexity; only minor redundancy in register encoding explanation.

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?

Comprehensive for a multi-controller timing calculator: covers algorithm, tie-breaking, register format, null returns, and example usage. Output schema exists, so return fields are not required in description. No gaps for effective use.

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 value: explains clock_hz per controller type (APB1 vs kernel vs Fosc), bitrate up to 1 Mbps for classic CAN, and sample_point_percent with CiA 301 recommendation (87.5). Examples illustrate realistic parameter 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 clearly states the verb 'Compute exact CAN bit timing' and specifies three target controllers (STM32 bxCAN, FDCAN, MCP2515), distinguishing it from sibling calculation tools like embedcalc_spi_timing or embedcalc_uart_baud.

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 describes when to use (exact timing from clock, bitrate, sample point), what the algorithm does (searches all combinations, ties broken by TQ then BRP), and what null returns mean (change clock/bitrate). Warns 'Do not guess CAN timing registers — call this tool.'

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

embedcalc_crc_to_cCRC → C Code GeneratorA
Read-onlyIdempotent

Generate a complete, compilable C implementation (256-entry lookup table + compute function) for any CRC-8/16/32, plus its standard check value.

Use a preset for common CRCs, or specify the Rocksoft model parameters (width/poly/init/reflect-in/reflect-out/xor-out) for a custom CRC. The generated code embeds check("123456789") so the result can be verified on target.

Args:

  • preset (optional): one of CRC-8, CRC-8/MAXIM, CRC-16/CCITT, CRC-16/ARC, CRC-16/MODBUS, CRC-32, CRC-32/BZIP2. Overrides all other args.

  • bits (8|16|32), poly_hex (e.g. '0x1021'): required for a custom CRC.

  • init_hex, reflect_in, reflect_out, xor_out_hex: optional custom parameters (defaults: 0x0, false, false, 0x0).

Returns (structured): { check_hex, config, c_code }. The text content is the C source itself.

Examples:

  • "MODBUS RTU CRC in C" -> preset='CRC-16/MODBUS'

  • "CRC-16 poly 0x1021 init 0xFFFF, no reflection" -> bits=16, poly_hex='0x1021', init_hex='0xFFFF' Check values are exact (e.g. CRC-16/CCITT -> 0x29B1, CRC-32 -> 0xCBF43926); do not estimate CRCs — call this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
bitsNoCRC width in bits (8, 16, or 32). Required when no preset is given.
presetNoStandard CRC preset. If given, all other parameters are ignored. One of: CRC-8, CRC-8/MAXIM, CRC-16/CCITT, CRC-16/ARC, CRC-16/MODBUS, CRC-32, CRC-32/BZIP2
init_hexNoInitial CRC register value in hex (default 0x0).
poly_hexNoGenerator polynomial in normal (non-reflected) hex form, e.g. '0x1021'. Required when no preset is given.
reflect_inNoReflect each input byte (LSB-first processing). Default false.
reflect_outNoReflect the final CRC before XOR-out. Default false.
xor_out_hexNoFinal XOR value in hex (default 0x0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
c_codeYesComplete, compilable C source: 256-entry lookup table + crcN_compute() function
configYes
check_hexYesCRC of the ASCII string "123456789" — the standard check value for verifying the parameters

TDQS

A5/5.0
Behavior5/5

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

Discloses that the generated code embeds a check value for verification, and that it returns a structured object with check_hex, config, and c_code. Annotations (readOnlyHint, idempotentHint, destructiveHint) are consistent and not contradicted.

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 with clear sections: main purpose, usage, args, returns, examples. Every sentence adds value; no 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?

Given the tool's complexity (7 params, custom vs preset logic) and that an output schema exists, the description covers all necessary details: behavior, parameters, return format, and examples.

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?

While schema already covers 100% of parameters, the description adds meaningful context: explains the Rocksoft model, shows examples like poly_hex '0x1021', and clarifies that preset overrides all other args.

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 generates a complete C implementation for CRC-8/16/32, including the standard check value. It uses specific verbs and resources, and distinguishes from other sibling embedcalc tools.

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 a preset vs custom parameters, provides examples like 'MODBUS RTU CRC in C' mapping to 'CRC-16/MODBUS', and warns not to estimate CRCs but to call this tool.

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

embedcalc_crystal_load_capsCrystal Load Capacitor CalculatorA
Read-onlyIdempotent

Compute the two external load capacitors for a crystal from its specified load capacitance: CL = C/2 + Cstray -> C = 2·(CL − Cstray).

Args: load_capacitance_pf (from crystal datasheet, e.g. 18), stray_pf (PCB+pin stray, typ. 3-5). Returns (structured): { cap_each_pf }. Example: CL=18pF, stray=5pF -> 26 pF each side. Wrong load caps = frequency pulling; don't guess.

ParametersJSON Schema
NameRequiredDescriptionDefault
stray_pfNoStray capacitance (PCB traces + MCU pins) in pF, typ. 3-5
load_capacitance_pfYesCrystal's specified CL in pF

Output Schema

ParametersJSON Schema
NameRequiredDescription
cap_each_pfYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by explaining the formula, output structure, and consequences of incorrect input (frequency pulling). No contradiction with annotations.

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 sentences plus an example and warning. It is front-loaded with the formula and purpose, with 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, the description covers input, formula, output structure, example, and a warning. An output schema exists (not shown) but the description already indicates the return value format. Complete for the context.

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?

Input schema coverage is 100% with descriptions for both parameters. The description adds context with example values (e.g., 18 pF, stray typ. 3-5) and explains the formula, 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 it computes external load capacitors for a crystal using a specific formula. The verb 'compute' and resource 'external load capacitors' are specific. It distinguishes itself from sibling calculators (e.g., other embedcalc tools) by focusing on crystal load capacitance.

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 an example and warns about frequency pulling from wrong values, implying use when designing crystal oscillator circuits. However, it does not explicitly state when not to use or name alternative tools, though no siblings overlap functionally.

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

embedcalc_dcdc_converterBuck / Boost / Buck-Boost Converter CalculatorA
Read-onlyIdempotent

DC-DC converter design (CCM): duty cycle, minimum inductance, minimum output capacitance, input current, and peak switch current for buck, boost, or inverting buck-boost.

Args: topology ('buck'|'boost'|'buckboost'), vin, vout, iout_a, freq_khz (default 100), ripple_current_pct (of Iout, default 30), ripple_voltage_mv (default 50). Returns (structured): { duty_percent, l_min_uh, c_min_uf, iin_a, i_peak_a }. Example: buck 12->5 V, 1 A, 100 kHz -> D=41.7%, L≥97.2 µH, C≥7.5 µF. Snap L/C with embedcalc_eseries_nearest.

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYesInput voltage V
voutYesOutput voltage V (magnitude for inverting)
iout_aYesOutput current A
freq_khzNoSwitching frequency kHz
topologyYesConverter topology (buckboost = inverting)
ripple_voltage_mvNoAllowed output ripple voltage mV
ripple_current_pctNoInductor ripple current as % of Iout

Output Schema

ParametersJSON Schema
NameRequiredDescription
iin_aYes
c_min_ufYes
i_peak_aYes
l_min_uhYes
duty_percentYes

TDQS

A4.2/5.0
Behavior4/5

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

The description aligns with annotations (readOnlyHint, idempotentHint, destructiveHint) by presenting the tool as a calculation function with no side effects. It adds behavioral context: returns structured output, operates in CCM, and requires specific inputs. 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 concise, with a clear purpose statement, a parameter list, output format, and an example. Every sentence adds value. Slightly more structured formatting could improve readability, but it is 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, multiple topologies) and the presence of output schema, the description covers purpose, all parameters, outputs, and an example. It is sufficiently complete for an agent to use 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 value by listing arguments compactly with defaults, explaining ripple_current_pct as a percentage of Iout, and providing a concrete example that clarifies units and expected values. This enriches the schema information.

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 duty cycle, minimum inductance, capacitance, input current, and peak switch current for buck, boost, or inverting buck-boost converters. It specifies the operating mode (CCM) and distinguishes it from other embedcalc tools that handle different domains like resistors or wire.

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 does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria (e.g., for DCM). However, it gives a concrete example and references a sibling tool (embedcalc_eseries_nearest) for rounding, implying a workflow. This is adequate but not explicit.

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

embedcalc_endian_swapEndianness / Byte Swap ConverterA
Read-onlyIdempotent

Show a hex byte sequence in all endianness orderings: big (ABCD), little (DCBA), mid-little/byte-swapped halfwords (BADC), mid-big/halfword-swapped (CDAB).

Args: hex (string) — e.g. '0x12345678' or 'DEADBEEF'; odd nibble counts get a leading zero. Returns (structured): { big, little, mid_little_badc, mid_big_cdab (null when < 4 bytes), bytes }. Example: 12345678 -> little 78563412, BADC 34127856, CDAB 56781234. Useful for Modbus register order and mixed-endian protocol debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex byte sequence (with or without 0x)

Output Schema

ParametersJSON Schema
NameRequiredDescription
bigYes
bytesYesOriginal bytes, big-endian order
littleYes
mid_big_cdabYes
mid_little_badcYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent. The description adds that odd nibble counts get a leading zero, and the return includes null for mid-big when <4 bytes, which is useful behavioral detail beyond annotations.

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: purpose, argument details, example and use case. Every sentence adds value, no 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 tool is simple with one parameter and structured output. The description covers input format, output fields (including null case), and a real-world usage scenario. Output schema exists but description complements it well.

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 already describes the 'hex' parameter. The description adds examples ('0x12345678' or 'DEADBEEF') and clarifies handling of odd nibble counts, providing meaningful extra context.

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 a hex byte sequence into all endianness orderings, listing specific outputs (big, little, mid-little, mid-big) and giving an example. This distinguishes 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 ends with 'Useful for Modbus register order and mixed-endian protocol debugging', providing clear usage context. No explicit when-not-to-use, but the tool's purpose is specific enough among siblings.

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

embedcalc_eseries_nearestE-Series Nearest Standard ValueA
Read-onlyIdempotent

Snap a computed resistor/capacitor/inductor value to the nearest purchasable E-series standard value (E6/E12/E24/E96) with the resulting error.

Args: value (any unit — ohms, farads, henries), series ('E24' default; E96 for 1% resistors). Returns (structured): { standard, error_percent, series }. Example: 4.67e-6 H, E24 -> 4.7e-6 (+0.64%). LLMs frequently pick non-existent "standard" values — always snap computed values with this tool before choosing a part.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesComputed value in base units (ohms/farads/henries)
seriesNoE-series (E24=5%, E96=1% resistors)E24

Output Schema

ParametersJSON Schema
NameRequiredDescription
seriesYes
standardYes
error_percentYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds further detail: 'Returns (structured): { standard, error_percent, series }' and an example showing output. No contradictions. The description provides all necessary behavioral context beyond the annotations.

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 succinct: three sentences covering purpose, arguments, return structure, example, and usage note. Front-loaded with the core action. 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 the simplicity of the tool (2 parameters, output schema exists), the description is complete. It explains what the tool does, when to use it, how parameters map, what output looks like, and includes a practical example. Nothing is missing.

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 beyond schema: 'value (any unit — ohms, farads, henries)' clarifies unit flexibility, and 'series ('E24' default; E96 for 1% resistors)' explains the enum meaning. This extra context helps the agent use parameters correctly.

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 function: 'Snap a computed resistor/capacitor/inductor value to the nearest purchasable E-series standard value.' This is a specific verb-resource pair and distinguishes the tool from sibling tools like embedcalc_find_component or embedcalc_resistor_code.

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 includes explicit guidance: 'LLMs frequently pick non-existent standard values — always snap computed values with this tool before choosing a part.' This tells the agent when to use the tool (after computation, before part selection) and implies not to use it when already having a standard value. While it does not list alternatives, 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.

embedcalc_find_componentFind Real Component (MPN + buy link)A
Read-only

Find real, in-stock components matching an electrical value via parametric distributor search — returns manufacturer part numbers and buy links ONLY (no price or stock data, by design).

Args:

  • type: resistor | capacitor | inductor | ldo | mosfet | bjt.

  • value (number): resistor: resistance in ohms; capacitor: capacitance in farads (e.g. 1e-7 = 100 nF); inductor: inductance in henries (e.g. 1e-5 = 10 µH); ldo: fixed output voltage in volts; mosfet: minimum Vds rating in volts (N-channel); bjt: minimum Vce rating in volts (NPN).

  • Optional filters: tolerance_pct (R/C/L: keep this tolerance or tighter), min_power_w (resistor), min_voltage_v (capacitor rating), min_current_a (ldo/mosfet/bjt), max_rds_on_ohm (mosfet), min_hfe (bjt).

  • max_results (default 5).

Returns (structured): { matched_value, parts: [{ mpn, manufacturer, description, buy_url }] }. For prices, follow the buy link — pricing is intentionally not returned.

Examples:

  • "220 ohm 1% resistor" -> type='resistor', value=220, tolerance_pct=1

  • "100 nF cap rated 16V+" -> type='capacitor', value=1e-7, min_voltage_v=16

  • "3.3V LDO, 500 mA" -> type='ldo', value=3.3, min_current_a=0.5 Requires internet access (queries embedcalc.com).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesComponent type
valueYesPrimary value — meaning depends on type (ohms / farads / henries / volts)
min_hfeNoMinimum hFE / current gain (bjt)
max_resultsNoMaximum parts to return
min_power_wNoMinimum power rating in watts (resistor)
min_current_aNoMinimum current in amps (ldo output / mosfet Id / bjt Ic)
min_voltage_vNoMinimum voltage rating in volts (capacitor)
tolerance_pctNoMax tolerance in % (resistor/capacitor/inductor)
max_rds_on_ohmNoMaximum Rds(on) in ohms (mosfet)

Output Schema

ParametersJSON Schema
NameRequiredDescription
partsYes
matched_valueYesThe parametric value string the search matched

TDQS

A4.5/5.0
Behavior4/5

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

Discloses internet requirement, intentional omission of pricing, and dependent parameter meanings. Aligns with annotations (readOnlyHint, etc.) without contradiction.

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 with Args, Returns, and Examples sections. Front-loaded with purpose, no redundant sentences.

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?

Covers all essential aspects: purpose, parameters with examples, output format, and behavioral notes. Annotations and schema complement 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?

Adds significant meaning beyond 100% schema coverage, especially for the 'value' parameter and filter parameters with type-specific explanations and examples.

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: finding real, in-stock components via parametric search and returning MPNs and buy links. It specifies component types and distinguishes itself from sibling calculation 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 usage context with examples and notes on intended use (e.g., no pricing). Lacks explicit when-not-to-use or alternatives, but sibling tools are all different calculation utilities.

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

embedcalc_i2c_timingI2C Timing & Pull-Up CalculatorA
Read-onlyIdempotent

Compute I2C pull-up resistor range (Rp min from sink current, Rp max from rise time vs bus capacitance), SCL high/low budget, and an STM32 I2C TIMINGR register estimate.

Args:

  • mode: 'ls' (10k), 'sm' (100k), 'fm' (400k), 'fmp' (1M, 20mA sink), 'hs' (3.4M).

  • vdd (V, default 3.3), bus_capacitance_pf (default 100).

  • stm32_clock_mhz (default 16): I2CCLK kernel clock for the TIMINGR estimate.

Returns (structured): rp_min_ohm / rp_max_ohm, scl high/low vs spec minimums, rise/fall limits, stm32 { presc, scll, sclh, sdadel, scldel, timingr_hex }. The TIMINGR value is an estimate per RM formulas — verify on scope for production. Example: Fast-mode, 3.3V, 100pF -> Rp between ~967Ω and ~3.5kΩ (use 2.2k).

ParametersJSON Schema
NameRequiredDescriptionDefault
vddNoBus supply voltage in volts
modeNoBus speed mode: ls=10kHz, sm=100kHz, fm=400kHz, fmp=1MHz, hs=3.4MHzsm
stm32_clock_mhzNoSTM32 I2C kernel clock (I2CCLK) in MHz for TIMINGR estimate
bus_capacitance_pfNoTotal bus capacitance in pF (spec max 400 pF)

Output Schema

ParametersJSON Schema
NameRequiredDescription
stm32Yes
rp_max_ohmYes
rp_min_ohmYes
scl_low_usYes
scl_high_usYes
t_fall_max_nsYes
t_rise_max_nsYes
target_freq_hzYes
scl_low_min_spec_usYes
scl_high_min_spec_usYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this by describing a pure computation and adds context about the estimate nature and verification recommendation, which is valuable beyond structured fields.

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 clear sections for Args, Returns, and an Example. It is reasonably concise, though slightly verbose in listing Args compared to schema. 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?

Given the complexity of I2C timing calculations and the presence of an output schema, the description fully explains inputs, outputs, and an example. It is complete for an agent to correctly invoke the tool and understand its results.

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 baseline is 3. The description rephrases parameters and adds an example with typical values, providing slight additional value over the schema. It does not introduce entirely new semantics.

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 computes I2C pull-up resistor range, SCL timing budget, and STM32 TIMINGR register estimate. The verb 'Compute' and specific resources ('Rp min/max', 'SCL high/low', 'TIMINGR') make the purpose unambiguous. Among sibling calculators, this is distinct as the only I2C timing 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?

The description provides an example, lists arguments, and notes that the TIMINGR value is an estimate requiring production verification. However, it does not explicitly state when not to use this tool or compare to other calculators, which is acceptable for a specialized calculator.

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

embedcalc_i2s_clocksI2S Clock CalculatorA
Read-onlyIdempotent

I2S bit clock (BCLK/SCK) from audio format: BCLK = Fs x bits x channels. Args: sample_rate_hz (e.g. 48000), bits_per_sample (e.g. 16/24/32), channels (default 2). Returns (structured): { bclk_hz, bclk_period_ns, lrclk_hz }. Example: 48 kHz, 24-bit, stereo -> BCLK 2.304 MHz (434.03 ns), LRCLK 48 kHz.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelsNoChannel count (2 = stereo)
sample_rate_hzYesSample rate Fs in Hz (44100, 48000, ...)
bits_per_sampleYesBits per sample per channel (16/24/32)

Output Schema

ParametersJSON Schema
NameRequiredDescription
bclk_hzYes
lrclk_hzYes
bclk_period_nsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds value by explaining the formula and the structured return format, which is beyond what annotations convey. It does not contradict annotations.

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 three sentences plus an example, front-loaded with purpose and formula. Every sentence adds value without unnecessary verbosity.

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 few parameters, an output schema, and comprehensive annotations, the description covers all essential aspects: input purpose, formula, default, example output. 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%, and the description adds meaningful context: the formula relating parameters and an example. The default for channels is also mentioned, which the schema also specifies, but the description provides practical interpretation.

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 I2S bit clock from audio format, including the formula and an example. It uniquely identifies the tool among siblings, which are all different calculator 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 provides context for when to use the tool (to calculate BCLK from audio format) but does not explicitly state when not to use it or name alternatives. However, given the sibling tools are all distinct calculators, the usage context is clear.

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

embedcalc_ieee754_convertIEEE 754 Float ConverterA
Read-onlyIdempotent

Encode/decode IEEE 754 single (32-bit) or double (64-bit) precision: decimal <-> hex <-> binary, with sign/exponent/fraction breakdown and classification.

Args:

  • format (32|64, default 32).

  • Provide exactly one of: decimal (number), hex (string like '0x3F800000'), bin (bit string).

Returns (structured): { sign, exponent_raw, exponent_unbiased, fraction, hex, bin, decimal (string — may be 'NaN'/'Infinity'), class ('normal'|'subnormal'|'zero'|'infinity'|'nan') }. Examples: 1.0 float -> 0x3F800000; 0.1 double -> 0x3FB999999999999A (not exact!). Do not eyeball float bit patterns — call this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
binNoBinary bit pattern to decode (32 or 64 chars, spaces allowed)
hexNoHex bit pattern to decode, e.g. '0x3F800000'
formatNo32 = float, 64 = double
decimalNoDecimal value to encode (one of decimal/hex/bin)

Output Schema

ParametersJSON Schema
NameRequiredDescription
binYes
hexYes
signYes
classYes
decimalYesDecimal value as string (may be 'NaN', 'Infinity', '-Infinity')
fractionYes
exponent_rawYes
exponent_unbiasedYesexponent - bias; null for zero/subnormal/special

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent. The description adds behavioral details: the return structure includes sign, exponent, fraction, hex, bin, decimal string (with NaN/Infinity), and classification. It also warns about non-exact representation with an example (0.1 double). No contradiction with annotations.

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 extremely concise: two short paragraphs plus a third for the return structure and examples. It front-loads the core purpose, then covers parameters, then output. No redundant sentences; every sentence adds necessary 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 presence of an output schema (context 'Has output schema: true'), the description does not need to fully explain return values but still lists the key fields. It covers parameter constraints (exactly one input) and provides examples, making the tool fully usable without external documentation.

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 descriptions for all four parameters. The description adds value by explaining the mutual exclusivity constraint ('Provide exactly one of decimal/hex/bin') and giving format examples (e.g., '0x3F800000'). This aids correct invocation 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 'Encode/decode IEEE 754 single (32-bit) or double (64-bit) precision: decimal <-> hex <-> binary' with a specific verb ('encode/decode') and resource ('IEEE 754 single/double precision'). It distinguishes from sibling tools like 'embedcalc_number_base_convert' by focusing on IEEE 754 representation.

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 says 'Provide exactly one of: decimal (number), hex (string like '0x3F800000'), bin (bit string)' and advises 'Do not eyeball float bit patterns — call this tool', indicating appropriate use cases. However, it does not explicitly state when not to use it versus alternative embedcalc tools.

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

embedcalc_junction_tempJunction Temperature / Max PowerA
Read-onlyIdempotent

Thermal check: Tj = Ta + P·θJA, and max dissipable power for a Tj limit.

Args: ambient_c, power_w, theta_ja (°C/W from datasheet), tj_max_c (default 150). Returns (structured): { tj_c, p_max_w, margin_c, ok }. Example: Ta=25, P=2W, θJA=50 -> Tj=125°C, Pmax=2.5W @ Tj_max 150.

ParametersJSON Schema
NameRequiredDescriptionDefault
power_wYesDissipated power in W
theta_jaYesJunction-to-ambient thermal resistance °C/W
tj_max_cNoMaximum junction temperature rating in °C
ambient_cYesAmbient temperature in °C

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
tj_cYes
p_max_wYes
margin_cYestj_max - tj (negative = over limit)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds the computational formula and return structure, providing useful behavioral context beyond annotations.

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 plus an example. No redundant information. Front-loaded with the core formula.

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 full schema coverage, output schema description, and annotations, the description is complete. It includes the formula, parameter list, return structure, and an example.

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?

Input schema covers all parameters with descriptions (100% coverage). The description further explains each parameter's role and provides a default for tj_max_c, adding value 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?

Description clearly states it computes junction temperature and maximum dissipable power using a standard thermal formula. It uniquely identifies the tool among siblings as the only thermal calculation tool.

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?

Usage is implied by the formula and examples, but there is no explicit guidance on when to use this tool over alternatives or when not to use it. Given siblings are unrelated, implied usage is acceptable.

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

embedcalc_lin_timingLIN Bus Timing CalculatorA
Read-onlyIdempotent

LIN bus timing: bit time, break field duration (13 bits), and worst-case frame time per LIN 2.x nominal (header 34 + response 10*(n+1) bits with 1.4x budget = (43+10n)/baud). Args: baud (typ. 9600/19200), data_bytes (1-8). Returns (structured): { bit_time_us, break_time_us, frame_time_us }. Example: 19200 baud, 8 bytes -> bit 52.08 µs, break 677 µs, frame 6406 µs.

ParametersJSON Schema
NameRequiredDescriptionDefault
baudNoLIN baud rate (max 20 kbit/s)
data_bytesNoResponse data bytes

Output Schema

ParametersJSON Schema
NameRequiredDescription
bit_time_usYes
break_time_usYes
frame_time_usYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds the specific output fields (bit_time_us, break_time_us, frame_time_us) and the calculation formula, enhancing transparency beyond annotations.

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 efficiently cover purpose, formula, arguments, return structure, and an example. No unnecessary text; 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?

Given the simple two-parameter calculator, the description fully explains inputs, outputs, formula, and example. Output schema existence is reported, but description already covers return fields. 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 covers both parameters with descriptions. Description adds typical values (9600/19200 baud, 1-8 bytes) and an example, providing useful 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 clearly states it calculates LIN bus timing parameters (bit time, break duration, frame time) and provides the formula. It is distinct from sibling tools which cover other protocols like CAN, I2C, SPI, etc.

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 usage for LIN bus timing calculations, with typical baud rates and data bytes given. It does not explicitly exclude other contexts but the sibling diversity provides clear separation.

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

embedcalc_lm317LM317 Resistor CalculatorA
Read-onlyIdempotent

LM317 adjustable regulator: Vout = Vref·(1 + R2/R1) + Iadj·R2. Compute R2 for a target Vout, or Vout from R1/R2.

Args: r1_ohm (default 240), and exactly one of target_vout (-> solves R2) or r2_ohm (-> computes Vout). vref default 1.25 V, iadj_ua default 50 µA (datasheet typical). Returns (structured): { vout, r1_ohm, r2_ohm }. Example: target 5.0 V, R1=240, Iadj=0 -> R2=720 Ω. Snap R2 with embedcalc_eseries_nearest afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
vrefNoReference voltage (1.25 V typ)
r1_ohmNoR1 (Vref across it), datasheet recommends 240 Ω
r2_ohmNoR2 value (computes Vout)
iadj_uaNoAdjust pin current in µA (50 typ)
target_voutNoDesired output voltage (solves R2)

Output Schema

ParametersJSON Schema
NameRequiredDescription
voutYes
r1_ohmYes
r2_ohmYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate read-only, idempotent, non-destructive behavior. The description complements this by detailing the formula, default values, return structure, and an example. 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?

Extremely concise: 4 sentences plus an example, with no fluff. The most critical information (purpose, formula, modes, defaults, return, example) is front-loaded and easy 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 output schema exists (though not shown in input), the description adequately covers inputs, modes, and return format. Minor lack of edge case handling (e.g., providing both inputs) but acceptable for a simple calculator.

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 value by clarifying the mutual exclusivity of target_vout and r2_ohm, summarizing defaults, and specifying the return object structure. This goes beyond the schema's property 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 it computes R2 from target Vout or Vout from R1/R2 for the LM317 regulator. Provides the formula and explicit verb+resource, distinguishing itself from numerous sibling embedcalc_ 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?

Explains the two modes of operation and the constraint to provide exactly one of target_vout or r2_ohm. Mentions a follow-up tool (embedcalc_eseries_nearest) for rounding, guiding the agent on next steps. Lacks explicit when-not-to-use, but context is sufficient.

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

embedcalc_microstrip_impedanceMicrostrip Impedance (IPC-2141)A
Read-onlyIdempotent

Surface microstrip characteristic impedance: Z0 = (87/√(εr+1.41))·ln(5.98h/(0.8w+t)). Valid roughly for 0.1 < w/h < 2.0 and εr < 15.

Args (all in mm): trace_width_mm, dielectric_height_mm, trace_thickness_mm (1oz ≈ 0.035), er (FR-4 ≈ 4.2-4.6). Returns (structured): { z0_ohm }. Example: w=3.0, h=1.6, t=0.035, εr=4.5 -> ≈49 Ω.

ParametersJSON Schema
NameRequiredDescriptionDefault
erNoDielectric constant (FR-4 ≈ 4.5)
trace_width_mmYesTrace width w in mm
trace_thickness_mmNoCopper thickness t in mm (1 oz = 0.035)
dielectric_height_mmYesDielectric height h in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
z0_ohmYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description adds value by providing the exact formula, valid range, and output structure. This gives agents deeper understanding of the computation, surpassing what annotations convey.

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 extremely concise: formula, validity conditions, parameter list, return format, and an example, all in a few lines. Every sentence adds value; no redundancy. It is front-loaded with the most critical 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 straightforward nature of a microstrip impedance calculator, the description covers all necessary aspects: formula, valid range, parameter details, output format, and a concrete example. The presence of annotations and output schema further reduces the burden on the description, making it highly 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?

Input schema covers all parameters with descriptions, but the description adds physical context: units (mm), typical values for trace_thickness_mm (1oz = 0.035 mm) and er (FR-4 ≈ 4.2-4.6), and the formula linkage. Since schema coverage is 100%, baseline is 3; the description meaningfully enhances parameter understanding, earning a 4.

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 computes surface microstrip characteristic impedance using the IPC-2141 formula. It distinguishes itself from sibling calculators (e.g., pcb_trace_width) by specifying the specific calculation and providing the formula. The verb 'impedance' and resource 'microstrip' are explicit.

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 includes validity constraints (0.1 < w/h < 2.0, εr < 15), which implicitly guide when to use the tool. However, it does not explicitly compare with siblings or state when not to use it, missing some guidance for an agent to choose among similar calculators.

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

embedcalc_modbus_rtu_timingModbus RTU Timing CalculatorA
Read-onlyIdempotent

Modbus RTU inter-character (t1.5) and inter-frame (t3.5) silence times. Per spec: 11 bits/char; above 19200 baud fixed t1.5=750 µs and t3.5=1750 µs. Args: baud. Returns (structured): { char_time_us, t15_us, t35_us }. Example: 9600 -> char 1145.8 µs, t1.5 1718.8 µs, t3.5 4010.4 µs; 115200 -> 750/1750 µs fixed.

ParametersJSON Schema
NameRequiredDescriptionDefault
baudYesBaud rate in bit/s

Output Schema

ParametersJSON Schema
NameRequiredDescription
t15_usYes
t35_usYes
char_time_usYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds significant behavioral details beyond what annotations provide. It explains the spec formula (11 bits/char), the two regimes (fixed above 19200 baud, computed below), and gives example outputs. Annotations already indicate read-only and idempotent, and the description reinforces this with clear, non-mutating 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 very concise, covering the purpose, spec details, parameters, return structure, and an example in just three sentences. It is front-loaded with the main action and well-organized for quick comprehension.

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 the tool has only one parameter, a simple output schema, and annotations fully declaring its nature, the description is complete. It includes the return structure and an example, ensuring the agent has all necessary information to invoke the 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?

The input schema already describes the 'baud' parameter as integer bit/s. The description adds meaning by defining what baud is used for (timing calculation), explaining the spec relationship, and giving example conversions (e.g., 9600 baud yields specific microsecond values). This context enhances the schema's information.

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 that the tool calculates Modbus RTU inter-character (t1.5) and inter-frame (t3.5) silence times, with specific reference to the spec (11 bits/char) and baud rate regimes. It distinguishes itself clearly from sibling calculator tools by specifying the exact protocol and timing parameters.

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 usage: it is for Modbus RTU timing calculations. Although it does not explicitly state when NOT to use this tool or compare with other sibling calculators, the naming and specifics make it obvious when to apply it. No exclusion conditions are given, but it is sufficiently clear for intent.

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

embedcalc_ne555NE555 Timer CalculatorA
Read-onlyIdempotent

NE555 timing. Astable: f = 1/(0.693·(Ra+2Rb)·C), duty = (Ra+Rb)/(Ra+2Rb) (always >50%). Monostable: t = 1.1·Ra·C.

Args: mode ('astable'|'monostable'), ra_ohm, rb_ohm (astable only), c_farad (e.g. 10e-6). Returns (structured): astable -> { freq_hz, duty_percent, t_high_s, t_low_s }; monostable -> { pulse_s }. Example: astable 1k/10k/10µF -> 6.87 Hz, 52.4%.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesOscillator or one-shot
ra_ohmYesRa in ohms
rb_ohmNoRb in ohms (astable only)
c_faradYesTiming capacitor in farads (10µF = 10e-6)

Output Schema

ParametersJSON Schema
NameRequiredDescription
freq_hzYes
pulse_sYes
t_low_sYes
t_high_sYes
duty_percentYes

TDQS

A4.7/5.0
Behavior5/5

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

The description details the mathematical formulas used (e.g., f=1/(0.693·(Ra+2Rb)·C)) and the output structure for both modes. Annotations already indicate idempotent, readOnly, non-destructive behavior, so the description adds transparency about the calculations and return 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?

The description is very concise, using just three sentences plus an example. It front-loads the purpose and formulas, then details args and returns, and ends with an illustrative example. No unnecessary text, 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?

Despite the tool's simplicity, the description covers the full scope: formulas for both modes, parameter descriptions, return value structure, and an example. With 100% schema coverage, an existing output schema (implied by the description), and clear annotations, the description is complete and leaves no 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?

The input schema already describes each parameter (e.g., 'Ra in ohms', 'Rb in ohms (astable only)'). The description reinforces this and adds context: it explains that rb_ohm is optional for monostable, gives units like 'e.g. 10e-6' for c_farad, and provides a concrete example. This enhances 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 identifies the tool as an NE555 timer calculator. It specifies astable and monostable modes with formulas. The sibling tools include other embedcalc calculators, but this one is distinctly for NE555 timing, making selection unambiguous.

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 example usage and parameter requirements but does not explicitly state when to use this tool versus alternatives. However, the context of sibling names and the specific IC mention make the intended use obvious. A more explicit guideline could improve clarity.

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

embedcalc_number_base_convertNumber Base Converter (32-bit)A
Read-onlyIdempotent

Convert a number between decimal/hex/binary/octal with 32-bit two's complement semantics (negative decimals wrap; MSB-set values get a signed reading).

Args: value (string) — decimal ('-1', '42'), hex ('0xFF'), binary ('0b1010'), or octal ('0o17'). Returns (structured): { unsigned, signed, hex, bin (4-bit groups), oct, ones_count }. Example: '-1' -> 0xFFFFFFFF, unsigned 4294967295, 32 ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesNumber in any base: decimal, 0x hex, 0b binary, 0o octal

Output Schema

ParametersJSON Schema
NameRequiredDescription
binYes
hexYes
octYes
signedYes
unsignedYes
ones_countYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), description adds key behavioral details: 32-bit two's complement, wrap handling, signed reading, and full return structure.

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?

Two concise sentences with clear structure, but could be slightly more streamlined. No superfluous 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?

For a single-parameter tool with output schema, description covers input format, behavior, and output fields completely.

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 description adds examples and specific prefix formats, enhancing clarity beyond the schema description.

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 numbers between decimal/hex/binary/octal with 32-bit two's complement semantics. Distinguished from specialized siblings like embedcalc_ieee754_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?

Provides clear context on when to use: for base conversions. No explicit alternatives, but siblings are distinct enough that confusion is unlikely.

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

embedcalc_pcb_trace_widthPCB Trace Width for Current (IPC-2221)A
Read-onlyIdempotent

Minimum trace width to carry a current with a given temperature rise, per IPC-2221 (I = k·ΔT^0.44·A^0.725; k=0.048 external / 0.024 internal).

Args: current_a, temp_rise_c (default 10), copper_oz (default 1), layer ('external'|'internal'). Returns (structured): { width_mil, width_mm, cross_section_sq_mil }. Example: 1 A, 10 °C rise, 1 oz external -> ≈11.8 mil (0.30 mm). Internal layers need ~2x the width. Do not guess trace widths — this curve is not linear.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoTrace layerexternal
copper_ozNoCopper weight in oz (1 oz = 35 µm)
current_aYesContinuous current in amps
temp_rise_cNoAllowed temperature rise in °C (typ. 10)

Output Schema

ParametersJSON Schema
NameRequiredDescription
width_mmYes
width_milYes
cross_section_sq_milYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare safe, read-only, idempotent behavior. The description adds value by explaining the non-linear nature of the calculation, the structured return format, and the formula parameters, enhancing transparency beyond annotations.

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?

Extremely concise: includes formula, args, returns, and an example in a few sentences. 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 4 parameters, high schema coverage, and output schema present, the description is complete. It covers purpose, formula, parameter details, example, and a caution about non-linearity.

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 parameters, but the description adds meaning by explaining the layer types, default values, and the physical meaning of copper_oz. The example clarifies parameter effects.

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 calculates minimum trace width for current per IPC-2221. Includes the governing formula and distinguishes itself from sibling calculators (e.g., microstrip impedance, resistor code) by its specific purpose.

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: 'Do not guess trace widths'. Gives an example and notes that internal layers need ~2x width. While it doesn't explicitly list when not to use, the sibling list implies alternatives, and 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.

embedcalc_qformat_convertQ-Format Fixed-Point ConverterA
Read-onlyIdempotent

Convert between float and signed Qm.n fixed point (1 sign + m integer + n fractional bits; e.g. Q0.15 = 16-bit "Q15").

Args:

  • m (int >= 0), n (int >= 0): format; m+n+1 <= 32.

  • value (float) OR raw_int (stored integer): provide exactly one.

Returns (structured): { format, total_bits, scale, range_min, range_max, raw_int, hex, bin, actual, error, clamped }. hex/bin are two's complement in the format's bit width. Examples: 0.5 in Q0.15 -> 16384 = 0x4000; raw 0x8000 (-32768) in Q0.15 -> -1.0. Do not round by hand — quantization error matters.

ParametersJSON Schema
NameRequiredDescriptionDefault
mYesInteger bits (excluding sign)
nYesFractional bits
valueNoFloat value to encode (provide this OR raw_int)
raw_intNoStored fixed-point integer to decode (provide this OR value)

Output Schema

ParametersJSON Schema
NameRequiredDescription
binYes
hexYes
errorYes|input - actual| (0 when decoding raw_int)
scaleYes2^n
actualYesValue actually represented after quantization
formatYes
clampedYes
raw_intYes
range_maxYes
range_minYes
total_bitsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable detail: the return structure with quantization error, clamping, and two's complement representations. It also warns against manual rounding, disclosing important 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?

The description is concise and well-structured: intro, parameter list, return format, examples. Every sentence serves a purpose without redundancy, fitting the tool's complexity.

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 a comprehensive output schema and clear examples, the description fully equips an agent to understand inputs, outputs, and constraints. It covers conversion direction, format rules, and important notes like quantization error.

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 descriptions. The description adds value by stating the constraint m+n+1 <= 32 and reinforcing the exclusive choice between value and raw_int, which goes beyond the schema's individual min/max constraints.

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 'Convert between float and signed Qm.n fixed point', specifying the verb, resource, and format. It distinguishes itself from sibling tools like IEEE754 converter by focusing on Q-format, making the 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 Guidelines4/5

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

The description provides clear context on the conversion direction and requirement to provide exactly one of value or raw_int. Examples further clarify usage. However, it does not explicitly address when to use this tool versus alternatives (e.g., for other fixed-point or floating-point conversions), though the name and title already imply its niche.

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

embedcalc_regmap_to_cRegister Map → C GeneratorA
Read-onlyIdempotent

Generate C shift/mask #defines and a bit-field typedef struct for a hardware register from an LSB-first field list.

Args:

  • register_name (string): e.g. 'CTRL'. Sanitized to [A-Z0-9_].

  • fields (array of {name, width}): fields from bit 0 (LSB) upward, e.g. [{name:'EN',width:1},{name:'MODE',width:2},{name:'DIV',width:5}]. Total width must fit in 32 bits.

Returns (structured): { c_code, total_bits, fields: [{name, width, shift, mask_hex}] }. Text content is the C source (defines + typedef struct with uint32_t bit-fields).

Example: EN:1, MODE:2, DIV:5 -> CTRL_EN_SHIFT 0u / CTRL_EN_MASK 0x1u, CTRL_MODE_MASK 0x6u, CTRL_DIV_MASK 0xF8u. Do not compute shifts/masks by hand — call this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesFields from LSB upward; total width <= 32 bits
register_nameYesRegister name, e.g. 'CTRL'

Output Schema

ParametersJSON Schema
NameRequiredDescription
c_codeYes
fieldsYes
total_bitsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool is safe and idempotent. The description adds behavioral details beyond annotations: it explains that register_name is sanitized to [A-Z0-9_], that total width must fit in 32 bits, and that the return value includes structured fields with computed shifts and masks. These additions are valuable and do not contradict 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 reasonably concise, with a clear structure: one-sentence summary, then Args, Returns, and Example. It is front-loaded with the main purpose. Every sentence adds value. However, the 'Returns' section could be slightly more compact, but overall it is efficient and well-organized.

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 (2 required parameters, output schema exists), the description covers all aspects: purpose, parameters with constraints, return structure, an example, and a usage directive. The output schema provides return value details, so the description does not need to repeat them. The description is complete for an AI agent to select and invoke the tool 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?

Schema description coverage is 100%, but the description adds substantial meaning: it explains what register_name is (e.g., 'CTRL') and its sanitization rule, and it describes the fields array format with an example, clarifying that fields are ordered from LSB upward and that total width must be <= 32 bits. The example further illustrates the mapping. This goes well 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's purpose: 'Generate C shift/mask #defines and a bit-field typedef struct for a hardware register from an LSB-first field list.' It uses a specific verb ('Generate'), identifies the resource ('C shift/mask #defines and a bit-field typedef struct'), and distinguishes from siblings like embedcalc_bitfield_macro and embedcalc_struct_layout by specifying the input format and output structure.

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: it tells the agent to use this tool when needing to generate C definitions from an LSB-first field list, includes an example, and explicitly says 'Do not compute shifts/masks by hand — call this tool.' However, it does not explicitly state when NOT to use this tool or mention alternatives, though the sibling list implies differentiation. The usage guidance is strong but lacks explicit exclusions.

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

embedcalc_resistor_codeResistor Color Code / SMD Code DecoderA
Read-onlyIdempotent

Decode a through-hole resistor color code (4 or 5 bands) or an SMD resistor marking into ohms + tolerance.

Args (one of):

  • bands: array of 4 or 5 color names in order (black, brown, red, orange, yellow, green, blue, violet, grey, white, gold, silver, none).

  • smd_code: 3-digit ('472'=4.7k), 4-digit ('4702'=47k), R-notation ('4R7'=4.7Ω), or EIA-96 ('01C'=10k ±1%).

Returns (structured): { ohms, tolerance_percent, min_ohms, max_ohms }. Example: ['brown','black','red','gold'] -> 1000 Ω ±5%.

ParametersJSON Schema
NameRequiredDescriptionDefault
bandsNoColor band names in order (4 or 5 bands)
smd_codeNoSMD marking, e.g. '472', '4R7', '01C'

Output Schema

ParametersJSON Schema
NameRequiredDescription
ohmsYes
max_ohmsYes
min_ohmsYes
tolerance_percentYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds detail on input formats (color names, SMD code variations) and output structure, providing good behavioral context beyond annotations.

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, well-structured with an Args section and examples. Every sentence adds 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 and full parameter documentation, the description is complete, covering both through-hole and SMD decoding with examples. 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%, but the description adds value by explaining each parameter's format, listing valid color names and SMD code patterns, and providing examples.

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 'decode' and the resource 'through-hole resistor color code or SMD resistor marking', and distinguishes itself from sibling tools which are all 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 clearly indicates when to use the tool (to decode resistor codes), but does not explicitly mention when not to use it or provide alternatives; however, siblings are distinct so usage context is clear.

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

embedcalc_ring_buffer_sizeRing Buffer / DMA Size CalculatorA
Read-onlyIdempotent

Size a ring buffer (or DMA buffer) from data rate, worst-case consumer latency, and a safety factor, rounded up to a power of two. Args: data_rate_bytes_per_sec, latency_ms (worst-case time before the consumer drains), safety_factor (default 2). Returns (structured): { bytes_needed, recommended_pow2 }. Example: 102400 B/s, 10 ms, ×2 -> 2048 bytes -> use 2048 (2^11).

ParametersJSON Schema
NameRequiredDescriptionDefault
latency_msYesWorst-case consumer latency in milliseconds
safety_factorNoHeadroom multiplier (default 2)
data_rate_bytes_per_secYesIncoming data rate in bytes/second

Output Schema

ParametersJSON Schema
NameRequiredDescription
bytes_neededYes
recommended_pow2YesNext power of two >= bytes_needed (fast masking index math)

TDQS

A4.1/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it discloses that the result is rounded up to a power of two and provides a computed example. The annotations already indicate idempotent, read-only, non-destructive behavior, so the description complements them well without contradiction.

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 4 sentences, beginning with the core purpose, followed by parameters and an example. It is front-loaded and every sentence contributes meaning. No wasted words.

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?

The description explains the computation, input parameters, and output structure. The output schema exists and covers return fields, so the description is complete for a calculator tool with this complexity.

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 repeats parameter explanations but adds a concrete example demonstrating usage, which provides slight added value.

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 ('Size') and resource ('ring buffer / DMA buffer'), and clearly distinguishes from sibling calculators by stating the computation formula. It is unambiguous and directly states the tool's function.

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 the tool should be used for sizing buffers from data rate and latency, and the sibling tools are all different calculators, so there is no confusion. However, it does not explicitly state when not to use it or mention alternatives, which prevents a 5.

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

embedcalc_rs485_busRS-485 Bus CalculatorA
Read-onlyIdempotent

RS-485 cable length limit (rule of thumb: length_m x bitrate_bps <= 10^8, capped 1200 m) and fail-safe bias resistors for >= 200 mV idle differential across 60 Ω (two 120 Ω terminators). Args: baud_bps, vcc (default 5), bias_ohm (optional — defaults to the computed maximum). Returns (structured): { max_cable_m, max_bias_ohm, bias_used_ohm, idle_vdiff_v, meets_200mv }. Example: 100 kbit/s -> 1000 m; Vcc=5 -> bias <= 720 Ω per side for 0.2 V idle.

ParametersJSON Schema
NameRequiredDescriptionDefault
vccNoBias supply voltage
baud_bpsYesSignaling rate in bit/s
bias_ohmNoChosen bias resistor per side in Ω (default: computed maximum)

Output Schema

ParametersJSON Schema
NameRequiredDescription
max_cable_mYes
meets_200mvYes
idle_vdiff_vYes
max_bias_ohmYesMaximum bias resistor per side for 200 mV idle differential
bias_used_ohmYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already confirm readOnly, idempotent, non-destructive behavior. The description adds behavioral context: the rule-of-thumb formula, capping at 1200m, default bias resistor computation, and explicit return structure. This goes beyond the annotations without contradicting them.

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 plus an example, all front-loaded with key information. Every sentence adds value: formula, constraints, parameter details, and a practical illustration. No redundant text.

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 output schema exists, the description covers all necessary context: input parameters, default behavior, output fields, and an example. It is sufficient for an agent to use the 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?

Input schema has 100% coverage, but the description adds meaning: it explains the rule of thumb linking baud rate to cable length, states that bias_ohm defaults to computed maximum, and provides an example. This enriches the 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?

The description clearly states it calculates RS-485 cable length limit and fail-safe bias resistors. It uses specific verb 'calculates' and resource 'RS-485 bus', distinguishing it from sibling tools which cover different domains like CAN, I2C, or wire sizing.

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?

Usage is implied by the tool name and domain-specific description, but there is no explicit guidance on when to use this tool versus alternatives. Sibling tools are listed but not compared, so the agent must infer the appropriate context.

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

embedcalc_spi_timingSPI Timing CalculatorA
Read-onlyIdempotent

SPI clock/frame timing: bit period, frame time, raw throughput. Args: sck_hz (SPI clock in Hz), bits_per_frame (default 8). Returns (structured): { bit_period_ns, frame_time_us, throughput_mbps }. Example: 10 MHz, 8 bits -> 100 ns/bit, 0.8 µs/frame, 10 Mbit/s.

ParametersJSON Schema
NameRequiredDescriptionDefault
sck_hzYesSCK clock frequency in Hz
bits_per_frameNoBits per frame/transfer

Output Schema

ParametersJSON Schema
NameRequiredDescription
bit_period_nsYes
frame_time_usYes
throughput_mbpsYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) are consistent. Description adds concrete behavior: computes three specific timing values, non-destructive, and returns structured data. Example solidifies understanding.

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 short sentences plus an example. Every element is essential: what it does, arguments, default, return format, and a concrete example. No wasted 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 the tool has an output schema (context signal), the description adequately covers inputs, outputs, and usage. For a simple calculator tool, this 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?

Input schema covers both parameters with descriptions (100% coverage). Description goes beyond by showing a real example (10 MHz, 8 bits yields specific results), which clarifies the meaning and expected outputs.

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?

Clear verb (calculate) and resource (SPI timing) in title and description. Distinguishes from sibling timing tools by specifying 'SPI' and listing exact computed outputs (bit period, frame time, throughput).

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?

No explicit when-to-use or alternatives guidance. While the tool is self-explanatory for SPI timing, it doesn't mention not to use it for other protocols or compare to siblings like 'embedcalc_i2c_timing'.

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

embedcalc_struct_layoutC Struct Memory Layout CalculatorA
Read-onlyIdempotent

Compute the memory layout of a C struct/union — member offsets, inserted padding, bit-field packing, total size, and alignment — for a 32-bit MCU model (ARM Cortex-M style: pointers 4 bytes; double/int64 size 8 with 4-byte alignment, matching embedcalc.com).

Args: code (string) — C member declarations or a full struct, e.g. 'char a; int b;' or 'struct s { uint8_t a; uint32_t b; };'. Supports nested struct/union, arrays, pointers, and bit-fields.

Returns (structured): { total_size, alignment, padding_bytes, rows: [{offset, size, type, name, kind, depth}] }. Nested block rows show offsets relative to their parent block. Example: 'char a; int b;' -> total 8 bytes, 3 bytes padding after 'a'. Do not guess struct sizes/offsets — padding rules are exactly what LLMs get wrong.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC struct member declarations (or full struct/union definition)

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
alignmentYes
total_sizeYes
padding_bytesYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, destructiveHint, idempotentHint), the description explains the computational behavior: it applies 32-bit MCU model rules, returns structured output with offsets, padding, and nesting relative offsets. 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 appropriately sized: two paragraphs front-loading the core purpose and behavior, followed by clear arg/return details. 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?

Given the complexity of the tool, the description covers input format, supported features, output structure, and a usage warning. The output schema exists, which is not strictly needed but complements the description.

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 single parameter 'code' has 100% schema coverage, but the description adds meaning by specifying acceptable formats (member declarations or full struct), providing examples, and listing supported constructs (nested, arrays, pointers, bit-fields).

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 computes memory layout of C struct/union, including member offsets, padding, bit-field packing, total size, and alignment. It specifies the target model (ARM Cortex-M style), distinguishing it from all sibling tools which are other calculator types.

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 on when to use (when accurate memory layout is needed) and includes a warning against guessing sizes. It does not explicitly list alternatives, but no sibling tool serves the same purpose, so exclusion is unnecessary.

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

embedcalc_uart_baudUART Baud Rate / BRR CalculatorA
Read-onlyIdempotent

Compute the STM32 USART BRR register (mantissa + fraction), the actual achieved baud rate, and the baud error for a given peripheral clock — plus frame size/character time for the given format.

Args:

  • clock_hz (int): USART peripheral clock in Hz (e.g. 72000000).

  • baud (int): target baud rate (e.g. 115200).

  • oversampling (8|16, default 16): USART OVER8 setting.

  • data_bits (5-9, default 8), parity ('none'|'even'|'odd', default 'none'), stop_bits (1|1.5|2, default 1).

Returns (structured): { mantissa, fraction, brr_hex, actual_baud, error_percent, frame_bits, char_time_us }. Rule of thumb: |error| < 2% total link budget; keep your side < 0.5% when possible. Example: 72 MHz, 115200, over16 -> BRR=0x0271 (mantissa 39, fraction 1), 0.00% error.

ParametersJSON Schema
NameRequiredDescriptionDefault
baudYesTarget baud rate in bit/s
parityNoParitynone
clock_hzYesUSART peripheral clock in Hz
data_bitsNoData bits per frame
stop_bitsNoStop bits
oversamplingNoOversampling (OVER8): 16 or 8

Output Schema

ParametersJSON Schema
NameRequiredDescription
brr_hexYesUSART_BRR register value
fractionYes
mantissaYes
frame_bitsYesstart + data + parity + stop bits
actual_baudYes
char_time_usYesTime per character at actual baud
error_percentYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds computational specifics (e.g., returns mantissa, fraction, hex value, actual baud, error, frame bits, char time) and a practical example. 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 with clear sections (args, returns, rule, example). It is somewhat lengthy but each part adds value. Slightly more concise could be achieved, but overall 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 has an output schema (implied), the description covers all necessary aspects: what it calculates, parameter details, return fields, and a guiding example. It is fully sufficient for an agent to select and 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?

Input schema has 100% parameter description coverage. The description adds value beyond schema by giving an example and explaining the meaning of parameters in context (e.g., oversampling, parity). It does not repeat schema verbatim but clarifies usage.

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 computes the BRR register, actual baud rate, error percentage, frame size, and character time for STM32 USART. It specifies the resource (BRR register) and distinguishes from sibling embedcalc tools which cover different 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?

Provides a rule of thumb for acceptable error and an example usage. However, it does not explicitly state when not to use it or mention alternatives. The context makes it clear it's for STM32 USART baud calculation, but could be slightly more explicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 29 tool updatesv0.3.1
    • First observedembedcalc_attenuator_pad
    • First observedembedcalc_awg_wire
    • First observedembedcalc_bitfield_macro
    • First observedembedcalc_can_bit_timing
    • First observedembedcalc_crc_to_c
    • First observedembedcalc_crystal_load_caps
    • First observedembedcalc_dcdc_converter
    • First observedembedcalc_endian_swap
    • First observedembedcalc_eseries_nearest
    • First observedembedcalc_find_component
    • First observedembedcalc_i2c_timing
    • First observedembedcalc_i2s_clocks
    • First observedembedcalc_ieee754_convert
    • First observedembedcalc_junction_temp
    • First observedembedcalc_lin_timing
    • First observedembedcalc_lm317
    • First observedembedcalc_microstrip_impedance
    • First observedembedcalc_modbus_rtu_timing
    • First observedembedcalc_ne555
    • First observedembedcalc_number_base_convert
    • First observedembedcalc_pcb_trace_width
    • First observedembedcalc_qformat_convert
    • First observedembedcalc_regmap_to_c
    • First observedembedcalc_resistor_code
    • First observedembedcalc_ring_buffer_size
    • First observedembedcalc_rs485_bus
    • First observedembedcalc_spi_timing
    • First observedembedcalc_struct_layout
    • First observedembedcalc_uart_baud

TDQS

A4.4/5.0

Scored across 29 tools

Disambiguation5/5

All 29 tools have distinctly different purposes, covering a wide range of embedded calculations without overlap. Each tool's description clearly defines its specific function, making it unambiguous for an agent to select the correct tool.

Naming Consistency5/5

Every tool follows the 'embedcalc_' prefix with a descriptive snake_case name (e.g., 'embedcalc_can_bit_timing', 'embedcalc_microstrip_impedance'). The naming pattern is consistent and predictable across all tools.

Tool Count4/5

With 29 tools, the count is on the high side but justified by the broad scope of embedded engineering calculations. Each tool provides a unique and useful calculation, and the number is reasonable for a comprehensive utility server.

Completeness4/5

The tool set covers many common embedded design domains (communications, power, signal integrity, component selection, etc.). Minor gaps exist (e.g., filter design, battery life), but the overall coverage is thorough and the most critical calculations are present.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that exposes 8 mathematical tools (arithmetic, algebra, calculus, matrix operations, statistics, probability, unit conversions) to any MCP-compatible AI agent, enabling mathematical computations without code.
    8
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that extends AI coding assistants with deterministic, algorithmic capabilities such as code analysis, fault localization, and formal verification, enabling an autonomous engineering team within the IDE.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that gives an AI assistant a set of real mechanical-engineering tools. Provides deterministic tools like material properties, beam analysis, unit conversion, and curve fitting for engineering calculations.
    5
    MIT