# CircuitAgent (pypi · circuit-agent-client)

AI hardware synthesis: CircuitBlocks DSL, live LCSC parts, industrial DFX audit, stdio MCP server.

- Trust score: 80/100 (high trust)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-04

## Components

- pypi · `circuit-agent-client`: 80/100 (this document), [markdown](https://verifymcp.io/servers/mo9652962-ai-circuit-agent-client/circuit-agent-client.md), [page](https://verifymcp.io/servers/mo9652962-ai-circuit-agent-client/circuit-agent-client)

## Channel facts

- Registry: `pypi`
- Package: `circuit-agent-client`
- Version: `0.1.9`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-04.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to mo9652962-ai/circuit-agent).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 86/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 2731 tokens (~97/item across 28 items; 20 tools + 8 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "audit_industrial_dfx" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default.
  - An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### How do I install the CircuitAgent MCP server?

CircuitAgent runs locally as a PyPI package, launched with uvx circuit-agent-client. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add mo9652962-ai-circuit-agent-client -- uvx circuit-agent-client
```

### Cursor

```json
{
  "mcpServers": {
    "mo9652962-ai-circuit-agent-client": {
      "command": "uvx",
      "args": [
        "circuit-agent-client"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "mo9652962-ai-circuit-agent-client": {
      "command": "uvx",
      "args": [
        "circuit-agent-client"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add mo9652962-ai-circuit-agent-client -- uvx circuit-agent-client
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mo9652962-ai-circuit-agent-client": {
      "type": "local",
      "command": [
        "uvx",
        "circuit-agent-client"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mo9652962-ai-circuit-agent-client --command uvx --arg circuit-agent-client
```

### Hermes

```yaml
mcp_servers:
  mo9652962-ai-circuit-agent-client:
    command: "uvx"
    args: ["circuit-agent-client"]
```

### Netclaw

```json
{
  "McpServers": {
    "mo9652962-ai-circuit-agent-client": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "circuit-agent-client"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add mo9652962-ai-circuit-agent-client -t stdio -c uvx -a circuit-agent-client
```

### Other

```json
{
  "mcpServers": {
    "mo9652962-ai-circuit-agent-client": {
      "command": "uvx",
      "args": [
        "circuit-agent-client"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-04 (score 80, +6)

- [security regression] Tool safety: pass → unverified
- [security improvement] Source repository: fail → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Schema quality: 66 → 97
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Stability: unverified → 0.07
- [functional improvement] Security disclosure: fail → pass
- [functional] Schema quality: good → excellent
- [functional] Destructive annotations: pass → 0
- [functional] Package version: 0.1.5 → 0.1.9

### 2026-10-02 (score 74)

First indexed and scored.

## MCP tools (20)

### `synthesize_circuit` (~271 tokens)

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.

Input parameters:

- `chip_id` (string): Optional explicit MCU chip model (e.g. 'CH32V003F4P6', 'STM32G030F6P6', 'ATmega328P', 'STM32F103C8T6')
- `custom_chip` (object): Optional third-party chip definition with custom pinout, package, and peripheral multiplexing rules
- `pin_mapping` (object): Optional custom signal-to-pin allocations, e.g. {'/SCL': 'PC2', '/SDA': 'PC1'}
- `prompt` (string, required): Natural language circuit description, e.g. '基于 CH32V003 的 AHT20 温湿度与 MPU6050 姿态传感器节点'

### `list_supported_chips` (~41 tokens)

List all registered MCU chips and third-party pinout allocation rules (e.g. CH32V003, STM32G030, ATmega328P).

### `register_custom_chip` (~279 tokens)

Register or dynamically override a third-party microcontroller pinout and peripheral multiplexing rule.

Input parameters:

- `chip_id` (string, required): Unique identifier, e.g. 'CH32V003F4P6'
- `default_gpio_assignments` (object): Default signal mappings, e.g. {'/LED1': 'PD4'}
- `description` (string): Human-readable description of the chip
- `mcu_family` (string): MCU family, e.g. 'QingKe-RISC-V', 'ARM-Cortex-M0+'
- `package` (string): Physical package, e.g. 'TSSOP-20', 'QFN-32'
- `peripheral_routes` (object): Peripheral routing defaults, e.g. {'I2C1': {'I2C_SCL': 'PC2', 'I2C_SDA': 'PC1'}}
- `pin_numbers` (object): Map of pin names to physical pin numbers, e.g. {'PD1': '8'}
- `pins` (array, required): List of available GPIO and power pins
- `reserved_pins` (object): Map of reserved pins and reasons, e.g. {'PD1': 'SWDIO', 'NRST': 'RESET'}
- `supply_voltage` (number): Operating voltage (typically 3.3 or 5.0)

### `search_lcsc_parts` (~97 tokens)

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

Input parameters:

- `limit` (integer): Maximum number of component matches to return (default: 5).
- `query` (string, required): Component part number, model, or description (e.g. 'CH340N', 'SP3485', 'TP4056').

### `list_circuit_blocks` (~26 tokens)

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

### `run_erc` (~108 tokens)

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.

Input parameters:

- `modules` (object): Optional modules dict (ref -> {kind, value, package, lcsc}) for component-aware rules.
- `netlist` (object, required): Netlist dict with 'connections' (synthesize_circuit output passes directly).

### `validate_netlist` (~47 tokens)

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

Input parameters:

- `netlist` (object, required): Netlist dictionary containing 'connections' list with 'net' and 'points'.

### `calculate_trace_impedance` (~267 tokens)

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

Input parameters:

- `dielectric_er` (number): Relative dielectric permittivity (Er) (default: 4.2 for FR4).
- `dielectric_h_mm` (number): Dielectric height between trace and reference ground plane in mm (default: 0.1mm for JLC04161H 4-layer).
- `mode` (string, required): Trace mode: 'single' for single-ended microstrip, 'differential' for edge-coupled microstrip pair.
- `target_z` (number, required): Target impedance in ohms (e.g. 50.0 for single-ended, 90.0 for USB differential, 120.0 for CAN/RS485).
- `trace_gap_mm` (number): Spacing between differential traces in mm (only used in differential mode, default: 0.15mm).
- `trace_thickness_mm` (number): Finished copper thickness in mm (default: 0.035mm for 1oz copper).

### `calculate_bom_cost` (~96 tokens)

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.

Input parameters:

- `queries` (array, required): List of component names, models, or descriptions (e.g. ['STM32F103C8T6', 'SP3485', '0603 10k']).

### `calculate_ipc2152_trace_current` (~206 tokens)

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.

Input parameters:

- `copper_oz` (number): Finished copper thickness in ounces (default: 1.0 oz = 35 um).
- `layer` (string): Conductor layer position: 'external' (outer copper) or 'internal' (inner plane).
- `mode` (string, required): 'solve_current' calculates max Amps for given trace_width_mm; 'solve_width' calculates required mm for target_current_a.
- `target_current_a` (number): Target continuous current in Amperes (required for 'solve_width').
- `temp_rise_c` (number): Allowable conductor temperature rise above ambient in °C (default: 20.0 °C).
- `trace_width_mm` (number): Trace width in mm (required for 'solve_current').

### `audit_industrial_dfx` (~109 tokens)

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.

Input parameters:

- `netlist` (object, required): Hardware netlist dictionary containing 'components' and 'connections'.

### `export_kicad_netlist` (~70 tokens)

Export standard KiCad S-Expression netlist (.net) compatible with KiCad 6/7/8/9/10 Pcbnew.

Input parameters:

- `netlist` (object, required): Hardware netlist dictionary or synthesis result.
- `title` (string): Schematic / board project title.

### `export_manufacturing_bom` (~50 tokens)

Generate production-ready JLCPCB SMT BOM CSV with part grouping, designator aggregation, and Basic/Extended classification.

Input parameters:

- `netlist` (object, required): Hardware netlist dictionary or synthesis result.

### `calculate_parametric_circuit` (~147 tokens)

Solve discrete parametric circuit equations: optimal E96 resistor dividers, LDO thermal dissipation, I2C bus pullups, or RC filters.

Input parameters:

- `params` (object, required): 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); fo…
- `type` (string, required): Type of parametric calculation to perform.

### `render_circuit_topology` (~45 tokens)

Render a clean, structured ASCII architectural diagram of power domains, buses, and connected subsystems.

Input parameters:

- `netlist` (object, required): Hardware netlist dictionary or synthesis result.

### `analyze_power_tree` (~104 tokens)

Analyze system-level power distribution architecture, load current budgets (typical & peak mA), regulator dropout headroom, and LDO thermal dissipation / junction temperature estimates.

Input parameters:

- `ambient_temp_c` (number): Operating ambient temperature in °C (default: 25.0).
- `modules` (object, required): Component modules dict (from synthesize_circuit output).
- `netlist` (object, required): Netlist dict with 'connections' (from synthesize_circuit output).

### `calculate_ipc2221_clearance` (~142 tokens)

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

Input parameters:

- `conductor_type` (string): Conductor classification: B1 (internal), B2 (external uncoated), B4 (coated), A6 (leads). Default: B2.
- `peak_voltage_v` (number, required): Peak working or test voltage in Volts (e.g., 5.0, 12.0, 24.0, 230.0).

### `export_specctra_dsn` (~187 tokens)

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.

Input parameters:

- `board_height_mm` (number): PCB height in mm (default: 50.0).
- `board_width_mm` (number): PCB width in mm (default: 70.0).
- `clearance_mm` (number): Default routing clearance in mm (default: 0.200 / 8mil).
- `modules` (object, required): Component modules dict (from synthesize_circuit output).
- `netlist` (object, required): Netlist dict with 'connections' (from synthesize_circuit output).
- `trace_width_mm` (number): Default routing trace width in mm (default: 0.254 / 10mil).

### `export_kicad_schematic` (~101 tokens)

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.

Input parameters:

- `connections` (array): Netlist connections list (optional).
- `modules` (object, required): Component modules dict (from synthesize_circuit output).
- `title` (string): Schematic sheet title block title.

### `audit_supply_chain` (~64 tokens)

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.

Input parameters:

- `modules` (object, required): Component modules dict (from synthesize_circuit output).

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/mo9652962-ai-circuit-agent-client/circuit-agent-client#diagnostics

## Score history

- 2026-10-04: 80
- 2026-10-03: 74
- 2026-10-02: 74

## Common questions

### What is the CircuitAgent MCP server?

CircuitAgent is an MCP server listed in the public MCP registry as io.github.mo9652962-ai/circuit-agent-client. AI hardware synthesis: CircuitBlocks DSL, live LCSC parts, industrial DFX audit, stdio MCP server. This page covers its PyPI package (circuit-agent-client).

### Is the CircuitAgent MCP server safe to use?

CircuitAgent scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the CircuitAgent MCP server expose?

CircuitAgent exposes 20 tools: synthesize_circuit, list_supported_chips, register_custom_chip, search_lcsc_parts, list_circuit_blocks, and 15 more. Their descriptions and schemas cost roughly 2,457 tokens of context every time the server is loaded.

### Is the CircuitAgent MCP server still maintained?

CircuitAgent is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the CircuitAgent MCP server under?

CircuitAgent declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- PyPI project: https://pypi.org/project/circuit-agent-client/
- Socket report: https://socket.dev/pypi/package/circuit-agent-client
- Repository: https://github.com/mo9652962-ai/circuit-agent
- Changelog RSS feed: https://verifymcp.io/servers/mo9652962-ai-circuit-agent-client/circuit-agent-client.xml
- Changelog JSON feed: https://verifymcp.io/servers/mo9652962-ai-circuit-agent-client/circuit-agent-client.json
- HTML version of this page: https://verifymcp.io/servers/mo9652962-ai-circuit-agent-client/circuit-agent-client
