Skip to main content
Glama

boardproof

An MCP server for PCB design in which nothing counts as finished unless a machine-checked gate says so. The Python package is kicad_mcp and the start command is kicad-mcp.

An MCP server that lets an AI agent do PCB design work in KiCad: component sourcing, schematic construction, placement, routing (KiCadRoutingTools or Freerouting), verification, SPICE simulation and manufacturing export. It drives KiCad through its files and kicad-cli, so no running KiCad is needed.

Who it is for: people who want an MCP client (Claude Code, Claude Desktop or another) to carry out real KiCad 10 work and who care more about a result they can trust than about a result that looks finished. Everything is built around one rule: a board is "done" only when a machine-checked verdict says so. A short tour of the design is in docs/OVERVIEW.md.

Status (2026-10-29)

No board has passed the acceptance gate as a plain PASS yet. The tools exist and are tested, but no tool chain has delivered a routed board end to end that the gate accepts without a qualifier. Rung 1 has boards with PASS (necked) (protocol 6, Freerouting 5 of 5); the rung-1 board changed afterwards (protocols 7 and 8) and has no official batch under the current protocol. The product promise is therefore tiered by board class:

  • Copilot tier (default): you own power routing and zone topology in KiCad. The agent handles schematic, placement, signal routing and verification.

  • Autonomous tier: offered only for board classes that have passed the gate on the acceptance ladder. Currently none.

Words used below: a rung is one reference board on the acceptance ladder (an ordered set of boards a pipeline must pass, easiest first); KRT is KiCadRoutingTools, a third-party router this project runs as a subprocess; the owner is the person who decides the scope and rules of this project; a build ticket N is an internal work item id and may not be resolvable in a public copy (the fact is always stated in words next to it); a protocol is the frozen, numbered plan by which a rung is measured. docs/CONTEXT.md has the full glossary.

What the measurements say (five attempts per backend and rung, official batches, 2026-10-28):

Rung

Board

Protocol

Freerouting 2.5.0

KiCadRoutingTools 0.23.1

1

USB-C ATtiny1616 breakout, 2 layers

6

5 of 5 attempts PASS (necked)

0 of 5

2

KiCad's pic_programmer demo, tracks removed

5 (no protocol-6 batch has run)

0 of 5; cannot pass

0 of 5; cannot pass

  • PASS (necked) means the board passed the gate (zero unconnected items, zero error-level DRC violations, all zones filled), but it carries counted necks: tracks narrower than their net class right at a pad entry, which the protocol accepts as "forced" when the pad geometry limits the width (at the 0.2 mm gap between U1's pads, a 0.2 mm track is the widest that keeps the class clearance). The Freerouting boards carry 3 such necks on +3V3 at U1 pad 4, 2.1476 mm in total. It is a weaker statement than a plain PASS, it is always labelled, and no rung is claimed from it.

  • The 5 of 5 depends on one open decision. The first segment of each neck is 0.15 mm wide where the pad would allow 0.2 mm. Under the protocol's current reading that still counts as forced; under a stricter reading all five attempts would FAIL. The owner's decision on a neck below the pad limit is still open (build ticket 111, item 3).

  • KiCadRoutingTools scores 0 of 5 on rung 1 because its parser reads zero pads of footprints whose pad names are unquoted, so it leaves their pads unconnected (build ticket 112, not fixed).

  • Rung 2 cannot pass for any router: the demo's own silkscreen already carries 6 silk_overlap errors, which no router can fix (build ticket 106).

  • Rung 3, the 20 A class openMPPT board, is frozen until rungs 1 and 2 pass.

Details and the exact meaning of each number: docs/ROADMAP.md and docs/TESTING.md.

Related MCP server: KiCAD MCP Server

Quickstart

  1. Install (below) and add the server to your MCP client (below).

  2. Ask the agent to open a project: project_open takes a project directory or a .kicad_pro file. project_create scaffolds a new one.

  3. Load what you need: list_toolsets shows the toolsets, load_toolset loads one (schematic, placement, routing, ...).

  4. Grade the board: pin_rule_baseline before you start work, then verify_board with the board path, parity="required" (or "not_applicable" with a reason) and the baseline. Only a PASS from verify_board may be called routed or done.

Install

Requirements:

  • Python 3.11 or newer.

  • KiCad 10 with kicad-cli (required). Tested with 10.0.7.

  • Tested on Windows only (Windows 11, KiCad 10.0.7): every measurement and every gate run was made there. The code does not knowingly depend on Windows, but nothing has been run on Linux or macOS. Where docs/TESTING.md names Ubuntu paths, they are KiCad's package layout, not something this project has run.

Clone with submodules, so the JLCPCB library comes along (about 103 MB; it is optional, see below):

git clone --recurse-submodules <repository-url>
cd <the cloned folder>

Already cloned without them? git submodule update --init --depth 1 fetches them afterwards.

python -m venv .venv
.venv/Scripts/pip install -e ".[dev,krt]"

Extras: dev (pytest, ruff), krt (the runtime dependencies of KiCadRoutingTools: numpy, scipy, shapely, Pillow), assets (easyeda2kicad, AGPL-3.0, used as a subprocess only), copilot (kicad-python, for the live-IPC adapter).

External tools

Each tool is found the same way: an environment variable first, then PATH, then the usual install locations. A missing tool makes the tools that need it return status: incomplete with install instructions, never a guess.

Tool

Used for

Environment variable

KiCad 10 kicad-cli

Required. DRC, ERC, netlists, renders, exports, the gate

KICAD_CLI_PATH

KiCad's bundled Python

Freerouting's Specctra export and import; KiKit

KICAD_PYTHON_PATH

KiCadRoutingTools v0.23.1 (MIT)

Routing and placement optimisation, run from a checkout (python build_router.py builds its router)

KICAD_ROUTING_TOOLS_PATH, KICAD_ROUTING_TOOLS_PYTHON

Freerouting 2.5.0 jar (GPLv3) and Java 25

Routing, as a subprocess

FREEROUTING_JAR_PATH, JAVA_PATH

ngspice 47 (pinned; ngspice_con.exe on Windows)

SPICE simulation. Optional while the simulation map is parked (owner decision of 2026-10-30, issue 40): the batch gate does not require it, and its live tests skip, counted, when it is absent

NGSPICE_PATH

KiKit

Panelisation

KIKIT_PATH

KiCad's demo projects

Inputs of the second rung and of the oracle tests

KICAD_DEMOS_DIR

KiCad's symbol libraries

Schematic building and tests

KICAD_SYMBOL_DIR

All third-party tools, their licences and how they are used are listed in THIRD_PARTY.md.

Optional: the JLCPCB symbol and footprint library

Whether a part is a JLCPCB Basic, Preferred or Extended part is answered from a small index that ships with the repository, with no download. The ready-made symbols, footprints and 3D models behind that index (CDFER/JLCPCB-Kicad-Library, MIT, about 103 MB) are a git submodule that a plain git clone does not fetch. Fetch it when you want them:

git submodule update --init --depth 1 third_party/JLCPCB-Kicad-Library

Without it, asset lookups fall back to easyeda2kicad (the assets extra) and say so. The server looks for the library in this order: the KICAD_MCP_JLCPCB_LIBRARY environment variable, the submodule above, KiCad's third-party directory (a Plugin and Content Manager install). jlcpcb_library_status reports what it found and, for an empty or missing submodule, the command above. A new git worktree starts with the submodule empty; set KICAD_MCP_JLCPCB_LIBRARY to another checkout's third_party/JLCPCB-Kicad-Library to share it. To rebuild the index after moving the pin: python scripts/refresh_jlcpcb_index.py.

MCP client configuration

{
  "mcpServers": {
    "kicad": {
      "command": "path/to/.venv/Scripts/python",
      "args": ["-m", "kicad_mcp.server"]
    }
  }
}

The installed script does the same: "command": "path/to/.venv/Scripts/kicad-mcp" with no arguments.

The server starts with 19 tools: the three toolset tools (list_toolsets, load_toolset, unload_toolset), project_create, project_open, the gate (verify_board, pin_rule_baseline) and the checkpointed pairs for input preparation, pour step, schematic import, board rules, board outline and silkscreen minimums. Ten more toolsets load on demand with load_toolset: verification (9 tools), sourcing (13), diagnostics (2), library (3), schematic (7), placement (12), manufacturing (2), routing (6), copilot (9) and simulation (2). That is 65 more tools, 84 in total (counted from a running server on 2026-10-29).

Principles

  • Evidence-gated: a check that did not fully run says so and never reports clean.

  • kicad-cli is the judge: structured DRC and ERC output, read in full. Renders are for humans only.

  • Batch tools: operations take collections, not one item per call.

  • Checkpoints: autorouting, autoplacement, ambiguous part matches and destructive edits return a proposal and a revision token. Nothing is written until you confirm, and for the newer checkpoint pairs a confirm is refused if the project's files changed in between.

  • Never hand-edit KiCad files: every mutation goes through this project's tools, or through the project's write layer (kicad_mcp.write_layer), which saves through a temporary file, a parse check and os.replace.

Limitations

  • Sourcing: Nexar and Digi-Key providers are not built (they need credentials). The LCSC provider is blocked by a bot wall and returns an error rather than an empty list. The JLCPCB Basic parts index is vendored.

  • Autoplacement (propose_autoplacement) is a naive row-packer. KiCadRoutingTools' placement optimiser is the stronger option.

  • Zones: there is a pour step (propose_pour_step and confirm_pour_step) that adds a gate-graded plane zone from KiCadRoutingTools' plane script. There is no general zone-editing tool and no track or via removal tool.

  • Schematic editing tools are unsafe on hierarchical (multi-sheet) projects; see docs/ARCHITECTURE.md, "Known facts and gotchas".

  • Windows only so far.

Tests

Around 4,490 tests (4,486 without the network-marked ones; collected on 2026-10-29). From the repository root:

python -m pytest -m "not network"

Tests that need an external tool skip with a stated reason when the tool is absent. The full gate, python scripts/batch_gate.py, runs the whole suite and the linter in a clean tree and ends with one GREEN or RED line; it takes about 45 minutes. There is no hosted CI: that local gate is the test gate. See docs/TESTING.md.

Documentation

File

Contents

docs/OVERVIEW.md

A ten-minute tour: how a tool call works, the gate, the ladder

docs/CONTEXT.md

Glossary

docs/ARCHITECTURE.md

The decision record and the known facts and gotchas, with evidence

docs/ROADMAP.md

The acceptance ladder, carried-over defects, non-goals

docs/TESTING.md

The acceptance gate and the test suite

CONTRIBUTING.md

How to contribute

THIRD_PARTY.md

Third-party tools and data, with licences

CLAUDE.md

Rules for AI agents working in this repository

Contributing and licence

Contributions are welcome; read CONTRIBUTING.md first. The code is MIT-licensed (LICENSE). Copyleft tools (Freerouting, easyeda2kicad) are only ever run as subprocesses. kiutils (GPLv3) is not used.

Available Tools

19 tools
confirm_board_outlineA
Destructive

Apply a propose_board_outline proposal: writes a NEW board revision with the outline and mounting holes, verified by a fresh reload and a kicad-cli outline check; copper pours under a new keepout need refilling before any pour or DRC figure means anything. The revision_token is single use. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
pcb_pathYes
revision_tokenYes

TDQS

A5/5.0
Behavior5/5

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

The description is highly transparent about system behavior: it validates the proposal using a 'fresh reload and a kicad-cli outline check,' confirms the source board remains untouched, and specifies the token is 'single use.'

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?

Despite its length, the description is extremely efficient, providing critical workflow and technical constraints without any extraneous filler, delivering high information density.

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

Completeness5/5

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

The description is maximally complete for a complex, multi-step CAD process. It covers the input, the process (revision creation/validation), and the necessary next step (returning the new `pcb_path` to 'continue from that path').

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

Parameters5/5

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

Since schema description coverage is 0%, the description must provide all semantic value. It successfully explains the `revision_token` is single-use and clarifies that the input `pcb_path` is the 'source_pcb' while the output is the new revision path.

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?

The description explicitly states its purpose is to 'Apply a propose_board_outline proposal' and details that it 'writes a NEW board revision with the outline and mounting holes,' making it uniquely identifiable within the CAD workflow.

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

Usage Guidelines5/5

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

It provides a step-by-step 'Order for a project' (e.g., 'import_from_schematic -> board_outline -> board_rules'), which defines the exact sequence and context in which this tool must be used relative to its siblings.

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

confirm_board_rulesA
Destructive

Apply a propose_board_rules proposal: writes a NEW project revision with the rules, verified by a fresh reload, then pins the rule baseline of that revision and grades it (the grading field is not a verdict). Any rule change makes every earlier baseline pin and verdict void: use the returned baseline and re-run verify_board on output_pcb. The revision_token is single use. parity: "required" or "not_applicable" (give parity_reason), passed to the gate unchanged. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
parityYes
pcb_pathYes
parity_reasonNo
revision_tokenYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond destructiveHint=true and idempotentHint=false, it discloses that a NEW revision is written beside the source, the source remains untouched, returned paths are output_pcb/pcb_path while the input is source_pcb, revision_token is single use, and the grading field is not a verdict. It also explains stale gates and baseline invalidation, which are critical behavioral traits.

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

Conciseness4/5

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

The description is front-loaded with the core action, and every sentence carries operational value for this complex workflow. The single dense paragraph and long inline sequence list make it harder to scan than a structured list, so it falls short of a 5.

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

Completeness5/5

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

For a destructive, multi-step workflow tool with no schema descriptions and no output schema, it supplies the needed context: sequencing, return paths, token lifetime, baseline invalidation, and which sibling certifies results. Minor omissions like exact grading values are not essential to invoke the tool correctly.

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 description coverage is 0%, so the description must carry parameter meaning. It explains that revision_token is single use, defines parity values and parity_reason handoff, and clarifies that pcb_path is the source board while output_pcb/pcb_path is the new revision; however, it does not fully define pcb_path format or exactly when parity_reason is required.

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?

The description opens with a precise verb and resource: 'Apply a propose_board_rules proposal,' then specifies that it writes a new project revision, pins the rule baseline, and grades it. This clearly distinguishes confirm_board_rules from propose_board_rules and verify_board by naming the confirm action and its resulting workflow.

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

Usage Guidelines5/5

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

It states the prerequisite proposal, gives an explicit project sequence ('Order for a project: ...'), notes the revision_token is single use, and tells the agent to re-run verify_board on output_pcb after rule changes. It also says both gates are stale until verify_board runs and that only verify_board certifies, routing the agent to the correct alternative.

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

confirm_input_preparationA
Destructive

Apply a proposal from propose_input_preparation: writes a NEW prepared board revision (the source is untouched), re-pins the rule baseline on it and reports the input_floor (errors present before any routing; never waive them).

Runs once per board, BEFORE the pin_rule_baseline you use for routing, never inside an attempt: use the returned output_pcb and baseline from here on. Copper text it cannot handle is listed under unhandled; the floor is then NOT a clean baseline. The revision_token is single use. input_floor carries grading_status and certified: false, not a verdict (the prepared board's gate stays NOT_RUN/stale): only verify_board gives a verdict. pcb_path in the result is the prepared board (same as output_pcb); the board you passed in is source_pcb.

parity: "required" or "not_applicable" (give parity_reason), passed to the gate unchanged.

NameRequiredDescriptionDefault
parityYes
pcb_pathYes
parity_reasonNo
revision_tokenYes

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: source board untouched, revision_token single use, unhandled copper text invalidates a clean baseline, input_floor carries grading_status and certified: false (not a verdict), and pcb_path/source_pcb/output_pcb relationships are explained.

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?

Front-loads the core action and keeps every sentence informative, but the dense parentheticals and multi-clause sentences make it heavier to parse than necessary for a tool definition.

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

Completeness5/5

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-shape burden and does so: output_pcb, baseline, unhandled, input_floor with grading_status/certified, pcb_path, and source_pcb are all covered, along with the workflow position.

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 0%, so the description must compensate. It explains parity values and parity_reason, and the single-use nature of revision_token, though pcb_path's role is only implied through the source_pcb distinction rather than stated outright.

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 and resource: applies a proposal from propose_input_preparation, writes a NEW prepared board revision, re-pins the rule baseline, and reports input_floor. This clearly distinguishes it from its proposal sibling and from pin_rule_baseline.

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

Usage Guidelines5/5

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

Gives explicit ordering constraints: runs once per board, BEFORE the pin_rule_baseline used for routing, never inside an attempt, and tells the agent to use the returned output_pcb and baseline thereafter. It also names verify_board as the only source of a verdict.

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

confirm_pour_stepA
Destructive

Run the plane router on a scratch copy of the board, grade its candidate, and only if accepted write a NEW board revision with the zone (plus any vias/tracks the plane script added); the source is untouched. The revision_token is single use.

baseline: the dict from pin_rule_baseline, REQUIRED (this step never pins silently; an empty baseline is refused as incomplete). Input preparation (propose_input_preparation) must have run first: a board with copper-layer text is refused.

What status poured proves: the candidate was graded by verify_board's gate, the zone is filled (measured in a kicad-cli refilled copy; the file on disk holds the outline only) and no pad was found isolated by the checks listed in the result. It does NOT prove the board is connected or complete: each pad in pads carries connectivity: proven|unproven (unproven pads, e.g. waiting for a via, and every open signal remain). Only verify_board certifies a board.

Cost per confirm: about 12 gate runs (kicad-cli DRC) plus connectivity runs, capped at 40 in total; expect minutes, not seconds. Over the cap a pad is never accepted unproven.

In the result, pcb_path is the new revision (same as output_pcb) and source_pcb is the board you passed in; both gates are stale until verify_board runs on the revision.

NameRequiredDescriptionDefault
parityYes
baselineYes
pcb_pathYes
parity_reasonNo
revision_tokenYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the annotations: it discloses the scratch-copy semantics (source untouched), the single-use token, the cost profile (~12 gate runs, capped at 40, minutes not seconds), and precisely what `poured` does and does not prove (no pad proven isolated, but connectivity may still be `unproven`). It also warns that both gates are stale until verify_board runs — behavior an agent could not infer from destructiveHint alone.

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?

Front-loads the action and scratch-copy semantics, then layers preconditions separately from the meaning of `poured`. Dense but almost every clause is load-bearing; it runs slightly long, though the detail is justified for a destructive, minutes-long operation.

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?

With no output schema, the description compensates by explaining pcb_path vs source_pcb and the pads connectivity field, plus the stale-gate caveat — all things an agent needs to act on the result. The one real hole is the unexplained `parity`/`parity_reason` parameters, which the description never addresses.

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 0%, so the description must carry all parameter meaning. It explains baseline (dict from pin_rule_baseline, required), revision_token (single use), and pcb_path (the board passed in), but `parity` (enum required/not_applicable) and `parity_reason` are never mentioned, leaving two of five parameters undefined anywhere.

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 concrete verb chain (run router on a scratch copy, grade candidate, conditionally write a NEW revision) and the resource (board revision with the poured zone). It also explicitly bounds the scope against siblings by noting the source is untouched and that only verify_board certifies a board, so an agent can distinguish it from propose_pour_step and verify_board.

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

Usage Guidelines5/5

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

Gives explicit preconditions (baseline from pin_rule_baseline is required, propose_input_preparation must have run, copper-layer text is refused) and when-not conditions (empty baseline refused, single-use token, over the run cap a pad is never accepted unproven). It also names the alternative that actually certifies a board: verify_board.

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

confirm_schematic_importA
Destructive

Apply a propose_schematic_import proposal: writes a NEW board revision with the schematic's footprints and every pad net, verified by a fresh reload against the kicad-cli netlist; an unresolved footprint fails the whole confirm and nothing is written. The revision_token is single use. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
pcb_pathYes
revision_tokenYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds substantial context beyond them: the source board is untouched, a new revision is written beside it, an unresolved footprint aborts the entire confirm with nothing written, revision_token is single use, and gate results are stale until verify_board runs.

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?

Front-loaded with the action and consequence of failure, and nearly every clause carries information. There is mild redundancy in restating 'writes a NEW board revision beside the source (the source is untouched)' after the opening sentence.

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?

Covers failure atomicity, token lifetime, output naming (output_pcb / pcb_path vs source_pcb), pipeline ordering, and verification routing, which is what an agent needs for a destructive, non-idempotent tool with 0% schema coverage and no output schema. Only prerequisite auth/permission behavior and where the new revision file lands are unstated.

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 description coverage is 0%, so the description must carry parameter meaning; it does explain revision_token as single-use and clarifies pcb_path semantics ('the board you passed in is source_pcb', output returned as output_pcb). What it omits is any format/token-sourcing guidance for obtaining the revision_token.

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 precise verb and resource ('Apply a propose_schematic_import proposal: writes a NEW board revision with the schematic's footprints and every pad net') and clearly positions itself against the sibling propose_schematic_import. An agent can distinguish propose vs. confirm 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.

Usage Guidelines5/5

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

Gives the prerequisite (must follow propose_schematic_import), the explicit pipeline order for a project (import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing), and routes certification elsewhere ('only verify_board certifies').

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

confirm_silkscreen_minimumsA
Destructive

Apply a propose_silkscreen_minimums proposal: writes a NEW board revision with the raised text, verified by a fresh reload against the plan. The revision_token is single use. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
pcb_pathYes
revision_tokenYes

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (destructive=true, idempotent=false), it discloses that the source board is untouched, that a NEW revision is written beside it, that revision_token is single-use, and that both gates remain stale until verify_board runs. That is exactly the extra context 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.

Conciseness4/5

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

Front-loads the action and effect, then the ordering and return-path guidance. Dense but nearly every clause carries operational information; the parenthetical about output_pcb/pcb_path/source_pcb is a bit crammed but justified.

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

Completeness5/5

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

No output schema exists, yet the description names the returned fields and tells the agent to continue from the returned path. Combined with the single-use token warning and the verify_board caveat, an agent has everything needed to call it correctly.

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 0%, so the description must carry the load; it does explain revision_token is single-use and clarifies pcb_path is the source board (returned separately as source_pcb). It does not state where the token comes from or its format, leaving a small gap.

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 ('Apply ... proposal'), the exact resource it consumes (propose_silkscreen_minimums) and the effect (writes a NEW board revision with raised text verified by reload). An agent can distinguish it from the sibling propose_silkscreen_minimums immediately.

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 explicit pipeline placement ('silkscreen_minimums -> pin_rule_baseline -> pour step -> routing') and names verify_board as the only certifier, which routes the agent correctly. It stops short of stating when NOT to call it (e.g. missing/expired token handling), so it is clear context without explicit exclusions.

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

list_toolsetsA

List available KiCad tool groups (schematic, pcb, sourcing, ...) and whether each is currently loaded.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden; "List" establishes a read-only, non-mutating operation and the description discloses that both availability and current load state are returned. It does not mention ordering, filtering, or any cost/pagination traits, but for a zero-argument read-only listing the surface is small.

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 sentence with the resource and returned information front-loaded; every clause earns its place.

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

Completeness5/5

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

With no parameters and a declared output schema, the description need not explain return values. It supplies the one thing an agent needs to know — what categories exist and that load status accompanies them.

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 baseline is 4. There is no parameter behavior left to compensate for and the description correctly avoids inventing any input semantics.

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?

States a specific verb and resource ("List available KiCad tool groups") and adds the useful detail that loaded state is reported per group. It is clearly distinguishable from the load_toolset/unload_toolset siblings, though it never names them explicitly.

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 it should list toolsets before choosing load_toolset or unload_toolset, but the description never says when to call it or what to do with the result. No exclusions or explicit alternatives are given.

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

load_toolsetA

Load a tool group's tools into this session, e.g. 'sourcing', 'schematic', 'pcb', 'verification'.

NameRequiredDescriptionDefault
nameYes

TDQS

A4.3/5.0
Behavior4/5

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

Since there are no annotations, the description carries the full burden of context. It provides crucial domain knowledge by illustrating that the 'name' parameter must correspond to a known, conceptual tool group (e.g., 'schematic', 'verification'), which guides the agent's intent rather than just its data typing.

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?

The description is a single, well-structured sentence that front-loads the main action and follows immediately with clarifying, high-value examples. It is perfectly sized for the function it performs.

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

Completeness5/5

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

For a configuration tool lacking output schema or behavioral annotations, the description is maximally complete. It successfully tells the agent what the parameter means and gives the necessary examples to ensure correct invocation.

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?

Although the schema coverage is 100% (only one parameter), the description adds vital semantic value by listing concrete, non-obvious values for the 'name' parameter. These examples act as in-context enumerations for the single string input.

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?

The description explicitly uses the verb 'Load' and clearly identifies the resource being modified: a 'tool group's tools' into the 'session'. Providing concrete examples like 'sourcing' and 'pcb' further distinguishes this setup function from the workflow-focused sibling tools.

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?

While it functions as a setup step, the description does not explicitly state when this is needed relative to the larger workflow (i.e., before processing or after project creation). It is implied that this is an initialization step.

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

pin_rule_baselineA
Read-onlyIdempotent

Snapshot the rule settings verify_board grades against (rule severities, netclass limits, .kicad_dru severity clauses, ignored checks). Read-only: the caller stores the result and passes it as baseline. Pin before the work, not after it.

NameRequiredDescriptionDefault
pcb_pathYes

TDQS

A4/5.0
Behavior3/5

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 free. The description earns credit for enumerating exactly what is captured and for stating the caller-side storage/pass contract, but says nothing about the returned shape or size beyond that. Useful addition, not rich 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.

Conciseness5/5

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

Three short sentences, zero filler: what is captured first, then the read-only contract, then the ordering constraint. Front-loaded and every clause carries information.

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, no-output-schema tool the description covers purpose, safety, content, and workflow placement adequately. The only missing piece is what pcb_path expects, a minor gap given there is only one parameter and no enums or nesting.

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 0% and the sole parameter, pcb_path, is never explained in the description, so that gap is not compensated. The description does clarify the conceptual `baseline` artifact exchanged with verify_board, which is genuinely beyond the schema and keeps this from scoring lower.

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 ('Snapshot') and a precisely enumerated resource (rule severities, netclass limits, .kicad_dru clauses, ignored checks), and anchors it to the consumer tool verify_board. An agent can distinguish this from verify_board itself 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.

Usage Guidelines4/5

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

Gives a clear timing rule ('Pin before the work, not after it') and explains the downstream usage contract (caller stores the result and passes it as `baseline`). It does not name an explicit alternative or a when-not-to-use case, which keeps it below a 5.

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

project_createC
DestructiveIdempotent

Scaffold a new KiCad project: .kicad_pro, blank .kicad_sch, blank .kicad_pcb.

NameRequiredDescriptionDefault
nameYes
layersNo
width_mmNo
directoryYes
height_mmNo
overwriteNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is partially carried by structured data. The description adds that files are 'blank,' which is useful, but it fails to connect the destructive hint to the overwrite parameter (i.e., that overwrite=true destroys existing files).

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 that names the action and its outputs with zero filler. Efficient, though extremely terse for a tool with six parameters.

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

Completeness2/5

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

An output schema covers return values, but with six parameters at 0% schema coverage and a destructive operation, the description does not do enough: it omits the meaning of overwrite, layers, and dimensions, and gives no usage guidance.

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

Parameters2/5

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

Schema description coverage is 0% and no parameter is explained in the description. The mention of '.kicad_pcb' hints that layers/width_mm/height_mm configure the board, but directory, name, and especially overwrite remain undocumented.

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?

States a specific verb 'scaffold' plus resource 'new KiCad project' and enumerates the concrete artifacts produced (.kicad_pro, .kicad_sch, .kicad_pcb). Clear enough to distinguish creating a new project from project_open, though it never names that sibling.

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 when-to-use, when-not, or prerequisites are given. It doesn't state the relationship to project_open (open existing vs create new) or when overwrite should be chosen.

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

project_openB
Read-onlyIdempotent

Open an existing KiCad project and summarize its schematic/PCB contents.

NameRequiredDescriptionDefault
pathYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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 scope, so the safety profile is fully covered. The description adds only that the call also produces a summary of schematic/PCB contents, which is useful context but not much beyond the annotations.

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

Conciseness5/5

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

One front-loaded sentence with no filler; the verb and resource come first and the summarizing behavior follows. Nothing is wasted.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. What is missing is the meaning/format of the single required path argument and whether the project remains loaded in session state after the call.

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

Parameters2/5

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

There is one required parameter, 'path', with 0% schema description coverage, so the description carries the full burden of explaining it. It says nothing about whether path is a .kicad_pro file, a project directory, absolute vs relative, or how missing/invalid paths are handled.

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?

States a specific verb and resource ('Open an existing KiCad project') plus the additional effect of summarizing schematic/PCB contents. It is clearly distinct from the sibling project_create, 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.

Usage Guidelines3/5

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

The phrase 'existing KiCad project' implies this is for projects already on disk rather than new ones, which implicitly routes away from project_create. However, no alternative is named and no preconditions (project must exist, must be valid) are stated.

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

propose_board_outlineA
Read-onlyIdempotent

Dry run of replacing the board outline (one rectangle, optional rounded corners) and adding mounting holes with copper keepouts; lists what would be replaced, which footprints would fall outside the new outline (reported, never moved) and any hole that touches existing items; writes nothing and returns a revision_token. outline: {x, y, width, height, corner_radius?} in mm. mounting_holes: [{reference, x, y, keepout_radius_mm, footprint?}]. origin: "page" (file coordinates, default) or "aux_axis" (relative to the board's aux axis origin). allow_overlap: a hole whose keepout touches footprints, tracks, vias, zones or another hole is refused unless this is true; set only after a human has read the listed items; never set it to get past a refusal on your own. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
originNopage
outlineYes
pcb_pathYes
output_dirNo
allow_overlapNo
mounting_holesNo

TDQS

A4.6/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: it reports replaced items, footprints outside the outline without moving them, and holes touching existing items; it refuses overlapping keepouts unless allow_overlap is true; and it explains that it writes nothing while returning a revision_token. This is consistent with readOnlyHint=true, idempotentHint=true, and destructiveHint=false.

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?

The key point, dry run and writes nothing, is front-loaded, and the dense detail is mostly justified by the complex nested parameters and lack of schema descriptions. Some material about confirm behavior and full project ordering is broader than this single tool, but it remains useful context rather than filler.

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

Completeness5/5

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

For a complex nested-parameter tool with no output schema, the description is complete enough to call it correctly: it defines the dry-run behavior, input shapes, overlap gate, returned revision_token, output_pcb/pcb_path/source_pcb distinction, and the need for verify_board before gates are valid. These details compensate for the absent output schema and sparse input schema.

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?

With 0% schema description coverage, the description carries the burden and explains the important nested fields: outline {x, y, width, height, corner_radius?}, mounting_holes entries, origin enum meanings, and allow_overlap behavior. It leaves output_dir and perhaps pcb_path relatively implicit, so it is strong but not exhaustive.

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?

The description states a specific verb and resource: a dry run of replacing the board outline and adding mounting holes, including what would be replaced and what would be refused. It distinguishes itself from the confirm sibling by explicitly saying it writes nothing, returns a revision_token, and that confirmations write a new revision.

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?

It clearly establishes the dry-run use case, gives a project-order context, and warns that allow_overlap should only be set after a human has read the listed items. It also points agents to verify_board for certification. It does not explicitly name confirm_board_outline as the next step, so the alternative routing 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.

propose_board_rulesA
Read-onlyIdempotent

Dry run of setting the board's design rules (minimum clearance, track width, via diameter, via annular width, through-hole diameter, and named net classes with their nets) in the project's .kicad_pro; lists every value that would change, every loosening and every incoherence; writes nothing and returns a revision_token. Lengths are mm. A key absent from the project counts as KiCad's built-in default, never as unset. netclasses: [{name, clearance?, track_width?, via_diameter?, via_drill?, priority?, nets?: [exact net names]}]. allow_loosen: lowering a rule is refused unless this is true; set only after a human has read the listed items; never set it to get past a refusal on your own. allow_incoherent: a class value below a board minimum is refused unless this is true; set only after a human has read the listed items; never set it to get past a refusal on your own. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
pcb_pathYes
netclassesNo
output_dirNo
allow_loosenNo
via_diameterNo
min_clearanceNo
min_track_widthNo
allow_incoherentNo
min_via_annular_widthNo
min_through_hole_diameterNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description corroborates ("writes nothing and returns a revision_token"), then adds real behavioral context: absent keys fall back to KiCad built-in defaults, loosening and incoherent class values are refused unless the gate flags are set, lengths are mm. The paragraph about confirms writing a new board revision and returning output_pcb describes other tools rather than this one, which adds pipeline context but risks blurring this tool's read-only nature.

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?

Dense but front-loaded: the dry-run behavior and return value come first, then parameter semantics, then gates, then workflow ordering. Parenthetical enumerations replace whole sentences and nothing is repeated.

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 10-parameter, no-output-schema, zero-coverage tool this is a strong description — it explains what is reported (every value that would change, every loosening, every incoherence) and what is returned (revision_token). Remaining gaps are output_dir and the exact shape of the reported change list.

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?

With 0% schema description coverage the description carries the load and does much of it: units (mm), default-vs-unset semantics for missing keys, the full netclasses entry shape with per-class fields, and the human-approval gating for allow_loosen/allow_incoherent. It leaves pcb_path vs source_pcb, output_dir, and the distinction between via_diameter and min_via_annular_width unaddressed.

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 and resource ("Dry run of setting the board's design rules ... in the project's .kicad_pro") and immediately enumerates the rule families covered. The "dry run" framing cleanly separates it from the sibling confirm_board_rules, so an agent can choose 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.

Usage Guidelines4/5

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

Gives explicit when-to conditions (preview before confirming, gate flags only after a human reads the listed items, sequencing relative to verify_board and the surrounding pipeline). It never names confirm_board_rules as the follow-up action explicitly, relying on the sibling name and "Dry run" to imply the pairing.

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

propose_input_preparationA
Read-onlyIdempotent

Dry run of input preparation: lists every copper-layer text (F.Cu/B.Cu gr_text) that would move to silkscreen, and returns a revision_token. Writes nothing.

Run this step once per board, BEFORE pin_rule_baseline and before any routing; never inside a routing attempt. Copper text it cannot handle (inner-layer text, text boxes) is listed under unhandled, and the input floor is then NOT a clean baseline. With nothing to move there is no token (status nothing_to_do). This tool gives no verdict: only verify_board does.

output_dir: new directory for the prepared project copy (default: sibling <project>_prepared); it must not be inside the source project or non-empty.

NameRequiredDescriptionDefault
pcb_pathYes
output_dirNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, and the description reinforces this with 'Writes nothing'. It adds real behavioral context annotations cannot: the `unhandled` bucket for inner-layer text and text boxes, the `nothing_to_do` no-token case, and the absence of any verdict. Minor gap: it mentions creating a 'new directory for the prepared project copy' without clarifying whether that directory is created now or only at confirm time, which sits in tension with 'writes nothing'.

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?

Front-loaded with the core action and the no-write guarantee, then ordering, then edge cases, then the parameter note — a sensible hierarchy with no filler sentences. It is dense and reads as a block, but each clause carries operational information.

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

Completeness5/5

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

Despite having no output schema, the description tells the agent what comes back (the list of copper text, a revision_token, an `unhandled` section, status nothing_to_do). Combined with the ordering constraints and output_dir rules, nothing needed to invoke it correctly is missing.

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 description coverage is 0%, so the description must carry the load. It fully specifies output_dir's default (sibling `<project>_prepared`) and two hard constraints (must not be inside the source project, must not be non-empty) that an agent could not infer from the schema. pcb_path is left to the name alone, which is low-risk but unstated.

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 action (dry-run listing of copper-layer text that would move to silkscreen) and its return (a revision_token), with the 'Dry run' framing immediately distinguishing it from the sibling confirm_input_preparation. An agent knows what this does and what it does not do (change the board) without opening anything else.

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

Usage Guidelines5/5

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

Explicit sequencing: 'once per board, BEFORE pin_rule_baseline and before any routing; never inside a routing attempt' tells the agent when to run it and when not to. It also routes verdict-seeking to a named alternative ('only verify_board does'), which the sibling list confirms.

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

propose_pour_stepA
Read-onlyIdempotent

Dry run of the pour step: validates the requested power planes and returns a revision_token. Writes nothing and runs no router.

pours: {net name: copper layer}, one net per layer, e.g. {"GND": "B.Cu"}. A net that already has a pour on that layer is skipped. Run propose_input_preparation / confirm_input_preparation first (copper-layer text is refused by confirm), then pin_rule_baseline, then this step once, before routing signals. output_dir: a new directory (default sibling <project>_poured); not inside the source project. This tool gives no verdict: only verify_board does.

NameRequiredDescriptionDefault
poursYes
pcb_pathYes
output_dirNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new behavior: writes nothing, runs no router, returns a revision_token, skips nets that already have a pour on that layer, and explicitly yields no verdict (only verify_board does). The skip-existing behavior and the 'no verdict' caveat are facts the annotations cannot convey; only the exact return shape of revision_token remains unstated.

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?

Front-loaded with the dry-run contract, then parameters, then sequencing, then the caveat — a sensible order with no filler. It is slightly dense in a single run-on paragraph with the pours example inlined, which costs a bit of scannability but nothing is wasted.

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 three-parameter, sequenced dry-run tool with no output schema, the description covers prerequisites, side effects, the nested parameter format, output directory constraints, and what the tool will not do. The only gap is what the revision_token looks like and what validation failure reports, which the agent cannot infer.

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 0%, so the description must carry the parameters. It fully specifies the nested 'pours' map with type (net name → copper layer), a one-net-per-layer constraint, and a concrete example, plus output_dir semantics (new directory, default sibling `<project>_poured`, must not be inside the source project). pcb_path is not described, keeping this short of a 5.

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?

Opens with a specific verb+resource ('Dry run of the pour step') and states exactly what happens: validates power planes, returns a revision_token, writes nothing. It also names the sibling that provides the real verdict (verify_board) and implicitly contrasts with confirm_pour_step, so the agent can distinguish it from the rest of the propose/confirm pairs.

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

Usage Guidelines5/5

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

Gives an explicit prerequisite chain (propose/confirm_input_preparation, then pin_rule_baseline, then this step) and a cardinality rule ('once, before routing signals'). It also explains why the ordering exists ('copper-layer text is refused by confirm'), which is exactly the when-to-use context an agent needs.

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

propose_schematic_importA
Read-onlyIdempotent

Dry run of importing footprints and nets from the project's schematic into the board (Update PCB from Schematic): lists every footprint and net that would be added and where new footprints are staged; writes nothing and returns a revision_token. Any footprint that cannot be resolved through the project fp-lib-table / installed libraries blocks the proposal (status blocked, no token) and is named. Staged footprints are not placed: placement is a separate step. schematic_path defaults to the board's own .kicad_sch; staging_origin is [x, y] in page mm (default: right of the Edge.Cuts box). Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
columnsNo
spacingNo
pcb_pathYes
output_dirNo
schematic_pathNo
staging_originNo

TDQS

A4.2/5.0
Behavior4/5

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

The description reinforces and extends the annotations: no writes, a revision_token is returned, unresolved footprints block with status=blocked and no token, and blocking footprints are named. The one weakness is that it mixes in the confirm_* output convention ("returns it as output_pcb (also pcb_path; the board you passed in is source_pcb)") inside this tool's own description, which risks an agent expecting output_pcb from a dry run that writes nothing.

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

Conciseness3/5

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

The dry-run purpose is front-loaded and no sentence is pure filler, but it is delivered as one dense unbroken paragraph that folds in sibling confirm/verify semantics. The revision/output_pcb sentence is about other tools and dilutes an otherwise tight core.

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?

There is no output schema, and the description does cover the return contract (listed footprints and nets, staging locations, revision_token, blocked status) and the failure mode. Completeness is only dinged by the unexplained columns/spacing/output_dir parameters and the ambiguous statement about output_pcb.

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 0%, so the description carries the burden, and it only covers two of six parameters: schematic_path (defaults to the board's own .kicad_sch) and staging_origin ([x, y] page mm, default right of the Edge.Cuts box). The staging-grid parameters columns and spacing, plus output_dir and pcb_path, are never mentioned, leaving genuinely ambiguous knobs undocumented.

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?

The first sentence names a specific operation in plain terms ("Dry run of importing footprints and nets from the project's schematic into the board") and immediately defines the scope boundary ("writes nothing"). It also implicitly distinguishes itself from the confirm_* siblings by being the non-writing proposal half of the pair.

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

Usage Guidelines5/5

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

Explicit ordering is given for the whole workflow ("import_from_schematic -> board_outline -> board_rules -> ..."), and it names the clarifying sibling constraint ("Staged footprints are not placed: placement is a separate step"). It also states that both gates are stale until verify_board runs, which tells the agent when this result is authoritative.

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

propose_silkscreen_minimumsA
Read-onlyIdempotent

Dry run of raising every silkscreen text below the fab minimums (height and stroke) on a NEW revision; lists each text with its before and after size, and any text it cannot handle under unhandled; writes nothing and returns a revision_token (none when there is nothing to raise). It never moves, hides or re-layers text: overlaps the larger text may create are for verify_board to report. min_height_mm default 1.0, min_thickness_mm default 0.15. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

NameRequiredDescriptionDefault
pcb_pathYes
output_dirNo
min_height_mmNo
min_thickness_mmNo

TDQS

A4.4/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: it writes nothing, returns revision_token none when there is nothing to raise, never moves/hides/re-layers text, and leaves overlap verification to verify_board. It is consistent with readOnlyHint=true, idempotentHint=true, and destructiveHint=false.

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?

The description is front-loaded with the dry-run purpose and is dense with useful constraints. It is somewhat long and includes workflow/revision details that also pertain to confirm tools, but almost every sentence adds operational value.

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

Completeness5/5

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

Given the absence of an output schema, the description explains the key return values and statuses: before/after sizes, unhandled items, revision_token, and output_pcb/pcb_path from confirm. It also covers the verification dependency and source-board untouched semantics, making it complete enough for correct invocation.

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 0%, so the description must compensate. It documents defaults and meaning for min_height_mm and min_thickness_mm, and contextualizes pcb_path as the source board, but it does not explain the optional output_dir parameter.

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?

The description states a specific operation: a dry run that raises silkscreen text below fab minimums on a new revision, lists before/after sizes and unhandled text, and returns a revision_token. It clearly distinguishes this propose/dry-run behavior from the confirm sibling that writes a new board revision.

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?

It gives explicit project-order guidance and explains that overlaps should be reported by verify_board rather than handled here. It also implies the confirm flow, but it does not explicitly name confirm_silkscreen_minimums as the next alternative.

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

unload_toolsetB

Unload a tool group's tools to free up the session's tool-schema budget.

NameRequiredDescriptionDefault
nameYes

TDQS

B3.1/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 behavioral burden. It states the budget benefit but does not disclose whether the named toolset must already be loaded, whether the operation is reversible, whether it affects session state beyond tool schemas, or what errors occur for an unknown name.

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?

It is a single, front-loaded sentence with no filler. The purpose and budget rationale are stated immediately, and every word contributes to the definition.

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 simple one-parameter tool with no output schema, the description gives the core purpose but omits parameter meaning and behavioral details. It is minimally viable but would benefit from naming the inverse tool and clarifying the required argument.

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

Parameters2/5

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

The schema has one required parameter, "name", with 0% description coverage. The description implies the parameter refers to a tool group but does not state the expected name format, whether it must match a loaded toolset, or any examples, leaving the single parameter underspecified.

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 uses a specific verb ("Unload") and resource ("a tool group's tools") and adds the outcome of freeing the session's tool-schema budget. It is clearly distinguishable from load_toolset and list_toolsets by the verb, though it does not name those siblings explicitly.

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?

The phrase "to free up the session's tool-schema budget" implies the situation in which unloading is appropriate, but there is no explicit when-to-use guidance, no mention of load_toolset as the inverse operation, and no warnings about prerequisites or consequences.

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

verify_boardA
Read-onlyIdempotent

The acceptance gate. Grades a board with real kicad-cli (three refilled runs, union of errors) and returns PASS, FAIL or INCOMPLETE plus the COMPLETE per-net unconnected list and the complete violation list. Only a PASS may be reported as routed or done.

parity: "required" (a missing or unannotated schematic, or one with stale instance paths, is INCOMPLETE) or "not_applicable" (give parity_reason, e.g. an imported board with no schematic). baseline: the dict from pin_rule_baseline. Without it the verdict is INCOMPLETE, because rule weakening (.kicad_dru severity ignore, rule_severities) would go unseen. FAIL takes precedence over INCOMPLETE. incomplete_reasons say why a verdict is INCOMPLETE. notes are informational hints (e.g. the units of one part disagree on DNP): they are never reasons and never change the verdict, so a note neither doubts a PASS nor excuses a FAIL or INCOMPLETE.

NameRequiredDescriptionDefault
parityYes
baselineNo
pcb_pathYes
parity_reasonNo

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: three refilled kicad-cli runs, union of errors, FAIL precedence over INCOMPLETE, baseline-gated rule weakening, incomplete_reasons, and notes that never change the verdict. This is rich operational context even though annotations already cover read-only and idempotent behavior.

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?

Front-loads the core purpose in the first sentence, then groups parity, baseline, precedence, and notes into compact paragraphs. The density is appropriate for a high-stakes verification tool, and no sentence is wasted.

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

Completeness5/5

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

Despite having no output schema, the description explains the verdict categories, the complete unconnected and violation lists, and the precedence rules. Together with annotations covering safety, this is complete enough for an agent to invoke and interpret results correctly.

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?

With 0% schema description coverage, the description compensates well: it explains parity required/not_applicable, parity_reason with an example, and baseline as the dict from pin_rule_baseline whose absence forces INCOMPLETE. pcb_path is left implicit but is self-evident from the tool purpose.

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 and resource: it grades a board with real kicad-cli and returns PASS, FAIL, or INCOMPLETE with complete error lists. The 'acceptance gate' framing and reference to pin_rule_baseline distinguish it from sibling propose/confirm tools.

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?

Explains when the tool is authoritative: only a PASS may be reported as routed or done. It also describes parity modes and that baseline from pin_rule_baseline is required, but it does not explicitly name when-not-to-use conditions or alternatives beyond that dependency.

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. 19 tool updatesv0.1.0
    • First observedconfirm_board_outline
    • First observedconfirm_board_rules
    • First observedconfirm_input_preparation
    • First observedconfirm_pour_step
    • First observedconfirm_schematic_import
    • First observedconfirm_silkscreen_minimums
    • First observedlist_toolsets
    • First observedload_toolset
    • First observedpin_rule_baseline
    • First observedproject_create
    • First observedproject_open
    • First observedpropose_board_outline
    • First observedpropose_board_rules
    • First observedpropose_input_preparation
    • First observedpropose_pour_step
    • First observedpropose_schematic_import
    • First observedpropose_silkscreen_minimums
    • First observedunload_toolset
    • First observedverify_board

TDQS

A3.7/5.0

Scored across 19 tools

Disambiguation4/5

The propose_/confirm_ pairing gives each operation a clear dry-run vs apply boundary, and verify_board is repeatedly (and correctly) framed as the single verdict tool, which resolves most confusion. A few pairs still sit close together: propose_input_preparation (moving copper text to silkscreen) vs propose_silkscreen_minimums (resizing text) both operate on the same board text, and the baseline pinning happens implicitly inside confirm_board_rules / confirm_input_preparation as well as in pin_rule_baseline.

Naming Consistency4/5

The dominant pattern is verb_noun (verify_board, pin_rule_baseline, load_toolset), and the six propose_/confirm_ pairs are perfectly parallel. Deviations are minor but real: project_create/project_open reverse to noun_verb, list_toolsets uses a plural where load_toolset/unload_toolset use singular, and only the pour pair carries a '_step' suffix.

Tool Count4/5

19 tools is on the heavy side, but half of them are the six propose/confirm pairs, which exist so that irreversible board writes require a dry run first — that doubling is justified by the domain rather than redundant. The five orchestration tools (list/load/unload_toolset, pin_rule_baseline, verify_board) and two project tools each carry a distinct role.

Completeness3/5

The visible surface covers a coherent forward pipeline (scaffold, outline, rules, schematic import, input prep, silkscreen, pour, verify) with no way to undo or remove anything once written. The documented stage order explicitly names 'routing' after the pour step, yet no routing tool appears here — it must come from a dynamically loaded toolset — and there is no export/manufacturing output (gerbers, drill, BOM) or board-inspection tool beyond project_open's summary.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with KiCAD for PCB design automation. Users can design PCBs using natural language, including component placement, routing, checks, and export.
    40 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to interact with KiCAD for PCB design automation, including schematic editing, component placement, routing, DRC/ERC, and export.
    100
    29 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to audit KiCad PCB designs through deterministic DRC/ERC checks, spatial heuristics, and multimodal vision review, returning structured, prioritized findings with coordinates and fix guidance.
    10
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients such as Claude Code to work on KiCad 10 designs by driving kicad-cli for ERC, DRC, netlists and fabrication exports, KiCad's IPC API for live board editing, and lossless edits of schematic and project files. It also provides design review, routing, parts and datasheet tooling so a board can be treated as data and checked against fab limits.
    35
    3
    MIT