circuit-agent
This server supports end-to-end circuit design, PCB manufacturing preparation, and hardware compliance auditing from a natural-language prompt.
Synthesize and manage circuits: Generate deterministic netlists from prompts, list/register MCU chips, and inspect available circuit blocks.
Search and cost components: Query live LCSC/JLCPCB stock and pricing, calculate BOM costs, and audit supply-chain multi-sourcing.
Validate electrical designs: Run ERC, validate netlist schemas, render topology, analyze power trees, and check component ratings/decoupling.
Calculate PCB electrical/physical rules: Solve trace impedance, IPC-2152 current capacity, IPC-2221 clearance, stackups, differential skew, skin-depth loss, and copper pour IR drop.
Route and place PCBs: Generate Specctra DSN, autoroute boards, run physical DRC, and export KiCad schematics/netlists.
Prepare fabrication and assembly: Export Gerbers, Excellon drill, IPC-D-356, IPC-2581, BOM, CPL, OpenPnP jobs, iBOM, assembly drawings, and manufacturing package manifests.
Plan DFM/DFA/DFT and panelization: Audit industrial DFX, fab capabilities, IPC-6012 class compliance, panel rails/grids, fiducials, testpoints, stencils, solder paste, via protection, and SMT feeder/nozzle setups.
Run reliability and process audits: Assess thermal fatigue, drop shock, MTBF, MSL floor life, ionic contamination, ENIG plating, conformal coating, tombstoning, wave-solder orientation, press-fit holes, and high-voltage creepage.
Analyze passive tolerance: Model MLCC effective capacitance, hold-up sizing, RC filter drift, divider/resistor error budgets, and feedback divider E96 errors.
Gate production: Run a one-call production-readiness check that synthesizes, routes, exports, validates, and returns a go/no-go verdict.
Exports standard KiCad S-Expression netlist (.net) files from synthesized hardware netlists, compatible with KiCad 6/7/8/9/10 Pcbnew for direct import and PCB routing.
Click on "Deploy 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., "@circuit-agentDesign an ESP32-C3 environmental sensor node with USB-C power, I2C sensor header, LED, and two buttons"
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.
CircuitAgent · Community Edition
Prompt → Schematic → Layout → 3D Enclosure → Fabrication Bundle
Status: alpha. This repository is the open community layer of CircuitAgent: the hardware DSL, the LCSC live-selection client, and the data contracts that the full compiler consumes. The block set is deliberately small and every block is unit-tested — correctness over coverage.
为什么需要这一层 (Why this layer exists)
让大语言模型直接生成底层走线、焊盘与封装,几乎必然产出非法几何或引脚短路。 CircuitAgent 的做法是把 LLM 的输出约束在预验证的电路积木上,再用 Pydantic 契约把它变成确定性网表 —— 模型只负责"选积木",不负责"画线"。
Natural language prompt
│
▼
┌────────────────────────┐
│ CircuitBlocks DSL │ keyword → audited sub-circuits (deterministic)
└────────────────────────┘
│
▼
┌────────────────────────┐
│ Netlist contract │ Pydantic / JSON Schema (SSOT)
└────────────────────────┘
│
┌────┴─────┐
▼ ▼
┌────────┐ ┌──────────────────┐
│ LCSC │ │ REST / MCP APIs │
│ client │ │ (community layer)│
└────────┘ └──────────────────┘Related MCP server: jlceda-mcp
快速上手 (Quick Start)
方式 A · 从 PyPI 安装(推荐)
pip install circuit-agent-client方式 B · 从源码使用
git clone https://github.com/mo9652962-ai/circuit-agent.git
cd circuit-agent零运行时依赖 —— 纯 Python 标准库实现,装完即用,不拉任何第三方包。
跑测试才需要 dev extra:pip install -e ".[dev]"
1 · 一句话生成硬件网表
from client.synthesizer import synthesize_from_prompt
spec = synthesize_from_prompt(
"基于 ESP32-C3 的环境监测节点,带 Type-C 供电、I2C 传感器插座、指示灯和2个按键"
)
print(spec["chip_id"]) # ESP32-C3
print(len(spec["modules"])) # 元器件数
print(spec["netlist"]["connections"][0]) # 第一条网络连接
print(spec["unmatched"]) # 你要求了、但 DSL 还不支持的模块(可执行信号)
print(spec["not_requested"]) # 你没提到的可选模块(仅参考,非能力缺口)映射是确定性的:同一句话永远产出逐字节相同的结果(CI 中有对应断言)。
unmatched 与 not_requested 是两个刻意分开的信号,不要混用:
字段 | 含义 | 例子 | 消费方式 |
| 你明确要求、但当前 DSL 造不出来 |
| 这是能力信号,agent 应据此告知用户或换方案 |
| 可选积木,只是这句话没提到 |
| 纯参考信息,不代表能力缺口 |
不会被静默丢弃:任何未识别的意图都会出现在 unmatched 里,而不是悄悄消失。
2 · 查询立创商城实时库存与单价
from client.lcsc_client import search_lcsc_parts
for part in search_lcsc_parts("CH340N", limit=3):
print(f"[{part['lcsc_part']}] {part['part_number']} | {part['package']} | "
f"库存 {part['stock']} | ${part['price_usd']} | {part['part_class']}")[C506813] CH340N | SOP-8_L5.0-W4.0-P1.27-LS6.0-BL | 库存 196 | $0.5537 | Extended Part客户端自带重试退避 + 硬超时 + 24 小时磁盘缓存 + 防御式解析:上游改结构不会 抛异常,断网时回落到缓存(缓存也没有则返回空列表,调用方永远不必处理传输层异常)。
3 · 直接用积木搭电路
from client.circuit_blocks import block_usb_c_power, block_power_ldo_3v3
blk = block_power_ldo_3v3()
for comp in blk.components:
print(comp.ref, comp.value, comp.package, comp.lcsc)积木清单 (Block Catalogue)
Block | 说明 | 关键设计点 |
| Type-C 供电输入 | 双 5.1k CC 下拉(sink 角色,非 56k 上拉) |
| AMS1117-3.3V 稳压 | 10µF 输入/输出储能电容 |
| 无源晶振 + 负载电容 | 标记 |
| 消抖按键 | 10k 上拉 + 100nF RC,位号可参数化 |
| 状态指示灯 | 限流电阻 + 颜色/阻值可参数化 |
| 蜂鸣器驱动 | S8050 NPN + 1N4148W 反向续流二极管 |
| I2C 扩展排针 | SCL/SDA 各 4.7k 上拉 |
| SP3485 半双工差分串口 | 120Ω 终端电阻 + 100nF 去耦 + 3P 排针引出 |
| SN65HVD230 3.3V CAN 节点 | 120Ω 终端匹配 + 10k 斜率控制 (高速模式) |
| TP4056 1A 线性锂电充电 | 1.2k 限流 + 充/满双色指示灯 + 2P 电池端子 |
| AHT20 温湿度传感器 | 工业 I2C 总线 + 去耦电容 + DFN-6 封装 (C2757850) |
| MPU-6050 6轴 IMU 运动姿态传感器 | 3轴陀螺仪+3轴加速度计 + 旁路去耦 + QFN-24 (C24112) |
| USB 接口高速 TVS 静电防护 | USBLC6-2SC6 超低结电容 (0.6pF) + SOT-23-6 |
| RS-485 工业双向非对称 TVS | SM712 工业防雷/抗浪涌防静电二极管 (-7V~+12V) |
| CAN 总线 ESD 双路 TVS 阵列 | PESD1CAN 24V 车规/工控双线 TVS (SOT-23) |
| 工业电源输入防反接保护 | 肖特基二极管 (SS34) 或 低压降 P-MOSFET (AO3401A) |
| 电源输入 EMI π型 LC/RC 滤波器 | 磁珠 (100MHz 600Ω) + 10µF 钽电容/陶瓷电容吸收纹波 |
| SMT 贴片光学定位点 (Mark点) | 3个 1.0mm 裸铜焊盘 + 2.0mm 阻焊开窗 (DFA工序必备) |
| 自动化测试点矩阵 (Test Points) | 1.0mm SMD 测试铜焊盘 (支持电源轨、地轨、SWD、UART测试) |
| TPS3823 看门狗/复位监控 | 1.6s WDI 喂狗 + 推挽复位输出(工业 MCU 防跑飞,IEC 61508 实践) |
| W5500 SPI 硬件 TCP/IP 以太网 | 10/100M PHY + 集成变压器与状态灯 RJ45 (HR911105A) + 25MHz 晶振 |
| INA219 I2C 功率/电流双向监测 | 0.1Ω 2W 1% 精密检流电阻 + 实时电压电流遥测 |
| DRV8825 2.5A 45V 步进电机驱动 | 1/32 微步进 + 100µF 50V 母线高压滤波 + XH-4P 接口 |
| PC817 5kV 高压光电隔离输入 | 2.4k 限流 + 反向保护二极管,适配 24V PLC 工业自动化输入 |
每个积木的引脚号、LCSC 料号、封装名在冻结前均对照数据手册与立创商城列表核验过。
tests/test_circuit_blocks.py 会强制校验:位号唯一、每个元件都有封装与料号、
网络端点必须指向已声明的元件、每个积木都必须接 /GND。
MCP Server (AI Agent 工具服务)
CircuitAgent 内置标准 JSON-RPC 2.0 stdio MCP Server,基于纯 Python 标准库构建(无需任何第三方 pip 库),可无缝接入 Claude Desktop、Cursor 或 Windsurf。
当前暴露 80 个工具、8 个资源(circuit:// URI)与 4 个工程提示词(slash-command)。
协议版本:MCP 2026-07-28
服务器实现 2026-07-28 无状态协议核心,同时向后兼容到 2024-11-05 的握手客户端:
能力 | 实现 |
| ✅ 强制方法,一次交互返回支持版本/能力/身份,也是 stdio 的向后兼容探针 |
无握手请求 | ✅ 每个请求在 |
| ✅ 所有结果携带 |
缓存提示 | ✅ |
确定性顺序 | ✅ 工具目录顺序稳定,客户端与上游 prompt 缓存可命中 |
错误码分配 | ✅ 使用规范保留区 |
旧版握手 | ✅ |
结构化输出 | ✅ 双通道: |
双通道输出
MCP 2026-07-28 规定 tools/call 有两个输出通道,且同时存在时语义必须等价:
content— 面向模型。语言模型只读得到这一段,token 成本与可读性优先。structuredContent— 面向程序。给代码生成、类型化编排与outputSchema严格校验用。
本服务器的做法是从同一份文档派生:工具已经返回 JSON,结构化通道由解析该文档得到,
因此两个通道不可能不一致(有测试对全部工具断言这一点)。返回文件内容的导出工具
(KiCad 网表、Gerber、IPC-2581、BOM CSV)与返回 ASCII 图的工具不声明 outputSchema ——
它们产出的是文档不是数据对象,给它写 schema 只会描述一个字符串容器。错误结果同样不带
结构化负载:失败的调用没有符合 schema 的文档,编造一个错误对象形状是没人要求的契约。
server/discover 的 instructions 字段直接写给 LLM 看:先 synthesize_circuit 出网表,再 run_erc 门禁,
然后 audit_industrial_dfx 与 validate_manufacturing_package,最后才导出。calculate_* / analyze_*
全是纯函数(无网络、无状态),可放心试探;只有 search_lcsc_parts 联网且免 Key。
运行方式
python -m client.mcp_serverClaude Desktop 配置 (claude_desktop_config.json)
{
"mcpServers": {
"circuit-agent": {
"command": "python",
"args": ["-m", "client.mcp_server"],
"cwd": "/path/to/circuit-agent"
}
}
}暴露的工具 (Tools)
synthesize_circuit: 输入自然语言,输出确定性硬件网表与积木清单。search_lcsc_parts: 免 Key 实时查询立创商城的元器件库存、封装、阶梯单价与基础库/扩展库属性。list_circuit_blocks: 列出 DSL 中全部可用的 24 大已审计电路积木规格。validate_netlist: 根据正式 JSON Schema 校验网表数据结构合法性。calculate_trace_impedance: 基于 IPC-2141 解析公式计算微带线与差分对走线阻抗(50Ω RF / 90Ω USB / 120Ω CAN/485)。calculate_bom_cost: PCBA 成本核算器,自动精算元器件裸成本与嘉立创扩展库换料费(¥20/种)。list_supported_chips: 查询当前支持的微控制器型号及其引脚分配硬规则。register_custom_chip: 动态注册第三方 MCU 物理引脚约束与外设映射表。calculate_ipc2152_trace_current: 依据 IPC-2152 标准精确计算印制导线载流能力或反算线宽(温升 ΔT、铜厚 1oz/2oz、内层降额)。audit_industrial_dfx: 工业级 DFX (DFM/DFA/DFT/DFC) 与生产合规自动化静态审查器,输出打分评级、问题分类与 Markdown 体检报告。export_kicad_netlist: 导出标准 KiCad S-Expression 网表 (.net),支持 KiCad 6/7/8/9/10 直接导入 Pcbnew 快速布线。export_manufacturing_bom: 生成量产级嘉立创 SMT BOM CSV 表格(含位号聚合、基础库免换料费分类)。 12b.export_manufacturing_cpl: 生成嘉立创 SMT 贴片坐标文件(CPL/pos,位号 + 中心坐标 + 层 + 旋转角)。BOM 与 CPL 必须成对交付——只在 BOM 里而不在 CPL 里的器件会被采购但不会贴装,故障留到功能测试才暴露。calculate_parametric_circuit: 闭环参数化硬件设计方程(E96 标准分压电阻对求解、LDO 散热结温校核、I2C 上拉阻值及 RC 滤波)。render_circuit_topology: 生成结构化 ASCII 系统架构拓扑图(电源轨、总线、传感器与保护子系统)。run_erc: 网表级电气规则门禁(ERC)——悬空网络、缺 GND、未知位号、缺电源域、缺去耦电容、差分总线缺 120Ω 终端电阻、电容真实有效容值不足等 45+ 条规则,每条带 severity 与出处,blocking/error 阻断 BOM/CPL 交付。其中MLCC_EFFECTIVE_CAPACITANCE_DEFICIT会用真实降额模型复算每颗电容在额定偏置下的实际容值,跌破标称 60% 即告警;器件未带偏置数据时保持沉默而不编造。DECOUPLING_PER_IC_DEFICIT按器件数量而非网络判断去耦是否充足——三颗 IC 共用一颗 100nF 会被拦下,因为共用意味着远端器件的瞬态电流要穿过走线电感。COMPONENT_RATING_INSUFFICIENT从电源轨名解析电压(/+3.3V、/VMOT_24V、/VBUS),与器件声明的额定值比对,6.3V 电容接在 24V 轨上直接判 error;未声明额定值的器件跳过而不猜测。analyze_power_tree: 系统级电源树与热功耗分析器,追踪电源域负载电流、LDO 压差裕量、热耗散与结温估算 ($T_j$)。calculate_ipc2221_clearance: 基于 IPC-2221B Table 6-1 标准根据工作电压与导体类别 (B1内层/B2外层裸露/B4涂覆/A6引脚) 精确计算最小电气间隙。export_specctra_dsn: 生成通用 Specctra DSN (v15.0) 自动布线交互文件与启发式器件自动布局,支持直接送入 Freerouting / KiCad 执行 100% 自动化走线。 18b.autoroute_pcb: 运行原生 Python 零 JVM 依赖多层自动布线引擎,执行启发式布局、Specctra DSN 转换与走线求解,输出 Specctra SES 走线文件与物理布线指标(网络连通率、走线总长、过孔数)。布线结果自动过物理 DRC 门禁,引擎不合格时按exact→room→grid自动回退,engines_tried记录实际采用的引擎。 18c.run_pcb_drc: 对布线结果执行物理 DRC 审计——真铜箔间距、蚀刻酸角、电源线宽、板边与禁布区、差分对偏斜,违规按网络聚合输出(错误/警告分级 + 定位坐标 + 修复建议)。 18d.analyze_ionic_contamination: 组件后清洗离子污染 (ROSE) 与离子色谱合规审计器——依据 IPC-CH-65 与 IPC-TM-650 2.3.25/2.3.28,对标 Class 1.56 / Class 3 1.20 μg/cm² NaCl 当量限值与氯 0.70 / 溴 0.54 μg/cm² 物种限值,按偏压与导体间距评分枝晶/CAF 生长风险。 18e.analyze_enig_plating: ENIG/ENEPIG 镀层厚度与黑盘 (镍晶界腐蚀) 风险审计器——依据 IPC-4552A/4556 校核金 0.050.20μm、镍 3.06.0μm、磷 710wt% 与钯 0.100.30μm 工艺窗口,综合返修次数与工艺类型评估电偶过腐蚀脆断风险,并预警金厚 >0.25μm 的 AuSn₄ 焊点脆化。 18f.estimate_solder_joint_thermal_fatigue: IPC-9701A / IPC-D-279 Engelmaier 热循环疲劳寿命估算器——按 CTE 失配剪切应变范围 (Δα·ΔT·DNP/2h)、蠕变感知循环指数 (热驻留时间与平均结温) 计算 TC1TC4 车规/航空温度谱下焊点 63.2% 失效特征寿命 (NTC),对照服役循环数判定陶瓷大 DNP 封装是否需欠填充。 18g.plan_conformal_coating: IPC-CC-830C / IPC-A-610G §10 三防漆选型与掩膜禁涂区规划器——校核 AR/ER/UR (30130μm)、SR (50210μm)、XY (1050μm) 膜厚窗口,预警与现场返修需求的冲突 (ER/XY 近似不可返修),并从 BOM 自动枚举连接器/测试点/开关掩膜禁涂清单,杜绝涂层渗入触点的间歇接触失效。 18h.predict_assembly_mtbf: Telcordia SR-332 / MIL-HDBK-217F part-stress 整机 MTBF 预测器——BOM 自动分类至 Telcordia 器件类别,施加 Arrhenius 温度因子 (πT)、质量等级 (πQ 13) 与环境因子 (πE 地面固定 1.0机载 12.0),输出总 FIT、MTBF (小时/年)、5 年存活率与 Top-5 失效率主导器件。 18i.assess_drop_shock_reliability: JEDEC JESD22-B111 板级跌落冲击评估器 (1500G/0.5ms 半正弦 30 连跌)——逐器件计算惯性焊点载荷 F=ma,标记板角高应变区大质量器件,估计板基频 (边框加强环感知),给出欠填充/居中迁移/螺柱卸载整改建议。 18j.solve_via_current_array: IPC-2152 / IPC-2221 过孔孔壁载流与并联阵列求解器——按钻孔/孔铜计算环形截面积,施加内外层 k 常数 (0.048/0.024)、40% 阵列均流降额与 IPC-4761 Type VII 填铜信用,输出大电流轨道所需最小并联过孔数。 18k.budget_fab_order: JLCPCB / PCBWay 无头下单离线预算与提交清单构建器——纯 stdlib 对公开价格阶梯 (层板/数量/面积/表面工艺/SMT/运费/加急) 做跨厂商比价,生成制造交付件 SHA-256 防篡改提交账本;零网络零密钥,macOS 笔记本与 Docker CI runner 通吃。 18l.calculate_qfn_thermal_pad_stencil: IPC-7093A / IPC-7525A QFN 与 BTC 底部大散热盘窗口式 (Window-Pane) 钢网开孔求解器——将实心 100% 锡膏开孔自动转换为 50%70% 阵列网格,规划 0.150.25mm 裸铜排气逃气通道,防止回流焊巨型空洞 (>35%)、芯片漂移倾斜与周边引脚连锡短路。 18m.audit_smt_tombstone_risk: IPC-A-610G §8.3.2.9 / IPC-SM-782 片式无源元件焊盘热对称性与立碑 (曼哈顿效应) 风险审计器——逐项比对 0201/0402/0603 阻容两端引出导线截面与大铺铜热惯量差异,强制要求单端直连铺铜添加 2~4 条 0.20mm 热隔离花焊辐条 (Thermal Relief) 以消除表面张力翻转力矩。export_kicad_schematic: 导出原生现代 KiCad 8/9 S-Expression 原理图文件 (.kicad_sch),支持在 Eeschema 中直接以可视化原理图打开编辑(含器件符号排布、属性及图框)。audit_supply_chain: 供应链多源弹性审计器(ISO 9001 采购供应链审计),自动排查单源卡脖子器件并映射引脚完全兼容的第二货源替代料 (Drop-in Second-Source) 与立创商城编号。calculate_differential_skew: 高速差分对等长与时延差约束求解器(USB 2.0 HS ≤10ps、以太网 ≤25ps、CAN-FD ≤50ps),反求目标等长差与蛇形绕线 (Serpentine tuning) 齿数与几何尺寸。export_ipc_d356: 导出通用工业标准 IPC-D-356A 裸板电性能飞针测试网表文件,直接喂入板厂飞针测试机 (AEMG/ATG/MicroCraft) 执行开短路连通性检验。export_gerber_bundle: 原生直出符合 Ucamco RS-274X 扩展标准的制造级 Gerber 打包文件(板框 .gm1、顶层铜皮 .gtl、阻焊开窗 .gts、顶层丝印 .gto),摆脱对图形化 EDA 鼠标导出的依赖。calculate_pcb_stackup_impedance: 标准工业四层板 (JLC04161H) 与六层板 (JLC06161H) 叠层矩阵查询与 IPC-2141A 特征阻抗自动反求(50Ω RF微带线、90Ω USB、100Ω 以太网、120Ω 工业差分对)。export_excellon_drill: 生成生产级 IPC-NC-349 Excellon CNC 数控钻孔文件 (.drl),补齐 PCB 制造 5 层生产包。generate_interactive_bom: 生成量产首件检验交互式装配导航网页 (iBOM, InteractiveHtmlBom 对标),实现位号清单与 SVG 矢量板图双向高亮聚焦。calculate_smt_feeder_matrix: SMT 贴片机料槽与吸嘴智能配置器,遵循 EIA-481 载带标准(8/12/16/24mm 宽度与 2/4/8/12mm 步距)与 Juki/Yamaha 吸嘴矩阵(502~506 规格)。export_openpnp_job: 导出标准 OpenPnP 自动化贴片作业文件与工业贴片机 CSV,包含吸嘴配置、料槽站位号、中心坐标与器件旋转角。calculate_ipc7351_land_pattern: 依据 IPC-7351B 国际标准计算表面贴装元件焊盘几何与 Courtyard 边界(焊脚延伸 Toe、内侧延伸 Heel、侧边延伸 Side、RMS 统计公差,覆盖 A/B/C 三级焊盘密度)。calculate_pcb_panel_rails: SMT 自动化产线拼版工艺边与邮票孔/V-cut 计算器,依据 IPC-2221B 与 IPC-SMEMA-9851 自动化导轨规范生成 3.2mm 定位孔、光学定位点与材料利用率。calculate_ict_testpoints: 分析 PCB 网表测试可测性并规划针床在线测试 (ICT) 测试焊盘矩阵 (B.Cu Φ1.0mm/2.54mm 网格),根据 IPC-9252 与 IPC-2221B 智能分配探针类型 (皇冠型/尖矛型/锯齿型) 与故障覆盖率统计。calculate_bga_escape_routing: 依据 IPC-7095 标准求解 BGA 封装对角 45° 狗骨头 (Dogbone) 引脚逃孔扇出几何、通道线宽与线距,并反推最少信号走线层数与 HDI 微孔需求。calculate_teardrop_reinforcement: 计算导线连接过孔/焊盘处的切线圆弧与锥形泪滴 (Teardrop) 补强几何,消除热应力开裂并确保满足 IPC-2221B Section 9.1.5 与 IPC-A-600J Class 3 破孔零开路规范。calculate_copper_thieving_balance: 依据 IPC-2221B Section 10.1.1 评估顶底层铺铜覆盖率平衡度,预警回流焊弓曲/扭曲变形风险 (IPC-TM-650 2.4.22 ≤0.75%),并在孤立空白区自动生成网格/阵列假铜平衡点 (Copper Thieving)。calculate_via_stitching_array: 依据 IPC-7093 Section 7.2 规划 QFN/功率芯片裸露散热焊盘底部的导热过孔阵列 (Φ0.3mm/1.2mm 网格),或依据 IPC-2141A 生成高频 RF 微带线双侧屏蔽地孔栅栏 (Shielding Fence)。calculate_serpentine_tuning_geometry: 依据 IPC-2141A 高速传输线标准生成差分对蛇形等长绕线微调几何路径,严格保障线距自耦合抑制约束 ($S \ge 3W, H \ge 3W$)。calculate_stencil_aperture_ratios: 依据 IPC-7525 钢网设计规范逐开孔核算面积比 (AR ≥ 0.66) 与宽厚比 (≥ 1.5),定位锡膏释放不足的高危细间距开孔,预防立碑/虚焊/BGA 枕头效应。calculate_fiducial_layout: 依据 IPC-2221B Section 12 与 JEDEC J-STD-020 生成非对称 L 形 3 点全局光学定位点布局 (消除 180° 旋转歧义),并为 ≤0.5mm 细间距器件自动布置对角局部基准点。calculate_via_protection_plan: 依据 IPC-4761 按过孔装配场景选型保护结构 (Type I~VII):BGA 盘中孔强制 Type VII 填孔+电镀盖帽 (VIPPO) 防渗锡,热沉焊盘 Type V 填孔,BGA 通道 Type IV,开阔区 Type II。calculate_solder_paste_volume: 依据 IPC-7525A 锡膏转移分析逐开孔核算沉积锡膏体积比 (合规窗口 1.0~2.5),预警焊料饥饿 (开路/立碑/枕头效应) 与锡膏过量 (桥连/锡珠) 缺陷。export_ipc2581: 导出简化合规的 IPC-2581B 单文件智能制造数据包 (XML)——叠层、BOM、已布局元件、网络引脚归属与板框轮廓,取代传统 Gerber+Excellon+TXT 交付包,直接对接 Siemens X / Altium / Zuken 与大型 EMS 代工厂报价投产。export_assembly_drawing_svg: 依据 ASME Y14.5 与 IPC-2221B Section 11 生成 1:1 比例 PCBA 装配图 SVG——元件外框与位号标注、极性标识 (IC 第一脚圆点/二极管阴极条/电解电容正极框)、底视图 X 镜像、ASME Y14.100 标题栏 (版本/比例/审核签署栏)。diff_netlists: 网表 ECO 比对引擎——对改版前后两版网表输出元件增删、值/封装变更、网络增删、引脚归属迁移与变更等级 (NONE/MINOR/MAJOR),支撑 PLM 工程变更 (ECO) 流程向制造/采购/测试部门准确传递改版差异。generate_assembly_process_plan: 混装装配工艺路线规划器——依据 IPC-A-610G Section 7 将每个器件分配至 SMD 回流 / THT 波峰 / THT 手工 / 机械装配工序,输出 EMS 十段标准工艺路线 (SPI → 回流 → AOI → 插件 → 波峰/选择焊 → 手工补焊 → ICT → FCT → 三防 → 包装)。optimize_panel_grid: 拼版网格利用率优化器——枚举 grid_x × grid_y、工艺边布局与分板方式 (V-cut/邮票孔) 组合,过滤超出板厂上限 (默认 300×300mm) 的方案,按基材利用率降序输出 Top-10 可行拼版方案。calculate_fab_cost: PCB 制造费用估算器——按板厂公开阶梯计价 (2/4/6 层 × 5/10/30/100 件数量档、超 100×100mm 面积加收、阻焊颜色/表面工艺 HASL·ENIG·OSP/板厚/交期加急系数) 输出总价与单价估算。calculate_smt_placement_clearance: SMT 贴片机吸嘴碰撞与高器件净空分析器——分析 H ≥ 4.0mm 高大器件与相邻矮件 (0402/0603) 的吸嘴下压净空禁布区 (≥ 2.0mm),按由矮到高输出分层贴装优先级序列 (IPC-SM-782 / OpenPnP)。calculate_creepage_isolation_slot: 高压安规防爬电隔离铣槽计算器——依据 IPC-2221B Table 6-1 与 IEC 62368-1 评估高低压导体表面间距,当爬电距离不足时自动规划贯通空气隔离铣槽 (端点/槽宽/绕行等效爬电扩展)。analyze_impedance_tolerance: 多层板特征阻抗制造公差与灵敏度分析器——对标 Polar SI9000 模型评估介质厚度 (±10%)、线宽 (±10%)、铜厚 (±15%)、Er (±5%) 公差叠加下的 Zmin/Zmax 与偏导灵敏度,核准 ±10% 目标容限合格率。evaluate_material_cti_creepage: 基材相对漏电起痕指数 CTI 与安规爬电评定器——依据 IEC 62368-1 Table 25 与 IPC-2221B 划分材料组别 (Group I ≥600V 至 Group IIIb),在污染等级 1/2/3 下核算爬电安全裕量并给出高 CTI 基材升级建议。calculate_wave_solder_orientation_audit: SMT 底面元件波峰焊排布朝向角与阴影效应审计器——依据 IPC-7351B Section 3.1.4 与 SMTA 规范审计片式无源件垂直于波峰流向 (防立碑虚焊)、SOIC 芯片平行于流向 (防密集引脚连锡桥连)、以及高器件下风向 3xH 阴影禁布区。calculate_press_fit_hole_compliance: 汽车与工业无焊压接鱼眼端子过孔合规分析器——依据 IPC-9797 与 IEC 60352-5 标准核准无焊压接引脚成品孔径 (标准 0.94mm~1.09mm) 与孔壁铜厚 (≥25μm),估算压入力与保持力防孔壁分层与振动脱落。audit_fab_capabilities: PCB 制造厂工艺极限能力核查器——对接 JLCPCB (标准/高精阶梯)、PCBWay、OSH Park 实际产线工艺能力库,严格核查最小线宽/线距、最小过孔钻孔/焊盘环宽、板厚纵横比 (Aspect Ratio) 与最小铣槽槽宽,防止工程确认 (EQ) 拒单与返修。validate_manufacturing_package: 无头自动化制造交付包完整性与防篡改核验器——自动化核查 5 层基础 Gerber、Excellon 数控钻孔、BOM 物料清单与 CPL 贴片坐标文件的完整性与非空状态,校验位号一致性并自动生成全包 SHA-256 防篡改验签总账,支撑 CI/CD 无人值守发布流水线。audit_ipc6012_class_compliance: 刚性印制板 IPC-6012E 与 IPC-A-600J Class 1/2/3 验收准则审计器——逐项核查外层与内层焊盘环宽、Class 3 严苛零破出 (0° breakout) 硬门禁、通孔孔壁平均电镀铜厚 (Class 3 ≥25μm) 与最薄点铜厚、蚀刻线宽蚀损率以及阻焊桥绿油桥宽,生成军工/医疗/汽车电子可靠性合规报告。optimize_smt_feeder_setup: 工业 SMT 贴片机飞达供料器料车排产优化器——基于松下 NPM / 富士 NXT / 西门子 ASM 标准 80 槽料车,应用成组技术 (GT) 规划常驻通用料块 (100nF、10k 免换线固定料槽)、按贴装频次将高密度物料聚合于悬臂中心以最小化龙门行进时间,并预测各料卷接料耗尽瓶颈 (IPC-9851)。calculate_copper_pour_current_drop: 大面积多边形覆铜与电源铜排直流压降与电流密度分析器——依据 IPC-2152 Section 5.0 与 IEC 60092-352 计算复杂几何多边形覆铜的方块电阻、直流内阻、IR 压降与焦耳热耗,校核过孔阵列/开槽颈缩区的电流密度上限 (≤35.0 A/mm²),防止高载流大功率电源板铜箔碳化起泡分层。audit_component_msl_floor_life: 贴片器件潮湿敏感度等级 (MSL) 开袋车间暴露寿命与除湿烘烤方案审计器——依据 JEDEC J-STD-033D 与 IPC-M-109 规范跟踪高密度塑封芯片 (BGA/QFN/CSP/TQFP) 在产线环境温湿度下的暴露时间,精准识别超期芯片并生成标准化烘烤工单 (125°C 高温或 40°C 低湿干燥),从源头杜绝 260°C 回流焊“爆米花”开裂分层。calculate_effective_capacitance: MLCC 真实工作容值求解器——标签值不是电路里的值。按直流偏置 (主导项,额定电压下普遍损失 35~65%,小封装更差)、交流信号幅度、温度系数、对数老化四大机制连乘降额,再叠加器件容差,输出完整因子栈便于定位最大杀手。Class I (C0G/NP0) 正确短路为仅容差。可传入数据手册实测保留率 (Murata SimSurfing / TDK SEAT) 替换区间估计并标记confidence="measured"。size_hold_up_capacitor: 掉电保持 (Brown-out Ride-through) 储能电容求解器——以有效容值而非标签值解 C = I·t/ΔV,再除以窗口内最差偏置点的保留率,给出实际必须采购的标签容值。同时报告达成保持时间、缺口与所需标签值。按标签值选型就是「设计通过、实测 0.85ms 掉电」的根因。analyze_rc_filter_effective: RC 滤波器有效截止频率分析器——用器件实际容值而非标签值计算截止频率。标称 1kHz 的滤波器若用偏置下只剩 40% 容值的 X5R,实际截止在 2.5kHz。输出标称/实际截止、漂移百分比与成因,并显式区分工况降额与器件容差两个独立误差源。analyze_divider_tolerance: 分压器容差带分析器——标称值不是规格书。同时给出精确最差情况 (四角枚举,因传输函数对每个电阻单调故为精确解) 与真实统计带 (一阶灵敏度传播)。关键点:分压输出是两个随机变量的商,不能直接对百分比容差做 RSS (TI SNVA112 明确指出),必须先用解析偏导转成电压贡献再 RSS。含 TCR、按 √时间 缩放的老化漂移、电源容差与配对电阻比值容差,并指出哪个电阻主导误差预算。analyze_resistor_error_budget: 单只电阻寿命末期阻值带分析器——四项误差模型 (值容差 + 温度系数 + 寿命漂移 + 配对网络比值容差)。同时给出 RSS 带与线性最差带,并指出主导项:买 ±0.1% 厚膜电阻去修精度问题往往无效,因为其 200ppm/°C 的 TCR 在 60°C 温漂下已贡献 1.2%。寿命漂移按时间比的平方根缩放 (随机游走,不是斜坡)。solve_feedback_divider: 反馈分压电阻对精确求解器——给定稳压器/比较器目标输出与基准电压,求 R1/R2 并报告 E96 取整带来的静态误差。理想电阻对几乎从不存在于 E96 序列中,该取整误差是系统性偏差而非容差:每块板都一样的偏,必须与容差带分开预算。calculate_high_speed_skin_depth_loss: 1GHz~50GHz 高速集肤效应深度与铜箔表面粗糙度附加损耗计算器——依据 IPC-4562B 与 IPC-2141A,应用 Hammerstad-Jensen 粗糙度球堆积模型,核算标准 ED/VLP/HVLP 铜箔微观齿深造成的交流电阻倍增与高频插入损耗 (dB/inch),给出 PCIe 5.0/6.0 与 112G PAM4 铜箔选型建议。calculate_bare_board_test_parameters: 裸板飞针/针床电测试规范配方规划与介质击穿安全审计器——依据 IPC-9252B 建立 Class 1/2/3 导通测试门限 (信号线 ≤10Ω、大电源 ≤2Ω) 与高阻绝缘测试电压 (50V/100V/250V DC),针对 <0.100mm 细间距走线与敏感射频网络自动降额测试电压至 100V 防电弧微击穿损伤。gate_production_readiness: 一键工业投产门禁——输入自然语言需求,串起合成→布局→布线→9 层制造包(铜皮/阻焊/丝印/钢网/钻孔)+ BOM + CPL→制造校验,直接返回单一production_ready判定与阻断缺陷清单。CI 或代工厂不必读五份报告即可决定 go/no-go;阻焊桥宽度按 0.08mm 工艺极限实测,低于则阻断。
暴露的资源 (Resources)
支持通过 circuit:// URI 直接将规范加载到大模型上下文,无需执行额外工具:
circuit://specs/netlist-schema: 完整的网表 Draft-07 JSON Schema。circuit://specs/cpl-standard: 嘉立创 SMT 坐标规范与封装偏角补偿表。circuit://specs/ipc-dfx-rules: IPC-2152 导线载流/温升与 IPC-2221 电气间隙/爬电距离硬规则。circuit://blocks/catalog: 24 大电路积木的元器件、引脚与网络全量清单。circuit://rules/jlc-smt: 嘉立创四层板叠层 (JLC04161H) 与生产物理规则。circuit://examples/esp32c3-minimal: ESP32-C3 极简温湿度节点参考网表。circuit://examples/stm32f103-controller: STM32F103 工业控制板参考网表。circuit://examples/rp2040-dualcore: RP2040 双核传感器扩展板参考网表。
快捷工程 Prompt (Slash-Commands)
/design_hardware_project: 全流程硬件设计指令(积木匹配 → 阻抗计算 → BOM核算 → 网表校验)。/audit_schematic_netlist: Senior EE 硬件体检审查指令(去耦电容亲和性、差分对等长、Type-C 下拉阻抗)。/optimize_bom_cost: PCBA 降本优化指令(分析扩展库物料并推荐免换料费的基础库替代料)。/audit_industrial_compliance: 工业与量产级 DFX 审查指令(核查 IPC-2152 载流温升、IPC-2221 电气间隙、DFT 测试点覆盖率与 TVS 端口抗浪涌防护)。
数据契约 (Contracts)
specs/netlist_schema.json— 网表 JSON Schemaspecs/cpl_standard.md— 嘉立创 SMT 坐标规范与封装偏角补偿表examples/— STM32F103 / ESP32-C3 / RP2040 参考网表,CI 强制校验其符合 Schema
测试与 CI
pytest tests/ -q # 240 passedCI 在 ubuntu-latest + windows-latest × Python 3.10/3.11/3.12 上跑全量测试,
并额外做两件事:校验 examples/ 全部符合 Schema、离线跑通 README 里的快速上手命令。
范围与路线图 (Scope & Roadmap)
本仓库包含:硬件 DSL 与积木库、立创实时选型客户端、网表/CPL 数据契约、标准 MCP Server、REST 交互接口。
暂不包含:多层板物理布局与布线求解、参数化 3D 壳体布尔几何、Senior EE 物理规则门禁。 这些是上游编译器的高级能力,仍在开发中;本仓库通过稳定的数据契约与客户端接口与其对接, 契约本身是公开且版本化的。
路线图:
积木库 + 确定性映射 + 单元测试
立创实时选型客户端(重试/缓存/降级)
JSON Schema + 三份参考样例 + CI
工业级实用积木(RS485 / CAN / TP4056 锂电)
标准 MCP Server 实现(纯标准库)
中英双语文档与官方门面 (Banner + Demo GIF)
更多传感器积木(AHT20 温湿度 / MPU6050 六轴)
支持自定义第三方芯片引脚分配映射规则
工业 DFX 审查引擎(DFM/DFA/DFT/DFC)+ IPC-2152 / IPC-2221 规则库
EDA 与制造导出(KiCad 网表、嘉立创 BOM/CPL)
参数化设计方程求解(E96 分压、LDO 热设计、I2C 上拉、RC 滤波)
五颗主流 MCU 引脚规则(ESP32-S3 / ESP32-C3 / STM32F103 / RP2040 / STC89C52RC)
串行电源链自动装配(Type-C → 防反接 → π 滤波 → LDO),MCU 电源/地引脚自动绑定
无源网络容差分析(最坏情况 + 统计 RSS、MLCC 直流偏置降额、保持电容选型)
MCP 结构化输出双通道(
content+structuredContent,6 个工具声明outputSchema)多层板布局与布线求解器
参数化 3D 壳体生成
支持的主控
芯片 | 封装 | 供电 | 立创料号 | 备注 |
ESP32-S3 | ESP32-S3-WROOM-1 | 3.3 V | C2913202 | I2C=IO8/IO9,UART0=IO43/IO44,TWAI=IO4/IO5,strapping IO0/3/45/46 保留 |
ESP32-C3 | ESP32-C3-WROOM-02 | 3.3 V | C2934560 | 11 个可用 GPIO,无 SWD(JTAG/USB-JTAG),引脚不足时明确报 |
STM32F103C8T6 | LQFP-48 | 3.3 V | C8734 | CAN 走重映射 PB8/PB9,把 PA11/PA12 留给 USB |
RP2040 | QFN-56 | 3.3 V | C2040 | I2C0=GPIO4/5,UART0=GPIO0/1 |
STC89C52RC | LQFP-44 | 5.0 V | C8769 | 无硬件 I2C(P1.0/P1.1 软件模拟),无 CAN |
引脚数据全部来自厂商数据手册与官方设计指南,每条规则里都标注了出处。
合成器能识别的芯片必须都能放置——两者脱节曾导致 MCU 从未被放上板子,
而管线静默通过;tests/test_mcu_placement_and_power_chain.py 锁死这一点。
参与贡献 (Contributing)
最欢迎的贡献是新增经过核验的电路积木:带上数据手册依据的引脚定义与立创料号, 并补上对应单测即可提 PR。Issue 里也欢迎贴出你希望支持的芯片型号。
名称说明 (Naming)
"CircuitAgent" 是一个较通用的名字,社区中已有若干同名或近名的项目(例如
singularguy/CircuitManus 内部的 CircuitAgent 类、Circuit-LLM/circuit-sdk
的 CircuitAgent 基类、以及高能物理领域的 PhEDEx CircuitAgent)。
本项目与它们没有任何关系,也不主张该名称的独占权。如果你的项目或商标与此冲突,
欢迎开 Issue 告知,我们可以协商改名。
⭐ 关注与支持 (Star History)
如果 CircuitAgent 对你的硬件开发或制造流程有所帮助,欢迎点个 Star 支持项目持续演进!
许可证与隐私 (License & Privacy)
许可协议:MIT License © 2026 sora
隐私政策:PRIVACY.md(零遥测、100% 本地运算、数据归用户所有)
Available Tools
80 toolsanalyze_divider_toleranceARead-onlyIdempotent
Tolerance band of a resistor divider — nominal is not a specification. Reports BOTH the exact worst case (corner enumeration, valid because the transfer function is monotonic in each resistor) and the realistic statistical band (first-order sensitivity propagation, NOT naive RSS of percentage tolerances — the output is a quotient of random variables, so RSS-ing the percentages directly is invalid; TI SNVA112 states this explicitly). Includes TCR, sqrt-of-time life drift, supply tolerance, and matched-pair ratio tolerance, and names which resistor dominates the error budget so you fix the right part.
| Name | Required | Description | Default |
|---|---|---|---|
| v_in | Yes | Input voltage to the divider, in volts. | |
| r1_ohm | Yes | High-side resistor (input to midpoint), in ohms. | |
| r2_ohm | Yes | Low-side resistor (midpoint to ground), in ohms. | |
| delta_temp_c | No | Temperature excursion from 25 °C that the design must hold accuracy over. | |
| tcr_ppm_per_c | No | Temperature coefficient in ppm/°C. Thick film is ~200, thin film ~25, metal foil ~2. | |
| tolerance_pct | No | Resistor value tolerance in percent at 25 °C. | |
| life_drift_pct | No | Life drift percent over the datasheet's stated hours. Scales with sqrt of the time ratio. | |
| v_in_tolerance_pct | No | Supply tolerance in percent, treated as an independent contribution. | |
| ratio_tolerance_pct | No | Ratio tolerance for a matched pair in one package. Replaces both absolute tolerances — the biggest free accuracy win. |
Output Schema
| Name | Required | Description |
|---|---|---|
| v_in | Yes | Input voltage to the divider. |
| notes | Yes | Human-readable findings: which term dominates, what to change, and any caveat. |
| method | Yes | Which methods were used, so the numbers are auditable. |
| r1_ohm | Yes | High-side resistor. |
| r2_ohm | Yes | Low-side resistor. |
| v_out_max | Yes | Statistical upper bound (sensitivity RSS). |
| v_out_min | Yes | Statistical lower bound (sensitivity RSS). |
| error_rss_pct | Yes | Statistical error band as a percentage of nominal. |
| v_out_nominal | Yes | Output at nominal resistor values. |
| sensitivity_r1 | Yes | ∂V_out/∂R1, in volts per ohm. |
| sensitivity_r2 | Yes | ∂V_out/∂R2, in volts per ohm. |
| error_worst_pct | Yes | Worst-case error as a percentage of nominal. |
| v_out_worst_max | Yes | Exact worst-case upper bound (corner enumeration). |
| v_out_worst_min | Yes | Exact worst-case lower bound (corner enumeration). |
| dominant_resistor | Yes | Which resistor contributes more error — fix this one first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description is free to add deep methodological context: corner enumeration validity via monotonicity, why naive RSS of percentages is invalid, the TI SNVA112 citation, and the inclusion of TCR/life drift/supply/ratio tolerance. This is exactly the value-add context annotations cannot carry.
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?
It is a single dense paragraph but front-loads the core purpose and then justifies the two methods. Every clause is technical and earns its place for a domain expert, though the parenthetical heavy phrasing slightly reduces scannability.
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 an output schema present, return values needn't be explained, and the description fully covers methodology and what is included. The main remaining gap is its silence on the specific sibling to choose instead, which is only partially mitigated by the strong method explanation.
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 all nine parameters are documented in the schema, making 3 the baseline. The description does mention the contribution categories (TCR, sqrt-of-time drift, supply, matched-pair ratio) which loosely maps to parameters, but adds no syntax or format detail beyond what the schema already states.
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 states a specific computational target (worst-case and statistical tolerance band of a resistor divider) and even explains why each method is valid. It clearly distinguishes its output from a naive nominal answer, but never names a sibling tool (e.g., analyze_resistor_error_budget or solve_feedback_divider) to route the agent away from them.
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 only implied: 'nominal is not a specification' signals when you'd want it, but there is no explicit when-to-use/when-not or named alternative. Given the presence of close siblings like analyze_resistor_error_budget, this leaves the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_enig_platingARead-onlyIdempotent
ENIG/ENEPIG plating thickness and black-pad (interfacial nickel corrosion) risk auditor per IPC-4552A and IPC-4556: verifies gold 0.050.20 μm, nickel 3.06.0 μm, phosphorus 710 wt%, and ENEPIG palladium 0.100.30 μm windows; scores galvanic black-pad susceptibility from phosphorus content, gold over-deposition, rework cycles, and process type, and flags gold >0.25 μm solder embrittlement.
| Name | Required | Description | Default |
|---|---|---|---|
| finish_type | No | Surface finish: 'enig' (default) or 'enepig'. | enig |
| rework_cycles | No | Number of prior soldering/rework thermal excursions (default: 0). | |
| gold_thickness_um | No | XRF immersion-gold thickness in μm (default: 0.08). | |
| phosphorus_wt_pct | No | Nickel deposit phosphorus content in wt% (default: 8.5). | |
| soldering_process | No | Assembly process: 'reflow' (default), 'wave', or 'hand'. | reflow |
| nickel_thickness_um | No | XRF electroless-nickel thickness in μm (default: 4.0). | |
| palladium_thickness_um | No | ENEPIG palladium barrier thickness in μm (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description does add real analytic context beyond that — the acceptance windows, the factors that drive the black-pad susceptibility score, and the gold >0.25 μm embrittlement flag — but says nothing about how results are reported or whether the output is advisory versus a hard pass/fail gate. With no output schema, a description at this level of detail could do more on the reporting side.
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?
A single dense sentence, but it is front-loaded with the tool's identity and then enumerates thresholds and scoring inputs in a logical order. Semicolon-heavy and slightly run-on, though every clause carries information; little could be cut without losing thresholds.
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 7-parameter read-only analytic tool with no output schema, the description covers the domain standards, the numeric windows, the risk factors scored, and the embrittlement flag — enough for correct invocation. The gap is the return shape: 'scores' and 'flags' are named but the agent cannot anticipate the result structure, and with no output schema that burden falls here.
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 defaults on six of seven parameters, so the baseline is 3. The description exceeds that by giving the acceptance windows for four of those parameters (gold 0.05~0.20 μm, nickel 3.0~6.0 μm, phosphorus 7~10 wt%, palladium 0.10~0.30 μm), which tells the agent what values are in-spec rather than just what units to supply.
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?
States a specific verb and resource — 'ENIG/ENEPIG plating thickness and black-pad risk auditor' — plus the governing standards (IPC-4552A, IPC-4556). No sibling tool in the list covers surface-finish/black-pad analysis, so the agent can route to it unambiguously.
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 purpose implies the usage context (qualifying ENIG/ENEPIG plating and screening black-pad risk), but there is no explicit when-to-use, when-not-to-use, or named alternative among siblings. The agent must infer that this applies to finish qualification rather than, say, fab capability auditing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_impedance_toleranceARead-onlyIdempotent
Analyze PCB characteristic impedance manufacturing tolerance window and sensitivities per IPC-2141A and Polar SI9000 models: evaluates dielectric height (+-10%), trace width (+-10%), copper thickness (+-15%), and Er (+-5%) cumulative variations, calculating Zmin, Zmax, dZ/dW, dZ/dH, and yield within +-10% target.
| Name | Required | Description | Default |
|---|---|---|---|
| dielectric_er | No | Substrate dielectric constant (default: 4.2 for FR-4). | |
| target_z0_ohms | No | Target characteristic impedance (default: 50.0). | |
| trace_width_mm | No | Nominal trace width in mm (default: 0.38). | |
| copper_thickness_mm | No | Nominal copper thickness in mm (default: 0.035 for 1oz). | |
| width_tolerance_pct | No | Trace width tolerance percentage (default: 10.0). | |
| dielectric_height_mm | No | Nominal dielectric height in mm (default: 0.20). | |
| height_tolerance_pct | No | Dielectric height tolerance percentage (default: 10.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered by structured data. The description adds that the tool computes cumulative worst-case Zmin/Zmax, sensitivity derivatives and yield, which is meaningful behavior beyond the annotations, but it says nothing about precision limits, model assumptions, or failure cases.
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?
A single dense sentence that front-loads the purpose and standards before the tolerance and return-value detail. Every clause carries information, though the length makes it slightly heavy for one sentence.
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 no output schema, describing the produced quantities (Zmin, Zmax, dZ/dW, dZ/dH, yield) is exactly the burden the description must carry, and it does so along with the governing models and the variation assumptions. An agent can invoke this correctly without opening other artifacts.
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, but the description adds real information the schema does not: copper thickness is varied at a fixed +-15% and Er at a fixed +-5%, neither of which exists as a settable parameter, while width and height tolerances map to width_tolerance_pct and height_tolerance_pct. That tells the agent which knobs are adjustable versus hard-coded.
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?
States a specific verb and resource ('Analyze PCB characteristic impedance manufacturing tolerance window and sensitivities') and names the governing standards (IPC-2141A, Polar SI9000), which clearly separates it from nominal-impedance siblings like calculate_trace_impedance or calculate_pcb_stackup_impedance. It stops short of naming those siblings explicitly, so the differentiation is inferred rather than stated.
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?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as calculate_trace_impedance or calculate_differential_skew. The only usage signal is the implied context that this is a tolerance/variation study, which an agent must infer from the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_ionic_contaminationARead-onlyIdempotent
Post-clean ionic contamination (ROSE) and ion chromatography compliance analyzer per IPC-CH-65 and IPC-TM-650 2.3.25/2.3.28: compares NaCl-equivalent loading against class limits (1.56 μg/cm² standard, 1.20 Class 3), flags per-species halide carryover (chloride 0.70, bromide 0.54 μg/cm²), and scores dendrite/CAF risk from bias voltage and conductor pitch.
| Name | Required | Description | Default |
|---|---|---|---|
| target_class | No | IPC reliability class: 'Class 1', 'Class 2' (default), or 'Class 3'. | Class 2 |
| bias_voltage_v | No | Largest sustained DC bias between adjacent conductors (default: 5.0). | |
| board_area_cm2 | No | Total extracted board area in cm² (default: 100.0). | |
| species_ug_cm2 | No | Optional ion chromatography per-species results in μg/cm² (chloride, bromide, fluoride, nitrate, sulfate, weak_organic_acid). | |
| min_conductor_gap_mm | No | Smallest biased conductor spacing in mm (default: 0.20). | |
| rose_measured_ug_cm2 | Yes | Measured NaCl-equivalent loading from the ROSE tester in μg/cm². |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, closed-world read, so the description's value is domain behavior — and it delivers: it discloses the actual comparison thresholds (1.56 μg/cm², 1.20 Class 3), the per-species halide limits (chloride 0.70, bromide 0.54), and that risk is derived from bias voltage and conductor pitch. It does not describe the shape or scale of the returned risk score, which keeps it below a 5.
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?
A single front-loaded sentence that opens with the verb and standards before enumerating outputs; every clause carries information. It is dense with parenthetical thresholds, which costs some readability but wastes no 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 a 6-parameter tool with a nested species object and no output schema well: inputs, standards, and computed judgments are all accounted for. The remaining gap is that without an output schema the description should say what the analysis returns (pass/fail, risk score range), which it leaves implicit.
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 earns above that by explaining what the parameters actually feed — that bias_voltage_v and min_conductor_gap_mm drive the dendrite/CAF model, that target_class selects the applicable limit, and that species results are for halide carryover checks. It adds interpretive meaning rather than restating defaults.
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?
Names a specific verb and resource (post-clean ionic contamination / ROSE + ion chromatography compliance analysis) and enumerates the three concrete things it produces: class-limit comparison, per-species halide flagging, and dendrite/CAF risk scoring. No sibling tool in the list touches contamination or cleanliness, and the IPC standard citations cement the domain uniquely.
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 phrasing 'Post-clean ... compliance analyzer' and the standards cited, so an agent can infer it belongs after a cleaning step and before conformance sign-off. However, it never states when to prefer it, what prerequisites (ROSE measurement must already exist) are needed, or what to do when only species data is available without a ROSE reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_power_treeARead-onlyIdempotent
Analyze system-level power distribution architecture, load current budgets (typical & peak mA), regulator dropout headroom, and LDO thermal dissipation / junction temperature estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (from synthesize_circuit output). | |
| ambient_temp_c | No | Operating ambient temperature in °C (default: 25.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the analytical scope (dropout headroom, thermal dissipation) but says nothing about failure modes, required regulator/chip data, or how partial or missing module data is handled. Some added value, but thin beyond what annotations provide.
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?
A single dense sentence with no filler; the analytical outputs are front-loaded after the primary verb. It is slightly run-on with no sentence breaks separating the four analysis dimensions, which caps it below a 5.
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 read-only analysis tool with no output schema, the description conveys the main result categories (current budgets in mA, dropout headroom, junction temperature), which is enough to set expectations. It stops short of describing result structure or handling of incomplete module/netlist input, leaving a small gap.
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%, and every parameter (modules, netlist, ambient_temp_c with its default and unit) is documented in the schema itself. The description hints at ambient temperature via the junction-temperature calculation but adds no format, unit, or structural detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb ('Analyze') plus a concrete resource ('system-level power distribution architecture') and enumerates the exact quantities computed: load current budgets in mA, regulator dropout headroom, and LDO thermal/junction-temperature estimates. No sibling tool in the list performs power-tree analysis, so these enumerated outputs implicitly separate it from the many calculate_* trace/thermal/clearance utilities.
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 gives no when-to-use guidance, no prerequisites, and no alternatives. The dependency on synthesize_circuit is only visible in the input schema's parameter descriptions, not in the description itself, so an agent gets no routing or sequencing help from this text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_rc_filter_effectiveARead-onlyIdempotent
RC filter cutoff computed from the capacitance the part actually has, not the marked value. A 1 kHz filter built with a 10 µF X5R part that delivers 4 µF under bias cuts at 2.5 kHz — the nominal calculation is not wrong, it answers a different question. Returns nominal vs actual cutoff, the drift percentage, and the retention that caused it.
| Name | Required | Description | Default |
|---|---|---|---|
| r_ohm | Yes | Series resistance in ohms. | |
| rated_v | Yes | Capacitor rated DC voltage. | |
| ambient_c | No | Operating ambient in °C. | |
| applied_v | Yes | DC bias across the capacitor, in volts. | |
| case_size | No | EIA case code. | 0805 |
| dielectric | No | EIA dielectric. | X5R |
| marked_c_uf | Yes | Marked capacitance in µF. | |
| hours_in_service | No | Expected service life in hours. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | Human-readable findings: which term dominates, what to change, and any caveat. |
| drift_pct | Yes | Percentage the cutoff moved; positive means it went higher. |
| confidence | Yes | Trust level of the underlying capacitance figure. |
| resistance_ohm | Yes | Series resistance used. |
| actual_cutoff_hz | Yes | Cutoff computed from the capacitance the part really has. |
| nominal_cutoff_hz | Yes | Cutoff computed from the marked capacitance. |
| retention_fraction | Yes | effective / marked. |
| tolerance_included | Yes | Whether part tolerance was folded in (default: no, to isolate bias drift). |
| marked_capacitance_uf | Yes | Marked capacitance used. |
| effective_capacitance_uf | Yes | Effective capacitance at operating conditions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds real behavioral context by revealing the underlying model (voltage-bias retention affects actual capacitance) and what the result contrasts against. It does not, however, disclose model fidelity or accuracy limits, which matters for an engineering estimate.
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?
Three sentences, purpose front-loaded, no filler. The middle sentence is an illustrative example rather than a directive, so it is slightly longer than strictly necessary, but it earns its place by conveying the magnitude of the derating effect.
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 an output schema present, the return-value sentence is partly redundant, and all eight parameters are schema-documented, so an agent has what it needs to call the tool. The remaining gap is guidance on precision/assumptions of the derating model, which is a minor omission for this scope.
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% across eight parameters, so the schema already defines r_ohm, marked_c_uf, rated_v, applied_v, dielectric and the rest. The description only indirectly implies the bias and dielectric inputs through its example and adds no syntax, units, or defaulting guidance beyond the schema. Baseline 3 applies.
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 opening clause names a specific computational resource (RC filter cutoff) with an explicit scope qualifier: it uses the capacitance the part actually has, not the marked value. The contrast with 'the nominal calculation' makes it distinguishable from the sibling that only returns retention (calculate_effective_capacitance) or generic parametric solvers.
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 X5R-under-bias anecdote implies the use case (when DC bias derating materially shifts cutoff), but it never states 'use this when... / use X instead when...' and names no sibling tool. The agent must infer the selection rule from the narrative rather than being told it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_resistor_error_budgetARead-onlyIdempotent
End-of-life resistance band for one resistor from the four-term error model: value tolerance, temperature coefficient, life drift, and (for matched networks) ratio tolerance. Reports both the RSS band and the linear worst-case band, and names the dominant term — because buying a ±0.1% thick-film part to fix an accuracy problem does nothing when its 200 ppm/°C TCR already contributes 1.2% over a 60 °C excursion. Life drift scales with sqrt of the time ratio (random walk, not a ramp).
| Name | Required | Description | Default |
|---|---|---|---|
| nominal_ohm | Yes | Marked resistance in ohms. | |
| delta_temp_c | No | Temperature excursion from 25 °C. | |
| tcr_ppm_per_c | No | Temperature coefficient in ppm/°C. | |
| tolerance_pct | No | Value tolerance in percent. | |
| life_drift_pct | No | Life drift percent over life_hours_specified. | |
| life_hours_required | No | The service life the design must meet. | |
| life_hours_specified | No | The hours the datasheet's life figure refers to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dominance | Yes | |
| value_band | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so safety is covered. The description adds real behavioral value beyond that: it reports both an RSS band and a linear worst-case band, names the dominant term, and discloses that life drift scales with sqrt of the time ratio rather than linearly — a non-obvious modeling choice an agent would otherwise mis-assume.
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?
Front-loaded with the computation and its inputs in the first sentence, then outputs, then a modeling caveat. The thick-film TCR anecdote is longer than strictly necessary but earns its place by motivating the dominant-term output; only minor trimming would improve it.
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 annotations covering safety, a 100%-covered seven-parameter schema, and an output schema, the description supplies exactly the remaining context: which four terms feed the model, what the two output bands mean, how drift is scaled, and which term dominates. Nothing needed to invoke or interpret the tool 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 earns a bump by clarifying the relationship the schema only names individually: life_drift_pct is scaled by sqrt(life_hours_required/life_hours_specified) as a random walk, and TCR contribution is tied to temperature excursion — semantics not captured by the flat per-field 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?
States a specific computation — the end-of-life resistance band for a single resistor from a four-term error model — and enumerates the four terms (value tolerance, TCR, life drift, ratio tolerance). This is clearly separable from siblings like analyze_divider_tolerance or analyze_impedance_tolerance, which operate on networks/impedance rather than a single resistor's error stack.
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 rather than stated: the tool is scoped 'for one resistor' and mentions 'matched networks' for ratio tolerance, and the ±0.1% thick-film example signals the diagnostic intent. However, no sibling alternative is named and there is no explicit when-to-use/when-not guidance relative to analyze_divider_tolerance or analyze_impedance_tolerance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assess_drop_shock_reliabilityARead-onlyIdempotent
JEDEC JESD22-B111 board-level drop shock assessor (1500 G / 0.5 ms half-sine, 30 drops): computes per-component inertial joint loads (F=ma), flags heavy components in board-corner high-strain flexure zones, estimates board natural frequency (border-ring stiffener aware), and prescribes underfill / center-migration / boss-fastening mitigations.
| Name | Required | Description | Default |
|---|---|---|---|
| test_g | No | Peak shock level in G (default: 1500 per JESD22-B111). | |
| components | No | [{ref, mass_g, x_mm, y_mm, joint_count}] coordinates relative to board center. | |
| board_mass_g | No | Total assembled board mass in g (default: 60.0). | |
| board_width_mm | No | PCB width in mm (default: 80.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). | |
| has_border_ring_stiffener | No | True when a mid-frame/border ring anchors the board edge (default: False). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive/non-open-world, so the bar is lower. The description adds real substance beyond that: the methodology (F=ma inertial loading), the corner high-strain heuristic, stiffener-aware frequency estimation, and that it emits mitigation prescriptions (underfill, center-migration, boss-fastening). It does not describe the result structure, but it is an assessor with no output schema, so this is a solid contribution.
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?
A single dense sentence, but it is front-loaded with the standard and test condition, then enumerates computations and outputs in a logical order. Every clause carries information; it is packed rather than padded, though the density makes it slightly hard to scan.
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 6-parameter analytical tool with no output schema, the description does well: it names the standard, the loading model, and the categories of output (flags, frequency estimate, mitigation prescriptions), which compensates for the missing output schema. Minor gaps remain around result formatting and whether to supply the components array, but nothing essential 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% and every parameter is documented in the schema, so the baseline of 3 applies. The description adds only light semantic context — that a border-ring stiffener affects the frequency model and that the standard drives the shock defaults — without elaborating on the components array fields or coordinate semantics beyond what the schema states.
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?
States a specific verb (assess) plus the precise resource and standard: JEDEC JESD22-B111 board-level drop shock, with the exact test condition (1500 G / 0.5 ms half-sine, 30 drops). It enumerates the actual computations (inertial joint loads, corner-strain flagging, natural frequency, mitigations), making it clearly distinct from siblings like estimate_solder_joint_thermal_fatigue.
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 JEDEC reference and drop-shock framing imply the scenario (board-level drop qualification), but the description never says when to pick this versus related reliability tools such as estimate_solder_joint_thermal_fatigue or predict_assembly_mtbf, nor any exclusions. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_component_msl_floor_lifeARead-onlyIdempotent
Audit SMD plastic packages (BGA, QFN, CSP, TQFP) for moisture sensitivity level (MSL 1 to 6) and open-bag shop floor life per JEDEC J-STD-033D and IPC-M-109, flagging expired components and generating recommended dehumidification baking schedules (e.g. 125°C for 24h or 40°C for 192h) to prevent 260°C reflow popcorning defects.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict with refDes, package, and optional msl_level or exposed_hours. | |
| ambient_rh_pct | No | Workshop ambient relative humidity percentage (default: 55.0). | |
| ambient_temp_c | No | Workshop ambient temperature in °C (default: 25.0). | |
| exposed_hours_default | No | Default shop floor exposure hours since unsealing moisture barrier bag (default: 48.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered. The description adds real behavioral value beyond that: it flags expired components and emits concrete baking schedules (125°C/24h or 40°C/192h), telling the agent what output to expect and why it matters (popcorning prevention).
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?
A single front-loaded sentence with the action and target first, then standards and output details. It is dense but every clause (package list, standards, baking examples, defect rationale) carries information; only the popcorning tail could be trimmed.
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?
No output schema exists, so the description carries the burden of implying returns, which it does well by naming flagged components and baking schedules. Combined with a complete parameter schema and reconciled annotations, an agent has enough to call it correctly, though the output shape is only implied.
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 schema already documents modules, ambient_rh_pct, ambient_temp_c, and exposed_hours_default with defaults. The description adds no parameter-level detail (e.g. how msl_level or exposed_hours interact), so baseline 3 is appropriate.
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?
States a specific verb (Audit) and resource (SMD plastic packages for MSL and open-bag floor life), enumerating covered package types and standards. No sibling tool addresses moisture sensitivity, so an agent can unambiguously separate it from the fab/assembly/DFM auditors in the list.
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 conveys what the tool produces (flags expired components, generates baking schedules), which implies its usage context, but never states when to invoke it versus alternatives or any prerequisite (e.g. 'run after validating the package'). With no sibling naming the condition, guidance stays implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_fab_capabilitiesARead-onlyIdempotent
Audit PCB layout physical design rules against real-world fab house capabilities (JLCPCB standard/advanced, PCBWay, OSH Park): verifies min trace width, min clearance, min via drill, annular ring, aspect ratio, and slot width against published fab process limits to prevent CAM engineering query (EQ) rejections.
| Name | Required | Description | Default |
|---|---|---|---|
| fab_id | No | Fab house identifier: 'jlcpcb_standard' (default), 'jlcpcb_advanced', 'pcbway_standard', 'oshpark_standard'. | jlcpcb_standard |
| min_via_pad_mm | No | Smallest via outer pad diameter in mm (default: 0.450). | |
| min_via_drill_mm | No | Smallest via drill diameter in mm (default: 0.200). | |
| min_slot_width_mm | No | Smallest mechanical milled slot width in mm (default: 0.800). | |
| board_thickness_mm | No | Nominal PCB thickness in mm (default: 1.600). | |
| min_trace_width_mm | No | Smallest conductor trace width in mm (default: 0.127). | |
| min_trace_clearance_mm | No | Smallest conductor-to-conductor gap in mm (default: 0.127). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds domain context — checks are evaluated against vendor-published process limits and the negative outcome targeted is CAM EQ rejection — but does not describe the result shape (pass/fail per rule, margins) or what happens for unspecified defaults. Useful context, but not rich behavioral disclosure.
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?
A single dense sentence that front-loads the verb and resource, then lists fabs and checks before ending on the business justification. Every clause carries information and nothing is repeated from the schema, though the parenthetical vendor list and check enumeration make it long for one sentence.
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 no output schema, the description should establish scope; it does so by naming the rules audited and the fab profiles available. All 7 parameters are optional with documented defaults, and the description implies defaults are applied when omitted. The main gap is the absence of any indication of what the audit returns, but overall this is sufficient for an agent to call it 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% and each of the 7 parameters carries its own unit-labeled description with defaults, so the schema does the heavy lifting. The description adds marginal value by naming derived quantities (annular ring, aspect ratio) not present as inputs, but supplies no syntax, range, or interaction guidance beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise verb (audit), the resource (PCB layout physical design rules), and the reference set (fab house capabilities with named vendors JLCPCB standard/advanced, PCBWay, OSH Park), then enumerates the exact checks performed (trace width, clearance, via drill, annular ring, aspect ratio, slot width). This distinguishes it from generic siblings like calculate_ipc2221_clearance and audit_ipc6012_class_compliance, which target standards rather than vendor process limits.
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 stated goal — verifying against published fab process limits 'to prevent CAM engineering query (EQ) rejections' — conveys the scenario that motivates using it. However, it never explicitly contrasts with the standards-based sibling audits (IPC-2221 clearance, IPC-6012 class), so an agent must infer which audit applies. Implied usage rather than explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_industrial_dfxARead-onlyIdempotent
Execute an enterprise-grade DFX (DFM/DFA/DFT/DFC/EMC) compliance audit on a schematic netlist. Verifies optical fiducials (MARK points), ICT testpoint coverage on power/debug rails, IEC 61000-4-2 TVS surge protection on exposed ports (USB, RS485, CAN), reverse polarity protection, and SMT costs.
| Name | Required | Description | Default |
|---|---|---|---|
| netlist | Yes | Hardware netlist dictionary containing 'components' and 'connections'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds meaningful context by enumerating the specific checks performed and citing standards (IEC 61000-4-2), so an agent knows what findings to expect. It does not, however, describe output format or severity reporting.
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?
A single sentence with the action verb front-loaded, then a dense but purposeful enumeration of checked domains. Every clause earns its place, though the packed single-sentence structure could be slightly more scannable.
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 complex multi-domain audit with no output schema, the description compensates well by listing the verification domains, and annotations cover safety. The remaining gap is that it never indicates the shape of the result (violation list vs. pass/fail report).
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?
Only one parameter exists and schema description coverage is 100%, with the schema documenting the 'netlist' object's 'components' and 'connections' structure. The description adds no format or structural detail beyond what the schema already conveys, so the baseline of 3 applies.
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?
States a specific verb ('Execute... compliance audit') and resource ('schematic netlist'), then enumerates the exact check domains (fiducials, ICT coverage, TVS surge, reverse polarity, SMT costs). This clearly distinguishes it from the narrower validate_netlist, run_erc, and calculate_ict_testpoints siblings.
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 DFX audit framing, but there is no explicit when-to-use guidance, no mention of when it should be preferred over validate_netlist, run_erc, or analyze_power_tree, and no stated prerequisites. The agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_ipc6012_class_complianceARead-onlyIdempotent
Audit PCB physical and metallurgical design parameters against IPC-6012E and IPC-A-600J Class 1/2/3 acceptance criteria: evaluates external/internal annular rings, zero-breakout constraints for Class 3, PTH copper barrel plating thickness (avg >= 25μm for Class 3), etch conductor width reduction, and solder mask dam widths.
| Name | Required | Description | Default |
|---|---|---|---|
| target_class | No | Target IPC reliability class: 'Class 1', 'Class 2' (default), or 'Class 3'. | Class 2 |
| has_hole_breakout | No | Whether drill hole breakout from annular ring is observed (strictly 0° allowed in Class 3). | |
| breakout_angle_deg | No | Observed breakout angle in degrees (default: 0.0). | |
| avg_copper_barrel_um | No | Average electroplated copper thickness in PTH barrels in μm (default: 22.0). | |
| min_copper_barrel_um | No | Minimum thin-point PTH copper plating thickness in μm (default: 19.0). | |
| min_solder_mask_dam_mm | No | Smallest solder mask dam width between adjacent exposed pads in mm (default: 0.090). | |
| external_annular_ring_mm | No | Smallest external annular ring width in mm (default: 0.125). | |
| internal_annular_ring_mm | No | Smallest internal annular ring width in mm (default: 0.100). | |
| conductor_width_reduction_pct | No | Conductor width reduction percentage from etch defects (default: 5.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds substantive behavioral context by naming the specific design parameters evaluated and key Class 3 thresholds (zero breakout, avg copper >= 25μm), though it omits how results are reported.
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?
A single front-loaded sentence that packs the purpose and evaluated criteria without filler. It is dense but every clause earns its place; minor run-on quality keeps it from a 5.
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 9 optional parameters, full schema coverage, and rich annotations, the description is complete enough to call correctly. It clearly enumerates what gets audited, though it does not describe the return format, which is a minor gap for an audit tool with no output schema.
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 adds meaning beyond the schema by tying parameters to acceptance thresholds, e.g., 'zero-breakout constraints for Class 3' and 'avg >= 25μm for Class 3', which clarify how inputs are evaluated.
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?
States the specific verb 'Audit' and resource 'PCB physical and metallurgical design parameters against IPC-6012E and IPC-A-600J Class 1/2/3 acceptance criteria', distinguishing it from sibling audits like calculate_ipc2221_clearance and audit_fab_capabilities. An agent can tell exactly what standard and class scope it covers.
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: use for IPC-6012E/IPC-A-600J class compliance auditing of PCB design parameters. It does not explicitly name when to choose it over sibling audits or when not to use it, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_smt_tombstone_riskARead-onlyIdempotent
IPC-A-610G §8.3.2.9 / IPC-SM-782 SMT chip passive component thermal relief & tombstoning (Manhattan effect) risk auditor: checks thermal connection width symmetry between opposite pads on 0201/0402/0603/0805 passives, flagging direct solid plane connections without thermal relief spokes that create unbalanced wetting torque.
| Name | Required | Description | Default |
|---|---|---|---|
| components | No | List of passive component dicts ({ref, package, pad1_type, pad2_type, pad1_width_mm, pad2_width_mm}). | |
| default_trace_width_mm | No | Nominal signal trace width in mm (default: 0.20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, idempotent, non-destructive, and closed-world. The description adds useful domain behavior: it checks pad-width symmetry, targets 0201–0805 passives, and flags direct solid-plane connections lacking thermal relief spokes. It does not describe output severity or result format, but the core audit behavior is clear.
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 a single front-loaded sentence with no obvious filler, and the standards citation plus failure-mode naming are useful. It is dense but appropriately sized for a specialized audit tool.
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 specialized read-only audit tool with complete schema descriptions and clear annotations, the description gives enough domain context to understand the check. The main remaining gap is that no output schema exists and the return structure/severity detail is not specified.
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 adds context by tying the components to passive packages and pad-width symmetry, but it does not define acceptable pad_type values or explain precisely how default_trace_width_mm affects the audit.
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 states a specific audit purpose: SMT passive tombstoning risk, thermal relief symmetry, and unbalanced wetting torque. It is clearly distinguishable from sibling calculation and export tools by naming the exact failure mode and package scope.
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 strongly implied by 'risk auditor' and the described checks, so an agent can infer this is for SMT tombstoning review. However, it does not explicitly say when to use this versus related tools such as land-pattern or solder-paste calculations, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_supply_chainARead-onlyIdempotent
Audit BOM component multi-sourcing resilience (ISO 9001 supply chain audit), identifying single-source bottlenecks and mapping pin-compatible second-source drop-in replacements with LCSC cross-references.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds that the audit produces bottleneck identification and LCSC-cross-referenced drop-in mappings, but says nothing about cost, latency, or the shape of the returned findings.
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?
A single front-loaded sentence that leads with the verb and resource before attaching qualifiers. The parenthetical and trailing clause make it somewhat dense but nothing is redundant filler.
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 one high-coverage parameter but a nested object and no output schema, the description carries real weight, and it does describe the analytical outputs (bottlenecks, second-source mapping with cross-references). It stops short of describing the report structure an agent would receive back.
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?
Only one parameter with 100% schema description coverage, so the schema already documents the modules argument and its provenance. The description adds no format or structure detail beyond what the schema states, making the baseline 3 correct here.
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?
States a specific verb (Audit) and a clearly bounded resource (BOM component multi-sourcing resilience), then narrows scope with single-source bottlenecks and pin-compatible second-source mapping. It is easy to separate from siblings like calculate_bom_cost or synthesize_circuit, though it never names a sibling explicitly.
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 ISO 9001 audit framing and the schema note that modules come from synthesize_circuit output imply the workflow position, but there is no explicit when-to-use, when-not-to-use, or alternative named. The agent can infer context but is given no routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
autoroute_pcbBRead-onlyIdempotent
Execute automated native PCB layout and multi-layer track routing on circuit specifications. Generates standard Specctra SES (Session) routing data and comprehensive physical metrics (completion rate, total track length, via count, layer utilization) with zero JVM dependencies.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Autorouting engine track. 'exact' (default) is orthogonal and DRC-verified; 'grid' is 8-connected and can leave diagonal shorts; 'room' uses continuous expansion rooms (may leave nets unrouted on dense boards). | exact |
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (from synthesize_circuit output). | |
| clearance_mm | No | Default routing clearance in mm (default: 0.100 / 4mil). | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| trace_width_mm | No | Default routing trace width in mm (default: 0.150 / 6mil). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the description does not need to restate safety. It adds useful context by naming the generated artifacts and the 'zero JVM dependencies' property, but it does not describe failure behavior, whether any files are written, or how the engine choice affects outcomes beyond what the schema already says.
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 front-loaded sentences cover the action and the outputs with little waste. The 'zero JVM dependencies' clause is slightly promotional rather than operational, which keeps it from a 5.
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 compute-heavy tool with no output schema, the description usefully enumerates the returned outputs (SES data, completion rate, track length, via count, layer utilization). The rich schema covers all parameters, so the main remaining gap is workflow context about prerequisites and when this tool should be selected over related siblings.
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% and includes detailed defaults and engine tradeoffs, so parameter meaning is already fully documented. The description adds no parameter-specific guidance beyond the schema, which is the correct baseline when the schema carries that burden.
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 states a specific verb and resource: 'Execute automated native PCB layout and multi-layer track routing on circuit specifications'. It also names the output artifacts (Specctra SES data, physical metrics), which helps separate it from sibling export/analysis tools. It stops short of explicitly naming which sibling to use instead, so it doesn't reach a 5.
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?
There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The reader can infer it is the autorouting step, but the description never says to run it after validate_netlist/synthesize_circuit or how it relates to run_pcb_drc or export_specctra_dsn.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
budget_fab_orderARead-onlyIdempotent
JLCPCB / PCBWay headless order cost budget and submission manifest builder: offline math over public price ladders (layers, quantity, area, finish, SMT, shipping, lead priority), cross-vendor recommendation, and a SHA-256 tamper-evident manifest over the manufacturing artifacts for CI order staging — no network, no keys, stdlib-only (macOS laptop or Docker CI runner).
| Name | Required | Description | Default |
|---|---|---|---|
| qty | No | Panel quantity: 5/10/30/100 ladder (default: 5). | |
| layers | No | 2 / 4 / 6 layers (default: 2). | |
| shipping | No | 'standard' (default) | 'dhl'. | standard |
| artifacts | No | Manufacturing artifacts {filename: content} for the SHA-256 submission manifest. | |
| smt_parts | No | Number of SMT placements (default: 0). | |
| board_h_mm | No | Outline height mm (default: 50.0). | |
| board_w_mm | No | Outline width mm (default: 70.0). | |
| include_smt | No | Request PCBA assembly (default: False). | |
| lead_priority | No | 'economy' | 'standard' (default) | 'expedite'. | standard |
| surface_finish | No | 'hasl_lead_free' (default) | 'enig' | 'osp'. | hasl_lead_free |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely useful context beyond that: no network, no keys, stdlib-only, deterministic offline math, and that the manifest is SHA-256 tamper-evident over the manufacturing artifacts. It does not mention currency, pricing-accuracy caveats, or how the cross-vendor recommendation is decided.
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?
A single dense sentence that front-loads purpose (cost budget + submission manifest) and then the differentiators (offline, no keys, stdlib-only, environments). No filler or restatement of the tool name.
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 10-parameter tool with a nested artifacts object and no output schema, the description covers inputs and execution environment well but says nothing about the returned structure — what the budget object contains, currency/units, or what the manifest looks like. The agent knows what it will compute but not what it will receive.
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 defaults and enum-like value lists on every field, so the schema carries most of the load. The description still adds framing by enumerating the cost dimensions (layers, quantity, area, finish, SMT, shipping, lead priority) that correspond to parameters, and it flags the artifacts object as the manifest input — meaningful for the one nested parameter.
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?
States concrete verbs and resources: offline cost math over public price ladders (layers, qty, area, finish, SMT, shipping, lead), cross-vendor recommendation for JLCPCB/PCBWay, and a SHA-256 tamper-evident manifest over artifacts. An agent can tell it produces a budget plus an order-staging manifest. It stops short of naming the obvious sibling, calculate_fab_cost, so the boundary with that tool is left implicit.
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?
Gives an implied context — 'for CI order staging', offline/no-network on a laptop or Docker runner — which tells the agent this is a pre-submission estimation step. But it never states when to prefer it over calculate_fab_cost or the export_*/validate_* siblings in the same family, and there are no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_bare_board_test_parametersARead-onlyIdempotent
Plan IPC-9252B bare-board electrical test recipes (flying probe or bed-of-nails universal grid): establishes continuity thresholds (signal <= 10Ω, power <= 2Ω) and isolation test voltages (Class 1: 50V, Class 2: 100V, Class 3: 250V), automatically derating test voltages to 100V on fine-pitch (<0.100mm) or sensitive RF nets to prevent dielectric breakdown arc-over damage.
| Name | Required | Description | Default |
|---|---|---|---|
| nets | No | Optional list of net dicts ({name, min_clearance_mm, is_power, is_sensitive}). | |
| tester_type | No | Test equipment: 'flying_probe' (default) or 'universal_grid'. | flying_probe |
| target_class | No | IPC reliability class: 'Class 1', 'Class 2' (default), or 'Class 3'. | Class 2 |
| has_sensitive_rf_nets | No | Whether board contains sensitive RF/microwave nets (default: False). | |
| min_trace_clearance_mm | No | Minimum conductor clearance on board in mm (default: 0.127). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful domain behavior beyond annotations: continuity thresholds, class-dependent isolation voltages, and automatic derating to 100V on fine-pitch or sensitive RF nets to prevent arc-over damage.
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 a single dense but front-loaded sentence with no filler. The parenthetical thresholds and derating rule earn their place, though the sentence is somewhat long and could be easier to scan if split.
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 read-only planning tool with full schema descriptions and no output schema, the description covers the core domain rules needed to call it correctly. It does not describe the returned recipe shape or how omitted optional nets affect defaults, which keeps it from a 5.
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 schema already explains the parameters. The description adds meaningful domain semantics by tying thresholds to signal versus power nets, voltages to target class, and derating to fine-pitch clearance and sensitive RF nets.
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 gives a specific verb and resource: 'Plan IPC-9252B bare-board electrical test recipes' for flying probe or bed-of-nails universal grid. It is clearly not a generic PCB calculation, but it does not explicitly distinguish itself from related siblings such as calculate_ict_testpoints.
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 planning context and the tester_type/target_class parameters, but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. An agent can infer the domain but must decide on its own versus sibling PCB test/audit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_bga_escape_routingARead-onlyIdempotent
Calculate BGA diagonal dogbone via fanout geometry, escape channel trace widths and clearances, and minimum signal layer requirements per IPC-7095 Section 5.2.
| Name | Required | Description | Default |
|---|---|---|---|
| ball_count | Yes | Total BGA ball count (e.g. 64, 100, 144, 256). | |
| via_drill_mm | No | Fanout via drill diameter in mm (default: 0.2). | |
| ball_pitch_mm | No | BGA ball center-to-center pitch in mm (default: 0.8). | |
| trace_width_mm | No | Escape routing neck-down trace width in mm (default: 0.10). | |
| via_pad_dia_mm | No | Fanout via pad outer diameter in mm (default: 0.45). | |
| ball_pad_dia_mm | No | BGA solder ball pad diameter in mm (default: 0.4). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, deterministic, idempotent read-only computation, so the heavy behavioral burden is lifted. The description adds the standards basis (IPC-7095 Section 5.2), which is useful context, but says nothing about the return shape or units of the computed results despite there being no output schema.
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?
A single dense sentence with no filler, and the core resource and computed quantities are front-loaded. It is slightly packed but every clause carries substantive meaning.
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 read-only parameterized calculation with all six parameters fully documented in the schema and safety covered by annotations, this is nearly complete for correct invocation. The only omission is any indication of what the computed output contains, which would have helped since no output schema exists.
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 every parameter is already documented in the schema and the baseline is 3. The description's mentions of fanout geometry, trace widths, and clearances loosely map to via/ball/trace parameters but add no syntax or default nuance beyond what the schema already states.
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 names a specific verb (Calculate) and resource (BGA escape routing) and then enumerates exactly what is computed: diagonal dogbone via fanout geometry, escape-channel trace widths/clearances, and minimum signal-layer requirements. This is precise enough to distinguish it from every sibling calculate_* tool, none of which cover BGA escape fanout.
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 domain phrasing ('escape channel', 'IPC-7095 Section 5.2') strongly implies when the tool applies, so usage is inferable, but there is no explicit when-to-use statement, no preconditions, and no named alternative among the many calculate_* siblings. It sits at minimum-viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_bom_costARead-onlyIdempotent
Calculate PCBA component cost breakdown and estimate JLCPCB SMT manufacturing surcharges. Identifies Basic library parts (¥0 feeder fee) vs Extended library parts (+¥20/type feeder fee) and suggests cost optimizations.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | List of component names, models, or descriptions (e.g. ['STM32F103C8T6', 'SP3485', '0603 10k']). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, read-only, idempotent operation, so the safety burden is off the description. The description adds genuine domain behavior beyond the annotations: the Basic-vs-Extended library rule, the exact +¥20/type feeder surcharge, and that the tool proactively suggests cost optimizations. It still omits how results are produced (live JLCPCB lookup given openWorldHint=true) and the return shape.
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 tight sentences with the core purpose front-loaded and no filler. Slightly dense in the second sentence but every clause carries 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, read-only calculator with no output schema, the description covers the cost model, fee tiers, and the advisory output adequately. It could still note whether external JLCPCB data is queried at call time, which would matter for latency and freshness.
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?
Only one parameter (queries) and schema description coverage is 100%, with examples for accepted forms ('STM32F103C8T6', 'SP3485', '0603 10k'). The description adds nothing about the parameter, so the high-coverage baseline of 3 is correct.
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?
States a specific verb and resource ('Calculate PCBA component cost breakdown') plus the additional scope of JLCPCB SMT surcharges, which distinguishes it from the generic calculate_fab_cost sibling. It does not explicitly name that sibling or contrast its scope, so it falls short of a 5.
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 SMT/JLCPCB cost framing but never stated: there is no 'use this when you need X, not Y' and no mention of calculate_fab_cost, calculate_smt_feeder_matrix, or export_manufacturing_bom as alternatives. An agent can guess the context but must infer the boundary with sibling cost tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_copper_pour_current_dropARead-onlyIdempotent
Calculate DC IR-drop, Joule heating dissipation, and localized bottleneck current density in polygon copper pours and power busbars per IPC-2152 Section 5.0 and IEC 60092-352, verifying current density <= 35.0 A/mm² to prevent copper foil delamination or blistering under heavy loads.
| Name | Required | Description | Default |
|---|---|---|---|
| current_a | Yes | Continuous DC load current in Amperes. | |
| ambient_temp_c | No | Ambient operating temperature in °C (default: 25.0). | |
| copper_weight_oz | No | Finished copper foil weight in oz (default: 1.0). | |
| effective_width_mm | No | Average conduction width of the copper pour in mm (default: 20.0). | |
| bottleneck_width_mm | No | Narrowest constriction neck width (e.g. around cutouts or anti-pads) in mm. | |
| effective_length_mm | No | Conduction path length from source to load in mm (default: 50.0). | |
| max_allowed_temp_rise_c | No | Allowable conductor temperature rise ΔT in °C (default: 30.0). | |
| max_allowed_current_density_a_per_mm2 | No | Maximum safe current density ceiling in A/mm² (default: 35.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description only needs to add context beyond that. It usefully discloses the computed quantities, the pass/fail threshold (current density <= 35.0 A/mm²), and the physical failure it guards against (delamination/blistering), giving the agent a clear model of what the call produces without stating a return format.
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?
A single dense sentence that front-loads the verb and the primary outputs before the standards and threshold clauses. It earns its length by conveying several distinct facts, though the trailing compliance/threshold clauses make it long enough to be worth splitting.
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 an 8-parameter computation with no output schema, the description names the outputs it returns (IR-drop, Joule heating, bottleneck current density) and the acceptance criterion, which is what an agent most needs. It stops short of describing result structure or units, but with annotations covering safety and the schema covering inputs, the remaining gap is minor.
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 every parameter is already documented in the schema with units and defaults. The description mentions bottleneck density but adds no syntax, units, or constraints beyond what the schema provides, so baseline 3 is correct.
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?
States a specific verb ('Calculate') plus three concrete outputs (DC IR-drop, Joule heating dissipation, bottleneck current density) applied to a clearly scoped resource ('polygon copper pours and power busbars'). This scope distinguishes it from the sibling calculate_ipc2152_trace_current, which handles traces rather than pours/busbars, so an agent can route correctly without opening either schema.
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 anchors usage to standards (IPC-2152 Section 5.0, IEC 60092-352) and to a heavy-load/heavy-copper context, which implies when it applies. However, it never states when NOT to use it or names the sibling alternative (calculate_ipc2152_trace_current) for narrow-trace cases, so routing between the two is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_copper_thieving_balanceARead-onlyIdempotent
Calculate layer copper density balance between top and bottom layers, assess reflow thermal bow/twist warpage risk (IPC-TM-650 2.4.22 <= 0.75%), and generate non-functional dummy copper thieving dot/grid patterns per IPC-2221B Section 10.1.1.
| Name | Required | Description | Default |
|---|---|---|---|
| board_width_mm | Yes | PCB width in mm (default: 70.0). | |
| board_height_mm | Yes | PCB height in mm (default: 50.0). | |
| pattern_pitch_mm | No | Thieving dot pitch in mm (default: 2.54). | |
| keepout_margin_mm | No | Keepout margin from board edge in mm (default: 2.0). | |
| bot_copper_area_mm2 | No | Optional bottom copper area in mm². | |
| top_copper_area_mm2 | No | Optional top copper area in mm². |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the specific acceptance threshold (IPC-TM-650 2.4.22 <= 0.75%) and that the generated patterns are non-functional dummy copper per IPC-2221B 10.1.1 — useful for an agent judging what a 'risk' result means. It stops short of noting whether generation is purely a computed report or writes artifacts.
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?
A single front-loaded sentence whose main verb and resource come first, with standards citations embedded rather than filler. It is somewhat dense and stacks three distinct outputs into one clause, which costs a little readability, but nothing is wasted.
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 no output schema, the description should help an agent anticipate the return value, and it does name the three outputs conceptually (balance, warpage risk, pattern geometry). However it never indicates the form of those outputs (numeric balance, pass/fail verdict, coordinate lists) or units, leaving a gap for a compound computational tool with six inputs.
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% and every parameter (board dimensions, pitch, keepout margin, optional top/bottom copper areas) is documented in the schema with defaults. The description adds no parameter-level meaning beyond what the schema states, so the baseline 3 applies.
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?
Names a specific verb (Calculate) with a precise resource (layer copper density balance between top/bottom layers) and adds two concrete sub-capabilities: reflow warpage risk assessment against an IPC-TM-650 threshold, and generation of non-functional thieving dot/grid patterns. It is unmistakable against the many other calculate_* siblings (clearance, stackup impedance, trace current) because it names copper balance and thieving explicitly.
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 context of use is implied by the domain (copper balance for warpage mitigation during PCB design), but there is no statement of when to reach for this tool versus adjacent ones such as calculate_pcb_panel_rails, or any prerequisite (e.g., must be run after routing is complete or knowing copper areas). Adequate but leaves the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_creepage_isolation_slotARead-onlyIdempotent
Evaluate high-voltage electrical creepage compliance per IPC-2221B Table 6-1 and IEC 62368-1, and plan an air isolation milled slot (slot width, length, endpoints, and expanded effective creepage path) between high-voltage and low-voltage conductors when surface distance is insufficient.
| Name | Required | Description | Default |
|---|---|---|---|
| voltage_v | Yes | Operating voltage difference between conductors (e.g. 220.0). | |
| cond1_coords | Yes | Coordinates [x, y] of first conductor. | |
| cond2_coords | Yes | Coordinates [x, y] of second conductor. | |
| slot_width_mm | No | Width of milled isolation slot in mm (default: 1.2). | |
| slot_extension_mm | No | Slot extension past conductor edges in mm (default: 2.0). | |
| conductor_radius_mm | No | Conductor/pad radius in mm (default: 1.0). | |
| is_reinforced_insulation | No | Whether reinforced insulation (2x clearance) is required per IEC 62368-1 (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is covered. The description adds meaningful context by naming the governing standards (IPC-2221B Table 6-1, IEC 62368-1) and the artifacts produced, but does not describe return format, units of output, or assumptions/limits beyond what annotations and schema carry.
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?
One dense sentence, front-loaded with the evaluation purpose before the slot-planning action. Every clause maps to a real capability (compliance check, slot geometry, effective creepage path), though the length borders on over-packed for a single sentence.
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 7-parameter, no-output-schema calculation tool, the description covers what is computed and, via 'slot width, length, endpoints, and expanded effective creepage path', hints at the returned geometry. It stops short of specifying output units or failure/compliance reporting, which is a minor gap given the absent output schema.
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%, with defaults and units documented per property, so the schema already carries parameter meaning. The description reinforces the slot-related parameters ('slot width, length, endpoints') but adds no syntax, units, or constraint detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resources: 'evaluate high-voltage electrical creepage compliance... and plan an air isolation milled slot'. An agent can tell this computes creepage plus slot geometry rather than mere clearance. However it never names or contrasts with the nearby sibling calculate_ipc2221_clearance, which an agent could easily confuse it with.
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 clause 'when surface distance is insufficient' gives an implied condition for the slot-planning portion of the tool, but there is no explicit when-to-use framing for the evaluation step and no routing to alternatives such as calculate_ipc2221_clearance or evaluate_material_cti_creepage. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_differential_skewBRead-onlyIdempotent
Solve high-speed differential pair intra-pair propagation delay skew (USB 2.0 HS ≤10ps, Ethernet ≤25ps, CAN-FD ≤50ps) and calculate required serpentine length matching tuning bumps count and geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| protocol | No | Target protocol standard (default: USB2_HS). | USB2_HS |
| height_mm | No | Dielectric height to reference plane in mm (default: 0.100). | |
| dielectric_er | No | Relative dielectric permittivity Er (default: 4.2). | |
| trace_width_mm | No | Trace width in mm (default: 0.254). | |
| trace_length_delta_mm | Yes | Measured trace length mismatch in mm (P minus N). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that the tool also computes serpentine bump count and tuning geometry, which is useful scope context, but it does not say whether sizing/fabrication constraints apply or how results are reported.
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?
A single sentence that front-loads the primary action and tolerances before the secondary geometry output. It is dense and somewhat overstuffed with protocol budgets, but no sentence is wasted.
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?
No output schema exists, so the description carries the return-value burden; it gestures at 'bumps count and geometry' but gives no format or units. The required parameter and all optional parameters are documented in the schema, and the key gap is the unaddressed overlap with calculate_serpentine_tuning_geometry.
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 every parameter including the enum protocol list and defaults is already documented in the schema. The description alludes to the P-minus-N length delta but adds no syntax, units, or interpretation guidance beyond what the schema provides.
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?
States a specific verb+resource (calculating intra-pair propagation delay skew) and names the target protocols with concrete tolerance budgets, which is far more informative than the bare name. However it never distinguishes itself from the close sibling calculate_serpentine_tuning_geometry, whose scope it explicitly overlaps.
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 protocol budgets (USB2.0 HS ≤10ps etc.) and the required trace_length_delta_mm input, so an agent can infer this is a post-layout skew check. But there is no explicit when-to-use, no exclusions, and no routing to the overlapping serpentine_tuning_geometry sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_effective_capacitanceARead-onlyIdempotent
Effective capacitance of a Class II MLCC at real operating conditions — the marked value is not the value in circuit. Multiplies the four loss mechanisms that compound: DC bias (the dominant one, typically 35-65% loss at rated voltage and worse in small cases), AC signal level, temperature coefficient, and logarithmic dielectric ageing, then applies the part tolerance. Returns the full factor stack so you can see which mechanism hurt most. Class I (C0G/NP0) parts correctly short-circuit to tolerance-only. Pass measured_retention_at_bias from a datasheet curve (Murata SimSurfing, TDK SEAT) to replace the band estimate and get confidence='measured'.
| Name | Required | Description | Default |
|---|---|---|---|
| rated_v | Yes | The part's rated DC voltage. | |
| ac_level | No | Signal magnitude class: small_signal (<50 mVrms), moderate (50-500 mVrms), or large (>500 mVrms). Small signals see less capacitance. | small_signal |
| ambient_c | No | Operating ambient temperature in °C. | |
| applied_v | Yes | DC bias actually across the part in this circuit, in volts. | |
| case_size | No | EIA case code: 0402, 0603, 0805, 1206 or 1210. Larger cases retain more capacitance under bias. | 0805 |
| dielectric | No | EIA Class II dielectric: X5R, X7R, X8R, Y5V, Z5U, or Class I C0G/NP0. | X5R |
| tolerance_pct | No | The part's capacitance tolerance in percent (e.g. 10 for ±10%). Applied at the pessimistic end. | |
| hours_in_service | No | Expected service life in hours, used for the log-time ageing term. | |
| marked_capacitance_uf | Yes | The capacitance printed on the reel, in µF. | |
| measured_retention_at_bias | No | Retention fraction (0-1] read from the real datasheet DC-bias curve at applied_v. Replaces the band estimate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | Human-readable findings: which term dominates, what to change, and any caveat. |
| source | Yes | The measurements and standards the model is calibrated against. |
| rated_v | Yes | The part's rated DC voltage. |
| loss_pct | Yes | Percentage of the marked value that is lost. |
| ambient_c | Yes | Operating ambient used. |
| applied_v | Yes | DC bias across the part that was analysed. |
| case_size | Yes | EIA case code analysed. |
| confidence | Yes | How trustworthy the number is: 'measured' from a datasheet curve, 'band' from a published retention range, 'physical' for Class I parts where the loss is zero by physics. |
| dielectric | Yes | EIA dielectric class analysed. |
| ageing_factor | Yes | Retention after the service life, log-time law. |
| dc_bias_factor | Yes | Retention from DC bias alone — usually the dominant term. |
| ac_level_factor | Yes | Retention from AC signal magnitude (ferroelectric hysteresis). |
| hours_in_service | Yes | Service life used for the ageing term. |
| tolerance_factor | Yes | Retention at the pessimistic end of the part tolerance. |
| retention_fraction | Yes | effective / marked, after every loss mechanism. |
| temperature_factor | Yes | Retention at the operating temperature, worst-case end of the TCC band. |
| marked_capacitance_uf | Yes | The value printed on the reel. |
| effective_capacitance_uf | Yes | The capacitance the circuit actually gets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds substantial model behavior: four multiplicative loss mechanisms, which one dominates (DC bias, 35-65% at rated voltage, worse in small cases), the fact that tolerance is applied at the pessimistic end, and that the response exposes a per-factor breakdown plus a confidence label. This is exactly the kind of domain-specific behavior an agent needs and cannot get from schema or 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?
Front-loaded with the core insight (marked ≠ in-circuit) and structured from model → return shape → optional measured path. Slightly padded by rhetorical framing ('the marked value is not the value in circuit', 'see which mechanism hurt most'), but no sentence is truly wasted.
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 10-parameter, 3-required engineering calculator with an output schema, the description covers the model, the dominant failure mode, the Class I edge case, and the measured-input escalation path. Nothing an agent needs in order to call it correctly or interpret the result 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 description coverage is 100%, so baseline would be 3, but the description adds meaning the schema does not: it explains that measured_retention_at_bias supplants the internal band estimate and changes the returned confidence field, and that Class I dielectrics bypass the loss stack entirely. That linkage between an input and an output attribute is genuine added 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?
States a specific verb (compute effective capacitance) and a precisely bounded resource (Class II MLCC at real DC-bias/temperature/age conditions), and immediately distinguishes itself from the naive marked-value calculation. An agent can tell this apart from siblings like size_hold_up_capacitor or analyze_rc_filter_effective without opening any schema.
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?
Gives a clear trigger (real in-circuit derating, not the reel value) and an explicit mode switch: supply measured_retention_at_bias from a Murata SimSurfing / TDK SEAT curve to get confidence='measured' instead of the band estimate. It also names the case where it degenerates (C0G/NP0 → tolerance-only). It stops short of naming sibling tools to use instead, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_fab_costARead-onlyIdempotent
Estimate PCB fabrication cost from fab-house published tiered pricing: layers (2/4/6), quantity tiers (5/10/30/100), area surcharge beyond 100x100mm, solder mask color, surface finish (HASL/ENIG/OSP), board thickness, and lead time (normal/48h/24h). Estimate only.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Layer count (2, 4, or 6; default 4). | |
| quantity | No | Board quantity (default 5). | |
| lead_time | No | Lead time: normal (x1.0), fast_48h (x1.5), urgent_24h (x2.5). | normal |
| thickness_mm | No | Board thickness in mm: 0.6/0.8/1.0/1.2/1.6 (default)/2.0. | 1.6 |
| board_width_mm | No | Board width in mm (default 100). | |
| surface_finish | No | Surface finish: hasl_lead (free), hasl_lead_free (+15), enig (+80), osp (free), silver (+45). | hasl_lead_free |
| board_height_mm | No | Board height in mm (default 100). | |
| solder_mask_color | No | Solder mask color: green (free), red/yellow/blue (+25), black/white (+40), matte (+60). | green |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real value beyond that by disclosing the pricing model ('fab-house published tiered pricing') and the 'Estimate only' caveat, signaling this is an approximation rather than a binding quote.
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?
A single dense sentence front-loads the purpose and pricing basis, followed by the terse 'Estimate only.' caveat. It is tightly sized, though the enumerated parameter list partially duplicates the fully-covered schema.
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 annotations covering safety and the schema covering all inputs, the description supplies the remaining context (estimate source and approximation caveat). Minor gaps remain: no output schema and no mention of currency or return format, but these are not critical for a read-only 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 description coverage is 100%, so all eight parameters (including pricing multipliers for finish, color, and lead time) are already documented. The description recaps the same inputs (layers, quantity, color, finish, thickness, lead time) at a higher level without adding syntax or meaning beyond the schema; baseline 3 applies.
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?
States a specific verb ('Estimate') and resource ('PCB fabrication cost') and immediately scopes the pricing basis to fab-house published tiers. This clearly distinguishes it from sibling cost tools such as calculate_bom_cost, without needing to open either schema.
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 (published tiered pricing) and adds the caveat 'Estimate only', but never states when to use this tool versus alternatives like calculate_bom_cost, nor any prerequisites. The guidance is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_fiducial_layoutARead-onlyIdempotent
Generate asymmetric 3-point global optical fiducial layout (L-shape, 180° rotation unambiguous) and 2-point local fiducials for fine-pitch components per IPC-2221B Section 12 and JEDEC J-STD-020.
| Name | Required | Description | Default |
|---|---|---|---|
| board_width_mm | Yes | PCB width in mm. | |
| board_height_mm | Yes | PCB height in mm. | |
| edge_clearance_mm | No | Fiducial center clearance from board edge in mm (default: 5.0). | |
| fine_pitch_components | No | Fine-pitch components ({ref, pitch_mm, x_mm, y_mm, half_diagonal_mm}). | |
| fine_pitch_threshold_mm | No | Component pitch below which local fiducials are required (default: 0.5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful domain context beyond that: the governing standards (IPC-2221B Section 12, JEDEC J-STD-020), the geometric rationale (L-shape asymmetry for 180° rotation disambiguation), and the two output fiducial classes. It does not describe the returned structure, but with no output schema and clear annotations this is still strong.
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?
A single dense sentence with the generation action front-loaded and no filler. It is somewhat packed with clause-level detail, but every clause (shape, rotation rule, local fiducials, standards) earns its place.
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 read-only deterministic layout generator with full schema coverage and no output schema, the description supplies the standards, the two fiducial classes, and the geometric invariant an agent needs. Only a note on what the tool returns would make it fully 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?
Schema description coverage is 100%, so every parameter (width, height, edge clearance, fine-pitch components, pitch threshold) is already documented in the schema. The description contextualizes fine-pitch components and local fiducial triggers but adds no syntax, units, or format meaning beyond what the schema provides, so the baseline 3 applies.
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?
Precise verb+resource ('Generate ... fiducial layout') with concrete specifics: asymmetric 3-point global fiducials (L-shape, rotation-unambiguous) plus 2-point local fiducials for fine-pitch parts. It is the only fiducial tool among the siblings, and the description makes its scope unmistakable without opening the schema.
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 when the tool applies (you need an optical fiducial layout for a PCB, with local fiducials when fine-pitch parts exist), but there are no explicit when/when-not statements or named alternatives. There is no direct sibling to route against, so implied usage is adequate but not strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_high_speed_skin_depth_lossARead-onlyIdempotent
Calculate high-frequency skin effect depth, Hammerstad surface roughness correction factor (Ksr), and conductor attenuation per IPC-4562B and IPC-2141A for 1GHz to 50GHz signals (PCIe 5.0/6.0, USB4, 112G PAM4), recommending standard ED, VLP, or HVLP/RTF copper foil profiles to recover high-speed signal integrity eye margins.
| Name | Required | Description | Default |
|---|---|---|---|
| foil_type | No | Copper profile: 'standard_ed', 'vlp' (default), or 'hvlp'. | vlp |
| custom_rq_um | No | Optional custom RMS roughness Rq in μm. | |
| dielectric_er | No | Substrate relative dielectric constant Er (default: 4.2). | |
| frequency_ghz | No | Signal frequency in GHz (default: 10.0). | |
| trace_width_mm | No | Conductor trace width in mm (default: 0.150). | |
| max_acceptable_ksr | No | Maximum allowable roughness penalty factor (default: 1.85). | |
| trace_thickness_mm | No | Copper foil thickness in mm (default: 0.035 for 1oz). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, idempotent, read-only computation, so the description only needs to add analysis semantics — and it does, by disclosing that results follow IPC-4562B/IPC-2141A and that the tool goes beyond numeric output to recommend a foil profile for eye-margin recovery. It does not describe output units or the shape of the recommendation, which keeps it below a 5.
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?
One dense sentence that front-loads the computed quantities, then qualifying standards, then frequency/application scope, then the recommendation behavior. No filler and nothing repeated from structured fields.
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 7-parameter, no-required-argument calculation with no output schema, the description supplies standards basis, frequency validity range, target applications, and the fact that a recommendation is returned. What is missing is any hint about output fields/units or how the max_acceptable_ksr threshold affects the recommendation.
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 defaults and units documented per field, so the description correctly leans on the schema. However, it names 'ED, VLP, or HVLP/RTF' profiles while the foil_type schema lists only 'standard_ed', 'vlp', 'hvlp' — RTF is not an accepted value, a minor mismatch that could mislead an agent choosing a profile.
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?
Names a specific verb (Calculate) and three distinct outputs (skin effect depth, Hammerstad Ksr, conductor attenuation), plus a secondary output (foil profile recommendation). This is clearly separable from siblings such as calculate_trace_impedance or calculate_pcb_stackup_impedance.
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?
Scope is well bounded: 1GHz–50GHz signals with named application contexts (PCIe 5.0/6.0, USB4, 112G PAM4), which tells the agent when this tool applies. It stops short of naming an alternative tool or stating when not to use it, but the applicability window is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ict_testpointsBRead-onlyIdempotent
Analyze PCB netlist testability, allocate automated bed-of-nails In-Circuit Test (ICT) testpoints (B.Cu Φ1.0mm), assign probe tip types (crown, spear, serrated), and verify fault coverage percentage per IPC-9252 & IPC-2221B.
| Name | Required | Description | Default |
|---|---|---|---|
| connections | Yes | Netlist connections list (from synthesize_circuit output). | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). | |
| min_probe_pitch_mm | No | Minimum probe center-to-center pitch in mm (default: 2.0). | |
| min_pad_diameter_mm | No | Testpad diameter in mm (default: 1.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the agent knows this is a safe, repeatable computation and the description does not contradict that. The description adds domain behavior beyond the annotations: B.Cu Φ1.0mm testpad geometry, probe tip categories (crown, spear, serrated), and compliance with IPC-9252 and IPC-2221B. It stops short of describing what the analysis returns or what happens when coverage targets fail to be met.
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?
A single dense sentence with the primary action ('allocate automated bed-of-nails ICT testpoints') positioned early and supporting detail trailing. It is slightly overloaded by stacking four distinct activities plus two standards into one clause, but there is no filler 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?
For a multi-step analysis tool with no output schema, the description does name the artifacts produced (allocated testpoints, assigned probe tips, fault coverage percentage) and the governing standards, which is enough for correct invocation. It could still be stronger by clarifying the return shape and any coverage thresholds, but it is substantially complete for a 5-parameter analysis call.
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 all five parameters (including the required connections and the board/pitch/pad geometry defaults) are already documented in the schema. The description adds no parameter-specific detail such as units, valid ranges, or interaction between min_probe_pitch_mm and min_pad_diameter_mm. Baseline 3 applies when the schema does the heavy lifting.
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 names concrete verbs and resources: analyze netlist testability, allocate bed-of-nails ICT testpoints, assign probe tip types, and verify fault coverage. It is highly specific about the domain. However, it makes no attempt to differentiate itself from related siblings such as audit_industrial_dfx, export_ipc_d356 (the IPC-D-356 ICT data export), or validate_netlist, so an agent must infer the boundary from the name alone.
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?
There is no when-to-use guidance, no stated prerequisites, and no named alternative. The schema hints that connections come from synthesize_circuit output, but the description itself gives no ordering or routing advice (e.g., run before export_ipc_d356 or after validate_netlist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ipc2152_trace_currentARead-onlyIdempotent
Calculate conductor current-carrying capacity or solve required PCB trace width according to IPC-2152 standards for given copper weight (oz), temperature rise (ΔT °C), and layer position.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | 'solve_current' calculates max Amps for given trace_width_mm; 'solve_width' calculates required mm for target_current_a. | |
| layer | No | Conductor layer position: 'external' (outer copper) or 'internal' (inner plane). | external |
| copper_oz | No | Finished copper thickness in ounces (default: 1.0 oz = 35 um). | |
| temp_rise_c | No | Allowable conductor temperature rise above ambient in °C (default: 20.0 °C). | |
| trace_width_mm | No | Trace width in mm (required for 'solve_current'). | |
| target_current_a | No | Target continuous current in Amperes (required for 'solve_width'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, which fully covers the safety profile of a pure calculator. The description adds the IPC-2152 standard as the computational basis, but says nothing about the numerical method, boundary behavior, or validity range that would add real behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler, front-loading both the action and the two output modes before the parameter list. It is dense but every clause carries information, though the parenthetical unit annotations are slightly redundant with the schema.
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 stateless calculator with full schema descriptions and a mode enum that captures the two return shapes, the definition is nearly sufficient. The absence of any statement about return format is acceptable since the schema's mode descriptions describe what each path yields, though an explicit note on output units would round it out.
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 each of the six parameters is already documented in the schema with defaults, units, and the mode-dependent requirement. The description merely restates three of them (copper weight, temperature rise, layer position), adding no syntax or format detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb (calculate) and resource (IPC-2152 conductor current / PCB trace width), and names the governing standard and the two solve directions. It is clearly distinguishable from impedance or clearance calculators by the IPC-2152 reference, though it never names the nearest sibling (calculate_trace_impedance) explicitly.
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 phrase 'for given copper weight (oz), temperature rise (ΔT °C), and layer position' implies the required input context, but there is no explicit when-to-use vs when-not guidance and no mention of alternatives such as calculate_trace_impedance or calculate_ipc2221_clearance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ipc2221_clearanceARead-onlyIdempotent
Calculate minimum electrical clearance (conductor spacing) according to IPC-2221B Table 6-1 based on peak voltage and conductor classification (B1 internal, B2 external uncoated, B4 coated, A6 leads).
| Name | Required | Description | Default |
|---|---|---|---|
| conductor_type | No | Conductor classification: B1 (internal), B2 (external uncoated), B4 (coated), A6 (leads). Default: B2. | B2 |
| peak_voltage_v | Yes | Peak working or test voltage in Volts (e.g., 5.0, 12.0, 24.0, 230.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, read-only, idempotent, non-open-world computation, so the safety profile is fully covered. The description adds the governing standard and the fact it is a table lookup, but says nothing about the units or format of the computed clearance, which matters for a pure calculation tool with no output schema.
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?
A single front-loaded sentence that leads with the action and result ('Calculate minimum electrical clearance') and then qualifies with the standard and inputs. Dense but every clause carries information; no filler or repetition.
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 two-parameter calculation tool with no output schema, the agent still does not know the unit or magnitude of the returned clearance (mils vs mm) or whether the result is a single value or a table, and there is no guidance on the voltage range covered by the table.
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%, and the description's enumeration of B1/B2/B4/A6 meanings is a verbatim duplication of the schema's own parameter descriptions. It adds no syntax, range, or tolerance guidance beyond the structured fields, so the baseline of 3 applies.
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?
States a specific verb (Calculate) and a precise resource (minimum electrical clearance / conductor spacing) and anchors it to a named standard and table (IPC-2221B Table 6-1). An agent knows exactly what comes out and on what basis, and can distinguish it from the creepage/CTI siblings.
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 usage context by naming the two required inputs (peak voltage, conductor classification), but it never says when to prefer this over the related siblings, e.g. calculate_creepage_isolation_slot or evaluate_material_cti_creepage. No exclusions or prerequisites are given, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_ipc7351_land_patternARead-onlyIdempotent
Calculate mathematically compliant surface mount land pattern geometry (pad width X, pad length Y, pad center distance C, and courtyard boundary bounds) based on IPC-7351B standards across Density Levels A (Most), B (Nominal), and C (Least).
| Name | Required | Description | Default |
|---|---|---|---|
| density | No | IPC-7351B Density Level: 'A' (Most/M), 'B' (Nominal/N, default), or 'C' (Least/L). | B |
| package | Yes | Standard footprint name (e.g. '0805', '0603', 'SOIC-8', 'QFN-32', 'TSSOP-14') or custom. | |
| lead_type | No | Component lead style: 'chip', 'gullwing', 'no_lead' (QFN/DFN), or 'j_lead'. | |
| lead_pitch | No | Optional pin center-to-center pitch (mm) for multi-lead packages. | |
| lead_width_w | No | Optional component lead width (mm). | |
| lead_contact_t | No | Optional component lead contact length/band (mm). | |
| overall_length_l | No | Optional component overall tip-to-tip span (mm). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the result is deterministic, standards-derived geometry and names what is returned, which is useful, but says nothing about failure modes for unknown package names or how 'custom' inputs are treated.
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?
One dense sentence that front-loads the verb and output set with no filler. It is slightly overloaded with parenthetical geometry abbreviations, but nothing is wasted.
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 no output schema, the description usefully enumerates the returned geometry quantities, which an agent otherwise could not infer. It is largely sufficient for a 7-param, 1-required calculation tool, though it omits how optional lead dimension parameters combine and what happens for unrecognized packages.
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 every parameter including 'density' and 'package' is already documented in the schema. The description restates the density levels and 'or custom' but adds no new syntax or interaction detail, matching the baseline for high coverage.
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?
Specific verb (calculate) + precise resource (IPC-7351B surface mount land pattern geometry) plus enumerated outputs (pad width X, pad length Y, pad center distance C, courtyard bounds). It is clearly distinguishable from siblings such as calculate_ipc2152_trace_current and calculate_ipc2221_clearance.
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 explains what is computed and the density-level options but never states when to use this tool versus the many other calculate_* siblings, nor any prerequisites. No exclusions, no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_parametric_circuitARead-onlyIdempotent
Solve discrete parametric circuit equations: optimal E96 resistor dividers, LDO thermal dissipation, I2C bus pullups, or RC filters.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Type of parametric calculation to perform. | |
| params | Yes | Calculation arguments: for 'resistor_divider' (v_in, v_out_target, max_quiescent_current_ma); for 'ldo_thermal' (v_in, v_out, i_load_a, package); for 'i2c_pullup' (v_cc, bus_capacitance_pf, mode); for 'rc_filter' (cutoff_freq_hz, r_ohm, c_f). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds only the implication that this is a pure equation solver, with nothing about determinism guarantees, input validation failures, or what happens on infeasible targets (e.g., no E96 solution).
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?
A single front-loaded sentence with no filler; the enumerated computation types are the most useful content and appear immediately. Nothing is wasted.
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?
There is no output schema, so the description carries some burden for return values, yet it says nothing about what a solve returns (nearest E96 pair, computed junction temperature, R/C values, etc.). Schema coverage of the nested params object is strong, so the main gap is the missing result-shape hint.
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% and the schema itself enumerates the per-type argument names (v_in, v_out_target, cutoff_freq_hz, etc.), so the baseline is 3. The description adds no unit conventions, value ranges, or defaults beyond what the schema already documents.
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?
States a specific verb ("Solve") plus a precise resource ("discrete parametric circuit equations") and enumerates the four supported calculation families, which map exactly to the type enum. It does not explicitly contrast itself with domain-adjacent siblings such as calculate_trace_impedance, but the listed subtypes are distinctive enough for an agent to tell it apart.
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 list of four calculation kinds implies when to reach for the tool, but there is no explicit when-to-use/when-not guidance, no prerequisites, and no named alternative among the many calculate_* siblings. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_pcb_panel_railsARead-onlyIdempotent
Calculate SMT automated assembly panel frame with breakaway process rails, conveyor clamp clearances, SMEMA tooling holes (NPTH Φ3.2mm), optical fiducials (Φ1.0mm/Φ3.0mm mask), and de-paneling features (V-Cut score lines or perforated mouse-bites) per IPC-2221B Section 8.4 and IPC-SMEMA-9851.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_x | No | Number of boards in X direction (default: 2). | |
| grid_y | No | Number of boards in Y direction (default: 2). | |
| rail_sides | No | Rail placement: 'left_right' (default), 'top_bottom', or 'all_four'. | left_right |
| rail_width_mm | No | Conveyor clamping rail width in mm (default: 5.0, min: 3.0 per SMEMA). | |
| board_width_mm | Yes | Single PCB outline width (mm). | |
| board_height_mm | Yes | Single PCB outline height (mm). | |
| board_spacing_mm | No | Spacing between individual boards in mm (default: 0 for V-cut, 2.0 for mouse-bites). | |
| depaneling_method | No | De-paneling method: 'v_cut' (default) or 'mouse_bites'. | v_cut |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered and the description does not contradict it. Beyond that, the description usefully discloses the governing standards (IPC-2221B §8.4, IPC-SMEMA-9851) and specifics of what is generated (NPTH Φ3.2mm tooling holes, Φ1.0/3.0mm fiducials, V-Cut or mouse-bite features), adding real context over 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?
A single sentence, front-loaded with the core action and then ordered by feature group and standards, with no filler. It is dense and clause-heavy, which makes it slightly tiring to parse, but every element contributes information and nothing is redundant.
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 deterministic computation with 100% schema coverage and no output schema, the description supplies the domain framing and the standards that determine the result, which is what an agent needs to invoke it correctly. It could go slightly further by hinting at the shape of the returned panel geometry, since no output schema exists to carry that burden.
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 every parameter is already documented in the schema, including defaults and the SMEMA 3.0mm minimum for rail_width_mm. The description adds no parameter-level syntax or format detail beyond echoing the V-Cut/mouse-bite distinction already present in depaneling_method. Baseline 3 is appropriate when the schema does the heavy lifting.
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?
States a specific verb and resource: 'Calculate SMT automated assembly panel frame with breakaway process rails,' then enumerates exactly which features the calculation covers (clamp clearances, SMEMA tooling holes, fiducials, de-paneling). An agent knows precisely what this tool computes. It does not, however, explicitly differentiate itself from near-siblings like optimize_panel_grid or calculate_fiducial_layout, which also touch panel geometry.
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 never states when to use this tool versus alternatives such as optimize_panel_grid (which also arranges panel grids) or calculate_fiducial_layout (which also handles fiducials). There are no prerequisites, no exclusions, and no routing guidance to a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_pcb_stackup_impedanceBRead-onlyIdempotent
Lookup standard industrial 4-layer (JLC04161H) and 6-layer (JLC06161H) PCB stackup matrices and solve target controlled impedance trace widths (50Ω RF, 90Ω USB, 100Ω Ethernet, 120Ω CAN/485, IPC-2141A).
| Name | Required | Description | Default |
|---|---|---|---|
| stackup_id | No | Standard industrial stackup model (default: JLC04161H). | JLC04161H |
| solve_custom_z_ohms | No | Optional custom single-ended target impedance in Ohms to solve required trace width. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile needs no coverage here. The description usefully adds that the underlying model is IPC-2141A and enumerates the supported target impedances, but says nothing about accuracy limits, frequency dependence, or what a solved width looks like.
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?
A single front-loaded sentence that leads with the lookup action before the solve action. It is dense with parenthetical model numbers and per-interface values, but every element is substantive and nothing is redundant.
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 no output schema, the description is the only place the return payload could be characterized, yet it never says whether the result is a stackup matrix, a computed trace width, or both. For a two-mode tool (preset lookup plus custom solve) that ambiguity leaves an agent guessing at the response shape.
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% and the enum for stackup_id is fully documented in the schema, so the baseline is 3. The description contributes only marginal extra meaning by tying the impedance targets (50/90/100/120Ω) to the custom-solve parameter, without explaining units, ranges, or whether the custom value overrides the preset list.
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?
States a specific verb (lookup/solve) and resources (4-layer and 6-layer stackup matrices, controlled-impedance trace widths), and names the concrete stackup models JLC04161H/JLC06161H. It does not explicitly distinguish itself from the closely-related siblings calculate_trace_impedance and analyze_impedance_tolerance, so an agent still has to infer which one applies.
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 when it applies (standard industrial stackups, common interface impedances such as USB/Ethernet/CAN), but gives no explicit when-to-use or when-not-to-use guidance and never names the alternative tools for impedance work. Usage is inferable from the impedance targets listed rather than stated as a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_press_fit_hole_complianceARead-onlyIdempotent
Evaluate automotive and industrial solderless press-fit compliant pin (eye-of-the-needle) finished hole diameter tolerances (standard 0.94mm ~ 1.09mm) and copper barrel plating thickness (>= 25μm) per IPC-9797 and IEC 60352-5, estimating insertion and retention forces to prevent inner-layer tear or vibration disconnects.
| Name | Required | Description | Default |
|---|---|---|---|
| pins | Yes | List of press-fit pin dicts ({pin_id, connector_ref, drill_dia_mm, copper_thickness_um, finished_dia_mm}). | |
| min_copper_plating_um | No | Minimum barrel copper plating thickness in μm (default: 25.0). | |
| nominal_finished_dia_mm | No | Nominal compliant pin hole diameter in mm (default: 1.00). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare a safe, read-only, idempotent operation. The description adds useful behavioral context beyond annotations: it evaluates standard tolerances, estimates insertion and retention forces, and targets specific failure modes (inner-layer tear, vibration disconnects). It does not contradict any annotation.
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?
It is a single dense sentence that front-loads the core action ('Evaluate') and packs in standards, tolerances, and outcomes without filler. Slightly long but every clause contributes specific 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 calculation tool with three fully described parameters, no output schema, and read-only annotations, the description supplies the key domain standards, tolerance ranges, and failure-prevention goals. It is nearly complete, though it could briefly mention the shape of the returned compliance result.
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 would be 3. The description adds meaningful parameter context by specifying the standard finished hole diameter range (0.94mm–1.09mm) and minimum copper plating thickness (≥25μm), which enriches interpretation of the corresponding schema parameters.
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 names the specific analysis (press-fit compliant pin finished hole diameter tolerances and copper barrel plating thickness), cites the governing standards (IPC-9797, IEC 60352-5), and states the computed outputs (insertion and retention forces to prevent inner-layer tear or vibration disconnects). This clearly distinguishes it from all 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?
The description gives a clear technical context (automotive and industrial solderless press-fit applications) and purpose (preventing failures), which implies when to use it. However, it does not name alternative tools or specify when-not to use it, leaving the agent to infer its place among the many sibling calculation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_qfn_thermal_pad_stencilARead-onlyIdempotent
IPC-7093A / IPC-7525A QFN and BTC thermal slug window-pane stencil aperture solver: converts solid 100% paste openings into an optimized matrix grid (50%70% paste coverage, default 60%) separated by 0.150.25mm bare copper web outgassing channels, preventing solder voiding (>35%), die floating, and perimeter bridging.
| Name | Required | Description | Default |
|---|---|---|---|
| pad_width_mm | No | Thermal slug width in mm (default: 4.5). | |
| web_width_mm | No | Outgassing web channel width in mm (default: 0.20). | |
| pad_height_mm | No | Thermal slug height in mm (default: 4.5). | |
| target_coverage_pct | No | Target paste coverage percentage 50~70% (default: 60.0). | |
| is_automotive_class3 | No | Whether strict Class 3 / automotive voiding limit <=15% applies (default: False). | |
| has_unfilled_thermal_vias | No | Whether open unfilled vias exist in the pad (default: False). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds meaningful engineering context (0.15–0.25mm outgassing web, 50–70% coverage envelope, >35% void limit), but says nothing about what happens when the requested coverage cannot be met with the given pad/web combination, nor what the solver actually returns.
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?
A single front-loaded sentence that names the standard, the operation, the output form, and the failure modes it prevents. Dense with jargon but every clause carries information; no filler or repetition.
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 pure computational tool with all-defaulted parameters the description is largely self-sufficient, but with no output schema in place it leaves the return value (grid dimensions, aperture count, achieved coverage) unspecified. An agent knows why to call it but not precisely what it will get back.
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 all six parameters are documented in structured data; the description merely echoes the coverage range and web width already present. It adds no guidance on the two behaviorally important booleans (is_automotive_class3, has_unfilled_thermal_vias), so the schema-does-the-work baseline of 3 applies.
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?
States a specific verb and resource: an IPC-7093A/IPC-7525A solver that converts solid 100% paste openings on QFN/BTC thermal slugs into a window-pane matrix grid. The domain restriction (thermal slug only) clearly separates it from the generic sibling calculate_stencil_aperture_ratios.
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 establishes a clear situational context: apply it when a solid thermal-slug opening risks voiding, die floating, or perimeter bridging. It never names an exclusion or points to a sibling (e.g., generic aperture-ratio or paste-volume tools) for non-thermal apertures, so a small amount of routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_serpentine_tuning_geometryARead-onlyIdempotent
Calculate high-speed differential pair serpentine delay tuning meander geometry, ensuring self-coupling suppression (S >= 3W, H >= 3W) and generating vertex paths per IPC-2141A Section 5.3.
| Name | Required | Description | Default |
|---|---|---|---|
| end_x_mm | No | End X coordinate in mm (default: 30.0). | |
| end_y_mm | No | End Y coordinate in mm (default: 20.0). | |
| start_x_mm | No | Start X coordinate in mm (default: 10.0). | |
| start_y_mm | No | Start Y coordinate in mm (default: 20.0). | |
| trace_width_mm | No | Trace width in mm (default: 0.15). | |
| delta_length_mm | Yes | Target added delay length in mm (e.g. 3.5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds meaningful behavioral context by disclosing the design constraints it enforces (self-coupling suppression S >= 3W, H >= 3W) and the standard it follows, though it says nothing about the shape or structure of the 'vertex paths' it produces.
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?
A single dense sentence that front-loads the verb and the core resource before the constraint and standard clauses. No filler, though the technical density borders on over-compressed for a niche tool.
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?
There is no output schema, so the description carries more weight, and it partially compensates by stating that it generates vertex paths and what constraints are enforced. It omits the coordinate frame of the returned path relative to the start/end inputs, which would be useful, but for a calculation tool it is largely 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?
Schema description coverage is 100%, so all six parameters are already documented in the schema with units, defaults, and roles. The description adds no further parameter meaning beyond the schema, making the baseline 3 appropriate.
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?
States a specific verb (calculate) plus a precise resource (high-speed differential pair serpentine delay tuning meander geometry) and cites the governing standard IPC-2141A Section 5.3. It distinguishes itself from the related sibling calculate_differential_skew by focusing on geometry rather than skew, though it does not name that sibling explicitly.
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 phrase 'high-speed differential pair serpentine delay tuning,' which signals the context in which the tool applies. However, there is no explicit when-to-use/when-not guidance and no routing to alternatives such as calculate_differential_skew or calculate_trace_impedance, so the agent must infer fit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_smt_feeder_matrixBRead-onlyIdempotent
Optimize SMT pick-and-place feeder slot allocation (8mm/12mm/16mm/24mm) and nozzle tooling selection (502/503/504/505/506) according to EIA-481 carrier tape standard and OpenPnP/Juki machine matrices.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: the governing EIA-481 carrier-tape standard, OpenPnP/Juki machine matrices, and the concrete constraint domains (feeder pitches, nozzle numbers) the optimization respects.
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?
A single front-loaded sentence with the action first and the constraint set in parentheses; it is dense but every clause (standards, widths, nozzle IDs, machine matrices) carries information. Slightly over-packed but no filler.
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 no output schema, the description should ideally state what the optimization returns (slot table, nozzle assignment) and note the synthesize_circuit input dependency, neither of which it does. The annotated safety profile is covered, so the remaining gap is the return contract and input prerequisite.
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?
Only one parameter exists and schema description coverage is 100%, so the schema already documents 'modules' as coming from synthesize_circuit output. The description adds nothing about the input shape, so baseline 3 applies.
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 names a specific verb ('Optimize') and two concrete resources (feeder slot allocation, nozzle tooling selection) with the valid widths and nozzle IDs spelled out. It is clearly separable from siblings like calculate_smt_placement_clearance or export_openpnp_job, though it does not explicitly name them.
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?
There is no statement of when to use this tool, what triggers it in a workflow, or which alternatives exist. The implicit dependency on synthesize_circuit output is only inferable from the schema description, not the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_smt_placement_clearanceARead-onlyIdempotent
Analyze SMT pick-and-place nozzle collision clearance between tall (H >= 4.0mm) and low components, evaluate nozzle keepout envelopes (min 2.0mm horizontal gap), and generate layered placement priority sequences (lowest to tallest) per IPC-SM-782 and OpenPnP guidelines.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output, with positions). | |
| board_width_mm | No | Board width in mm (default: 70.0). | |
| board_height_mm | No | Board height in mm (default: 50.0). | |
| min_clearance_envelope_mm | No | Minimum required horizontal clearance between tall and low components (default: 2.0). | |
| min_tall_component_height_mm | No | Threshold height for tall components in mm (default: 4.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only, idempotent, non-destructive profile, so the bar is lower. The description goes beyond them by disclosing the actual decision rules (tall = H >= 4.0mm, 2.0mm horizontal keepout) and what the tool produces (layered placement priority sequences ordered lowest-to-tallest) with cited standards, which is genuine behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with three parallel clauses, front-loaded on the core action and free of filler. Slightly overloaded for one sentence, but nothing is wasted.
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 5 parameters, one required nested object, and no output schema, the description does the important work of explaining what the tool returns (priority sequences, keepout evaluation). The main gap is that it never identifies the required modules input's provenance or what happens when no collisions are found.
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 every parameter (board dimensions, clearance envelope, tall-component threshold) is already documented in the schema, making 3 the baseline. The description restates the 4.0mm and 2.0mm defaults but adds no units, ranges, or interaction semantics beyond that.
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 names a specific verb set (analyze / evaluate / generate) against a precisely scoped resource: SMT nozzle collision clearance between tall and low components. It is instantly distinguishable from nearby siblings such as calculate_smt_feeder_matrix, calculate_stencil_aperture_ratios, or export_openpnp_job.
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 never states when to run this versus alternatives, nor does it state prerequisites such as needing positioned modules from synthesize_circuit before calling. Usage is only inferable from the domain context, and there are no exclusions or ordering guidance anywhere in the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_solder_paste_volumeBRead-onlyIdempotent
Assess per-aperture deposited solder paste volume against target joint volume per IPC-7525A transfer analysis (accepted ratio window 1.0 ~ 2.5), flagging starved joints and excessive paste defects.
| Name | Required | Description | Default |
|---|---|---|---|
| apertures | Yes | Aperture list ({ref, shape: 'rect'|'circle', width_mm, length_mm}). | |
| foil_thickness_um | No | Stencil foil thickness in μm (default: 100). | |
| target_standoff_mm | No | Target solder standoff height in mm (default: 0.10). | |
| transfer_efficiency | No | Paste transfer efficiency η (default: 0.90; nano-coated laser-cut foil). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real domain context beyond that (IPC-7525A basis, the 1.0~2.5 acceptance window, the two defect classes it flags), but it never describes what the result looks like or how the per-aperture findings are reported, and no output schema exists to fill that gap.
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?
A single dense sentence with no filler; purpose, governing standard, acceptance criterion and outputs are all front-loaded. Slightly hard to parse as one run-on, but every clause carries 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 read-only calculation tool the safety side is complete via annotations, and the method and tolerance window are stated. However, the description refers to comparison 'against target joint volume' while the apertures schema exposes only ref, shape, width_mm and length_mm, leaving unexplained where the target joint volume comes from, and with no output schema there is no description of the returned per-aperture 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% with defaults documented for foil_thickness_um, target_standoff_mm and transfer_efficiency, so that is the baseline 3. The description adds no parameter-level detail, such as units or ranges for the standoff/foil inputs, beyond what the schema already states.
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 gives a specific verb (assess) and resource (per-aperture deposited solder paste volume vs. target joint volume) and anchors it to IPC-7525A transfer analysis, so the function is unmistakable. It does not explicitly name or contrast itself with the closest sibling, calculate_stencil_aperture_ratios, so it stops short of a 5.
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 only implied: the mention of an accepted ratio window (1.0 ~ 2.5) and defect flagging tells the agent this is a stencil-design validation step, but there is no explicit when-to-use statement, no prerequisite, and no named alternative among the many calculate_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_stencil_aperture_ratiosARead-onlyIdempotent
Evaluate SMT stencil aperture area ratio (>= 0.66 laser-cut) and aspect ratio (>= 1.5) compliance per IPC-7525 Stencil Design Guidelines, identifying paste-release-deficient apertures.
| Name | Required | Description | Default |
|---|---|---|---|
| apertures | Yes | List of apertures ({ref, shape: 'rect'|'circle', width_mm, length_mm}). | |
| min_area_ratio | No | Minimum acceptable area ratio (default: 0.66). | |
| min_aspect_ratio | No | Minimum acceptable aspect ratio (default: 1.5). | |
| foil_thickness_um | No | Stencil foil thickness in μm (default: 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so safety is covered. The description adds useful domain context (the IPC-7525 criteria and what a failure means), but with no output schema it never says what the response contains or how deficiencies are reported.
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?
A single dense sentence with the standard and thresholds front-loaded and zero filler; every clause carries meaning.
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 read-only calculation tool with full schema coverage, the description supplies the standard, thresholds, and the purpose of the result. The main gap is that no output schema exists and the description does not describe the returned structure, keeping it below a 5.
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%, including the aperture object shape and all three numeric defaults, so the schema carries the parameter burden. The description restates the default thresholds but adds no format or unit guidance beyond what the schema already provides.
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?
States a specific verb (Evaluate), the exact resource (SMT stencil aperture area ratio and aspect ratio compliance), and the governing standard (IPC-7525). It also names the outcome (identifying paste-release-deficient apertures), which distinguishes it from neighbors like calculate_solder_paste_volume.
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 makes the use case clear: checking aperture designs against the >=0.66 area-ratio and >=1.5 aspect-ratio rules to find paste-release problems. It gives no explicit when-not guidance or named alternative tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_teardrop_reinforcementARead-onlyIdempotent
Calculate tangent teardrop fillets for PCB vias, circular pads, and testpoints to prevent drill breakout, eliminate mechanical/thermal crack stress, and comply with IPC-2221B Section 9.1.5 and IPC-A-600J Class 3.
| Name | Required | Description | Default |
|---|---|---|---|
| vias | Yes | List of via objects ({'x_mm', 'y_mm', 'pad_dia_mm', 'drill_dia_mm', 'trace_angle_deg'}). | |
| teardrop_style | No | Fillet geometry: 'curved' (default) or 'linear'. | curved |
| default_trace_width_mm | No | Default trace width in mm (default: 0.20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description adds useful domain context (IPC-2221B 9.1.5 / IPC-A-600J Class 3 compliance, the failure modes being mitigated) but says nothing about output format, units returned, or any limits on input size.
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?
A single front-loaded sentence that leads with the verb and resource and then justifies it with the problem solved and the standards met. Slightly dense with compliance citations that could be trimmed, but nothing is redundant.
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 full annotation coverage and 100% schema coverage, the remaining burden on the description is light. It conveys purpose, motivation and standards alignment; the only gap is that with no output schema it never hints at what the calculation returns (geometry, coordinates, recommended fillet radii).
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%, with the vias list item keys, the teardrop_style enum ('curved'/'linear') and the default trace width all documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 is appropriate.
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 pairs a specific verb (Calculate) with a precise resource (tangent teardrop fillets) and the target objects (PCB vias, circular pads, testpoints). An agent can immediately tell what geometry is produced, but it never distinguishes this from the closely-related sibling calculate_via_protection_plan, leaving the boundary to inference.
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 context is implied by the stated goals ('prevent drill breakout, eliminate mechanical/thermal crack stress'), which tells the agent this is a reinforcement/DFM step. However, there is no explicit when-to-use, no when-not, and no mention of alternatives such as calculate_via_protection_plan, so the agent must guess which via-reinforcement tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_trace_impedanceARead-onlyIdempotent
Calculate characteristic impedance (Z0) or differential impedance (Zdiff) for PCB microstrip traces using IPC-2141 / Wheeler equations. Solves exact trace width W and spacing S for target impedance (e.g. 50Ω RF, 90Ω USB, 120Ω RS485/CAN).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Trace mode: 'single' for single-ended microstrip, 'differential' for edge-coupled microstrip pair. | |
| target_z | Yes | Target impedance in ohms (e.g. 50.0 for single-ended, 90.0 for USB differential, 120.0 for CAN/RS485). | |
| trace_gap_mm | No | Spacing between differential traces in mm (only used in differential mode, default: 0.15mm). | |
| dielectric_er | No | Relative dielectric permittivity (Er) (default: 4.2 for FR4). | |
| dielectric_h_mm | No | Dielectric height between trace and reference ground plane in mm (default: 0.1mm for JLC04161H 4-layer). | |
| trace_thickness_mm | No | Finished copper thickness in mm (default: 0.035mm for 1oz copper). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description usefully adds the computational method (IPC-2141 / Wheeler, 'exact' solve), but says nothing about assumptions, validity ranges, or what is returned. Adequate but thin beyond the 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?
Two dense sentences with no waste: purpose and method first, then the design use cases. Every clause earns its place and nothing is buried.
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 no output schema, the description compensates by stating the tool solves for trace width W and spacing S for a target impedance, giving the agent a sense of the return. It stops short of documenting output units, validity limits, or solver failures.
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%, including enum and defaults for mode, target_z, gap, Er, dielectric height and copper thickness, so the schema carries the parameter burden. The description adds only a high-level mapping to target impedances already exemplified in the schema – baseline 3 is appropriate.
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?
States a specific verb (calculate) and resource (characteristic/differential impedance for PCB microstrip traces), and names the governing method (IPC-2141 / Wheeler). However, it never distinguishes itself from close siblings such as calculate_pcb_stackup_impedance or analyze_impedance_tolerance, so the agent must infer the boundary.
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 examples (50Ω RF, 90Ω USB, 120Ω RS485/CAN) imply the design-time scenario, and the description notes it solves for width/spacing from a target impedance. But there is no explicit when-not-to-use or named alternative among the many impedance-related siblings, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_via_protection_planBRead-onlyIdempotent
Select IPC-4761 via protection types (Type I ~ VII) per via assembly context: Type VII filled-and-capped (VIPPO) mandatory for BGA via-in-pad, Type V fill for thermal pads, Type IV tent+plug for BGA channels, Type II tent for free vias.
| Name | Required | Description | Default |
|---|---|---|---|
| vias | Yes | Via list ({id, in_pad, land_type: 'bga'|'thermal'|'signal', in_bga_pitch, vippo_filled}). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral content by revealing the deterministic selection logic, but says nothing about error cases, how the plan is computed, or the shape of the result.
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?
A single front-loaded sentence that states the purpose before enumerating the mapping rules via a colon-separated list. Dense but every clause carries domain signal; only the very long enumeration keeps it from being tight.
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 one-parameter, fully-documented input with annotations but no output schema, the description covers the selection logic and implicitly the output content (the chosen protection types). It does not describe the returned plan's format or structure, leaving a real gap for an agent.
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?
One parameter with 100% schema description coverage, so the schema already documents the {id, in_pad, land_type, in_bga_pitch, vippo_filled} via list. The description does not add field-level meaning beyond the schema, making the baseline 3 appropriate.
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?
States a specific verb (Select) and a well-scoped resource (IPC-4761 via protection types I–VII) mapped to via assembly context. An agent can distinguish it from calculation siblings like calculate_via_stitching_array. It stops short of explicitly naming a sibling to avoid, so 4 rather than 5.
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 rich domain rules (Type VII mandatory for BGA via-in-pad, Type V for thermal pads, etc.), which imply when each selection applies, but never states when to invoke this tool versus alternatives or what preconditions must hold. Usage is implied rather than declared.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_via_stitching_arrayARead-onlyIdempotent
Calculate thermal via matrix array under QFN/power exposed pads (IPC-7093 Section 7.2) or RF ground shielding fence via arrays (IPC-2141A <= lambda/10 pitch) with thermal resistance reduction metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| center_x_mm | No | Center X coordinate in mm (default: 0.0). | |
| center_y_mm | No | Center Y coordinate in mm (default: 0.0). | |
| drill_dia_mm | No | Via drill diameter in mm (default: 0.30). | |
| pad_width_mm | No | Exposed pad width in mm (default: 5.0). | |
| grid_pitch_mm | No | Via center-to-center pitch in mm (default: 1.20). | |
| pad_height_mm | No | Exposed pad height in mm (default: 5.0). | |
| is_rf_shielding_fence | No | Whether to generate dual-side ground shielding fence for RF microstrip (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered by structured data. The description adds domain context (standards, 'thermal resistance reduction metrics') but does not describe the actual computed result shape, and there is no output schema to compensate.
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?
A single dense sentence with the verb front-loaded, standards and modes packed efficiently, and zero filler. Nothing is repeated from the schema or annotations.
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 read-only calculation tool with 7 well-documented optional parameters, the description covers purpose and mode selection but offers no information about the returned output (no output schema exists) beyond the vague phrase 'thermal resistance reduction metrics'. Adequate but with a clear gap around 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 schema already documents all 7 parameters with defaults and units. The description only adds standards context (lambda/10 pitch relating loosely to grid_pitch_mm) and does not explain parameter interactions beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Calculate') and a precisely scoped resource: thermal via matrix arrays under QFN/power exposed pads or RF ground shielding fences, citing IPC-7093 §7.2 and IPC-2141A. This is clearly distinguishable from nearby siblings like calculate_via_protection_plan or calculate_pcb_stackup_impedance.
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 names two concrete usage contexts – thermal management under exposed pads and RF shielding fences with <= lambda/10 pitch – which maps directly to the is_rf_shielding_fence flag. It gives clear context but stops short of explicit 'when not to use' guidance or naming an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calculate_wave_solder_orientation_auditARead-onlyIdempotent
Audit bottom-side SMD component wave soldering orientation angles and hydrodynamic shadowing per IPC-7351B and SMTA guidelines: chip passives (0603/0805) perpendicular to flow to prevent tombstoning, SOIC ICs parallel to flow to prevent solder bridging, and 3xH shadow keepout zones behind tall components.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (with rotation_deg, position, and package). | |
| flow_direction | No | Conveyor wave flow direction: 'X+' (default), 'X-', 'Y+', or 'Y-'. | X+ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, read-only operation, lowering the bar. The description adds genuine behavioral content — the actual audit criteria (tombstoning, bridging, shadow keepouts) — but says nothing about what the audit returns or how results are reported, and no output schema exists to fill that gap.
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?
A single front-loaded sentence with dense but relevant technical content and zero filler. Slightly long, but every clause (standards, package-specific rules, keepout) earns its place.
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 read-only audit with nested module input, the description conveys what is being checked and against which standards thoroughly. The one gap is that with no output schema, it never hints at return values, but the domain rules are complete enough to 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?
Schema description coverage is 100% for both parameters, so the schema already documents 'modules' and 'flow_direction'. The description references flow direction contextually (perpendicular/parallel to flow) but adds no syntax, format, or constraint detail beyond what the schema supplies — baseline 3.
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?
States a specific verb (audit) and resource (bottom-side SMD wave soldering orientation angles and hydrodynamic shadowing), plus the governing standards (IPC-7351B, SMTA). The embedded rules — chip passives perpendicular, SOIC parallel, 3xH keepout — make it unmistakable against siblings like calculate_smt_placement_clearance.
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 makes the domain of applicability obvious (bottom-side SMD wave soldering) but never states when to use this vs. alternatives such as calculate_smt_placement_clearance, nor any prerequisites. Usage is implied by the subject matter rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_netlistsARead-onlyIdempotent
Engineering Change Order (ECO) netlist diff: compare two netlist revisions and report added/removed components, value/package changes, added/removed nets, pin membership moves, total change count, and ECO severity (NONE / MINOR / MAJOR) for PLM change management.
| Name | Required | Description | Default |
|---|---|---|---|
| new_modules | Yes | Revision B component modules dict. | |
| old_modules | Yes | Revision A component modules dict. | |
| new_connections | Yes | Revision B connections list. | |
| old_connections | Yes | Revision A connections list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, and the description adds real value by enumerating what the diff reports (added/removed components and nets, pin moves, change count, ECO severity). It does not specify the severity thresholds or the fail/degenerate case for mismatched inputs, keeping it short of a 5.
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?
A single dense, front-loaded sentence that leads with the expanded acronym and domain, then lists report contents. It is slightly list-heavy but every clause earns its place; no filler.
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 no output schema, the description usefully enumerates the return contents and severity scale, and all params are described in the schema. It is nearly complete, lacking only severity determination logic and expected input shape.
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 all four params (old/new modules and connections) are already documented as Revision A/B. The description adds no additional format or ordering nuance beyond the schema, so baseline 3 applies.
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?
States a specific verb (diff/compare) and resource (two netlist revisions) plus expanded outputs, and is clearly distinguishable from siblings like validate_netlist or export_kicad_netlist. An agent can identify what it does without opening the schema.
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 phrase 'for PLM change management' and 'ECO' imply the scenario, but there is no explicit when-to-use vs when-not, no prerequisites, and no alternates (e.g., validate_netlist). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_solder_joint_thermal_fatigueARead-onlyIdempotent
IPC-9701A / IPC-D-279 Engelmaier thermal cycling fatigue life estimator for critical SMT attachments: computes CTE-mismatch shear strain range over the component DNP, applies the creep-aware cycle exponent (hot dwell and mean joint temperature), and reports cycles-to-63.2%-failure against the service requirement across TC1-TC4 automotive/aerospace profiles.
| Name | Required | Description | Default |
|---|---|---|---|
| dnp_mm | No | Distance from board neutral point to farthest joint in mm (default: 15.0). | |
| component | No | Ref/designation of the worst-case component (default: U1_BGA256). | U1_BGA256 |
| condition | No | IPC-9701 profile: 'TC1' 0-100, 'TC2' -25-125, 'TC3' -40-125 (default), 'TC4' -55-125 °C. | TC3 |
| temp_max_c | No | Explicit cycle maximum °C (overrides condition). | |
| temp_min_c | No | Explicit cycle minimum °C (overrides condition). | |
| pcb_cte_ppm | No | PCB in-plane CTE in ppm/K (default: 15.0 FR-4). | |
| hot_dwell_min | No | Hot dwell time per cycle in minutes (default: 10.0). | |
| joint_height_mm | No | Solder joint standoff height in mm; BGA ~0.10-0.45, QFN ~0.05 (default: 0.10). | |
| package_cte_ppm | No | Package substrate/leadframe CTE in ppm/K (default: 14.0 BT BGA). | |
| required_cycles | No | Service cycles the attachment must survive (default: 3000). | |
| compliance_factor_f | No | Joint compliance factor (0.5 typical, 1.0 stiff; default: 0.5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered; the description adds real behavioral context instead — the physics performed (CTE-mismatch shear strain over DNP, creep-aware exponent with hot dwell and mean joint temperature) and the reported metric (cycles to 63.2% failure versus required cycles). It stops short of noting assumptions or validity limits of the Engelmaier model, which would be the last step to a 5.
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?
A single dense sentence that front-loads the standards and the verb before the method details, with no filler. It is long but every clause (strain range, creep exponent, dwell/temperature, reported metric, profile range) carries 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?
With 11 optional parameters and no output schema, the description does the necessary work of saying what comes back (cycles-to-63.2%-failure against the service requirement), so an agent can interpret the result. Missing only method preconditions and how overrides interact, which the schema partly covers.
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 every one of the 11 parameters is already documented with defaults and units; baseline is therefore 3. The description reinforces the roles of DNP, hot dwell, and the TC1-TC4 conditions but adds no syntax, coupling, or edge-case guidance (e.g., how explicit temp_max_c/temp_min_c interact with condition) beyond what the schema states.
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?
States a specific verb-and-resource pair ('thermal cycling fatigue life estimator' for solder joints) and names the governing standards (IPC-9701A / IPC-D-279 Engelmaier). The domain is specific enough that an agent can separate it from siblings like predict_assembly_mtbf or assess_drop_shock_reliability, though it never names an alternative explicitly.
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?
Scope is implied by 'critical SMT attachments' and 'against the service requirement across TC1-TC4 automotive/aerospace profiles', so an agent can infer the fit. But there is no explicit when-to-use/when-not statement, no prerequisite guidance (e.g., needing DNP and CTE data first), and no routing to a sibling such as predict_assembly_mtbf.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_material_cti_creepageARead-onlyIdempotent
Evaluate substrate Comparative Tracking Index (CTI) Material Group (Group I >= 600V to Group IIIb) and required safety creepage under Pollution Degrees 1/2/3 and Basic/Reinforced insulation per IEC 62368-1 Table 25 and IPC-2221B, calculating safety margins and recommending high-CTI laminates.
| Name | Required | Description | Default |
|---|---|---|---|
| insulation_type | No | Insulation classification: 'Basic' (default) or 'Reinforced'. | Basic |
| substrate_cti_v | No | Substrate CTI rating in Volts (default: 175.0 for standard FR-4; 600.0 for Group I). | |
| pollution_degree | No | Pollution degree 1, 2, or 3 (default: 2). | |
| working_voltage_v | No | Operating rms/DC voltage (default: 220.0). | |
| actual_clearance_mm | No | Actual physical conductor spacing in mm (default: 2.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered by structured data. The description adds that it computes safety margins and recommends high-CTI laminates, which is useful output context, but it says nothing about edge cases, invalid-input handling, or how the recommendation is derived. Adds some value without rich behavioral disclosure.
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?
Front-loaded with verb and resource, and every clause (standards, material groups, output actions) contributes. It is a single dense run-on sentence, which slightly hurts scanability but does not waste 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?
For a read-only calculation tool with no output schema, the description conveys the standards basis, input dimensions, and the shape of the result (safety margins, laminate recommendations), so an agent knows what comes back. Minor gaps remain around the exact return fields and how it differs from the overlapping clearance sibling.
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% and every parameter (including defaults) is documented in the schema, so the baseline is 3. The description does add interpretive meaning for substrate_cti_v by mapping Group I to >=600V and enumerating Pollution Degrees 1/2/3, but it restates most of what the schema already carries.
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?
States a specific verb (Evaluate) and a well-defined resource: substrate CTI Material Group plus required safety creepage, tied to named standards (IEC 62368-1 Table 25, IPC-2221B). The scope is clear enough to distinguish it from a generic clearance calculator, but it never names the closely related siblings (calculate_ipc2221_clearance, calculate_creepage_isolation_slot), so an agent must infer the boundary.
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 domain and standards are given, which implies usage (sizing creepage from a substrate's CTI rating), but there is no explicit when-to-use, when-not-to-use, or routing to alternatives. Given heavy overlap with calculate_ipc2221_clearance in the sibling list, the absence of any disambiguation is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_assembly_drawing_svgARead-onlyIdempotent
Generate a scaled PCBA assembly drawing SVG per ASME Y14.5 and IPC-2221B Section 11: body outlines with refDes labels, polarity marks (pin-1 dots, cathode bars, plus frames), mirrored bottom view, and an ASME Y14.100 title block with revision and check signature.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Drawing title (default: PCBA ASSEMBLY DRAWING). | PCBA ASSEMBLY DRAWING |
| modules | Yes | Component modules dict (from synthesize_circuit output, with positions). | |
| revision | No | Drawing revision letter (default: A). | A |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). | |
| mirrored_bottom | No | Render bottom view mirrored in X (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds detail about rendered content (polarity marks, mirrored view, title block) but says nothing about behavior beyond output content—no error handling, determinism, or size/complexity limits.
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?
A single dense sentence with the verb front-loaded and no filler. It is long but every clause enumerates real output features rather than restating the name.
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?
No output schema exists, so the description usefully enumerates what the SVG contains (outlines, refDes, polarity marks, title block). Combined with 100% schema coverage on the six parameters, an agent has enough to call it correctly; only the modules dependency and failure behavior are left implicit.
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 echoes a few parameters (mirrored bottom view, revision/title block) but adds no format or syntax detail beyond what the schema already documents.
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?
States a specific verb (Generate) and resource (scaled PCBA assembly drawing SVG), plus the governing standards ASME Y14.5 / IPC-2221B Sec 11. It is immediately distinguishable from sibling exporters like export_gerber_bundle, export_ipc2581, or export_kicad_schematic, which produce entirely different artifacts.
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 artifact type (you call this when you need an assembly drawing SVG), but there is no explicit when/when-not guidance and no named alternative. The dependency on synthesize_circuit output appears only in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_excellon_drillBRead-onlyIdempotent
Generate production IPC-NC-349 Excellon CNC drill file (.drl) with metric tool headers (T01C... T02C...), completing the 5-layer PCB manufacturing bundle for automated CNC drilling machines.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| job_name | No | PCB fabrication job name. | CIRCUIT_AGENT_PCB |
| connections | No | Netlist connections list (optional). | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description usefully adds format specifics (IPC-NC-349, metric tool headers), but says nothing about whether output is returned inline, written to disk, or overwritten, which is the key behavior for a 'generate file' tool.
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?
A single front-loaded sentence that leads with verb and artifact and then layers technical specifics. It is dense but contains little filler; the trailing 'for automated CNC drilling machines' is the only mildly redundant clause.
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 tool with a nested required parameter and no output schema, the description should clarify return shape or file-destination behavior, and it does not. It covers the artifact format adequately but leaves the agent guessing about output handling and the exact role of optional inputs like 'connections'.
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 all five parameters (including the nested 'modules' object and optional 'connections') are already documented in-schema. The description adds no per-parameter meaning beyond the output format, so the baseline of 3 applies.
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 states a specific verb (Generate) and a precise resource (IPC-NC-349 Excellon CNC drill file, .drl) with format-level detail like metric tool headers (T01C...). It implicitly distinguishes itself from sibling exporters like export_gerber_bundle by being the drill-specific step, though it never names or contrasts an alternative.
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?
There is no explicit when-to-use, when-not-to-use, or naming of alternatives. The phrase 'completing the 5-layer PCB manufacturing bundle' hints that it belongs in a downstream export sequence, but the agent receives no guidance on ordering, prerequisites, or which sibling exporter handles which artifact.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_gerber_bundleARead-onlyIdempotent
Generate native fabrication-ready Gerber RS-274X + Excellon bundle (Edge_Cuts .gm1, Top/Bottom Copper .gtl/.gbl, Top/Bottom Mask .gts/.gbs, Top Silkscreen .gto, drill .drl) directly from placed modules and netlist, eliminating GUI EDA dependency. Copper layers carry real footprint pads and the autorouter's actual track geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (from synthesize_circuit output). | |
| ses_text | No | Optional Specctra SES session text from a previous autoroute_pcb call. Overrides 'autoroute' and avoids routing twice. | |
| autoroute | No | Run the autorouter first so the copper layers carry real tracks (default: true). Set false to export pads only, i.e. an unrouted board. | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is lower; the description still adds real value by explaining that copper layers carry actual footprint pads and autorouter track geometry, and that the default path runs routing first. It does not disclose how the bundle is delivered (written to disk vs returned inline), which matters for an export tool.
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 sentences, zero filler, front-loaded with the deliverable. The parenthetical layer list is long but earns its place by letting an agent verify completeness of the produced bundle.
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?
No output schema exists, and the description does a good job enumerating the bundle contents in its place. However, it leaves the delivery mechanism (file paths, archive, or inline data) and size/pagination behavior unspecified, which is a meaningful gap given nested-object inputs and a six-parameter surface.
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 all six parameters are documented in structured form and the baseline is 3. The description reinforces the meaning of the autoroute default ('real track geometry') but adds no format, unit, or constraint detail beyond what the schema already states.
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?
Specific verb (Generate) plus a precisely named artifact (native fabrication-ready Gerber RS-274X + Excellon bundle), with the exact layer set and file extensions enumerated. An agent can distinguish this from export_excellon_drill, export_ipc2581, or export_specctra_dsn without opening any schema.
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 context is implied rather than stated: 'directly from placed modules and netlist' tells the agent the prerequisites come from synthesize_circuit, and the schema mentions ses_text from a previous autoroute_pcb call. But there is no explicit when-to-use/when-not guidance and no routing to siblings such as export_excellon_drill (drill only) or validate_manufacturing_package.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_ipc2581ARead-onlyIdempotent
Export a simplified IPC-2581B single-file intelligent fabrication data package (XML) — stackup, BOM, placed components, nets with pin membership, and board profile — replacing the legacy Gerber+Excellon+TXT handoff bundle accepted by Siemens X / Altium / Zuken / EMS houses.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| connections | No | Netlist connections list. | |
| project_name | No | Project/organization name embedded in the XML (default: HARDWARE_PROJECT). | HARDWARE_PROJECT |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| stackup_layers | No | Optional stackup layers ({name, class: 'CONDUCTOR'|'DIELECTRIC', thickness_um, material}). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description usefully adds the packaged contents (single-file XML replacing a multi-file handoff bundle), but says nothing about where the file is written, how output is retrieved, or prerequisites such as needing synthesize_circuit output first.
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?
A single front-loaded sentence with zero filler; every clause carries information (format, contents, audience, alternative). It is dense and long but not padded.
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?
No output schema exists, and the description compensates by thoroughly describing what the produced artifact contains. Combined with the annotations' safety profile and the fully documented input schema, an agent has enough to select and invoke it 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%, so the schema already documents all six parameters, and the baseline is 3. The description loosely maps its content list (stackup, BOM, nets) onto modules/connections/stackup_layers but adds no syntax, format, or constraint detail 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?
States a specific verb (Export) and resource (IPC-2581B single-file intelligent fabrication data package in XML), then enumerates its contents (stackup, BOM, placed components, nets with pin membership, board profile). This clearly separates it from the other export_* siblings, notably export_gerber_bundle and export_excellon_drill.
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 phrase 'replacing the legacy Gerber+Excellon+TXT handoff bundle' implicitly routes the agent away from the gerber/excellon siblings toward this one, and naming Siemens X / Altium / Zuken / EMS houses gives downstream context. It stops short of an explicit 'use instead of export_gerber_bundle when X' statement, so no exclusions are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_ipc_d356ARead-onlyIdempotent
Generate universal IPC-D-356A ASCII bare-board electrical test netlist file for flying probe testers (AEMG, ATG, MicroCraft) and bed-of-nails PCB fabrication test fixtures.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (from synthesize_circuit output). | |
| job_name | No | Fabrication PCB job name. | CIRCUIT_AGENT_PCB |
| board_width_mm | No | Board width in mm (default: 70.0). | |
| board_height_mm | No | Board height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that output is a universal ASCII format targeted at specific test hardware, but says nothing about where the file is written, what is returned, or whether required inputs must come from a prior synthesis step — all of which the annotations do not cover.
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?
A single front-loaded sentence naming the artifact, format, and audience with no filler. Every clause earns its place and nothing is redundant.
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 five parameters, nested object inputs, and no output schema, the definition should clarify the return artifact (file path, string contents, or written file) and the required upstream synthesize_circuit inputs. The description delivers the format context but leaves the return contract and workflow prerequisites unstated.
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% (including the origin note for modules/netlist and defaults for job_name and board dimensions), so the schema carries parameter meaning. The description adds no parameter-level detail beyond restating the file type, making the baseline 3 appropriate.
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 gives a specific verb (Generate) and a precise resource (IPC-D-356A ASCII bare-board electrical test netlist file), plus the consuming equipment. The format naming implicitly separates it from sibling exporters like export_ipc2581 and export_kicad_netlist, but no sibling is ever named directly, so an agent must infer the boundary from format knowledge alone.
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?
Naming flying-probe testers (AEMG, ATG, MicroCraft) and bed-of-nails fixtures implies the downstream use case, but there is no explicit when-to-use statement, no exclusion against the many other export_* siblings, and no prerequisite such as 'requires netlist from synthesize_circuit'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_kicad_netlistBRead-onlyIdempotent
Export standard KiCad S-Expression netlist (.net) compatible with KiCad 6/7/8/9/10 Pcbnew.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Schematic / board project title. | CircuitAgent_Design |
| netlist | Yes | Hardware netlist dictionary or synthesis result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety and repeatability profile is covered without help from the description. The description adds useful format/version-compatibility context but says nothing about where the file is written, whether an existing .net is overwritten, or what is returned.
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?
A single front-loaded sentence naming the artifact and its compatibility; nothing is padded or redundant.
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 nested-object required parameter and no output schema, the description should say what the export produces (file path, content, or written-to-disk side effect) and what shape the input netlist must take. Those gaps are modest for a two-parameter exporter but leave an agent guessing about the result of the call.
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 schema already documents both 'title' and 'netlist' (including the nested-object nature of netlist). The description contributes no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.
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?
States a specific verb (Export) plus a specific resource and format (KiCad S-Expression netlist, .net), and even pins version compatibility with Pcbnew 6-10. The file-type specificity inherently separates it from export_kicad_schematic, export_specctra_dsn and export_ipc2581, though it never names a sibling explicitly to draw the contrast.
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?
There is no statement of when to choose this exporter over the other export_* siblings, no prerequisite (e.g. a validated netlist, like validate_netlist), and no condition under which it should be avoided. Usage must be inferred purely from the output format name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_kicad_schematicARead-onlyIdempotent
Export modern KiCad 8/9 S-Expression schematic file (.kicad_sch) directly viewable and editable in KiCad Eeschema with sheet layout, component symbols, pin references, and LCSC attributes.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Schematic sheet title block title. | Hardware Design |
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| connections | No | Netlist connections list (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive behavior, so the bar is lower, yet the description adds real value by spelling out what the emitted artifact contains (sheet layout, component symbols, pin references, LCSC attributes). It still does not mention where the file is written or whether it overwrites an existing .kicad_sch.
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?
A single front-loaded sentence with the verb and format up front and zero filler. Every clause (format version, file extension, contents) carries 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?
With no output schema, the description helpfully characterizes the returned/generated artifact, and the required 'modules' input is documented in the schema. It stops short of stating the workflow dependency or output destination needed to call it fully 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%, so the schema already documents 'title', 'modules' and 'connections'. The description adds no per-parameter meaning (e.g. what the nested modules object must contain) beyond what the schema states, so the baseline 3 applies.
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?
Specific verb ('Export') plus a precisely scoped resource ('KiCad 8/9 S-Expression schematic file (.kicad_sch)'), with the output's contents enumerated. The KiCad-schematic focus clearly separates it from the sibling export_kicad_netlist without needing the schema opened.
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 only implied: the phrase 'directly viewable and editable in KiCad Eeschema' tells the agent why one would call it, but there is no explicit when-to-use statement, no prerequisite (e.g. that modules should come from synthesize_circuit), and no contrast with export_kicad_netlist or export_ipc2581.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_manufacturing_bomARead-onlyIdempotent
Generate production-ready JLCPCB SMT BOM CSV with part grouping, designator aggregation, and Basic/Extended classification.
| Name | Required | Description | Default |
|---|---|---|---|
| netlist | Yes | Hardware netlist dictionary or synthesis result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description usefully discloses the output content (grouped parts, aggregated designators, Basic/Extended classification), but says nothing about whether the CSV is returned inline or written to disk, which is the key behavioral unknown for an 'export' tool.
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?
A single dense sentence with zero filler; the output format and its three transformations are front-loaded with nothing trailing.
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?
Wait – no output schema exists, so the description must carry the return-value burden, and it does name the artifact and its structure (grouped BOM CSV with classification).
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?
One parameter with 100% schema coverage, so the schema already documents the netlist. The description adds no input-side semantics: it does not state that the netlist must be validated, nor what netlist shape is acceptable (raw dictionary vs synthesis result).
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?
States a specific verb and resource ('Generate ... JLCPCB SMT BOM CSV') plus the three processing behaviors (part grouping, designator aggregation, Basic/Extended classification). An agent can distinguish it from calculate_bom_cost, generate_interactive_bom, and export_assembly_drawing_svg without opening any schema.
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 when-to-use guidance and no alternatives named. It never says whether the netlist must first pass validate_netlist, or when an agent should pick this over generate_interactive_bom or calculate_bom_cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_manufacturing_cplARead-onlyIdempotent
Generate the JLCPCB SMT pick-and-place (CPL/pos) file with designator, centre X/Y in mm, layer and rotation. Required alongside the BOM for assembly: a part in the BOM but absent here is purchased and never soldered.
| Name | Required | Description | Default |
|---|---|---|---|
| netlist | Yes | Hardware netlist dictionary or synthesis result. | |
| default_layer | No | Layer to assign when the netlist does not specify one (default 'Top'). | Top |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low, and the description adds genuinely useful context beyond them: the omission consequence ('a part in the BOM but absent here is purchased and never soldered'). It does not cover the return shape (file text vs. path) or whether it writes to disk, which is the remaining behavioral gap for an export tool.
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 sentences, both load-bearing: the first defines the artifact and its contents, the second supplies the cautionary rationale. Nothing is repeated from the title or schema and the framing is front-loaded.
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?
There is no output schema, and the description makes clear what the file contains, which covers most of what an agent needs. It is slightly incomplete in not stating the return form (file content, path, or confirmation), and not clarifying whether the required netlist must already be validated or synthesized.
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 both 'netlist' and 'default_layer' are already documented in the schema; the description adds nothing about parameter semantics. Baseline 3 is appropriate, though a note on how netlist layer data overrides default_layer would have earned 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?
Specific verb + resource + output artifact: 'Generate the JLCPCB SMT pick-and-place (CPL/pos) file', and it enumerates the columns produced (designator, centre X/Y in mm, layer, rotation). This distinguishes it from the closely related sibling export_openpnp_job (OpenPnP format) and from export_manufacturing_bom, which it explicitly pairs with.
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?
States the usage context clearly: 'Required alongside the BOM for assembly', which tells the agent this is a second half of a two-file package. It does not explicitly name the alternative format tool (export_openpnp_job) or state when the agent should prefer it, so selection between pick-and-place exporters is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_openpnp_jobARead-onlyIdempotent
Generate production OpenPnP and industrial SMT pick-and-place board job CSV (part, designator, X/Y coords, rotation, nozzle ID, feeder slot assignment) for automated robotic assembly.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that the output is 'production' grade and targets automated robotic assembly, but says nothing about where/whether the CSV is written or what returns. Read-only generation of file content is consistent with the annotations, so no 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?
A single sentence with the verb and artifact front-loaded and no wasted clauses. The parenthetical column list is dense but earns its place by clarifying expected output; only minor cost is a slightly run-on structure.
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 no output schema, the description compensates by enumerating the CSV columns, and the schema documents the required modules source and board dimensions. Missing only usage sequencing and any note on how the job relates to the feeder/pick-and-place pipeline.
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 all three parameters (modules, board_width_mm, board_height_mm) are already documented with defaults. The description's field list (part, designator, X/Y, rotation, nozzle ID, feeder slot) describes output content rather than adding meaning to the inputs, so baseline 3 applies.
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?
Specific verb ('Generate') plus a precisely named resource (OpenPnP/industrial SMT pick-and-place job CSV), with the exact emitted columns enumerated so the agent knows what artifact results. The format specificity cleanly separates it from siblings like export_manufacturing_bom, export_kicad_netlist, and generate_assembly_process_plan.
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 when-to-use or when-not-to-use guidance is stated. It never mentions the upstream dependency on synthesize_circuit/validate_netlist, nor how it relates to the adjacent calculate_smt_feeder_matrix or generate_assembly_process_plan tools, leaving the agent to infer sequencing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_specctra_dsnARead-onlyIdempotent
Generate universal Specctra DSN (v15.0) auto-router interchange file for automated PCB track routing in Freerouting, Cadence Specctra, Altium, or KiCad. Includes heuristic component auto-placement.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (from synthesize_circuit output). | |
| clearance_mm | No | Default routing clearance in mm (default: 0.200 / 8mil). | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| trace_width_mm | No | Default routing trace width in mm (default: 0.254 / 10mil). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world traits, so the bar is low. The description adds a genuinely non-obvious behavior - 'Includes heuristic component auto-placement' - which tells the agent this does more than serialize data. It still omits file destination/output handling, so not a 5.
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 focused sentences, front-loaded with the deliverable and its consumers, with zero filler. Every clause carries information about format, version, purpose, or behavior.
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 no output schema, an agent would benefit from knowing what is returned (file path? inline data?) and where the interchange file lands. The description plus annotations otherwise cover the operation well, so the gap is minor rather than fatal.
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 schema fully documents clearance, board dimensions, and trace width; baseline 3 applies. The description adds no parameter syntax or format detail beyond what the schema provides, though the DSN version is noted.
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?
States a specific verb (Generate) and resource (Specctra DSN v15.0 auto-router interchange file), with version and intended downstream consumers. The format name distinguishes it from siblings like export_kicad_netlist, export_gerber_bundle, or export_ipc_d356 without needing to open their schemas.
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?
Names the target tools (Freerouting, Cadence Specctra, Altium, KiCad) for auto-routing, which implies the use context, but gives no explicit when-to-use / when-not guidance or routing between this exporter and the many other export_* siblings. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gate_production_readinessARead-onlyIdempotent
One-call industrial release gate: synthesizes from a prompt, places, autoroutes, exports the full 9-layer fab bundle (copper, mask, silk, stencil, drill, BOM, CPL), then runs the manufacturing validator including solder-mask dam width. Returns a single production_ready verdict plus the blocking defects, so a CI job or a contract manufacturer can decide go/no-go without reading five separate reports.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Natural-language circuit description, e.g. 'ESP32-C3 sensor node with USB-C'. | |
| job_name | No | PCB_PROJECT | |
| board_width_mm | No | ||
| board_height_mm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the description's value is in disclosing the pipeline breadth, the exact bundle contents (copper, mask, silk, stencil, drill, BOM, CPL) and the validation depth including solder-mask dam width. It also states the return contract (single verdict plus blocking defects) despite no output schema. It omits whether exported artifacts persist on disk and rough runtime expectations for such a heavy pipeline.
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 sentences, front-loaded with the one-call gate framing and ending with the consumer-facing outcome; every clause carries information. The comma-heavy enumeration of bundle layers is dense but earns its place by defining the '9-layer' claim.
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 complex multi-stage tool with no output schema, the description does well on outcome and validation scope, but three of four parameters are undocumented here, and side effects of 'export' are left ambiguous against a readOnlyHint=true annotation. It is adequate, but a caller could still be surprised by cost or artifacts.
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 only 25% (only 'prompt' is documented), so the description is obliged to compensate for job_name, board_width_mm and board_height_mm — and it says nothing about any of them. An agent cannot learn from the text whether the board dimensions constrain synthesis or what job_name scopes.
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 names a specific composite verb chain (synthesize → place → autoroute → export → validate) over a specific resource (the 9-layer fab bundle) and states the deliverable (a production_ready verdict). It is clearly separable from siblings like validate_manufacturing_package or export_gerber_bundle because it declares itself a one-call aggregate of those steps.
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?
It frames the usage context explicitly — a CI job or contract manufacturer making a go/no-go decision — and implicitly positions itself against calling the individual reporting tools with 'without reading five separate reports'. It does not name specific sibling tools or state when not to use it (e.g., when iterating on a design), so it stops short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_assembly_process_planARead-onlyIdempotent
Generate a mixed-assembly process route plan: classify each component into SMD reflow / THT wave / THT manual / mechanical stages per IPC-A-610G Section 7, output the 10-stage EMS routing (SPI -> reflow -> AOI -> THT insert -> wave -> manual -> ICT -> FCT -> coating -> packing).
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds real substance by naming the classification standard (IPC-A-610G Section 7) and the concrete output sequence (SPI -> ... -> packing). It does not state error modes or how components map to stages, but the behavioral payload is well above the annotation baseline.
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?
One dense sentence, front-loaded with the core action before the classification and routing detail. The parenthetical 10-stage chain is long but is genuinely informative rather than padding; 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?
With no output schema, the description properly compensates by spelling out the return structure: per-component stage classification plus the 10-stage EMS route. What's missing is whether per-component classification is returned alongside the route and how nested module data is consumed.
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?
Only one parameter exists and schema description coverage is 100%, where the schema already explains modules as a component dict from synthesize_circuit. The description adds no format or structural detail about that dict, so the baseline 3 applies.
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?
States a specific verb (Generate) and a precise resource (mixed-assembly process route plan), then enumerates the exact classification buckets and the 10-stage routing produced. No sibling in the list competes with this output type (siblings are calculators/exporters), so the purpose is 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?
Usage is only implied: the schema notes modules come 'from synthesize_circuit output', which hints at the upstream step, but the description itself never says when to invoke this versus the adjacent audit/calculation tools or what prerequisites must hold. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_interactive_bomBRead-onlyIdempotent
Generate a lightweight self-contained single-file Interactive HTML BOM (iBOM, InteractiveHtmlBom-compatible) with interactive component grouping table, vector SVG board map, and bidirectional hover/click inspection.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Inspection page title. | PCBA First Article Assembly Inspection |
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is fully covered. The description usefully adds that the output is lightweight and self-contained in a single file, but it never clarifies how the artifact is delivered (written to disk vs. returned inline) or that it depends on upstream synthesis output — a notable omission given readOnlyHint on a 'generate' tool.
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?
A single, front-loaded sentence that opens with the verb and artifact, then lists the distinguishing features. No filler sentences and nothing redundant; every clause carries 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 tool with no output schema, the description explains what the generated artifact contains, which partly compensates for the missing return definition. It still leaves open how the HTML is surfaced to the caller, the dependency on synthesize_circuit output, and any sizing/scale caveats around board dimensions.
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 schema already documents title, modules, board_width_mm and board_height_mm with defaults. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
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?
States a specific verb (generate) and a precise resource (single-file Interactive HTML BOM / iBOM), and enumerates the artifact's contents (grouping table, SVG board map, hover/click inspection). An agent knows exactly what artifact this produces. It does not, however, name a sibling it differs from (e.g. export_assembly_drawing_svg or export_manufacturing_bom), so the sibling differentiation is absent.
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?
There is no when-to-use guidance, no statement of prerequisites (that `modules` must come from synthesize_circuit), and no comparison against the many other export/render siblings. Usage is only implied by the description's wording; nothing tells the agent when this tool is the right choice over the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_circuit_blocksARead-onlyIdempotent
List all 10 pre-validated CircuitBlocks available in the hardware DSL catalog.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that — the result set is fixed and finite (exactly 10) and each entry is pre-validated — but says nothing about the item shape or ordering.
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?
A single front-loaded sentence with no filler; the fixed-size and pre-validated qualifiers are packed in 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?
For a trivial read-only discovery tool with full annotation coverage and no output schema, the description is nearly sufficient. The main omission is what a CircuitBlock entry contains, which would help an agent chain this into synthesize_circuit, but that gap is minor at this complexity level.
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 tool takes zero parameters and the description introduces no invented arguments, so there is nothing to mis-document. Baseline of 4 applies for a no-parameter tool.
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?
States a specific verb (List) plus resource (CircuitBlocks) and qualifies scope with 'all 10 pre-validated' in the hardware DSL catalog, so the agent knows exactly what comes back. It does not, however, distinguish itself from similarly named discovery siblings like list_supported_chips or search_lcsc_parts.
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 only implied: as a parameterless catalog listing, it is naturally a discovery step before synthesis or validation. There is no explicit statement of when to prefer it over search_lcsc_parts or list_supported_chips, and no prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_chipsARead-onlyIdempotent
List all registered MCU chips and third-party pinout allocation rules (e.g. CH32V003, STM32G030, ATmega328P).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so an agent knows this is a safe, side-effect-free enumeration. The description adds the content scope (chips plus third-party pinout allocation rules) but says nothing about how results are ordered, paginated, or whether custom vs. built-in entries are distinguished.
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?
One front-loaded sentence with no filler; the resource scope and examples occupy exactly the space they need and nothing is repeated from the schema or annotations.
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 trivial zero-param enumeration with full annotation coverage, the description conveys what is returned at a scope level and needs no parameter or return-format detail. It could be slightly more complete by noting whether results include custom-registered chips from register_custom_chip, but nothing blocks correct invocation.
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?
Zero parameters, so the schema cannot carry parameter meaning and the baseline is 4. The description correctly implies this is an unfiltered full listing, aligning with the empty input 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?
States a specific verb ("List") and resource ("registered MCU chips and third-party pinout allocation rules"), with concrete chip examples that make the domain unambiguous. It implicitly contrasts with the sibling register_custom_chip by emphasizing registered/allocated entries, but never names it, so sibling differentiation is inferential rather than 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?
There is no explicit when-to-use statement naming alternatives such as register_custom_chip or validate_netlist. However, "all registered" strongly implies the discovery use case: call this to see which chips and pinout rules already exist before registering or validating. That is implied usage, not stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_panel_gridARead-onlyIdempotent
Enumerate panel grid combinations (grid_x x grid_y, rail sides, V-cut vs mouse-bites), filter options exceeding the max panel size (default 300x300mm fab limit), and rank feasible layouts by material utilization percentage.
| Name | Required | Description | Default |
|---|---|---|---|
| max_grid | No | Maximum grid count per axis (default: 4). | |
| max_panel_mm | No | Maximum panel dimension in mm (default: 300.0). | |
| rail_width_mm | No | Conveyor rail width in mm (default: 5.0). | |
| board_width_mm | Yes | Single board width in mm. | |
| board_height_mm | Yes | Single board height in mm. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds useful process context — the 300x300mm fab limit framing and that results are ranked by material utilization — but says nothing about cost, pagination, or how many combinations may be returned.
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?
A single dense sentence with no filler; the enumeration step is front-loaded ahead of the filtering and ranking steps. It is slightly long but every clause carries 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?
With no output schema, the description carries the return-value burden and does so adequately by stating that feasible layouts are ranked by material utilization percentage. Defaults and the fab-limit constraint are present, so an agent has what it needs to call the tool.
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 all five parameters are self-documented and the baseline is 3. The description broadens meaning by naming what is enumerated (grid_x x grid_y, rail sides, V-cut vs mouse-bites), but V-cut vs mouse-bites has no corresponding input parameter, so it clarifies outputs rather than inputs.
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?
States a specific verb chain and resource: enumerate panel grid combinations, filter by max panel size, rank by material utilization. An agent immediately knows this is a panelization exploration tool, which is distinct from sibling calculate_pcb_panel_rails, though the description never explicitly names or contrasts that sibling.
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 described behavior (explore feasible panel layouts before committing to one), but there is no explicit when-to-use statement, no prerequisites, and no routing to the closely related calculate_pcb_panel_rails sibling. The agent must infer the selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_smt_feeder_setupARead-onlyIdempotent
Optimize SMT pick-and-place feeder trolley allocation (Panasonic NPM / Fuji NXT / ASM SIPLACE standard 80-slot cart): applies Group Technology (GT) to pin permanent common passive reels (100nF, 10k), places high-frequency reels near the gantry center to minimize travel time, and forecasts reel run-out exhaustion points per batch size per IPC-9851.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (e.g. from synthesis or netlist). | |
| batch_size | No | Production batch size in boards (default: 1000). | |
| common_parts_list | No | Optional list of common component identifiers to pin into the permanent feeder block. | |
| feeder_cart_capacity | No | Total feeder slots on trolley cart (default: 80). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotent and non-destructive, so the safety profile is covered. The description still adds meaningful runtime context beyond the annotations: it discloses the GT pinning strategy, center-of-gantry placement rule, and per-batch run-out forecasting under IPC-9851, which tells the agent what the optimization actually does.
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?
A single dense sentence that front-loads the verb and resource before the algorithm detail. Every clause carries information, though the brand enumeration (Panasonic NPM / Fuji NXT / ASM SIPLACE) is slightly padded.
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?
No output schema exists, but the description compensates partially by naming what the optimization produces: pinned common reels, high-frequency placement, and run-out exhaustion forecasts. It does not describe the return structure or pagination/serialization, leaving a modest gap for a nested-input computation tool.
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 schema already documents all four parameters, including defaults and the nested modules object. The description only weakly echoes batch_size ('per batch size'), adding no syntax or format detail beyond the schema, so the baseline of 3 applies.
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?
States a specific verb+resource: optimizing SMT pick-and-place feeder trolley allocation on an 80-slot cart, and even names the machine platforms and the algorithms used. An agent can tell it apart from generic siblings, but it never addresses the very close sibling calculate_smt_feeder_matrix, so the boundary between the two is left implicit.
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 only implied: the description makes clear this is for SMT line feeder-cart setup, but it gives no when-to-use/when-not, no prerequisites (e.g. that 'modules' must come from synthesis or a netlist), and no pointer to an alternative such as calculate_smt_feeder_matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_conformal_coatingARead-onlyIdempotent
IPC-CC-830C / IPC-A-610G §10 conformal coating material selector and masking keepout planner: validates dry-film thickness against the type windows (AR/ER/UR 30-130, SR 50-210, XY 10-50 μm), flags reworkability conflicts for field-repairable products, and enumerates connector/test-point/switch masking keepouts from the BOM before the selective-coating program is generated.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | No | Optional BOM modules dict — contact-bearing parts become masking keepouts. | |
| coating_type | No | IPC-CC-830 type: 'AR' acrylic (default), 'ER' epoxy, 'UR' urethane, 'SR' silicone, or 'XY' parylene. | AR |
| measured_thickness_um | No | Witness-coupon measured dry-film thickness in μm (default: 75.0). | |
| requires_field_rework | No | Whether the product must be repairable in service (default: False). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety bar is low; the description still adds what the tool actually computes and returns (thickness-window validation, reworkability conflict flags, enumerated masking keepouts). No contradiction with the read-only hint — this is a planning/analysis tool, not a mutator.
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?
A single dense sentence with the standards reference front-loaded and the three behaviors ordered logically. It earns its length, though the packed parenthetical ranges make it slightly harder to scan at a glance.
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?
There is no output schema, and the description compensates by saying what the result contains — validation verdicts against type windows, reworkability flags, and enumerated keepouts. Sufficient for an agent to know what to expect and how to set the four optional params.
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, but the description adds real meaning beyond the schema by stating the per-type thickness windows (AR/ER/UR 30-130, SR 50-210, XY 10-50 μm), which is what makes measured_thickness_um interpretable. It also confirms that BOM module parts with contacts become keepouts.
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?
Names a specific verb and resource: a conformal-coating material selector plus masking keepout planner, scoped to IPC-CC-830C / IPC-A-610G §10. No sibling tool covers conformal coating, and the three functions (thickness validation, reworkability flagging, keepout enumeration) are stated concretely.
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 clause 'before the selective-coating program is generated' places it clearly in the workflow sequence. It gives clear triggering context but does not name exclusions or a sibling alternative for overlapping concerns (e.g. DFM audits like audit_industrial_dfx).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_assembly_mtbfARead-onlyIdempotent
Telcordia SR-332 / MIL-HDBK-217F part-stress MTBF prediction: classifies the BOM into Telcordia part classes, applies Arrhenius πT at worst-case ambient, quality πQ (level 1-3), and environment πE (ground benign 1.0 to airborne 12.0), returns total FIT, MTBF hours/years, 5-year survival probability, and the top-5 dominant failure-rate contributors.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | No | BOM modules dict — parts are auto-classified by kind/value. | |
| environment | No | 'ground_benign' | 'ground_fixed' (default) | 'ground_mobile' | 'airborne'. | ground_fixed |
| part_counts | No | Explicit {part_class: quantity} mapping (Telcordia classes). | |
| quality_level | No | Telcordia qualification level 1 (screened 0.8×) / 2 (standard, default) / 3 (uncertified 2.0×). | |
| ambient_temp_c | No | Worst-case operating ambient in °C (default: 40.0). | |
| duty_cycle_derate | No | Operating duty fraction 0-1 applied to total λ (default: 1.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive/closed-world, and the description adds substantive behavioral context: worst-case ambient assumption, Arrhenius πT, quality πQ levels, environment πE range, and precisely what is returned. It does not disclose how `modules` and `part_counts` interact (mutually exclusive or merged), which is the one real behavioral gap.
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?
A single dense sentence that front-loads the standard and the computation, with outputs last. Efficient, though the πT/πQ/πE notation chain is packed tightly enough to read as a spec dump rather than guidance.
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 no output schema, the description correctly enumerates the returned quantities (FIT, MTBF hours/years, 5-year survival, top-5 contributors), which is the critical coverage. Remaining gaps are the modules-vs-part_counts relationship and behavior on an empty/incomplete BOM.
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 baseline is 3; the description adds value by tying πQ to level 1-3 multipliers and giving πE numeric values (ground benign 1.0 to airborne 12.0) that the schema only enumerates by name. It still says nothing about precedence between `modules` auto-classification and explicit `part_counts`.
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?
States a specific verb (predict) and resource (part-stress MTBF per Telcordia SR-332 / MIL-HDBK-217F), plus the exact methodology and the outputs produced (FIT, MTBF hours/years, 5-year survival, top-5 contributors). No sibling in the list covers reliability prediction, so an agent can route here without ambiguity.
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 explains how the prediction is computed but never says when to use this tool, when not to (e.g. vs. estimate_solder_joint_thermal_fatigue or assess_drop_shock_reliability), or what prerequisites (a populated BOM/modules) it assumes. Usage is only inferable from the method name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_custom_chipBIdempotent
Register or dynamically override a third-party microcontroller pinout and peripheral multiplexing rule.
| Name | Required | Description | Default |
|---|---|---|---|
| pins | Yes | List of available GPIO and power pins | |
| chip_id | Yes | Unique identifier, e.g. 'CH32V003F4P6' | |
| package | No | Physical package, e.g. 'TSSOP-20', 'QFN-32' | |
| mcu_family | No | MCU family, e.g. 'QingKe-RISC-V', 'ARM-Cortex-M0+' | |
| description | No | Human-readable description of the chip | |
| pin_numbers | No | Map of pin names to physical pin numbers, e.g. {'PD1': '8'} | |
| reserved_pins | No | Map of reserved pins and reasons, e.g. {'PD1': 'SWDIO', 'NRST': 'RESET'} | |
| supply_voltage | No | Operating voltage (typically 3.3 or 5.0) | |
| peripheral_routes | No | Peripheral routing defaults, e.g. {'I2C1': {'I2C_SCL': 'PC2', 'I2C_SDA': 'PC1'}} | |
| default_gpio_assignments | No | Default signal mappings, e.g. {'/LED1': 'PD4'} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive, closed-world write, so the safety profile is covered. The description usefully adds that the operation can 'dynamically override' an existing definition, which aligns with idempotentHint. It omits persistence scope (session vs durable), effect on existing designs, and any validation 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?
A single sentence with zero filler and the core action front-loaded. It is efficient, though extremely terse relative to the tool's ten-parameter, nested-object 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?
For a mutation tool with 10 parameters, nested objects, and no output schema, the description is thin: it does not say whether the registration persists, whether overriding replaces the whole definition or merges, or how it interacts with downstream tools. The rich schema compensates for parameter coverage, but behavioral context is left largely to the annotations.
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% across all 10 parameters with concrete examples (chip_id 'CH32V003F4P6', pin_numbers map, peripheral_routes), so the schema carries the parameter burden. The description adds no parameter-level detail beyond what is already documented, which is the expected baseline here.
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?
States a specific verb (register/override) and a specific resource (third-party MCU pinout and peripheral multiplexing rules), which is enough to separate it from read-only siblings like list_supported_chips. However, it never names or contrasts with any sibling explicitly, so the differentiation is inferred rather than stated.
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?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as list_supported_chips or validate_netlist. The phrase 'third-party' and 'dynamically override' weakly imply the case of an unsupported chip, but the agent must guess the trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_circuit_topologyBRead-onlyIdempotent
Render a clean, structured ASCII architectural diagram of power domains, buses, and connected subsystems.
| Name | Required | Description | Default |
|---|---|---|---|
| netlist | Yes | Hardware netlist dictionary or synthesis result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered structurally. The description adds the output format ('clean, structured ASCII'), which is genuinely useful behavioral context not in the annotations, but says nothing about scale limits, diagram size, or failure behavior on invalid netlists.
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?
A single front-loaded sentence with no waste. The verb and output are stated immediately and nothing is padded.
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?
There is no output schema, so the description carries the burden of describing the return value, and it does so by identifying the output as an ASCII diagram of power domains, buses, and subsystems. It is a bit thin on input expectation and usage context, but adequate given the annotations on safety.
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% with a single required 'netlist' object parameter whose schema already documents it as a 'Hardware netlist dictionary or synthesis result.' The description adds no additional meaning about the parameter, so the baseline 3 applies.
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?
States a specific verb (Render) and resource (ASCII architectural diagram of power domains, buses, connected subsystems). A reader knows exactly what the tool produces. However, it offers no differentiation from siblings that also touch topology/domain concepts, such as analyze_power_tree or list_circuit_blocks.
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 gives no when-to-use context, no prerequisites, and no named alternatives among the many sibling tools. The agent must infer that this is a visualization tool versus the analyze_* or export_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_ercARead-onlyIdempotent
Run deterministic Electrical Rules Check (ERC) on a netlist: floating nets, missing GND, unknown designators, missing power domain, missing decoupling. Every finding carries severity + source; blocking/error issues gate BOM/CPL delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | No | Optional modules dict (ref -> {kind, value, package, lcsc}) for component-aware rules. | |
| netlist | Yes | Netlist dict with 'connections' (synthesize_circuit output passes directly). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds genuinely useful behavioral context: it is deterministic, every finding carries severity + source, and blocking/error issues gate BOM/CPL delivery. The gating consequence is meaningful information annotations cannot 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?
Two sentences, front-loaded with the action and followed by concrete rule categories and the outcome of findings. It is efficient with little waste, though the middle enumeration is dense and could be trimmed slightly.
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 no output schema, the description does well to note that findings carry severity + source rather than returning raw data. Combined with the nested-object input and the safety annotations, an agent has enough to invoke it correctly, though it could say more about the return structure and its relationship to sibling validation tools.
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 both parameters (netlist, modules) are already documented in the schema and the baseline is 3. The description refers to operating 'on a netlist' but adds no syntax, format, or meaning for the modules parameter beyond what the schema provides.
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 states a specific verb and resource ('Run deterministic Electrical Rules Check (ERC) on a netlist') and enumerates the exact rule categories checked (floating nets, missing GND, unknown designators, etc.), which tells an agent precisely what the tool does. It does not, however, differentiate itself from the near-identical sibling validate_netlist, so it falls short of a 5.
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?
There is no explicit when-to-use or when-not-to-use guidance, and no mention of the obvious alternative validate_netlist, which is the closest sibling in the list. The purpose implies the tool is run on a netlist for checking, but the agent is left to infer when to pick run_erc over validate_netlist or diff_netlists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_pcb_drcARead-onlyIdempotent
Execute rigorous physical Design Rule Check (DRC) on a routed PCB and return a scored violation report. Verifies what the router cannot: true copper-to-copper clearance between different nets (segment-to-segment geometry, not grid cells), acid traps and sub-90-degree etching crevices (IPC-2221B 10.1.2), trace width vs process capability, board-edge and mounting-hole keepout intrusion, RF antenna keepout, and high-speed differential pair skew (IPC-2141A 3.4). Returns severity-tagged violations with measured vs required values plus a 0-100 score; passed is false when any blocking error remains.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (from synthesize_circuit output). | |
| ses_text | No | Specctra SES session text to check. When omitted the board is routed first with the default exact engine, so the report describes what would actually be fabricated. | |
| board_width_mm | No | PCB width in mm (default: 70.0). | |
| board_height_mm | No | PCB height in mm (default: 50.0). | |
| check_acid_traps | No | Whether to check acute-angle etching traps and 90-degree high-speed corners (default: true). | |
| max_diff_skew_mm | No | Maximum allowed USB differential pair length mismatch in mm (default: 1.250). | |
| min_clearance_mm | No | Minimum copper-to-copper clearance in mm (default: 0.100 / 4mil). | |
| edge_clearance_mm | No | Minimum copper-to-board-edge setback in mm (default: 0.800). | |
| min_trace_width_mm | No | Minimum manufacturable trace width in mm (default: 0.127 / 5mil). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description still adds real value: severity-tagged violations with measured vs required values, a 0-100 score, and the rule that `passed` is false only when a blocking error remains. It does not describe cost/runtime or how many violations are returned, which keeps it from a 5.
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 sentences, front-loaded with the action and result, followed by a dense but purposeful enumeration of checks and the return contract. The IPC standard citations (IPC-2221B 10.1.2, IPC-2141A 3.4) are mildly verbose but justify the rigor claim, so little is wasted.
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 10-parameter tool with nested objects, the description explains what is checked and what comes back (violation list with severity and measured/required values, plus a score and a passed flag), which compensates for the absent output schema. It stops short of stating the data dependency on synthesize_circuit output, which is only carried by the parameter descriptions.
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 every one of the 10 parameters is already documented, including the important ses_text fallback behavior and all threshold defaults. The description only implies which parameters exist by naming the corresponding checks (acid traps, skew, clearance, trace width); it adds no extra syntax or interaction guidance beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource ("Execute rigorous physical Design Rule Check (DRC) on a routed PCB") and enumerates the exact checks performed, including clearances, acid traps, trace width, keepouts and diff-pair skew. The phrase "verifies what the router cannot" implicitly separates it from autoroute_pcb, and "physical" separates it from electrical checks like run_erc/validate_netlist in the sibling list.
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 (post-routing, pre-fabrication verification) rather than stated. There is no explicit "use this instead of calculate_ipc2221_clearance / calculate_differential_skew" routing, and no precondition like "requires a completed routing session or synthesize_circuit output." An agent can infer the context but must reason about it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_lcsc_partsARead-onlyIdempotent
Query live LCSC / JLCPCB component inventory, stock, package, and pricing with zero API keys required. Features 24-hour disk cache and exponential backoff.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of component matches to return (default: 5). | |
| query | Yes | Component part number, model, or description (e.g. 'CH340N', 'SP3485', 'TP4056'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral facts beyond that: no API keys required, a 24-hour disk cache, and exponential backoff on retries, which tells the agent about auth and latency/retry 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?
Two tight sentences, zero filler. The core purpose and capabilities are front-loaded and the operational facts (cache, backoff, no keys) follow without padding.
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 no output schema, the description carries return-value burden and partially does so by naming inventory, stock, package, and pricing. It falls short of describing result shape or how failures/manual-entry components are reported, but it is sufficient for a two-parameter lookup tool.
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 query and limit are already documented with examples and defaults. The description adds no syntax, format, or matching-behavior detail for either parameter, so the baseline 3 applies.
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?
States a specific verb (Query) and resource (live LCSC / JLCPCB component inventory) and enumerates what it covers: inventory, stock, package, pricing. No sibling tool queries vendor inventory, so differentiation is implicit rather than stated. Clear and specific, but no explicit sibling contrast.
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 resource description (look up parts before BOM/assembly steps), but there is no explicit when-to-use, when-not, or named alternative. Nothing routes the agent away from or toward this tool versus e.g. list_supported_chips or calculate_bom_cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
size_hold_up_capacitorARead-onlyIdempotent
Size an MLCC reservoir bank for a brown-out ride-through window in EFFECTIVE farads, then report the marked value you must actually buy. Solves C = I·t/ΔV for the required effective capacitance and divides by the retention at the worst-case bias in the window, because sizing from the marked value is how a design that 'passes' delivers 0.85 ms of hold-up when the spec asked for 20 ms. Reports the achieved hold time, the shortfall, and the required marked capacitance.
| Name | Required | Description | Default |
|---|---|---|---|
| rated_v | No | Capacitor rated voltage. Defaults to 2x v_start to keep bias derating near 50%. | |
| v_floor | Yes | Minimum voltage the load tolerates (brown-out floor), in volts. | |
| v_start | Yes | Rail voltage at the moment the source collapses, AFTER any ORing diode drop — not the nominal input. | |
| ambient_c | No | Operating ambient in °C. | |
| case_size | No | EIA case code (0402/0603/0805/1206/1210). | 0805 |
| dielectric | No | EIA dielectric: X5R, X7R, X8R, C0G/NP0. | X5R |
| tolerance_pct | No | Capacitance tolerance in percent. | |
| load_current_ma | Yes | Load current drawn from the reservoir during the outage, in mA. | |
| hours_in_service | No | Expected service life in hours. | |
| required_hold_time_ms | Yes | Required ride-through duration in milliseconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | Human-readable findings: which term dominates, what to change, and any caveat. |
| passes | Yes | True when achieved meets or exceeds required. |
| v_floor | Yes | Brown-out floor the rail must stay above. |
| v_start | Yes | Rail voltage at the start of the outage, after any diode drop. |
| margin_ms | Yes | Achieved minus required; negative means the design fails. |
| shortfall_uf | Yes | Effective capacitance still missing; zero when the design passes. |
| load_current_ma | Yes | Load current used. |
| achieved_hold_time_ms | Yes | What the sized bank actually delivers. |
| marked_capacitance_uf | Yes | The reel value you must buy to get that effective value. |
| required_hold_time_ms | Yes | The spec: how long the rail must survive. |
| required_capacitance_uf | Yes | Effective capacitance the physics demands (I·t/ΔV). |
| effective_capacitance_uf | Yes | Effective capacitance the sized part delivers. |
| required_marked_capacitance_uf | Yes | Alias of marked_capacitance_uf, kept for clarity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, so the safety profile is free. The description adds real behavioral substance: the computation path (solve C = I·t/ΔV, then divide by retention at worst-case bias) and the reported outputs (achieved hold time, shortfall, required marked capacitance). It does not disclose the derating model's limits or assumptions, keeping it from a 5.
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?
Purpose and outputs are front-loaded in the first sentence, and the second sentence carries the technical method. The 'because sizing from the marked value...' clause is slightly discursive but earns its place by flagging the classic failure mode. Trimming that clause to one clause would make it a 5.
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 an output schema present, return values need not be documented, yet the description still names them. Annotations cover safety, and the description covers the computational model for a 10-parameter tool. What's missing is any statement of the derating assumption limits (temperature/aging interplay) for the tolerance and hours_in_service inputs.
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, but the description earns extra credit by mapping the formula variables (I, t, ΔV) onto the parameter set, which tells the agent how load_current_ma, required_hold_time_ms, v_start and v_floor combine. It also frames the effective-vs-marked distinction that governs rated_v.
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?
States a specific verb and resource — 'Size an MLCC reservoir bank for a brown-out ride-through window' — and explicitly names the two outputs (effective farads and the marked value to purchase). This is clearly distinguishable from the sibling calculate_effective_capacitance, which measures rather than sizes.
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 intended scenario (brown-out ride-through sizing) is implied clearly, but the description never states when to prefer this over calculate_effective_capacitance or analyze_power_tree, nor any prerequisites. The 0.85 ms vs 20 ms anecdote explains why the tool exists rather than when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_feedback_dividerARead-onlyIdempotent
Exact R1/R2 feedback divider pair for a regulator or comparator target, plus the static error the E96 snap adds. The ideal pair almost never exists in E96, and that snap error is a wrongness, not a tolerance: it is identical on every board and must be budgeted separately from the tolerance band.
| Name | Required | Description | Default |
|---|---|---|---|
| v_out | Yes | Target output voltage. | |
| v_ref | Yes | Reference voltage at the feedback midpoint. | |
| r_total_ohm | No | Total divider resistance R1+R2, which sets the quiescent current. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Why the snap error must be budgeted separately from the tolerance band. |
| v_ref | Yes | Reference voltage at the feedback midpoint. |
| r1_ohm | Yes | Snapped E96 high-side resistor. |
| r2_ohm | Yes | Snapped E96 low-side resistor. |
| v_out_actual | Yes | Output the snapped pair actually produces. |
| v_out_target | Yes | Requested output voltage. |
| snap_error_pct | Yes | Static offset from E96 quantisation — a wrongness, not a tolerance. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful domain behavior beyond that: the E96 snap error is deterministic and identical on every board, so it is a systematic 'wrongness' that must be budgeted separately from tolerance. This is useful context an agent would not get from annotations alone.
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 sentences, front-loaded with the core purpose, then an important caveat. The second sentence is dense but every clause earns its place by explaining the snap error's nature and budgeting implication; no filler is present.
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?
An output schema exists, so return values need not be enumerated. The description explains the two key outputs (exact pair and static snap error) and the critical interpretation of the error, making it sufficiently complete for correct invocation. It does not mention input assumptions like v_ref being the feedback midpoint, but the schema covers that.
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 v_out, v_ref, and r_total_ohm are already documented in the schema. The description does not add any syntax, constraints, or meaning beyond what the schema provides, so the baseline of 3 applies.
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+resource ('solve_feedback_divider' → 'Exact R1/R2 feedback divider pair') and scopes it to a regulator or comparator target. It also names the extra output (static E96 snap error), which implicitly separates it from tolerance-analysis siblings, though it does not explicitly name an alternative 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?
It gives implied usage context: for a regulator or comparator target, and notes that the snap error must be budgeted separately from the tolerance band. However, it does not say when to use this versus analyze_divider_tolerance or analyze_resistor_error_budget, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solve_via_current_arrayARead-onlyIdempotent
IPC-2152 / IPC-2221 via barrel current capacity and stitching-array solver: computes the annular barrel cross-section from drill and plating, applies the thermal formula with internal/external k constants, 40% array current-sharing derate, and IPC-4761 Type VII fill+cap credit, returning the minimum parallel via count for a rail current.
| Name | Required | Description | Default |
|---|---|---|---|
| current_a | No | Rail current to carry in A (default: 3.0). | |
| is_filled | No | IPC-4761 Type VII fill+cap via (default: False). | |
| plating_um | No | Copper plating thickness in μm (default: 25.0). | |
| via_drill_mm | No | Finished drill diameter in mm (default: 0.30). | |
| max_delta_t_c | No | Allowable barrel temperature rise °C (default: 20.0). | |
| internal_layer | No | Transition between internal layers k=0.024 (default: False). | |
| max_array_size | No | Stitching ceiling before recommending wider traces (default: 8). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as read-only, idempotent, non-destructive, and closed-world. Beyond that, the description adds useful behavioral context by disclosing the calculation basis: annular barrel cross-section from drill and plating, internal/external k constants, 40% array current-sharing derate, and IPC-4761 Type VII fill+cap credit.
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 definition is a single dense sentence, but it is front-loaded with the core function and follows with the key calculation details. Every clause is technical and relevant, though the density makes it slightly harder to parse than a more structured description would be.
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 seven-parameter engineering solver with no output schema, the description gives enough context to understand the calculation method and the return value: the minimum parallel via count. It could say more about output shape or edge-case behavior, but the essential calling context is present.
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 each parameter is already well documented. The description adds some semantic context by explaining that drill and plating drive annular cross-section and that internal_layer selects k constants, but it does not materially expand on the per-parameter 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 states a specific verb and resource: it computes via barrel current capacity and solves a stitching array, returning the minimum parallel via count for a rail current. This is clearly distinguishable from siblings like calculate_via_stitching_array or calculate_ipc2152_trace_current because it focuses on current-carrying via count rather than geometry or trace 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?
The implied use case is sizing via stitching arrays for a given rail current under IPC thermal rules, which is clear from context. However, the description does not explicitly say when to choose this tool over calculate_via_stitching_array or calculate_ipc2152_trace_current, nor does it state exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
synthesize_circuitARead-onlyIdempotent
Synthesize a deterministic hardware netlist and component modules from a natural language prompt. Supported MCUs: STM32F103, ESP32-C3, ESP32-S3, RP2040, STC89C52, CH32V003, STM32G030, ATmega328P. Peripherals: Type-C, LDO, Crystal, Buttons, LEDs, Buzzer, I2C, RS485, CAN, TP4056 Battery, AHT20 Temp/Humidity Sensor, MPU6050 6-Axis Motion Sensor.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Natural language circuit description, e.g. '基于 CH32V003 的 AHT20 温湿度与 MPU6050 姿态传感器节点' | |
| chip_id | No | Optional explicit MCU chip model (e.g. 'CH32V003F4P6', 'STM32G030F6P6', 'ATmega328P', 'STM32F103C8T6') | |
| custom_chip | No | Optional third-party chip definition with custom pinout, package, and peripheral multiplexing rules | |
| pin_mapping | No | Optional custom signal-to-pin allocations, e.g. {'/SCL': 'PC2', '/SDA': 'PC1'} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior; the description's word 'deterministic' usefully corroborates the idempotent hint. Beyond that it only adds the synthesizable scope (chips/peripherals) and does not say whether artifacts are returned inline or written to disk, what format the netlist takes, or any size/complexity limits.
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 sentences, front-loaded with the core purpose before the support lists. The second sentence is a dense enumeration that borders on reference data better served elsewhere (list_supported_chips exists), but it is still compact and scannable.
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 generation tool with four parameters (two of them nested objects), no output schema, and a rich sibling ecosystem, the description names the output only vaguely ('netlist and component modules') without format or structure. Given 100% schema coverage the parameter gap is covered, but the return-value story is thin.
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, and the description goes beyond the schema by enumerating the valid MCU models and peripheral blocks that can be named in the prompt or chip_id, which the schema only illustrates with a few examples. It still says nothing about custom_chip or pin_mapping beyond what the schema already documents.
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?
States a specific verb (synthesize) and a concrete deliverable (a deterministic hardware netlist plus component modules) generated from a natural language prompt. This is clearly distinguishable from siblings like validate_netlist or the export_* tools, though the description never names a sibling to sharpen the boundary.
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?
There is no explicit 'use this when...' clause and no named alternative, but the enumerated supported MCUs and peripherals function as implicit preconditions: an agent can infer that prompts targeting unsupported chips will fail. That is enough for implied usage but not for a routed decision against siblings such as list_supported_chips or register_custom_chip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_manufacturing_packageARead-onlyIdempotent
Headless manufacturing package validator for automated CI/CD and developer hand-off: checks completeness and non-emptiness of 5-layer Gerbers, Excellon drill, BOM, and CPL, verifies component refDes consistency, and calculates SHA-256 cryptographic tamper-proof ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | No | Optional component modules dict from synthesis for BOM cross-verification. | |
| job_name | No | Project job name for manifest header (default: PCB_PROJECT). | PCB_PROJECT |
| artifacts_dict | Yes | Dict mapping filename (e.g. 'board-Edge_Cuts.gm1', 'bom.csv') to content string or bytes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: it is headless (no UI/interactive dependency) and produces a SHA-256 tamper-proof ledger artifact, which tells the agent what the operation yields beyond a plain pass/fail.
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?
A single dense sentence with a colon-delimited list; the validating purpose is front-loaded and no clause is redundant. It is on the long side but every clause (CI/CD context, artifact list, refDes check, ledger) carries 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?
There is no output schema, so the description must carry return-value burden; it discloses only the SHA-256 ledger and not whether validation failures raise errors or return an issue list, nor how completeness/refDes violations are reported. For a validation tool with a required nested-object parameter, that leaves a real gap.
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 goes slightly beyond by naming the artifact classes it expects in artifacts_dict (Gerbers, Excellon drill, BOM, CPL), which helps the agent decide what content to map into that required object, though it says nothing about the optional modules or job_name parameters.
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?
States a specific verb (validates/checks) and resource (manufacturing package) and enumerates exactly what is examined: 5-layer Gerbers, Excellon drill, BOM, CPL, refDes consistency, and a SHA-256 ledger. This is clearly distinguishable from siblings like validate_netlist, audit_fab_capabilities, and export_gerber_bundle.
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?
It names the intended setting ('automated CI/CD and developer hand-off'), which implies when to reach for it, but never states when NOT to use it or which sibling to prefer for adjacent tasks (e.g. validate_netlist for netlist-level checks). Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_netlistARead-onlyIdempotent
Validate a hardware netlist dictionary against the formal CircuitAgent JSON Schema specification.
| Name | Required | Description | Default |
|---|---|---|---|
| netlist | Yes | Netlist dictionary containing 'connections' list with 'net' and 'points'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that validation is against a formal schema, but it says nothing about what a failing netlist yields or how results are reported.
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?
A single front-loaded sentence with a clear verb, object, and standard. No filler, no redundancy; every word earns its place.
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 netlist is a nested object and there is no output schema, so the description should ideally indicate what validation returns (pass/fail, error list) and whether it mutates or stores anything. Annotations cover safety, but the result contract is left unspecified.
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?
There is a single required parameter with 100% schema description coverage ('Netlist dictionary containing connections list with net and points'), so the schema carries the semantics. The description adds nothing beyond that, making the baseline 3 correct.
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 names a specific verb ('Validate') and resource ('a hardware netlist dictionary') and scopes the operation to the 'CircuitAgent JSON Schema specification', so the agent knows exactly what this does. It implicitly contrasts with siblings like diff_netlists, but never names an alternative, so it misses the top band.
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 only implied: validating against a schema suggests using it as a conformance gate before export/synthesis, but there is no explicit when-to-use, no exclusions, and no mention of diff_netlists or run_erc as alternatives. Adequate but with clear gaps.
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.
8 tool updates
v0.23.0- Added
assess_drop_shock_reliability - Added
audit_smt_tombstone_risk - Added
budget_fab_order - Added
calculate_qfn_thermal_pad_stencil - Added
estimate_solder_joint_thermal_fatigue - Added
plan_conformal_coating - Added
predict_assembly_mtbf - Added
solve_via_current_array
3 tool updates
v0.19.1- Added
analyze_enig_plating - Added
analyze_ionic_contamination - Added
gate_production_readiness
12 tool updates
v0.16.0- Added
analyze_divider_tolerance - Added
analyze_rc_filter_effective - Added
analyze_resistor_error_budget - Added
autoroute_pcb - Added
calculate_bare_board_test_parameters - Added
calculate_effective_capacitance - Added
calculate_high_speed_skin_depth_loss - Changed
export_gerber_bundle2 fields changed- added
Input schema / properties / autorouteAdded value: +{ + "default": true, + "description": "Run the autorouter first so the copper layers carry real tracks (default: true). Set false to export pads only, i.e. an unrouted board.", + "type": "boolean" +} - added
Input schema / properties / ses_textAdded value: +{ + "description": "Optional Specctra SES session text from a previous autoroute_pcb call. Overrides 'autoroute' and avoids routing twice.", + "type": "string" +}
- Added
export_manufacturing_cpl - Added
run_pcb_drc - Added
size_hold_up_capacitor - Added
solve_feedback_divider
6 tool updates
v0.4.1- Added
audit_component_msl_floor_life - Added
audit_fab_capabilities - Added
audit_ipc6012_class_compliance - Added
calculate_copper_pour_current_drop - Added
optimize_smt_feeder_setup - Added
validate_manufacturing_package
2 tool updates
v0.3.8- Added
calculate_press_fit_hole_compliance - Added
calculate_wave_solder_orientation_audit
30 tool updates
v0.3.7- Added
analyze_impedance_tolerance - Added
calculate_bga_escape_routing - Added
calculate_copper_thieving_balance - Added
calculate_creepage_isolation_slot - Added
calculate_differential_skew - Added
calculate_fab_cost - Added
calculate_fiducial_layout - Added
calculate_ict_testpoints - Added
calculate_ipc7351_land_pattern - Added
calculate_pcb_panel_rails - Added
calculate_pcb_stackup_impedance - Added
calculate_serpentine_tuning_geometry - Added
calculate_smt_feeder_matrix - Added
calculate_smt_placement_clearance - Added
calculate_solder_paste_volume - Added
calculate_stencil_aperture_ratios - Added
calculate_teardrop_reinforcement - Added
calculate_via_protection_plan - Added
calculate_via_stitching_array - Added
diff_netlists - Added
evaluate_material_cti_creepage - Added
export_assembly_drawing_svg - Added
export_excellon_drill - Added
export_gerber_bundle - Added
export_ipc_d356 - Added
export_ipc2581 - Added
export_openpnp_job - Added
generate_assembly_process_plan - Added
generate_interactive_bom - Added
optimize_panel_grid
6 tool updates
v0.1.9- Added
analyze_power_tree - Added
audit_supply_chain - Added
calculate_ipc2221_clearance - Added
export_kicad_schematic - Added
export_specctra_dsn - Added
run_erc
9 tool updates
v0.1.5- Added
audit_industrial_dfx - Added
calculate_ipc2152_trace_current - Added
calculate_parametric_circuit - Added
export_kicad_netlist - Added
export_manufacturing_bom - Added
list_supported_chips - Added
register_custom_chip - Added
render_circuit_topology - Changed
synthesize_circuit4 fields changed- added
Input schema / properties / chip_idAdded value: +{ + "description": "Optional explicit MCU chip model (e.g. 'CH32V003F4P6', 'STM32G030F6P6', 'ATmega328P', 'STM32F103C8T6')", + "type": "string" +} - added
Input schema / properties / custom_chipAdded value: +{ + "description": "Optional third-party chip definition with custom pinout, package, and peripheral multiplexing rules", + "type": "object" +} - added
Input schema / properties / pin_mappingAdded value: +{ + "description": "Optional custom signal-to-pin allocations, e.g. {'/SCL': 'PC2', '/SDA': 'PC1'}", + "type": "object" +} - changed
Input schema / properties / prompt / descriptionPrevious value: -"Natural language prompt describing the target board and peripherals."New value: +"Natural language circuit description, e.g. '基于 CH32V003 的 AHT20 温湿度与 MPU6050 姿态传感器节点'"
6 tool updates
v0.1.0- First observed
calculate_bom_cost - First observed
calculate_trace_impedance - First observed
list_circuit_blocks - First observed
search_lcsc_parts - First observed
synthesize_circuit - First observed
validate_netlist
TDQS
Scored across 80 tools
The set contains several near-duplicate pairs that an agent will struggle to choose between: calculate_fab_cost vs budget_fab_order, calculate_smt_feeder_matrix vs optimize_smt_feeder_setup, calculate_trace_impedance vs calculate_pcb_stackup_impedance vs analyze_impedance_tolerance, and calculate_serpentine_tuning_geometry vs calculate_differential_skew. Long, standards-heavy descriptions help somewhat, but with 80 tools the boundaries between cost, impedance, feeder, and test-point families remain fuzzy.
Almost every tool is snake_case with a leading verb (calculate_, audit_, export_, analyze_, validate_, optimize_, solve_, generate_), which is highly predictable. Minor deviations like autoroute_pcb and gate_production_readiness (verb without the noun-verb split) are the only inconsistency.
80 tools is far beyond what an agent can reliably navigate, even for a broad PCB design-and-manufacture domain. Many tools are hyper-specific standard lookups (e.g. calculate_teardrop_reinforcement, calculate_wave_solder_orientation_audit) that could be folded into a few parameterized analyzers.
The surface covers the full lifecycle: synthesis, netlist validation, ERC, DRC, autorouting, panelization, Gerber/Excellon/IPC-2581/BOM/CPL export, fab-capability audits, cost budgeting, reliability (MTBF, drop shock, thermal fatigue), and supply chain. No obvious dead ends for a PCB workflow.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
OCR, transcription, file extraction, and image generation for AI agents via MCP.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables AI coding assistants to control JLCPCB EDA for PCB automation, exposing 39 tools for component manipulation, routing, copper pour, DRC, and more. Includes a built-in PCB agent for orchestrating multi-step tasks.59260MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with 嘉立创 EDA for PCB design tasks including project management, component libraries, rule checking, and manufacturing constraints.2 npm-
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to automate 嘉立创 EDA Professional through MCP, including schematic and PCB editing, component search and placement, net routing, DRC, and design capture.-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive KiCAD PCB design automation through MCP, covering schematic authoring, board and routing operations, footprint/symbol libraries, vendor PCB import, validation and DRC, and manufacturing export. It exposes 236 registered tools with keyword discovery, dynamic project-state resources, and optional Streamable HTTP transport with fail-closed Bearer authentication.MIT