embedcalc-mcp
The embedcalc-mcp server provides 29 deterministic calculators and code generators for embedded systems engineering — replacing hallucinated LLM answers with verified, exact results.
Code Generation
embedcalc_crc_to_c— Table-driven C code for CRC-8/16/32 (7 presets or custom Rocksoft parameters) with embedded check valuesembedcalc_regmap_to_c— Convert register field lists into C#defineshift/mask macros and bit-fieldtypedef structembedcalc_bitfield_macro— Decompose a 32-bit register value into set bits and generate a C macro of OR'd(1U << n)terms
Timing & Bus Calculators
CAN bit timing (STM32 bxCAN/FDCAN, MCP2515), UART baud rate (STM32 BRR), I2C pull-up/TIMINGR, SPI timing, I2S clocks, LIN timing, RS-485 cable length/bias, Modbus RTU t1.5/t3.5 silence times, and ring/DMA buffer sizing
Data Representation
Q-format fixed-point ↔ float, IEEE 754 single/double (decimal ↔ hex ↔ binary with field breakdown), arbitrary base conversion (32-bit two's complement), endianness swap (big/little/BADC/CDAB), and C struct/union layout (offsets, padding, size for a 32-bit MCU model)
Electronics & PCB Calculators
E-series snapping (E6/E12/E24/E96), resistor color band/SMD decoding, crystal load capacitors, LM317 output voltage/resistor, T/π attenuator pad design, junction temperature, microstrip impedance (IPC-2141), PCB trace width (IPC-2221), AWG wire voltage drop (PASS/WARNING/FAIL), NE555 astable/monostable timing, and DC-DC converter design (buck/boost/inverting: duty cycle, min L/C, peak current)
Component Search (requires internet)
embedcalc_find_component— Find real, in-stock resistors, capacitors, inductors, LDOs, MOSFETs, and BJTs by electrical value, returning MPNs, descriptions, and buy links
Integrates with KiCad by providing a tool to parse KiCad netlist exports into a standard schema for schematic review.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@embedcalc-mcpCalculate CRC-8 C code for a byte array"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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-mcpClaude 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 |
|
Timing |
|
Data representation |
|
Electronics |
|
Components |
|
Schematic review |
|
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") =
0x4B37embedded 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_layoutuses a 32-bit MCU model (pointers 4 B;double/int64size 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).
Related
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 toolsembedcalc_attenuator_padResistive Attenuator Pad (T / Pi)ARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| impedance_ohm | No | System impedance (50/75 Ω) | |
| attenuation_db | Yes | Attenuation in dB |
Output Schema
| Name | Required | Description |
|---|---|---|
| t_shunt_ohm | Yes | T-pad: center shunt resistor |
| pi_shunt_ohm | Yes | Pi-pad: each of the two shunt resistors |
| t_series_ohm | Yes | T-pad: each of the two series resistors |
| pi_series_ohm | Yes | Pi-pad: center series resistor |
TDQS
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.
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.
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.
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.
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.
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 DropARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| awg | Yes | Wire gauge AWG number | |
| temp_c | No | Conductor temperature in °C | |
| length_m | Yes | One-way cable length in m (loop = 2×) | |
| supply_v | Yes | Supply voltage in V | |
| current_a | Yes | Load current in A |
Output Schema
| Name | Required | Description |
|---|---|---|
| verdict | Yes | |
| area_mm2 | Yes | |
| diameter_mm | Yes | |
| drop_percent | Yes | |
| voltage_drop_v | Yes | |
| loop_resistance_ohm | Yes |
TDQS
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.
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.
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.
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.
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.
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 MacroARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| value_hex | Yes | 32-bit register value in hex | |
| macro_name | No | C macro name (default REG_VAL) |
Output Schema
| Name | Required | Description |
|---|---|---|
| bin | Yes | |
| dec | Yes | |
| hex | Yes | |
| c_macro | Yes | |
| ones_count | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| clock_hz | Yes | CAN controller input clock in Hz (bxCAN: APB1 clock; FDCAN: kernel clock; MCP2515: crystal Fosc). E.g. 36000000 for 36 MHz. | |
| bitrate_bps | Yes | Target nominal bitrate in bit/s, e.g. 500000 for 500 kbit/s. | |
| sample_point_percent | No | Target sample point in percent. CiA 301 recommends 87.5 (the default). |
Output Schema
| Name | Required | Description |
|---|---|---|
| bxcan | Yes | STM32 bxCAN solution, or null if no exact divider exists |
| fdcan | Yes | STM32 FDCAN nominal (arbitration phase) solution, or null |
| mcp2515 | Yes | MCP2515 solution (BTLMODE=1, SAM=0), or null |
TDQS
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.
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.
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.
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.
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.
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 GeneratorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| bits | No | CRC width in bits (8, 16, or 32). Required when no preset is given. | |
| preset | No | Standard 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_hex | No | Initial CRC register value in hex (default 0x0). | |
| poly_hex | No | Generator polynomial in normal (non-reflected) hex form, e.g. '0x1021'. Required when no preset is given. | |
| reflect_in | No | Reflect each input byte (LSB-first processing). Default false. | |
| reflect_out | No | Reflect the final CRC before XOR-out. Default false. | |
| xor_out_hex | No | Final XOR value in hex (default 0x0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| c_code | Yes | Complete, compilable C source: 256-entry lookup table + crcN_compute() function |
| config | Yes | |
| check_hex | Yes | CRC of the ASCII string "123456789" — the standard check value for verifying the parameters |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| stray_pf | No | Stray capacitance (PCB traces + MCU pins) in pF, typ. 3-5 | |
| load_capacitance_pf | Yes | Crystal's specified CL in pF |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap_each_pf | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| vin | Yes | Input voltage V | |
| vout | Yes | Output voltage V (magnitude for inverting) | |
| iout_a | Yes | Output current A | |
| freq_khz | No | Switching frequency kHz | |
| topology | Yes | Converter topology (buckboost = inverting) | |
| ripple_voltage_mv | No | Allowed output ripple voltage mV | |
| ripple_current_pct | No | Inductor ripple current as % of Iout |
Output Schema
| Name | Required | Description |
|---|---|---|
| iin_a | Yes | |
| c_min_uf | Yes | |
| i_peak_a | Yes | |
| l_min_uh | Yes | |
| duty_percent | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConverterARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex byte sequence (with or without 0x) |
Output Schema
| Name | Required | Description |
|---|---|---|
| big | Yes | |
| bytes | Yes | Original bytes, big-endian order |
| little | Yes | |
| mid_big_cdab | Yes | |
| mid_little_badc | Yes |
TDQS
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.
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.
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.
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.
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.
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 ValueARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Computed value in base units (ohms/farads/henries) | |
| series | No | E-series (E24=5%, E96=1% resistors) | E24 |
Output Schema
| Name | Required | Description |
|---|---|---|
| series | Yes | |
| standard | Yes | |
| error_percent | Yes |
TDQS
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.
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.
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.
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.
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.
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)ARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Component type | |
| value | Yes | Primary value — meaning depends on type (ohms / farads / henries / volts) | |
| min_hfe | No | Minimum hFE / current gain (bjt) | |
| max_results | No | Maximum parts to return | |
| min_power_w | No | Minimum power rating in watts (resistor) | |
| min_current_a | No | Minimum current in amps (ldo output / mosfet Id / bjt Ic) | |
| min_voltage_v | No | Minimum voltage rating in volts (capacitor) | |
| tolerance_pct | No | Max tolerance in % (resistor/capacitor/inductor) | |
| max_rds_on_ohm | No | Maximum Rds(on) in ohms (mosfet) |
Output Schema
| Name | Required | Description |
|---|---|---|
| parts | Yes | |
| matched_value | Yes | The parametric value string the search matched |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| vdd | No | Bus supply voltage in volts | |
| mode | No | Bus speed mode: ls=10kHz, sm=100kHz, fm=400kHz, fmp=1MHz, hs=3.4MHz | sm |
| stm32_clock_mhz | No | STM32 I2C kernel clock (I2CCLK) in MHz for TIMINGR estimate | |
| bus_capacitance_pf | No | Total bus capacitance in pF (spec max 400 pF) |
Output Schema
| Name | Required | Description |
|---|---|---|
| stm32 | Yes | |
| rp_max_ohm | Yes | |
| rp_min_ohm | Yes | |
| scl_low_us | Yes | |
| scl_high_us | Yes | |
| t_fall_max_ns | Yes | |
| t_rise_max_ns | Yes | |
| target_freq_hz | Yes | |
| scl_low_min_spec_us | Yes | |
| scl_high_min_spec_us | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| channels | No | Channel count (2 = stereo) | |
| sample_rate_hz | Yes | Sample rate Fs in Hz (44100, 48000, ...) | |
| bits_per_sample | Yes | Bits per sample per channel (16/24/32) |
Output Schema
| Name | Required | Description |
|---|---|---|
| bclk_hz | Yes | |
| lrclk_hz | Yes | |
| bclk_period_ns | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConverterARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| bin | No | Binary bit pattern to decode (32 or 64 chars, spaces allowed) | |
| hex | No | Hex bit pattern to decode, e.g. '0x3F800000' | |
| format | No | 32 = float, 64 = double | |
| decimal | No | Decimal value to encode (one of decimal/hex/bin) |
Output Schema
| Name | Required | Description |
|---|---|---|
| bin | Yes | |
| hex | Yes | |
| sign | Yes | |
| class | Yes | |
| decimal | Yes | Decimal value as string (may be 'NaN', 'Infinity', '-Infinity') |
| fraction | Yes | |
| exponent_raw | Yes | |
| exponent_unbiased | Yes | exponent - bias; null for zero/subnormal/special |
TDQS
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.
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.
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.
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.
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.
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 PowerARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| power_w | Yes | Dissipated power in W | |
| theta_ja | Yes | Junction-to-ambient thermal resistance °C/W | |
| tj_max_c | No | Maximum junction temperature rating in °C | |
| ambient_c | Yes | Ambient temperature in °C |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| tj_c | Yes | |
| p_max_w | Yes | |
| margin_c | Yes | tj_max - tj (negative = over limit) |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| baud | No | LIN baud rate (max 20 kbit/s) | |
| data_bytes | No | Response data bytes |
Output Schema
| Name | Required | Description |
|---|---|---|
| bit_time_us | Yes | |
| break_time_us | Yes | |
| frame_time_us | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| vref | No | Reference voltage (1.25 V typ) | |
| r1_ohm | No | R1 (Vref across it), datasheet recommends 240 Ω | |
| r2_ohm | No | R2 value (computes Vout) | |
| iadj_ua | No | Adjust pin current in µA (50 typ) | |
| target_vout | No | Desired output voltage (solves R2) |
Output Schema
| Name | Required | Description |
|---|---|---|
| vout | Yes | |
| r1_ohm | Yes | |
| r2_ohm | Yes |
TDQS
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.
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.
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.
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.
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.
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)ARead-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 Ω.
| Name | Required | Description | Default |
|---|---|---|---|
| er | No | Dielectric constant (FR-4 ≈ 4.5) | |
| trace_width_mm | Yes | Trace width w in mm | |
| trace_thickness_mm | No | Copper thickness t in mm (1 oz = 0.035) | |
| dielectric_height_mm | Yes | Dielectric height h in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
| z0_ohm | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| baud | Yes | Baud rate in bit/s |
Output Schema
| Name | Required | Description |
|---|---|---|
| t15_us | Yes | |
| t35_us | Yes | |
| char_time_us | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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%.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Oscillator or one-shot | |
| ra_ohm | Yes | Ra in ohms | |
| rb_ohm | No | Rb in ohms (astable only) | |
| c_farad | Yes | Timing capacitor in farads (10µF = 10e-6) |
Output Schema
| Name | Required | Description |
|---|---|---|
| freq_hz | Yes | |
| pulse_s | Yes | |
| t_low_s | Yes | |
| t_high_s | Yes | |
| duty_percent | Yes |
TDQS
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.
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.
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.
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.
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.
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)ARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Number in any base: decimal, 0x hex, 0b binary, 0o octal |
Output Schema
| Name | Required | Description |
|---|---|---|
| bin | Yes | |
| hex | Yes | |
| oct | Yes | |
| signed | Yes | |
| unsigned | Yes | |
| ones_count | Yes |
TDQS
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.
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.
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.
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.
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.
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)ARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Trace layer | external |
| copper_oz | No | Copper weight in oz (1 oz = 35 µm) | |
| current_a | Yes | Continuous current in amps | |
| temp_rise_c | No | Allowed temperature rise in °C (typ. 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| width_mm | Yes | |
| width_mil | Yes | |
| cross_section_sq_mil | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConverterARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| m | Yes | Integer bits (excluding sign) | |
| n | Yes | Fractional bits | |
| value | No | Float value to encode (provide this OR raw_int) | |
| raw_int | No | Stored fixed-point integer to decode (provide this OR value) |
Output Schema
| Name | Required | Description |
|---|---|---|
| bin | Yes | |
| hex | Yes | |
| error | Yes | |input - actual| (0 when decoding raw_int) |
| scale | Yes | 2^n |
| actual | Yes | Value actually represented after quantization |
| format | Yes | |
| clamped | Yes | |
| raw_int | Yes | |
| range_max | Yes | |
| range_min | Yes | |
| total_bits | Yes |
TDQS
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.
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.
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.
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.
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.
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 GeneratorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Fields from LSB upward; total width <= 32 bits | |
| register_name | Yes | Register name, e.g. 'CTRL' |
Output Schema
| Name | Required | Description |
|---|---|---|
| c_code | Yes | |
| fields | Yes | |
| total_bits | Yes |
TDQS
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.
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.
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.
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.
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.
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 DecoderARead-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%.
| Name | Required | Description | Default |
|---|---|---|---|
| bands | No | Color band names in order (4 or 5 bands) | |
| smd_code | No | SMD marking, e.g. '472', '4R7', '01C' |
Output Schema
| Name | Required | Description |
|---|---|---|
| ohms | Yes | |
| max_ohms | Yes | |
| min_ohms | Yes | |
| tolerance_percent | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| latency_ms | Yes | Worst-case consumer latency in milliseconds | |
| safety_factor | No | Headroom multiplier (default 2) | |
| data_rate_bytes_per_sec | Yes | Incoming data rate in bytes/second |
Output Schema
| Name | Required | Description |
|---|---|---|
| bytes_needed | Yes | |
| recommended_pow2 | Yes | Next power of two >= bytes_needed (fast masking index math) |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| vcc | No | Bias supply voltage | |
| baud_bps | Yes | Signaling rate in bit/s | |
| bias_ohm | No | Chosen bias resistor per side in Ω (default: computed maximum) |
Output Schema
| Name | Required | Description |
|---|---|---|
| max_cable_m | Yes | |
| meets_200mv | Yes | |
| idle_vdiff_v | Yes | |
| max_bias_ohm | Yes | Maximum bias resistor per side for 200 mV idle differential |
| bias_used_ohm | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| sck_hz | Yes | SCK clock frequency in Hz | |
| bits_per_frame | No | Bits per frame/transfer |
Output Schema
| Name | Required | Description |
|---|---|---|
| bit_period_ns | Yes | |
| frame_time_us | Yes | |
| throughput_mbps | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | C struct member declarations (or full struct/union definition) |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | |
| alignment | Yes | |
| total_size | Yes | |
| padding_bytes | Yes |
TDQS
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.
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.
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.
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.
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.
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 CalculatorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| baud | Yes | Target baud rate in bit/s | |
| parity | No | Parity | none |
| clock_hz | Yes | USART peripheral clock in Hz | |
| data_bits | No | Data bits per frame | |
| stop_bits | No | Stop bits | |
| oversampling | No | Oversampling (OVER8): 16 or 8 |
Output Schema
| Name | Required | Description |
|---|---|---|
| brr_hex | Yes | USART_BRR register value |
| fraction | Yes | |
| mantissa | Yes | |
| frame_bits | Yes | start + data + parity + stop bits |
| actual_baud | Yes | |
| char_time_us | Yes | Time per character at actual baud |
| error_percent | Yes |
TDQS
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.
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.
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.
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.
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.
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.
29 tool updates
v0.3.1- First observed
embedcalc_attenuator_pad - First observed
embedcalc_awg_wire - First observed
embedcalc_bitfield_macro - First observed
embedcalc_can_bit_timing - First observed
embedcalc_crc_to_c - First observed
embedcalc_crystal_load_caps - First observed
embedcalc_dcdc_converter - First observed
embedcalc_endian_swap - First observed
embedcalc_eseries_nearest - First observed
embedcalc_find_component - First observed
embedcalc_i2c_timing - First observed
embedcalc_i2s_clocks - First observed
embedcalc_ieee754_convert - First observed
embedcalc_junction_temp - First observed
embedcalc_lin_timing - First observed
embedcalc_lm317 - First observed
embedcalc_microstrip_impedance - First observed
embedcalc_modbus_rtu_timing - First observed
embedcalc_ne555 - First observed
embedcalc_number_base_convert - First observed
embedcalc_pcb_trace_width - First observed
embedcalc_qformat_convert - First observed
embedcalc_regmap_to_c - First observed
embedcalc_resistor_code - First observed
embedcalc_ring_buffer_size - First observed
embedcalc_rs485_bus - First observed
embedcalc_spi_timing - First observed
embedcalc_struct_layout - First observed
embedcalc_uart_baud
TDQS
Scored across 29 tools
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.
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.
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.
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
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
MCP server for aerospace calculations: orbital mechanics, ephemeris, DSN operations, ...
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
AI-callable calculators and engineering models with real formulas. No hallucinated math.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseAqualityCmaintenanceA 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.841MIT
- AlicenseNot gradedqualityCmaintenanceAn 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
- AlicenseAqualityBmaintenanceAn 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.5MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server providing calculator and file system tools, enabling AI agents to perform mathematical calculations and file operations.-