Skip to main content
Glama
mo9652962-ai

circuit-agent

by mo9652962-ai

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)

git clone https://github.com/mo9652962-ai/circuit-agent.git
cd circuit-agent

零运行时依赖 —— 纯标准库实现,无需 pip install 即可直接使用。 跑测试才需要装 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"])                          # 未识别的意图(不会被静默丢弃)

映射是确定性的:同一句话永远产出逐字节相同的结果(CI 中有对应断言)。

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

说明

关键设计点

block_usb_c_power

Type-C 供电输入

双 5.1k CC 下拉(sink 角色,非 56k 上拉)

block_power_ldo_3v3

AMS1117-3.3V 稳压

10µF 输入/输出储能电容

block_crystal_clock

无源晶振 + 负载电容

标记 guard_ring 属性供后端加地屏蔽环

block_button

消抖按键

10k 上拉 + 100nF RC,位号可参数化

block_led

状态指示灯

限流电阻 + 颜色/阻值可参数化

block_buzzer

蜂鸣器驱动

S8050 NPN + 1N4148W 反向续流二极管

block_i2c_header

I2C 扩展排针

SCL/SDA 各 4.7k 上拉

block_rs485_transceiver

SP3485 半双工差分串口

120Ω 终端电阻 + 100nF 去耦 + 3P 排针引出

block_can_transceiver

SN65HVD230 3.3V CAN 节点

120Ω 终端匹配 + 10k 斜率控制 (高速模式)

block_battery_tp4056

TP4056 1A 线性锂电充电

1.2k 限流 + 充/满双色指示灯 + 2P 电池端子

每个积木的引脚号、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。

运行方式

python -m client.mcp_server

Claude Desktop 配置 (claude_desktop_config.json)

{
  "mcpServers": {
    "circuit-agent": {
      "command": "python",
      "args": ["-m", "client.mcp_server"],
      "cwd": "/path/to/circuit-agent"
    }
  }
}

暴露的工具 (Tools)

  1. synthesize_circuit: 输入自然语言,输出确定性硬件网表与积木清单。

  2. search_lcsc_parts: 免 Key 实时查询立创商城的元器件库存、封装、阶梯单价与基础库/扩展库属性。

  3. list_circuit_blocks: 列出 DSL 中全部可用的 10 大已审计电路积木规格。

  4. validate_netlist: 根据正式 JSON Schema 校验网表数据结构合法性。

  5. calculate_trace_impedance: 基于 IPC-2141 解析公式计算微带线与差分对走线阻抗(50Ω RF / 90Ω USB / 120Ω CAN/485)。

  6. calculate_bom_cost: PCBA 成本核算器,自动精算元器件裸成本与嘉立创扩展库换料费(¥20/种)。

暴露的资源 (Resources)

支持通过 circuit:// URI 直接将规范加载到大模型上下文,无需执行额外工具:

  • circuit://specs/netlist-schema: 完整的网表 Draft-07 JSON Schema。

  • circuit://specs/cpl-standard: 嘉立创 SMT 坐标规范与封装偏角补偿表。

  • circuit://blocks/catalog: 10 大电路积木的元器件、引脚与网络全量清单。

  • 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 降本优化指令(分析扩展库物料并推荐免换料费的基础库替代料)。


数据契约 (Contracts)


测试与 CI

pytest tests/ -q      # 120 passed

CI 在 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 实现(纯标准库,4 大工具)

  • 中英双语文档与官方门面 (Banner + Demo GIF)

  • 更多传感器积木(AHT20 温湿度 / MPU6050 六轴)

  • 支持自定义第三方芯片引脚分配映射规则


参与贡献 (Contributing)

最欢迎的贡献是新增经过核验的电路积木:带上数据手册依据的引脚定义与立创料号, 并补上对应单测即可提 PR。Issue 里也欢迎贴出你希望支持的芯片型号。


名称说明 (Naming)

"CircuitAgent" 是一个较通用的名字,社区中已有若干同名或近名的项目(例如 singularguy/CircuitManus 内部的 CircuitAgent 类、Circuit-LLM/circuit-sdk 的 CircuitAgent 基类、以及高能物理领域的 PhEDEx CircuitAgent)。 本项目与它们没有任何关系,也不主张该名称的独占权。如果你的项目或商标与此冲突, 欢迎开 Issue 告知,我们可以协商改名。

许可证 (License)

MIT © 2026 sora

Available Tools

6 tools
calculate_bom_costA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesList of component names, models, or descriptions (e.g. ['STM32F103C8T6', 'SP3485', '0603 10k']).

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. It usefully discloses the fee model (Basic parts ¥0 feeder fee vs Extended parts +¥20/type) and that it emits optimization suggestions, but says nothing about permissions, failure modes when a part cannot be matched, or response shape.

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

Conciseness5/5

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

Two tightly packed sentences with no filler; the primary purpose leads and the fee-model detail follows, so an agent gets the essential meaning from the first clause.

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

Completeness4/5

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

For a single-parameter compute tool with no output schema, the description conveys the pricing rules and the optimization-suggestion behavior, which is most of what an agent needs. It stops short of describing the returned breakdown structure, which would require an output schema or explicit mention.

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

Parameters3/5

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

Schema description coverage is 100% with a single well-documented `queries` array, so the schema already carries parameter meaning. The description adds no format or constraint detail beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The description names a specific verb and resource ('Calculate PCBA component cost breakdown') plus a secondary function (JLCPCB SMT surcharge estimation), which is far more informative than the tool name alone. It does not explicitly contrast itself with `search_lcsc_parts`, so it stops short of full sibling differentiation.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is a costing step after parts are identified, but there is no explicit when-to-use, when-not-to-use, or prerequisite statement (e.g., that component identifiers must first be resolved). No alternatives are named.

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

calculate_trace_impedanceA

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

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesTrace mode: 'single' for single-ended microstrip, 'differential' for edge-coupled microstrip pair.
target_zYesTarget impedance in ohms (e.g. 50.0 for single-ended, 90.0 for USB differential, 120.0 for CAN/RS485).
trace_gap_mmNoSpacing between differential traces in mm (only used in differential mode, default: 0.15mm).
dielectric_erNoRelative dielectric permittivity (Er) (default: 4.2 for FR4).
dielectric_h_mmNoDielectric height between trace and reference ground plane in mm (default: 0.1mm for JLC04161H 4-layer).
trace_thickness_mmNoFinished copper thickness in mm (default: 0.035mm for 1oz copper).

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It adds useful context by naming the equations and the solver behavior, but it never states that this is a pure side-effect-free computation, whether any external lookup occurs, or what the response contains; the core mutability/safety profile is left to inference.

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

Conciseness5/5

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

Two tight sentences with the capability and equation basis front-loaded followed by the design targets. No filler or restated title; every clause earns its place.

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

Completeness3/5

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

For a 6-parameter, no-output-schema tool, the definition omits what is actually returned. It also blurs whether it computes impedance from a given geometry or solves W/S from target_z, and with no annotations covering safety or side effects, some behavioral completeness is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters including defaults and the mode enum. The description's impedance examples echo the schema's target_z description rather than adding new syntax or format detail, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (calculate) plus the exact resource (characteristic/differential impedance for PCB microstrip traces) and names the governing equations (IPC-2141/Wheeler). An agent can immediately distinguish this from synthesize_circuit, validate_netlist, or calculate_bom_cost.

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

Usage Guidelines4/5

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

Gives concrete application context (50Ω RF, 90Ω USB, 120Ω RS485/CAN) and the two supported modes, so the agent knows the domain in which to reach for it. It does not, however, state any exclusions or explicitly compare against sibling tools.

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

list_circuit_blocksB

List all 10 pre-validated CircuitBlocks available in the hardware DSL catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that the catalog is fixed at 10 pre-validated entries with no filtering or parameters, but says nothing about return shape, ordering, or whether the list can change between calls — a modest gap for a trivial read-only listing.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the key fact (all 10 pre-validated blocks) is stated immediately and nothing else is needed.

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

Completeness3/5

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

For a zero-param, annotation-free listing tool this covers the essentials, but with no output schema the agent still doesn't know what a returned CircuitBlock looks like or how to use it downstream. Adequate but with a clear gap.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has nothing to document and the baseline of 4 applies. The description correctly implies a parameterless, unfiltered enumeration.

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

Purpose4/5

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

The description pairs a clear verb ('List') with a specific resource ('CircuitBlocks') and adds scope ('all 10 pre-validated... in the hardware DSL catalog'). It does not explicitly contrast itself with siblings like synthesize_circuit, but no confusion arises given the distinct name and catalog framing.

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

Usage Guidelines2/5

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 versus alternatives, nor any prerequisites or exclusions. At best the 'pre-validated catalog' framing implies you'd call it to discover available blocks before synthesizing, but nothing is stated explicitly.

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

search_lcsc_partsA

Query live LCSC / JLCPCB component inventory, stock, package, and pricing with zero API keys required. Features 24-hour disk cache and exponential backoff.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of component matches to return (default: 5).
queryYesComponent part number, model, or description (e.g. 'CH340N', 'SP3485', 'TP4056').

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose real behavioral traits: zero API keys required and a 24-hour disk cache, which warns the agent that stock/pricing could be up to a day stale, plus exponential backoff implying retry handling. It stops short of describing the return shape or failure modes.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the core capability and followed by operational caveats. Every clause earns its place with no redundancy.

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

Completeness4/5

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

For a stateless search tool with no annotations and no output schema, the definition covers capability, data freshness, and reliability posture adequately. It could go further by hinting at what a result record contains or how misses are reported, but nothing critical for invocation is missing.

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

Parameters3/5

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

Schema coverage is 100%, so both the query format (part number/model/description with examples) and the limit default are already documented structurally. The description adds no parameter-level detail beyond that, which is the expected baseline when the schema does the work.

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

Purpose4/5

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

Specific verb 'Query' paired with a concrete resource: LCSC/JLCPCB inventory, stock, package, and pricing. The domain is distinct from the circuit-synthesis and validation siblings, though it never explicitly names or contrasts with calculate_bom_cost, the nearest neighbor.

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

Usage Guidelines2/5

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

No statement of when to reach for this tool versus calculate_bom_cost or the other siblings, and no prerequisites beyond the implied 'supply a query'. The cache/backoff notes describe behavior, not usage conditions.

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

synthesize_circuitA

Synthesize a deterministic hardware netlist and component modules from a natural language prompt. Supported MCUs: STM32F103, ESP32-C3, ESP32-S3, RP2040, STC89C52. Peripherals: Type-C, LDO, Crystal, Buttons, LEDs, Buzzer, I2C, RS485, CAN, TP4056 Battery.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesNatural language prompt describing the target board and peripherals.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and 'deterministic' is a genuinely useful behavioral claim (same prompt yields the same netlist). However, it omits other traits an agent needs for a generative tool: expected latency/cost, whether output is persisted or returned inline, auth requirements, and failure modes for unsupported targets.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action and output, with the capability list last. Every sentence conveys information, though the long comma-separated enumerations are dense and could be compressed.

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

Completeness3/5

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

For a complex generative tool with no annotations and no output schema, the description covers input scope and output artifacts but leaves the return shape, downstream consumption, and error behavior unspecified. Adequate as a minimum, but not complete for the tool's complexity.

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

Parameters4/5

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

Schema coverage is 100% for the single 'prompt' parameter, setting the baseline at 3. The description adds meaning beyond the schema by enumerating the supported MCUs and peripheral categories, effectively defining what content a valid prompt may contain. It stops short of giving prompt syntax or format examples.

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

Purpose5/5

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

States a specific verb (synthesize) and concrete outputs (deterministic hardware netlist and component modules) plus the input source (natural language prompt). The enumeration of supported MCUs and peripherals further bounds what the tool produces, making it clearly distinguishable from siblings like validate_netlist 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.

Usage Guidelines2/5

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

No statement of when to use this tool versus its siblings, nor of prerequisites (e.g., that it is typically the first step before validate_netlist or calculate_bom_cost). Usage is only implied by the verb 'synthesize'. The only guidance-like content is the supported-target list, which constrains inputs rather than routing the agent.

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

validate_netlistC

Validate a hardware netlist dictionary against the formal CircuitAgent JSON Schema specification.

ParametersJSON Schema
NameRequiredDescriptionDefault
netlistYesNetlist dictionary containing 'connections' list with 'net' and 'points'.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing beyond the basic action. It does not say whether validation is strict or permissive, what happens on failure, or whether the call mutates anything — important for a tool operating on a nested object.

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

Conciseness4/5

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

A single front-loaded sentence with no waste; the action and target lead immediately. It is efficient, though so terse that it leaves out behavior an agent would otherwise need.

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

Completeness3/5

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

With no output schema and no annotations, the description should ideally say what a validation call returns (validity flag, error list) and how failures surface. Given the simple one-parameter schema and nested-object input, it is minimally adequate but leaves the result-handling gap open.

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

Parameters3/5

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

Schema description coverage is 100% with a single, clearly documented 'netlist' property, so the schema does the heavy lifting and the baseline is 3. The description adds only that validation targets the formal CircuitAgent JSON Schema, but no format or shape detail beyond what the schema already states.

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

Purpose4/5

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 ('hardware netlist dictionary') plus the validation standard (CircuitAgent JSON Schema), so the agent knows exactly what the tool does. It is naturally distinguishable from the unrelated siblings (synthesize_circuit, calculate_bom_cost), though it does not explicitly name an alternative.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus other tools, no prerequisites, and no indication of what to do with a failing netlist. Usage is only implied by the verb 'Validate'.

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

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.0
    • First observedcalculate_bom_cost
    • First observedcalculate_trace_impedance
    • First observedlist_circuit_blocks
    • First observedsearch_lcsc_parts
    • First observedsynthesize_circuit
    • First observedvalidate_netlist

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct action: generation (synthesize_circuit), catalog listing (list_circuit_blocks), external part lookup (search_lcsc_parts), validation (validate_netlist), cost analysis (calculate_bom_cost), and PCB math (calculate_trace_impedance). Although synthesize/validate/list all deal with netlists, their verbs make the boundary clear.

Naming Consistency5/5

All six tools follow a clean verb_noun snake_case pattern (synthesize_circuit, search_lcsc_parts, list_circuit_blocks, validate_netlist, calculate_bom_cost, calculate_trace_impedance). No mixed conventions or vague verbs.

Tool Count5/5

Six tools is well-scoped for a hardware netlist synthesis assistant, with each tool covering a distinct stage of the design flow. No redundant or filler tools.

Completeness4/5

The surface covers synthesis, catalog discovery, part sourcing, validation, cost, and impedance — a coherent pipeline. Minor gaps remain: no netlist editing/update, no schematic or fabrication-format export (e.g. KiCad), and no simulation step.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Enables 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.
    59
    237
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with 嘉立创 EDA for PCB design tasks including project management, component libraries, rule checking, and manufacturing constraints.
    17 npm
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to automate 嘉立创 EDA Professional through MCP, including schematic and PCB editing, component search and placement, net routing, DRC, and design capture.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to run GDSII stream-out, KLayout DRC, Netgen LVS, and Magic extraction via MCP.
    6
    15 npm
    Apache 2.0