circuit-agent
CircuitAgent MCP server lets AI agents synthesize, validate, audit, calculate, and export complete PCB hardware designs from natural language prompts.
Synthesize deterministic netlists from prompts (STM32, ESP32, RP2040, CH32V003, etc.) with supported peripherals; list/register custom chips and circuit blocks.
Search live LCSC/JLCPCB parts, estimate BOM cost, and audit supply chain multi-sourcing.
Validate netlists, run ERC, analyze power trees, render topology, and solve parametric circuits (resistor dividers, LDO thermal, I2C pullups, RC filters).
Run industrial DFX/DFM/DFA/DFT/DFC and compliance audits (IPC-2221/2152/7351/6012, MSL, creepage, CTI, fab capabilities).
Calculate PCB/manufacturing parameters: trace impedance/current, clearance, stackup, vias, teardrops, panel rails, stencil/paste, fiducials, ICT testpoints, SMT feeder/nozzle/clearance, wave solder, press-fit, copper pour IR drop.
Export EDA/manufacturing deliverables: KiCad netlist/schematic, Gerber, Excellon, IPC-D-356, IPC-2581, Specctra DSN, JLCPCB BOM, OpenPnP job, assembly drawing SVG, interactive BOM, process plan, netlist diff.
Validate manufacturing package integrity (Gerber/drill/BOM/CPL) with SHA-256 tamper-proof ledger.
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。
当前暴露 58 个工具、8 个资源(circuit:// URI)与 4 个工程提示词(slash-command)。
运行方式
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 表格(含位号聚合、基础库免换料费分类)。calculate_parametric_circuit: 闭环参数化硬件设计方程(E96 标准分压电阻对求解、LDO 散热结温校核、I2C 上拉阻值及 RC 滤波)。render_circuit_topology: 生成结构化 ASCII 系统架构拓扑图(电源轨、总线、传感器与保护子系统)。run_erc: 网表级电气规则门禁(ERC)——悬空网络、缺 GND、未知位号、缺电源域、缺去耦电容、差分总线缺 120Ω 终端电阻,每条带 severity 与出处,blocking/error 阻断 BOM/CPL 交付。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% 自动化走线。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 回流焊“爆米花”开裂分层。
暴露的资源 (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 滤波)
多层板布局与布线求解器
参数化 3D 壳体生成
参与贡献 (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
58 toolsanalyze_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_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.
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_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.
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_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_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_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.
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_bundleBRead-onlyIdempotent
Generate native fabrication-ready Gerber RS-274X layer bundle (Edge_Cuts .gm1, Top Copper .gtl, Top Mask .gts, Top Silkscreen .gto) directly from placed modules and netlist, eliminating GUI EDA dependency.
| Name | Required | Description | Default |
|---|---|---|---|
| modules | Yes | Component modules dict (from synthesize_circuit output). | |
| netlist | Yes | Netlist dict with 'connections' (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 closed-world, so the safety profile is covered. The description adds useful context about output format and the concrete files produced, but never discloses where the bundle goes (written to disk vs returned inline) or any size/permission constraints, which matters for an export tool whose annotation set implies no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with zero filler, and the core deliverable (formatted Gerber layer bundle) is front-loaded ahead of the supplier context. Slightly overloaded by the parenthetical extension list, 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?
Covers inputs implicitly and the layer set explicitly, but for a 4-parameter tool with nested objects and no output schema, the description omits the return shape (file paths, zip, or raw content) and the units/behavior implications of board dimensions. Adequate but leaves a real gap for 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?
Schema description coverage is 100%, so modules, netlist, board_width_mm and board_height_mm are already fully documented, including defaults and the synthesize_circuit provenance. The description adds no parameter-level 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?
Specific verb ('Generate') plus precise resource (native fabrication-ready Gerber RS-274X layer bundle) with the exact layer/file set enumerated (.gm1, .gtl, .gts, .gto). An agent can distinguish this from the many sibling exporters (export_excellon_drill, export_ipc2581, export_kicad_netlist, 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?
No when-to-use, prerequisites, or alternatives are stated. 'Eliminating GUI EDA dependency' is a benefit claim, not guidance about when to select this over export_excellon_drill or export_ipc2581, which produce the complementary drill/assembly data a fab bundle usually needs alongside Gerbers.
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_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.
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.
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.
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.
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.
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 58 tools
58 tools with several overlapping clusters: three impedance tools (calculate_trace_impedance, calculate_pcb_stackup_impedance, analyze_impedance_tolerance), two SMT feeder optimizers, multiple clearance/creepage tools, and serpentine/skew tools. Detailed descriptions help, but an agent may still misselect among these near-duplicates.
Nearly all tools follow a consistent verb_noun snake_case pattern (generate_, calculate_, export_, audit_, validate_, etc.). Minor deviations like evaluate_material_cti_creepage and calculate_wave_solder_orientation_audit (which mixes a calculate prefix with an audit suffix) slightly break the pattern.
58 tools far exceeds the typical 3–15 range and is heavy for any single server, even a broad EDA suite. While each tool is specialized, many could be consolidated (e.g., impedance, feeder, creepage clusters), making the surface unwieldy.
The surface covers synthesis, netlist validation, ERC, power analysis, manufacturing exports, DFM/DFA audits, cost, and supply chain—strong lifecycle coverage. Minor gaps remain, such as simulation/verification (e.g., SPICE) and direct design-editing operations.
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.
1Pay-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.59254MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with 嘉立创 EDA for PCB design tasks including project management, component libraries, rule checking, and manufacturing constraints.5 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