Skip to main content
Glama
Avinash1286

KiCAD MCP Server

by Avinash1286

Discussions. Get in here.

https://github.com/Avinash1286/KiCAD-MCP-Server-THEAVI/discussions

🚀 Meet Konnect — the next generation

Konnect is this project rebuilt from scratch in Rust as a native KiCAD 10 plugin: a single binary with no runtime dependencies, built on KiCAD's official IPC API instead of SWIG, with 171 tools, bundled Claude skills and agents, design-review audits, and a manufacturing pipeline. It's where new development happens — licensed AGPL-3.0 (free for individuals and open source; commercial licenses available for businesses).

This Python/TypeScript server remains fully open (MIT) and maintained.

KiCAD MCP Server

This independent distribution is maintained by Avinash1286 and preserves attribution to all upstream authors and contributors under the MIT License.

A Model Context Protocol (MCP) server that enables AI assistants to automate KiCad PCB design. It uses the MCP 2026-07-28 stateless protocol core while retaining the SDK's legacy 2025 compatibility path for existing desktop clients.

Related MCP server: KiCAD Schematic Manipulation MCP Server

Install without cloning the repository

The published @theavi/kicad-mcp npm runtime and universal Codex/Claude Code plugin let users install KiCad MCP from the GitHub marketplace and start designing without cloning, building, creating a virtual environment, or editing MCP configuration files.

  • Codex: codex plugin marketplace add Avinash1286/KiCAD-MCP-Server-THEAVI, then install KiCad PCB Designer from /plugins.

  • Claude Code: /plugin marketplace add Avinash1286/KiCAD-MCP-Server-THEAVI, then /plugin install kicad@kicad-mcp.

KiCad 9+ and Node.js 20+ are local prerequisites. The first launch automatically creates a private Python runtime. See Plugin distribution and installation for the complete user and publisher workflow.

Overview

The Model Context Protocol is an open standard for connecting AI assistants to external tools and data sources. This implementation provides a standardized bridge between MCP clients and KiCad, enabling natural-language control of PCB design operations.

Key Capabilities:

  • 216 tools across 20 categories, plus 3 supplemental discovery tools

  • Structured tool results, cancellation propagation, annotations, and MRTR confirmation for destructive operations

  • 18 live resources and 18 reusable prompts

  • Complete schematic workflow with 27 tools and dynamic symbol loading (~10,000 symbols)

  • Freerouting autorouter integration (Java, Docker, or Podman)

  • Custom footprint and symbol creation tools

  • JLCPCB parts integration with 2.5M+ component catalog and local library search

  • Datasheet enrichment via LCSC

  • MCP 2026-07-28 discovery, deterministic cacheable catalogs, and legacy 2025 client compatibility

  • Cross-platform support (Linux, Windows, macOS)

  • Real-time KiCAD UI integration via IPC API (experimental)

  • Comprehensive error handling and logging

Try out Arduino MCP - now you can get Claude to help in the IDE, real time!:

https://github.com/mixelpixx/arduino-ide

What's New in v2.7.1

Independent repository release

  • Updated repository, marketplace, clone, and support metadata for publication from Avinash1286/KiCAD-MCP-Server-THEAVI.

  • Preserved upstream author and contributor attribution under the MIT License while enabling independent package and GitHub releases.

What's New in v2.7.0

MCP 2026-07-28 migration

  • Migrated the server to the MCP TypeScript SDK v2, Node.js 20+, and Zod 4.

  • Added modern stateless protocol negotiation while retaining legacy 2025 client compatibility.

  • Added structured tool results, output schemas, safety annotations, cacheable discovery, cancellation propagation, and confirmation for destructive operations.

  • Reconciled the complete TypeScript/Python command catalog and now exposes 219 first-class tools.

  • Added an installable Codex/Claude plugin and a private, hash-locked Python runtime for zero-clone installation from npm.

What's New in v2.6.0

A session-killing bug is fixed

Deleting anything from a board — a component, a trace, a board outline — worked exactly once. The next operation, even a pure read, failed with a SwigPyObject error, and only close_project then open_project recovered. BOARD.Remove() hands C++ ownership to Python, so dropping the reference ran a destructor on an object KiCad still pointed at, corrupting SWIG state process-wide. Six call sites were affected; all now use BOARD.Delete().

10 new tools

  • Vendor PCB import: import_pcb converts PADS, Altium, Eagle, CADSTAR, Fabmaster, P-CAD, SolidWorks PCB and binary Cadence Allegro .brd files via KiCad 10's native importer.

  • Hierarchical schematics: remove_hierarchical_sheet, set_sheet_property, get_sheet_properties, and hierarchical_place for arranging footprints by schematic hierarchy.

  • Schematic lint and repair: lint_offgrid finds and safely snaps off-grid geometry that silently breaks junction placement; repair_flat_symbols fixes SnapEDA/SamacSys symbols that crash kicad-skip; lint_schematic_cosmetic tidies pin names and label orientation.

  • Board origins: set_board_origin / get_board_origin.

Your .kicad_pro net classes stop disappearing

Board saves no longer let pcbnew serialize a stale in-memory project model over your hand-edited net classes and netclass_patterns. Opening a project no longer rewrites the file at all.

Breaking: schematic tools fail loudly on an unparseable sheet

Tools that used to return partial or empty results now return a structured schematic_load_failed error naming the offending symbols. Silently skipping a broken sheet produced an incomplete pad-to-net map reported as success, which is worse. repair_flat_symbols fixes the usual cause. See KNOWN_ISSUES.md section 7.

Full details in the CHANGELOG.

What's New in v2.5.0

20 new board-lifecycle and geometry tools

  • Lifecycle: open_board, reload_board, save_board, save_as, is_dirty, discard_or_reload, create_board_from_schematic.

  • Graphics editing: clear_board_outline, replace_board_outline, list_graphics, delete_graphic, update_graphic, move_footprint_text.

  • Geometry queries: batch_move_components, get_component_geometry, get_pads, get_net_pads, get_ratsnest, estimate_airwire_lengths, check_placement_clearance.

All of them respect backend session pinning, so a board saved while KiCad's GUI owns the session routes to the GUI rather than writing a stale in-memory copy — including the awkward case where save_as changes the board's identity mid-session.

Formatting is normalized and enforced

  • pre-commit run --all-files (black, isort, prettier, flake8, mypy, eslint) is now a real CI gate, which is what CONTRIBUTING has always claimed.

  • npm run lint used to run black in write mode against whatever black was on PATH, silently reformatting your working tree with a version that disagreed with CI. It now checks only; npm run format:py is the write path.

  • The README's tool count is pinned to the registry by a test, so it self-corrects instead of drifting.

Full details in the CHANGELOG.

What's New in v2.4.1

Three tools that were registered but had no backend now work

  • assign_net_to_class, check_clearance and set_layer_constraints each had a full schema and a router entry but no dispatch handler, so every call returned Unknown command. Found by a documentation-coverage audit.

  • Per-layer constraints are written to a project-scoped .kicad_dru custom-rules file, which kicad-cli pcb drc and the GUI both pick up — there is no pcbnew API for them.

Silent failures removed

  • autoroute was abandoned by the Node bridge at 30 s while Freerouting was still running, reporting failure against a valid .ses that existed on disk. Its timeout now derives from the timeout and attempts you pass.

  • get_board_2d_view omitted --layers entirely when no layers were given, and KiCad 9+ then refuses the export — producing no file at all.

  • create_zone raised AttributeError on every call over the IPC backend.

New part-sourcing tools

  • search_parts_registry / get_registry_part / download_registry_part reuse a verified existing footprint or symbol instead of generating one. Downloads are host-allowlisted, extension-checked and size-capped.

  • get_jlcpcb_part returns live stock and tiered pricing when JLCPCB Open Platform credentials are configured, falling back to the local snapshot.

CI now actually runs the test suite

  • The Python job had been a no-op in four independent ways, and Actions was disabled repo-wide — 32 failed runs and 0 successes across the project's whole history. All 1551 Python and 63 TypeScript tests now gate every push.

Full details in the CHANGELOG.

What's New in v2.4.0

Symbol library management

  • import_symbol / export_symbol / rename_symbol copy a symbol between .kicad_sym libraries, extract one to a standalone file, and rename a symbol including its sub-symbol shards and any (extends ...) references from derived symbols in the same library.

  • add_symbol_property and add_library_symbol_property set custom BOM fields (Manufacturer, MPN, LCSC, ...) on a library symbol or on a schematic's cached definition.

  • update_symbol_from_library refreshes cached lib_symbols definitions across one schematic, a list, or every project under a directory — the programmatic equivalent of KiCad's Update Symbol from Library.

  • replace_instance_lib_ids swaps lib_id references per an explicit old-to-new mapping, for migrating a schematic between libraries.

Faster symbol discovery

  • Library directories, resolved paths, extracted symbol blocks, and parsed symbol lists are now cached process-wide instead of being rebuilt for every component add. Staleness guards revalidate paths and track source mtime_ns, and the mutating write paths clear the caches explicitly.

Fixes that restore basic operation

  • Every .kicad_sym and schematic write raised TypeError on Python 3.9, the project's declared floor — Path.write_text did not accept newline until 3.10.

  • JLCPCB part search could not find hyphenated MPNs.

  • Eagle import wrote a KiCad 9 schematic header; it now writes the KiCad 10 header, verified against real kicad-cli 10.0.

  • Component placement snaps to the 1.27 mm grid, import_ses no longer creates phantom slashless nets, and export_dsn/autoroute keep .kicad_pro net classes.

Full details in the CHANGELOG.

What's New in v2.3.1

Eagle schematic import

  • import_eagle_project converts Eagle .sch XML designs to KiCad format with symbol mapping, net wires, multi-gate parts, dangling-wire pruning, and ground-truth ERC reporting via kicad-cli.

3D model tools and interactive reload

  • add_component_3d_model attaches STEP/WRL models to footprints.

  • Opt-in KICAD_INTERACTIVE_SCHEMATIC=1 auto-confirms KiCad's reload dialog on Windows after schematic writes.

Scaffolding cluster complete

  • New projects start blank (no _TEMPLATE_* symbols leaked into user files).

  • .kicad_pro files match what KiCad itself writes.

  • Format version 20260101 ensures all KiCad 10.0.x builds can open generated schematics.

KiCad 10 compatibility

  • Derived symbols in .kicad_symdir libraries resolve their parent from sibling shards.

  • Unified install discovery finds relocated Windows installs via registry.

  • User env-var placeholders from kicad_common.json are resolved in library paths.

  • Phantom cross-unit pin reports in get_wire_connections are eliminated.

Full details in the CHANGELOG.

What's New in v2.3.0

Schematic corruption on KiCad 10 — both mechanisms fixed

  • Complete instance blocks: placed components now carry the real project name, root-sheet uuid path, per-pin uuid entries (ERC can bind wires to pins), and the full KiCad 10 field set — verified byte-equivalent to what eeschema itself writes. Previously, dragging or editing a placed symbol could crash KiCad.

  • Canonical multi-line writes: schematic tools no longer minify the whole file onto one line. Tool writes now match eeschema's "Save" byte-for-byte, with a self-check on every write that can never corrupt data. Already- minified files are repairable with scripts/kicad_sch_reformat.py.

Your edits are protected

  • Backend session pinning: a loaded project stays on one backend (SWIG or IPC) for its whole lifecycle — saves can no longer silently route to a stale GUI board and lose your edits.

  • External-edit guard: save_project refuses to overwrite a board file whose contents changed on disk since load (pass force: true to override).

  • close_project (new tool): release the project so files can be edited directly, then reopen — no more restart choreography.

Works on a stock Windows install

  • kicad-cli and 7-Zip are resolved from their install locations even when not on PATH — un-breaking exports, ERC/DRC, netlists, board views, and the JLCPCB database download, each with actionable errors when truly missing.

New layout tools

  • suggest_placement: connectivity-driven PCB placement optimizer (dry-run by default, deterministic).

  • suggest_schematic_declutter: re-orients overlapping net labels without touching connectivity.

Plus KiCad 10 compatibility fixes (sheet renames, sharded .kicad_symdir libraries, IPC Box2 board size), correct pin geometry for rotated+mirrored and multi-unit symbols, bounded IPC connects with SWIG fallback, and a real Vitest suite for the TypeScript layer. Full details in the CHANGELOG.

What's New in v2.2.3

New Tools: FFC/Ribbon Cable Passthrough Workflow

A complete workflow for designing passthrough adapter boards (e.g. Raspberry Pi CSI cable adapters) is now supported:

  1. connect_passthrough — wires all pins of one connector to the matching pins of another in the schematic (J1 pin N → J2 pin N, auto-named nets).

  2. sync_schematic_to_board — imports the net assignments into the PCB.

  3. route_pad_to_pad — routes each connection with automatic via insertion when pads are on opposite copper layers.

  4. snapshot_project — saves a named checkpoint into <project>/snapshots/.

Bug Fixes (KiCAD 9 / Windows)

  • Via insertion for B.Cu footprints — route_pad_to_pad now correctly detects when a footprint is on B.Cu and inserts the required via. (KiCAD 9 SWIG returned F.Cu for all SMD pads regardless of layer — fixed.)

  • Board outline rounded corners — add_board_outline now correctly applies cornerRadius when shape="rounded_rectangle".

  • B.Cu placement hang — placing a footprint on B.Cu no longer causes a ~30s freeze in KiCAD 9.

Developer Mode

Set KICAD_MCP_DEV=1 in your Claude Desktop MCP environment to automatically save the MCP session log into the project's logs/ folder on every export_gerber and snapshot_project call. Useful for debugging and for attaching to GitHub issues.

"env": {
  "KICAD_MCP_DEV": "1"
}

Privacy warning: The session log contains your full tool call history (including file paths and design details). Review or delete logs/ before sharing a project directory publicly.

See CHANGELOG for the full list of changes in this release.


What's New in v2.1.0

Critical Schematic Workflow Fix + Complete Wiring System (Issue #26)

The schematic workflow was completely broken in previous versions - this is now fixed AND dramatically enhanced!

What was broken:

  • create_project only created PCB files, no schematics

  • add_schematic_component called non-existent API methods

  • Schematics couldn't be created or edited at all

  • Only 13 component types available (severe limitation)

  • No working wire/connection functionality

Complete Implementation (3 Phases):

Phase 1: Component Placement Foundation

  • create_project now creates both .kicad_pcb and .kicad_sch files

  • Added pre-configured template schematics with 13 common component types

  • Rewrote component placement to use proper clone() API

Phase 2: Dynamic Symbol Loading (BREAKTHROUGH!)

  • Access to ALL ~10,000 KiCad symbols from standard libraries

  • Automatic detection and dynamic loading from .kicad_sym library files

  • Zero configuration required - just specify library and symbol name

  • Seamless integration with existing MCP tools

  • Full S-expression parsing and injection system

Phase 3: Intelligent Wiring System (NEW in v2.1.0)

  • Automatic pin location discovery with rotation support (0°, 90°, 180°, 270°)

  • Smart wire routing (direct, orthogonal horizontal-first, orthogonal vertical-first)

  • Power symbol support (VCC, GND, +3V3, +5V, etc.)

  • Wire graph analysis - geometric tracing for net connectivity

  • Net label management (local, global, hierarchical labels)

  • Netlist generation with accurate component/pin connections

Technical Architecture: The kicad-skip library cannot create symbols or wires from scratch. We implemented a comprehensive solution:

  1. Static Templates: 13 pre-configured symbols (R, C, L, LED, etc.) for instant use

  2. Dynamic Loading: On-demand injection of ANY symbol from KiCad libraries:

    • Parse .kicad_sym library files using S-expression parser

    • Inject symbol definition into schematic's lib_symbols section

    • Create offscreen template instance

    • Reload schematic so kicad-skip sees new template

    • Clone template to create actual component

  3. Wire Creation: S-expression-based wire injection (bypasses kicad-skip API limitations)

  4. Pin Discovery: Parse symbol definitions, apply rotation transformations, calculate absolute positions

  5. Connectivity Analysis: Geometric wire tracing to build net connection graphs

Example - Complete Circuit Creation:

# Load power symbols dynamically
loader.load_symbol_dynamically(sch_path, "power", "VCC")

# Place components with auto-rotation
ComponentManager.add_component(sch, {
    "type": "STM32F103C8Tx",
    "library": "MCU_ST_STM32F1",
    "reference": "U1",
    "x": 100, "y": 100, "rotation": 0
})

# Connect with intelligent routing
ConnectionManager.add_connection(sch_path, "U1", "1", "R1", "2", routing="orthogonal_h")

# Connect to power nets
ConnectionManager.connect_to_net(sch_path, "U1", "VDD", "VCC")

# Analyze connectivity
connections = ConnectionManager.get_net_connections(sch, "VCC", sch_path)
# Returns: [{"component": "U1", "pin": "VDD"}, {"component": "R1", "pin": "1"}]

Test Results:

  • Component placement: 100% passing

  • Dynamic symbol loading: 10,000+ symbols accessible

  • Wire creation: 100% passing (8/8 connections in test circuit)

  • Pin discovery: Rotation-aware, sub-millimeter accuracy

  • Net connectivity: 100% accurate (VCC: 2 connections, GND: 4 connections)

  • Netlist generation: Working with accurate pin-level connections

See Schematic Tools Reference for the complete schematic tool documentation, and the Headless Authoring Guide for field-tested practice driving these tools without the KiCad GUI.

IPC Backend (Experimental)

We are currently implementing and testing the KiCAD 9.0 IPC API for real-time UI synchronization:

  • Changes made via MCP tools appear immediately in the KiCAD UI

  • No manual reload required when IPC is active

  • Hybrid backend: uses IPC when available, falls back to SWIG API

  • IPC runtime reconnect: if MCP has fallen back to SWIG, IPC-capable board tools retry IPC after KiCAD launches instead of staying on SWIG for the entire session

  • 20+ commands now support IPC including routing, component placement, and zone operations

Note: IPC features are under active development and testing. Enable IPC in KiCAD via Preferences > Plugins > Enable IPC API Server.

For OpenCode on Windows, the backend can be configured as auto, ipc, or swig during setup. See OpenCode (Windows) for the configuration command and backend options.

Tool Discovery

All 216 KiCad capabilities are first-class MCP tools with published input and output schemas. Three additional, backend-free tools provide a convenient catalog without inventing a second execution path:

  • list_tool_categories - Browse all 20 capability categories

  • get_category_tools - View the tools in one category

  • search_tools - Search names and descriptions by keyword

The catalog is populated by the same registrations used for tools/list, so it cannot drift from the callable tool set. Clients may call every returned tool directly by name.

NEEDS TESTING - REPORT ISSUES

JLCPCB Parts Integration (New!)

Complete integration with JLCPCB's parts catalog, providing two complementary approaches for component selection:

Dual-Mode Architecture:

  1. Local Symbol Libraries - Search JLCPCB libraries installed via KiCAD Plugin and Content Manager (contributed by @l3wi)

  2. JLCPCB API Integration - Access the complete 2.5M+ parts catalog with real-time pricing and stock data

Key Features:

  • Real-time pricing with quantity breaks (1+, 10+, 100+, 1000+)

  • Stock availability checking

  • Basic vs Extended library type identification (Basic = free assembly)

  • Intelligent cost optimization with alternative part suggestions

  • Package-to-footprint mapping for KiCAD compatibility

  • Parametric search by category, package, manufacturer

  • Local SQLite database for fast offline searching

  • No API credentials required for local library search

Why this matters: JLCPCB offers PCB assembly services where Basic parts have no assembly fee, while Extended parts charge $3 per unique component. This integration helps you find the cheapest components with the best availability, potentially saving hundreds of dollars on assembly costs for production runs.

See JLCPCB Usage Guide for detailed setup and usage instructions.

Comprehensive Tool Schemas

Every tool now includes complete JSON Schema definitions with:

  • Detailed parameter descriptions and constraints

  • Input validation with type checking

  • Required vs. optional parameter specifications

  • Enumerated values for categorical inputs

  • Clear documentation of what each tool does

Resources Capability

The server publishes 18 read-only resources and templates for project, board, component, footprint, and symbol state. Stable examples include:

  • kicad://project/info, kicad://project/properties, kicad://project/status

  • kicad://board/info, kicad://board/layers, kicad://board/statistics

  • kicad://components and kicad://components/placement

  • kicad://board/extents{?unit} and kicad://board/2d-view{?format,width,height,layers}

  • kicad://component/{reference}/details and /connections

  • library, footprint, and symbol lookup templates

Backend failures are returned as MCP errors rather than successful error documents.

Protocol Compliance

  • TypeScript MCP SDK v2 (@modelcontextprotocol/server)

  • Native MCP 2026-07-28 stateless requests and optional server/discover

  • Legacy 2025 initialization compatibility on the same stdio entrypoint

  • Deterministic catalogs with ttlMs and cacheScope hints

  • Structured tool results, error signaling, cancellation, and MRTR confirmations

Available Tools

The server publishes 219 first-class tools: 216 KiCad capabilities in 20 functional categories and 3 supplemental catalog tools. The list below highlights common operations; use list_tool_categories, get_category_tools, or search_tools for the live authoritative catalog.

For the complete category inventory, see Tool Inventory. Every listed tool is directly callable through MCP.

Project Management (6 tools)

  • create_project - Initialize new KiCAD projects

  • open_project - Load existing project files

  • close_project - Release the active project and its backend state

  • save_project - Save current project state

  • get_project_info - Retrieve project metadata

  • snapshot_project - Save named checkpoint snapshot

Board Operations (12 tools)

  • set_board_size - Configure PCB dimensions

  • add_board_outline - Create board edge (rectangle, circle, polygon, rounded rectangle)

  • add_layer - Add custom layers to stack

  • set_active_layer - Switch working layer

  • get_layer_list - List all board layers

  • get_board_info - Retrieve board properties

  • get_board_2d_view - Generate board preview image

  • get_board_extents - Get board bounding box

  • add_mounting_hole - Place mounting holes

  • add_board_text - Add text annotations

  • add_zone - Add copper zone/pour with clearance settings

  • import_svg_logo - Import SVG file as PCB silkscreen polygons

Component Management (16 tools)

  • place_component - Place single component with footprint

  • move_component - Reposition existing component

  • rotate_component - Rotate component by angle

  • delete_component - Remove component from board

  • edit_component - Modify component properties

  • find_component - Search by reference or value

  • get_component_properties - Query component details

  • set_footprint_type - Change through-hole/SMD footprint type

  • get_component_pads - Get all pad information

  • get_component_list - List all placed components

  • get_pad_position - Get precise pad position

  • place_component_array - Create component grids/patterns

  • align_components - Align multiple components

  • check_courtyard_overlaps - Detect footprint courtyard collisions

  • suggest_placement - Generate a deterministic placement suggestion

  • duplicate_component - Copy existing component

Routing (16 tools)

  • add_net - Create electrical net

  • route_trace - Route copper traces between XY points

  • route_arc_trace - Route an arc-shaped trace

  • route_pad_to_pad - Route between pads with auto-via insertion

  • add_via - Place vias for layer transitions

  • delete_trace - Remove traces (by UUID, position, or net)

  • query_traces - Query/filter traces

  • query_zones - Query/filter copper zones

  • add_gnd_stitching_vias - Place ground stitching vias

  • get_nets_list - List all nets with statistics

  • modify_trace - Change trace width, layer, or net

  • create_netclass - Define net class with rules

  • add_copper_pour - Create copper zones/pours

  • route_differential_pair - Route differential signals

  • refill_zones - Refill all copper zones

  • copy_routing_pattern - Replicate routing between component groups

Schematic (43 tools)

Complete schematic workflow with dynamic symbol loading (~10,000 symbols) and intelligent wiring.

Component Operations:

  • add_schematic_component - Place symbols from any KiCad library

  • delete_schematic_component - Remove component

  • edit_schematic_component - Edit footprint, value, reference, label positions, and arbitrary custom properties (MPN, Manufacturer, DigiKey_PN, LCSC, Voltage, Tolerance, Dielectric, …) in one batched call

  • set_schematic_component_property - Add or update a single custom property (BOM/sourcing field) on a component

  • remove_schematic_component_property - Delete a single custom property from a component

  • get_schematic_component - Inspect every field on a component (built-in + custom) including label positions

  • list_schematic_components - List all components

  • move_schematic_component - Reposition component

  • rotate_schematic_component - Rotate component

  • annotate_schematic - Auto-assign reference designators

Wiring and Connections:

  • add_schematic_wire - Create wire between points

  • delete_schematic_wire - Remove wire segment

  • batch_connect / batch_add_and_connect - Connect multiple pins in one operation

  • add_schematic_net_label - Add net labels (VCC, GND, signals)

  • delete_schematic_net_label - Remove net label

  • connect_to_net - Connect pin to named net

  • connect_passthrough - Wire all matching pins between connectors (FFC/ribbon)

  • get_schematic_pin_locations - Get pin locations for component

Analysis and Export:

  • get_net_connections - Trace net connectivity

  • list_schematic_nets / list_schematic_wires / list_schematic_labels

  • create_schematic - Create new schematic file

  • get_schematic_view - Rasterized schematic preview

  • export_schematic_svg / export_schematic_pdf

  • run_erc - Electrical rule check

  • generate_netlist - Generate netlist from schematic

  • sync_schematic_to_board - Import nets/pads to PCB (F8 equivalent)

See Schematic Tools Reference for details and examples.

Design Rules / DRC (selected examples)

  • set_design_rules / get_design_rules - Configure and inspect rules

  • run_drc - Execute design rule check

  • get_drc_violations - Get violation list by severity

  • add_net_class / create_netclass - Net class management (compatibility and canonical names)

  • assign_net_to_class - Assign a net to a configured class

  • set_layer_constraints / check_clearance - Layer and clearance rules

Export (27 tools; selected examples)

  • export_gerber - Gerber fabrication files

  • export_pdf / export_svg - Documentation and vector graphics

  • export_3d - 3D models (STEP, STL, VRML, OBJ)

  • export_bom - Bill of materials (CSV, XML, HTML, JSON)

  • export_netlist - Netlist (KiCad, Spice, Cadstar, OrcadPCB2)

  • export_position_file - Component positions for pick and place

  • export_vrml - VRML 3D model

Footprint Libraries (4 tools) and Symbol Libraries (4 tools)

  • list_libraries / list_symbol_libraries - Browse available libraries

  • search_footprints / search_symbols - Search across all libraries

  • list_library_footprints / list_library_symbols - Browse specific library

  • get_footprint_info / get_symbol_info - Detailed information

Footprint Creator (4 tools) and Symbol Creator (4 tools)

Create custom components when existing libraries do not have what you need.

  • create_footprint / create_symbol - Build from scratch with pads/pins

  • edit_footprint_pad - Modify pad properties

  • register_footprint_library / register_symbol_library - Register in lib-table

  • list_footprint_libraries / list_symbols_in_library - Browse custom libraries

  • delete_symbol - Remove symbol from library

See Footprint and Symbol Creator Guide for details.

Datasheet Tools (2 tools)

  • enrich_datasheets - Auto-populate datasheet URLs using LCSC part numbers

  • get_datasheet_url - Get LCSC datasheet URL for a component

JLCPCB Integration (5 tools)

  • download_jlcpcb_database - Download 2.5M+ parts catalog (one-time setup)

  • search_jlcpcb_parts - Search with parametric filters

  • get_jlcpcb_part - Detailed part info with pricing

  • get_jlcpcb_database_stats - Database statistics

  • suggest_jlcpcb_alternatives - Find cheaper or in-stock alternatives

Freerouting Autorouter (4 tools)

  • autoroute - Run Freerouting autorouter (DSN export, route, SES import)

  • export_dsn / import_ses - Manual Specctra DSN/SES workflow

  • check_freerouting - Verify Java and Freerouting availability

See Freerouting Guide for setup and usage.

UI Management (3 tools)

  • get_backend_state - Inspect the active KiCad backend

  • check_kicad_ui - Check if KiCAD is running

  • launch_kicad_ui - Launch KiCAD application

Prerequisites

Required Software

KiCAD 9.0 or higher

  • Download from kicad.org/download

  • Must include Python module (pcbnew)

  • Verify installation:

    python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"

Node.js 20 or Higher

  • Download from nodejs.org

  • Verify: node --version and npm --version

Python 3.9 or Higher

  • Comes bundled with KiCAD (macOS builds ship Python 3.9; Linux/Windows builds ship Python 3.11)

  • Required packages (auto-installed):

    • kicad-python (kipy) >= 0.5.0 (IPC API support, optional but recommended)

    • kicad-skip >= 0.1.0 (schematic support)

    • Pillow >= 9.0.0 (image processing)

    • cairosvg >= 2.7.0 (SVG rendering)

    • colorlog >= 6.7.0 (logging)

    • pydantic >= 2.5.0 (validation)

    • requests >= 2.32.5 (HTTP client)

    • python-dotenv >= 1.0.0 (environment)

MCP Client Choose one:

Supported Platforms

  • Linux (Ubuntu 22.04+, Fedora, Arch) - Primary platform, fully tested

  • Windows 10/11 - Fully supported with automated setup

  • macOS - Experimental support

Installation

Linux (Ubuntu/Debian)

# Install KiCAD 9.0 or higher
sudo add-apt-repository --yes ppa:kicad/kicad-9.0-releases
sudo apt-get update
sudo apt-get install -y kicad kicad-libraries

# Install Node.js 20+ using your distribution package manager or the
# instructions at https://nodejs.org/en/download, then verify the version
node --version

# Clone and build
git clone https://github.com/Avinash1286/KiCAD-MCP-Server-THEAVI.git
cd KiCAD-MCP-Server-THEAVI
npm ci
npm run build
node dist/cli.js setup

# Verify
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"

Windows 10/11

Automated Setup (Recommended):

git clone https://github.com/Avinash1286/KiCAD-MCP-Server-THEAVI.git
cd KiCAD-MCP-Server-THEAVI
.\setup-windows.ps1

The script will:

  • Detect KiCAD installations, including both machine-wide installs under C:\Program Files\KiCad and per-user installs under %LOCALAPPDATA%\Programs\KiCad

  • Verify prerequisites

  • Install dependencies

  • Build project

  • Generate configuration

  • Run diagnostics

Manual Setup: See Windows Troubleshooting for detailed setup and diagnostics.

macOS

Important: On macOS, let the setup command create a private runtime that can access KiCAD's bundled pcbnew module. Do not install packages into KiCAD's bundled Python.

Manual Setup

# Install KiCAD 9.0 from kicad.org/download/macos

# Install Node.js
brew install node@20

# Clone repository
git clone https://github.com/Avinash1286/KiCAD-MCP-Server-THEAVI.git
cd KiCAD-MCP-Server-THEAVI

# Install the locked Node.js tree and build the private-runtime CLI
npm ci
npm run build

# Create the private, hash-locked Python runtime
KICAD_PYTHON=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 \
  node dist/cli.js setup

The setup command creates and maintains the isolated runtime under the user's KiCAD MCP data directory while retaining read-only access to KiCAD's pcbnew module.

Automated Setup

To simplify configuration with Claude Desktop, this repository provides a macOS setup script:

./setup-macos.sh

In case of error zsh: permission denied: ./setup-macos.sh you can either:

  • always allow the script to be executed by running: chmod +x setup-macos.sh.

  • alternatively explicitly run it with bash: bash setup-macos.sh so no chmod change needed.

This script does not replace the manual setup above — it assumes dependencies are already installed and the project is built. Instead, it automates:

  • detection of your environment (Node.js, KiCad Python, pcbnew)

  • resolving the correct macOS PYTHONPATH

  • generating the correct Claude Desktop MCP configuration

  • safely merging the configuration into your existing Claude config

  • optionally writing the configuration with backup support

Basic Usage
Verify setup (no changes)
./setup-macos.sh --verify
Preview configuration (dry run)
./setup-macos.sh --dry-run
Apply configuration
./setup-macos.sh --apply

After applying, restart Claude Desktop.

Parameters
Required parameters

None. The script works out-of-the-box using sensible defaults.

Optional parameters
--name NAME

Specify the MCP server name in Claude Desktop.

Default:

kicad

Example:

./setup-macos.sh --apply --name kicad-dev

Use this when:

  • running multiple MCP configurations

  • testing forks or development versions

  • avoiding overwriting an existing setup

--claude-config PATH

Specify a custom Claude Desktop configuration file.

Default:

~/Library/Application Support/Claude/claude_desktop_config.json

Example:

./setup-macos.sh --dry-run --claude-config ~/tmp/claude_config.json

Use this when:

  • testing configurations safely

  • using non-standard config locations

  • debugging without modifying your main setup

--yes

Skip confirmation prompt when applying changes.

Example:

./setup-macos.sh --apply --yes
After Setup
  1. Fully quit Claude Desktop

  2. Reopen Claude Desktop

  3. Open a new chat

  4. Click + → Connectors

  5. Verify the server appears (e.g. kicad or your custom name)

Test with prompt in Claude Desktop:

Use the kicad MCP server to run check_kicad_ui.
Notes
  • The script only modifies the mcpServers section and leaves all other configuration untouched

  • Existing configurations are automatically backed up before changes

  • macOS support relies on KiCad’s bundled Python; system Python will not work correctly

  • If KiCad is updated or moved, re-run the script to refresh paths


Configuration

Claude Desktop

Edit configuration file:

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Configuration:

{
  "mcpServers": {
    "kicad": {
      "command": "node",
      "args": ["/path/to/KiCAD-MCP-Server-THEAVI/dist/cli.js", "serve"],
      "env": {
        "PYTHONPATH": "/path/to/kicad/python",
        "LOG_LEVEL": "info"
      }
    }
  }
}

Platform-specific PYTHONPATH:

  • Linux: /usr/lib/kicad/lib/python3/dist-packages

  • Windows: C:\Program Files\KiCad\10.0\lib\python3\dist-packages or %LOCALAPPDATA%\Programs\KiCad\10.0\lib\python3\dist-packages

  • macOS: /Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages

Linux Python Detection

The server automatically detects Python on Linux in this priority order:

  1. KICAD_PYTHON env var - Explicit user or packaged-launcher override (highest priority)

  2. Virtual environment - venv/bin/python or .venv/bin/python

  3. KiCad bundled Python - /usr/lib/kicad/bin/python3, /usr/local/lib/kicad/bin/python3, /opt/kicad/bin/python3

  4. System Python via which - Resolves which python3 to absolute path (e.g., /usr/bin/python3)

  5. Common system paths - /usr/bin/python3, /bin/python3

For most standard Linux installations (Ubuntu, Debian, Fedora, Arch), no KICAD_PYTHON configuration is needed - the server will automatically find your Python installation.

Troubleshooting:

If you see "Python executable not found: python3", you can manually specify the Python path:

{
  "mcpServers": {
    "kicad": {
      "command": "node",
      "args": ["/path/to/KiCAD-MCP-Server-THEAVI/dist/cli.js", "serve"],
      "env": {
        "KICAD_PYTHON": "/usr/bin/python3",
        "PYTHONPATH": "/usr/lib/kicad/lib/python3/dist-packages"
      }
    }
  }
}

To find your Python path:

which python3  # Example output: /usr/bin/python3
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"  # Verify pcbnew access

GitHub Copilot (VS Code)

Copy the template to your workspace:

cp config/vscode-mcp.example.json .vscode/mcp.json

VS Code will auto-detect .vscode/mcp.json and register the server. The template uses ${workspaceFolder} so no path editing is needed.

Note: .vscode/mcp.json is listed in .gitignore — your local configuration won't be committed.

Cline (VSCode)

Edit: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Use the same configuration format as Claude Desktop above.

Claude Code

Claude Code automatically detects MCP servers in the current directory. No additional configuration needed.

OpenCode (Windows)

OpenCode uses a different MCP configuration schema than Claude Desktop. Use setup-windows-opencode.ps1 to verify the local setup and write the correct OpenCode mcp entry.

OpenCode project configuration is written to opencode.json in the target project root. The script keeps the KiCAD MCP server repository separate from the target project:

  • McpServerPath is this repository, where dist/cli.js is built

  • ProjectPath is the project that should receive opencode.json

When this is useful:

  • You use OpenCode as your MCP client on Windows

  • You want a project-local MCP server available only in one project

  • You want a global OpenCode MCP server available from any workspace

  • You need to verify KiCAD Python (pcbnew), Node.js, and dist/cli.js before changing OpenCode configuration

Backend selection

The setup script supports three KiCAD backend preferences via -Backend:

  • auto - try IPC first and fall back to SWIG if IPC is unavailable (default)

  • ipc - require KiCAD IPC for real-time UI synchronization

  • swig - use the file-based pcbnew backend

Examples:

.\setup-windows-opencode.ps1 -Apply -Scope project -Backend auto
.\setup-windows-opencode.ps1 -Apply -Scope project -Backend ipc
.\setup-windows-opencode.ps1 -Apply -Scope project -Backend swig

For -Backend ipc, KiCAD must be running with the IPC API server enabled.

Verify setup without changes

Use this first when diagnosing installation or path problems. It detects KiCAD, tests pcbnew, checks Node.js, and verifies the built MCP entrypoint.

.\setup-windows-opencode.ps1 -Verify -SkipInstall -SkipBuild

Preview OpenCode configuration

Use dry run mode when you want to inspect the exact JSON before writing it.

.\setup-windows-opencode.ps1 -DryRun -SkipInstall -SkipBuild

Example generated OpenCode shape:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "kicad": {
      "type": "local",
      "command": ["node", "C:\\path\\to\\KiCAD-MCP-Server-THEAVI\\dist\\cli.js", "serve"],
      "environment": {
        "NODE_ENV": "production",
        "LOG_LEVEL": "info",
        "KICAD_AUTO_LAUNCH": "false",
        "KICAD_MCP_DEV": "0",
        "KICAD_BACKEND": "auto",
        "PYTHONPATH": "C:\\Program Files\\KiCad\\10.0\\bin\\Lib\\site-packages"
      },
      "enabled": true,
      "timeout": 3900000
    }
  }
}

A copyable template is also provided at config/opencode.json. Replace the placeholder paths before using it directly.

Apply project-local configuration

Use this when you only want KiCAD MCP enabled for one project. The script writes opencode.json in the target project root and backs up an existing file before changing it.

.\setup-windows-opencode.ps1 -Apply -Scope project

By default, ProjectPath is the current working directory.

To configure another project, pass -ProjectPath:

.\setup-windows-opencode.ps1 -Apply -Scope project -ProjectPath "C:\path\to\your-project"

If the setup script is not located in the KiCAD MCP Server repository, pass -McpServerPath so the generated config points to the correct dist/cli.js serve entrypoint:

.\setup-windows-opencode.ps1 `
  -Apply `
  -Scope project `
  -ProjectPath "C:\path\to\your-project" `
  -McpServerPath "C:\path\to\KiCAD-MCP-Server-THEAVI"

Apply global OpenCode configuration

Use this when you want the KiCAD MCP server available from any OpenCode workspace. The script writes %USERPROFILE%\.config\opencode\opencode.json.

.\setup-windows-opencode.ps1 -Apply -Scope global

Use a custom MCP server name

Use this when testing multiple forks or keeping separate development and stable KiCAD MCP entries.

.\setup-windows-opencode.ps1 -Apply -Scope project -Name kicad-dev

Use a custom KiCAD installation path

Use this when KiCAD is installed outside the standard Windows locations.

.\setup-windows-opencode.ps1 -Apply -Scope project -KiCadRoot "D:\Apps\KiCad\10.0"

Skip install or build steps

Use these flags when dependencies are already installed or the project is already built.

.\setup-windows-opencode.ps1 -Apply -Scope project -SkipInstall -SkipBuild

After applying configuration

  1. Fully quit OpenCode.

  2. Start OpenCode again so it reloads opencode.json.

  3. Ask OpenCode to use the kicad MCP server and run check_kicad_ui.

Disable the OpenCode MCP server

To disable the server without removing the full configuration, set the entry to enabled: false and restart OpenCode.

{
  "mcp": {
    "kicad": {
      "enabled": false
    }
  }
}

If OpenCode is running, the MCP server process is managed by OpenCode and normally stops when OpenCode exits.

JLCPCB Integration Setup (Optional)

The JLCPCB integration provides two modes that can be used independently or together:

Mode 1: JLCSearch Public API (Recommended - No Setup Required)

The easiest way to access JLCPCB's parts catalog:

  • No API credentials needed

  • No JLCPCB account required

  • Access to 2.5M+ parts with pricing and stock data

  • Download time: 40-60 minutes for full catalog (100-part batches due to API limit)

To download the database:

Ask Claude: "Download the JLCPCB parts database"

This creates a local SQLite database at data/jlcpcb_parts.db (3-5 GB for full 2.5M+ part catalog).

Mode 2: Local Symbol Libraries (No Setup Required)

Install JLCPCB libraries via KiCAD's Plugin and Content Manager:

  1. Open KiCAD

  2. Go to Tools > Plugin and Content Manager

  3. Search for "JLCPCB" or "JLC"

  4. Install libraries like JLCPCB-KiCAD-Library or EDA_MCP

  5. Use search_symbols to find components with pre-configured footprints and LCSC IDs

Mode 3: Official JLCPCB API (Advanced - Requires Enterprise Account)

For users with JLCPCB enterprise accounts and order history:

  1. Get API Credentials

    • Log in to JLCPCB

    • Navigate to Account > API Management (requires enterprise approval)

    • Create API credentials and save the app ID, access key, and secret key

    • Note: This requires prior order history and enterprise account approval

  2. Configure Environment Variables

    Add to your shell profile (~/.bashrc, ~/.zshrc, or ~/.profile):

    export JLCPCB_APP_ID="your_app_id_here"
    export JLCPCB_API_KEY="your_access_key_here"
    export JLCPCB_API_SECRET="your_secret_key_here"

    Set the same three values in the MCP launcher's env configuration when it does not inherit your shell profile. The server does not automatically load project-root .env files.

See JLCPCB Usage Guide for detailed documentation.

Usage Examples

Basic PCB Design Workflow

Create a new KiCAD project named 'LEDBoard' in my Documents folder.
Set the board size to 50mm x 50mm and add a rectangular outline.
Place a mounting hole at each corner, 3mm from the edges, with 3mm diameter.
Add text 'LED Controller v1.0' on the front silkscreen at position x=25mm, y=45mm.

Component Placement

Place an LED at x=10mm, y=10mm using footprint LED_SMD:LED_0805_2012Metric.
Create a grid of 4 resistors (R1-R4) starting at x=20mm, y=20mm with 5mm spacing.
Align all resistors horizontally and distribute them evenly.

Routing

Create a net named 'LED1' and route a 0.3mm trace from R1 pad 2 to LED1 anode.
Add a copper pour for GND on the bottom layer covering the entire board.
Create a differential pair for USB_P and USB_N with 0.2mm width and 0.15mm gap.

Autoroute with Freerouting

Automatically route all unconnected nets using the Freerouting autorouter.

Setup (one-time):

# 1. Download the Freerouting JAR
mkdir -p ~/.kicad-mcp
curl -L -o ~/.kicad-mcp/freerouting.jar \
  https://github.com/freerouting/freerouting/releases/download/v2.0.1/freerouting-2.0.1-executable.jar

# 2. Runtime — pick ONE:
#    Option A: Docker (recommended, no Java install needed)
docker pull eclipse-temurin:21-jre

#    Option B: Install Java 21+ locally
#    (Ubuntu/Debian) sudo apt install openjdk-21-jre

The autorouter auto-detects which runtime is available (Java 21+ direct, or Docker/Podman fallback).

Check if Freerouting is ready on my system.
Autoroute the current board using Freerouting with a 5-minute timeout.

Step-by-step workflow:

1. Open the project at ~/Projects/LEDBoard/LEDBoard.kicad_pcb
2. Check Freerouting dependencies are installed
3. Run autoroute with max 10 passes
4. Run DRC to verify the autorouted result
5. Export Gerbers to the fabrication folder

Manual DSN/SES workflow (for advanced users or external autorouters):

Export the board to Specctra DSN format.
# ... run Freerouting GUI or another autorouter externally ...
Import the routed SES file from ~/Projects/LEDBoard/LEDBoard.ses

Design Verification

Set design rules with 0.15mm clearance and 0.2mm minimum track width.
Run a design rule check and show me any violations.
Export Gerber files to the 'fabrication' folder.

Using Resources

Resources provide read-only access to project state:

Show me the current component list.
What are the current design rules?
Display the board preview.
List all electrical nets.

JLCPCB Component Selection

Finding Components with Local Libraries:

Search for ESP32 modules in JLCPCB libraries.
Find a 10k resistor in 0603 package from installed libraries.
Show me details for LCSC part C2934196.

Optimizing Costs with JLCPCB API:

Search for 10k ohm resistors in 0603 package, only Basic parts.
Find the cheapest capacitor 10uF 25V in 0805 package with good stock.
Show me pricing and stock for JLCPCB part C25804.
Suggest cheaper alternatives to C25804.

Complete Design Workflow:

I'm designing a board with an ESP32 and need to select components for JLCPCB assembly.
Search JLCPCB for ESP32-C3 modules.
Find Basic parts for: 10k resistor 0603, 100nF capacitor 0603, LED 0805.
For each component, show me the cheapest option with good stock availability.
Place these components on my board using the suggested footprints.

Database Management:

Download the JLCPCB parts database (first time setup).
Show me JLCPCB database statistics.
How many Basic parts are available?

Architecture

MCP Protocol Layer

  • Transport: Local stdio with SDK-managed JSON-RPC framing

  • Protocol: MCP 2026-07-28 stateless core plus legacy 2025 initialization compatibility

  • Capabilities: 219 tools, 18 resources/templates, and 18 prompts

  • Discovery: Deterministic tools/list plus 3 supplemental catalog tools

  • Results: Structured output, standard MCP errors, cancellation propagation, cache hints, and MRTR confirmations

TypeScript Server (src/)

  • Uses @modelcontextprotocol/server v2 and serveStdio() for protocol-era negotiation

  • Manages Python subprocess readiness, bounded restart, request correlation, timeout, and cancellation

  • Registers Zod 4 input/output schemas, resources, prompts, annotations, and structured results

  • Builds src/tools/registry.ts from the same first-class tool registrations used by MCP

  • Provides src/tools/router.ts only for catalog browsing and search; it is not a second execution layer

Python Interface (python/)

  • kicad_interface.py: Private newline-JSON command worker used only by the TypeScript MCP server

  • kicad_api/: Backend implementations

    • base.py - Abstract base classes for backends

    • ipc_backend.py - KiCAD 9.0 IPC API backend (real-time UI sync)

    • swig_backend.py - pcbnew SWIG API backend (file-based operations)

    • factory.py - Backend auto-detection and instantiation

  • schemas/tool_schemas.py: Legacy/internal Python validation schemas (not the MCP catalog)

  • commands/: Modular command implementations

    • project.py - Project operations

    • board.py - Board manipulation

    • component.py - Component placement

    • routing.py - Trace routing and nets

    • design_rules.py - DRC operations

    • export.py - File generation

    • schematic.py - Schematic design

    • library.py - Footprint libraries

    • library_symbol.py - Symbol library search (local JLCPCB libraries)

    • jlcpcb.py - JLCPCB API client

    • jlcpcb_parts.py - JLCPCB parts database manager

KiCAD Integration

  • pcbnew API (SWIG): Direct Python bindings to KiCAD for file operations

  • IPC API (kipy): Real-time communication with running KiCAD instance (experimental)

  • Hybrid Backend: Automatically uses IPC when available, falls back to SWIG

  • kicad-skip: Schematic file manipulation

  • Platform Detection: Cross-platform path handling

  • UI Management: Automatic KiCAD UI launch/detection

Development

Building from Source

# Install the locked Node.js dependency tree
npm ci

# Build TypeScript
npm run build

# Create the private runtime from requirements-lock.txt
node dist/cli.js setup

# Optional: install hash-locked Python development tools in a separate venv
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --require-hashes -r requirements-dev-lock.txt

# Watch mode for development
npm run dev

Running Tests

# TypeScript tests
npm run test:ts

# Python tests
npm run test:py

# All tests with coverage
npm run test:coverage

Linting and Formatting

# Lint TypeScript and Python
npm run lint

# Format code
npm run format

Troubleshooting

Server Not Appearing in Client

Symptoms: MCP server doesn't show up in Claude Desktop or Cline

Solutions:

  1. Verify build completed: ls dist/cli.js

  2. Check configuration paths are absolute

  3. Restart MCP client completely

  4. Check client logs for error messages

Python Module Import Errors

Symptoms: ModuleNotFoundError: No module named 'pcbnew'

Solutions:

  1. Verify KiCAD installation: python3 -c "import pcbnew"

  2. Check PYTHONPATH in configuration matches your KiCAD installation

  3. Ensure KiCAD was installed with Python support

Tool Execution Failures

Symptoms: Tools fail with unclear errors

Solutions:

  1. Check the current server log: ~/.kicad-mcp/logs/kicad-mcp-YYYY-MM-DD.log

  2. Verify a project is loaded before running board operations

  3. Ensure file paths are absolute, not relative

  4. Check tool parameter types match schema requirements

Windows-Specific Issues

Symptoms: Server fails to start on Windows

Solutions:

  1. Run automated diagnostics: .\setup-windows.ps1

  2. Verify Python path uses double backslashes: C:\\Program Files\\KiCad\\10.0

  3. Check Windows Event Viewer for Node.js errors

  4. See Windows Troubleshooting Guide

Getting Help

  1. Check the GitHub Issues

  2. Review the current server log: ~/.kicad-mcp/logs/kicad-mcp-YYYY-MM-DD.log

  3. Open a new issue with:

    • Operating system and version

    • KiCAD version (python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())")

    • Node.js version (node --version)

    • Full error message and stack trace

    • Relevant log excerpts

Project Status

Current Version: 2.7.1

See STATUS_SUMMARY.md for the complete status matrix and CHANGELOG.md for detailed release notes.

Working Features (216 KiCad tools + 3 discovery tools):

  • Project management with snapshot checkpointing

  • Complete board design (outline, layers, zones, mounting holes, text, SVG logos)

  • Component placement with arrays, alignment, and duplication

  • Advanced routing (pad-to-pad with auto-via, differential pairs, pattern copying)

  • Complete schematic workflow with dynamic symbol loading (~10,000 symbols)

  • Intelligent wiring system with pin discovery and smart routing

  • FFC/ribbon cable passthrough workflow

  • Schematic-to-board synchronization

  • Design rule checking (DRC and ERC)

  • Export to Gerber, PDF, SVG, 3D, BOM, netlist, position file

  • Custom footprint and symbol creation

  • JLCPCB parts integration (2.5M+ parts catalog)

  • Datasheet enrichment via LCSC

  • Freerouting autorouter integration (Java, Docker, Podman)

  • UI auto-launch and management

  • MCP 2026-07-28 support with legacy 2025 client compatibility

IPC Backend (Experimental):

  • Real-time UI synchronization via the KiCAD IPC API

  • 21 IPC-enabled commands with automatic SWIG fallback

  • Hybrid footprint loading (SWIG for library access, IPC for placement)

Developer Mode: Set KICAD_MCP_DEV=1 to capture MCP session logs for debugging. See CHANGELOG v2.2.3 for details.

Logging (~/.kicad-mcp/logs/): Logs default to INFO and the file is size-capped so it can't grow without bound. Tune via the MCP server's environment:

Variable

Default

Purpose

LOG_LEVEL / KICAD_MCP_LOG_LEVEL

info

Log verbosity (error/warn/info/debug, or off). KICAD_MCP_LOG_LEVEL wins.

KICAD_MCP_LOG_MAX_BYTES

10485760 (10 MB)

Max size per log file before it rotates; 0 disables rotation.

KICAD_MCP_LOG_BACKUP_COUNT

3

Number of rotated backups to keep.

KICAD_MCP_DEBUG_SKIP

unset

Set to 1 to re-enable the verbose kicad-skip parser DEBUG logs (muted by default).

See ROADMAP.md for planned features.

What Do You Want to See Next?

We are actively developing new features. Your feedback directly shapes development priorities.

Share your ideas:

  1. Open a feature request

  2. Join the discussion

  3. Star the repo if you find it useful

Contributing

Contributions are welcome! Please follow these guidelines:

  1. Report Bugs: Open an issue with reproduction steps

  2. Suggest Features: Describe use case and expected behavior

  3. Submit Pull Requests:

    • Fork the repository

    • Create a feature branch

    • Follow existing code style

    • Add tests for new functionality

    • Update documentation

    • Submit PR with clear description

See CONTRIBUTING.md for detailed guidelines.

License

This project is licensed under the MIT License. See LICENSE for details.

Acknowledgments

Community Contributors

  • @Kletternaut - Routing/component tools, footprint/symbol creators, passthrough workflow, template fixes (PRs #44, #48, #49, #51, #53, #57, #59)

  • @Mehanik - Schematic inspection/editing tools, component field positions (PRs #60, #66, #67)

  • @jflaflamme - Freerouting autorouter integration with Docker/Podman support (PR #68)

  • @l3wi - Local symbol library search, JLCPCB third-party library support (PR #25)

  • @gwall-ceres - MCP protocol compliance, Windows compatibility (PR #10)

  • @fariouche - Bug fixes (PR #17)

  • @shuofengzhang - XDG relative path handling (PR #58)

  • @sid115 - Windows setup script improvements (PR #13)

  • @pasrom - MCP server bug fixes (PR #50)

Citation

If you use this project in your research or publication, please cite:

@software{kicad_mcp_server,
  title = {KiCAD MCP Server: AI-Assisted PCB Design},
  author = {mixelpixx},
  year = {2025},
  url = {https://github.com/Avinash1286/KiCAD-MCP-Server-THEAVI},
  version = {2.7.1}
}

Available Tools

219 tools
add_board_outlineAdd Board OutlineA
Destructive

Draw the PCB board outline (Edge.Cuts layer) as a rectangle, rounded rectangle, circle or polygon.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeYesShape of the outline
paramsYesParameters for the outline shape

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, so the safety profile is known. The description adds that it operates on the Edge.Cuts layer but does not disclose behavioral details such as whether it appends to or replaces an existing outline. No contradiction with annotations, but the added context is minimal.

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, efficient sentence that immediately conveys the core action and supported shape types. It contains no redundant or filler content.

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?

This tool has moderate complexity with nested parameters and multiple shape variants. The description is minimally adequate given the schema's completeness, but it lacks context about prerequisites (e.g., board must be open) and how it relates to sibling outline tools (clear_board_outline, replace_board_outline). The output schema exists but is not shown, so return values are not a concern.

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?

The input schema provides 100% coverage of all parameters with individual descriptions. The description adds no parameter-specific meaning beyond listing the shape names, so the baseline of 3 is appropriate.

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 uses a specific verb ('Draw') and clearly identifies the resource ('PCB board outline' on the 'Edge.Cuts layer') and enumerates supported shapes (rectangle, rounded rectangle, circle, polygon). This distinguishes it from related tools like clear_board_outline and replace_board_outline.

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 guidance is provided on when to use this tool versus alternatives. It does not mention whether an existing outline is replaced, cleared, or whether the board must be open. The description merely states the action without any contextual or exclusionary cues.

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

add_board_textAdd Board TextA
Destructive

Add a text label to a PCB layer (e.g. silkscreen, fab, courtyard).

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYesText size
textYesText content
layerYesLayer to place the text on
styleNoText style
positionYesPosition of the text
rotationNoRotation angle in degrees
thicknessNoLine thickness

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already include destructiveHint: true and readOnlyHint: false, so the mutating nature is known. The description adds no extra behavioral details like side effects, board requirements, or error conditions. It does not contradict 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?

The description is a single concise sentence (13 words) that front-loads the verb 'Add' and the resource, making it immediately understandable. No unnecessary 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?

With an output schema and well-documented parameters, the description is adequate for the tool's complexity. It conveys the core action and target clearly, though it lacks explicit prerequisites (e.g., requiring an open board) or behavioral caveats, which are minor for a simple add operation.

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

Parameters3/5

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

Schema coverage is 100%, with all 7 parameters described in the schema. The description itself does not add extra parameter semantics beyond the schema, so the baseline score of 3 is appropriate.

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 clearly states the tool's purpose: 'Add a text label to a PCB layer' with examples (silkscreen, fab, courtyard). This distinguishes it from similar tools like add_schematic_text, which targets schematics, and other board-adding 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?

The description provides context by specifying PCB layers, making it clear the tool is for board text, not schematic text. However, it does not explicitly mention alternatives or exclusions, such as 'use add_schematic_text for schematic text', so it lacks explicit guidance.

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

add_component_3d_modelAdd Component 3d ModelA
Destructive

Attach a 3D model to one or more PLACED footprints on the open board, live via the KiCAD IPC API (changes appear instantly, no file conflicts). Use this for components already on the PCB; for a library .kicad_mod use add_footprint_3d_model.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoModel scale factor (default 1,1,1)
offsetNoModel offset in mm (default 0,0,0)
rotateNoModel rotation in degrees (default 0,0,0)
replaceNoReplace an existing model with the same filename (default true)
modelPathYesPath to the 3D model, e.g. ${KIPRJMOD}/MyProj.3dshapes/MyPart.step
referenceYesFootprint reference(s), e.g. 'D1', ['D1','D2'], or '*' for all footprints

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Given annotations already declare destructiveHint=true and readOnlyHint=false, the description adds useful context: 'live via the KiCAD IPC API (changes appear instantly, no file conflicts).' It also specifies the target must be 'PLACED footprints,' which is critical behavioral information not present in annotations. It does not contradict 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?

The description is only two sentences, with the primary action and scope in the first sentence, and usage guidance in the second. No filler or redundancy; every sentence 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 a rich schema and output schema present, the description provides the essential context: what the tool does, when to use it, and how it behaves (live updates, no file conflicts). It also mentions the open-board context, which is important for statefulness. Nothing meaningful is missing.

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

Parameters3/5

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

Schema coverage is 100%, with every parameter (scale, offset, rotate, replace, modelPath, reference) having a clear description. The tool description itself does not add parameter-level detail beyond the schema, so the baseline 3 applies. It reinforces that reference can be '*', but this is already in the schema.

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 uses a specific verb 'Attach' and identifies the resource: '3D model to one or more PLACED footprints on the open board.' It distinguishes from sibling tool by stating 'for a library .kicad_mod use add_footprint_3d_model.' This clearly defines its scope and differentiates it from the library-focused sibling.

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?

Explicitly states when to use: 'Use this for components already on the PCB' and provides the alternative: 'for a library .kicad_mod use add_footprint_3d_model.' This directly guides the agent on tool selection versus a closely related tool.

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

add_copper_pourAdd Copper PourB
Destructive

Add a copper pour (ground/power plane) to the PCB

ParametersJSON Schema
NameRequiredDescriptionDefault
netYesNet name
layerYesPCB layer
outlineNoArray of {x, y} points defining the pour boundary. If omitted, the board outline is used.
clearanceNoClearance in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The annotations indicate destructiveHint=true, but the description adds no behavioral context beyond that. It does not explain what destructive effects might occur, such as potential removal of existing copper or the need to refill zones. The description simply states the action without disclosing side effects.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the action and provides a clarifying parenthetical. It is appropriately sized with no wasted words.

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?

The description provides a clear basic purpose, and the schema and output schema fill in parameter and return details. However, it lacks usage context, such as when to use versus 'add_zone' or whether refilling is required, making it only minimally viable for a moderately complex PCB operation.

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?

The schema covers 100% of parameters with descriptions (net, layer, outline, clearance), so the description adds no additional parameter semantics beyond what is already in the schema. Baseline 3 is appropriate because the schema does the heavy lifting.

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 clearly states the action ('Add') and the resource ('copper pour') and clarifies it as a ground/power plane. It is specific and unambiguous, but it does not explicitly distinguish from the sibling tool 'add_zone', which could be seen as overlapping, so it misses the top score.

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 usage guidance is provided. The description does not mention when to use this tool over alternatives like 'add_zone', nor does it indicate prerequisites, follow-up steps, or situations where this tool is appropriate.

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

add_footprint_3d_modelAdd Footprint 3d ModelA
Destructive

Attach (or replace) a 3D model — .step/.stp/.wrl — to a .kicad_mod footprint file. KiCAD path variables like ${KIPRJMOD} or ${KICAD10_3DMODEL_DIR} are supported. Use this after create_footprint so the part shows up in the 3D viewer (Alt+3).

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoModel scale factor (default 1,1,1)
offsetNoModel offset in mm (default 0,0,0)
rotateNoModel rotation in degrees (default 0,0,0)
replaceNoReplace an existing model with the same filename (default true)
modelPathYesPath to the 3D model file. Prefer ${KIPRJMOD}/MyProj.3dshapes/MyPart.step for portability.
footprintPathYesFull path to the .kicad_mod file, e.g. C:/MyLib.pretty/MyPart.kicad_mod

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as destructive (destructiveHint: true). The description adds behavioral context by stating it can "replace" an existing model and by noting support for KiCAD path variables. It does not contradict annotations. It is transparent about the mutation and adds useful detail beyond the annotation flags.

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 three sentences, front-loaded with the core action, and contains no filler. Every sentence adds value: what it does, supported path variables, and when to use it. Excellent conciseness.

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 moderately complex tool with nested objects and an output schema, the description covers the essential context: purpose, timing (after create_footprint), and impact (3D viewer). It does not repeat parameter details (schema covers those), making it functionally complete for typical usage. Slight gap: no mention of what happens if the file or model is missing, but that is covered by the schema and annotations reasonably well.

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

Parameters3/5

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

Schema description coverage is 100%, with all properties documented. The description reinforces the path variable behavior already mentioned in modelPath's schema, but adds minimal new semantics. Baseline 3 is appropriate since the schema does the heavy lifting.

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 clearly states the tool's action: "Attach (or replace) a 3D model — .step/.stp/.wrl — to a .kicad_mod footprint file." This is a specific verb+resource combination. It does not explicitly distinguish from sibling tools like import_3d_model or add_component_3d_model, but the target (a footprint file) is uniquely identified, giving strong clarity.

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?

Provides clear context: "Use this after create_footprint so the part shows up in the 3D viewer (Alt+3)." This gives a sequencing guideline and expected outcome. It does not mention exclusions or alternatives, so it stops short of a 5.

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

add_gnd_stitching_viasAdd Gnd Stitching ViasA
Destructive

Drop GND stitching vias across the board with collision checking against every non-GND segment, via, and pad on every copper layer (PTH vias penetrate the full stackup, so missing any one layer is the classic silent-short failure mode). Three combinable strategies: grid (regular grid across the interior), around_refs (densify around named ICs), and in_zones (only place vias inside an actual GND copper zone). Supports dryRun to preview placements without writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoIf true, return the placements that would be made but don't modify the board (default false).
gndNetNoName of the ground net (default: auto-detect GND / GROUND / VSS / /GND).
maxViasNoCap on total placements across all strategies (default unlimited).
spacingNoGrid spacing in mm for `grid` and `around_refs` strategies (default 5.0).
viaSizeNoVia pad diameter in mm (default 0.6).
viaDrillNoVia drill diameter in mm (default 0.3). Must be smaller than viaSize.
clearanceNoExtra clearance beyond required between each new via and existing copper, in mm (default 0.2).
edgeMarginNoKeep-out from the board edge in mm (default 0.5).
strategiesNoWhich placement strategies to combine (default: ['grid']). Pass ['grid', 'around_refs', 'in_zones'] for full coverage.
densifyRefsNoReference designators to densify ground around (used by `around_refs`). Targets: MCUs, switching regulators, RF parts.
densifyRadiusNoHow many grid cells around each ref to try (default 2 = 5x5 candidate field per ref).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations (which already mark it destructive) by explaining the collision-checking details, the PTH full-stackup penetration rationale, and the dryRun preview capability. It adds substantial behavioral context without contradicting 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?

The description is two sentences, compact and dense with value. It front-loads the core purpose, then adds strategy and safety details without any wasted words.

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 tool is complex (11 params, three strategies, collision checking), but the description covers the critical behavioral risks, strategy selection, and dryRun option. With a full input schema and an output schema present, it is sufficiently complete for an agent to understand the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 11 parameters. The description adds minimal parameter-level detail beyond what the schema already provides, mainly mentioning strategy names and dryRun, which are also in the schema.

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 'Drop GND stitching vias across the board', which is a specific verb+resource. It clearly distinguishes itself from single-via tools like add_via by describing multi-via stitching and strategies. The collision-checking emphasis reinforces its unique role.

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?

The description gives clear context about when to use it (stitching vias) and describes three combinable strategies and a dryRun mode, but it does not explicitly contrast with alternatives like add_via or state when not to use it. This is clear context without exclusions.

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

add_hierarchical_sheetAdd Hierarchical SheetA
Destructive

Insert a hierarchical-sheet reference block into a parent schematic, pointing at an existing sub-sheet file. Adds the sheet box, name/file fields, a sheet_instances path entry on the next page number, and fixes sub-sheet component instance paths so ERC resolves references.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoSheet box size in mm (default 80x50)
positionNoTop-left of the sheet box in mm (default 50,50)
sheetNameNoDisplay name for the sheetSheet
subsheetPathYesPath to the existing sub-sheet .kicad_sch to reference
schematicPathYesPath to the parent .kicad_sch

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations indicate destructive and non-idempotent behavior. The description adds significant context about what gets modified: 'Adds the sheet box, name/file fields, a sheet_instances path entry on the next page number, and fixes sub-sheet component instance paths'. This goes beyond annotations and clarifies the side effects.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and every clause adds value. No redundant or filler content.

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?

Given the output schema, annotations, and schema descriptions, the description provides a strong overview of the tool's behavior and side effects. Minor gap: it doesn't explicitly mention potential failure modes or prerequisites beyond 'existing sub-sheet file', but overall it is complete for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, and the description does not add new parameter-level semantics beyond the schema. It references 'sub-sheet file' and 'name/file fields', which map to existing schema descriptions but add no extra meaning. Baseline 3 is appropriate.

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 clearly states the tool's purpose: 'Insert a hierarchical-sheet reference block into a parent schematic' with specific additional actions listed. It distinguishes from siblings like create_hierarchical_subsheet by specifying 'pointing at an existing sub-sheet file'.

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?

The description implies when to use the tool: when referencing an existing sub-sheet file and needing to fix instance paths for ERC. It provides clear context but does not explicitly name alternatives or exclusions, so it falls short of a 5.

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

add_layerAdd LayerA
Destructive

Add a new copper or technical layer to the PCB stackup.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLayer name
typeYesLayer type
numberNoLayer number (for inner layers)
positionYesLayer position

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds no further behavioral context, such as effects on existing layers, ordering constraints, or reversibility, but it doesn't contradict the annotations. Since annotations carry the safety profile, the minimal description is acceptable though not enriched.

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 sentence that leads with the action verb 'Add' and directly states the object and destination. Every word earns its place, with no filler or repetition. It is optimally sized for a tool with this level of complexity.

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?

Given there are 4 parameters with enums and an output schema, the description is adequate but incomplete. It does not explain the relationship between layer type (copper/technical/user/signal) and position (top/bottom/inner), nor when the optional 'number' parameter is needed. Since the output schema exists, return values are not an issue, but the tool could benefit from more guidance on parameter selection.

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

Parameters3/5

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

Schema description coverage is 100% with per-parameter descriptions in the input schema, so the baseline is 3. The description adds minimal semantic value by mentioning 'copper or technical' layer types, but it partially screens out 'user' and 'signal' enums. No additional parameter guidance is provided beyond what the schema already states.

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

Purpose4/5

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

The description clearly states the action ('Add a new copper or technical layer') and the target ('PCB stackup'), distinguishing it from siblings like set_active_layer or get_layer_list. However, it omits the 'user' and 'signal' layer types that are allowed in the schema, making the stated scope slightly narrower than actual capability.

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 the PCB stackup' implies the tool is used for adding layers to the board, but it does not explicitly state when to use this tool versus alternatives, such as set_active_layer or get_layer_list. There is no mention of when not to use it or any preconditions like board state requirements.

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

add_library_symbol_propertyAdd Library Symbol PropertyA
Destructive

Add or update a custom property (Manufacturer, MPN, LCSC, etc.) on a symbol definition in the lib_symbols section. This makes the property available to all instances of that symbol in the schematic.

ParametersJSON Schema
NameRequiredDescriptionDefault
hideNoHide the property (default false)
positionNoPosition {x, y} in mm (default: 0, 0)
symbolNameYesSymbol name (e.g. R, C, GND)
libraryNameYesSymbol library nickname (e.g. Device, power)
propertyNameYesProperty name (e.g. Manufacturer, MPN)
propertyValueYesProperty value
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as destructive, and the description adds meaningful behavioral context: the property propagates to all instances, and the tool can update existing properties. It doesn't mention overwrite behavior explicitly but goes beyond mere annotation repetition.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and context, no filler. Every word contributes to understanding the tool's purpose and effect.

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 7 parameters and a nested object, the description covers the key contextual point (library-level effect on all instances) and is backed by an output schema. It omits edge cases like missing symbols or library requirements, but remains adequate for typical use.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented. The description provides useful examples of property names but does not add deeper semantics for positional or boolean parameters. It meets the baseline for high schema coverage.

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 ('Add or update'), a resource ('custom property on a symbol definition in the lib_symbols section'), and the scope ('available to all instances'). It clearly distinguishes from sibling tools like add_symbol_property by focusing on library-level definitions.

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?

The context is clear: this tool operates on the symbol definition, not on schematic instances. It implies the use case for library-wide property changes. However, it does not explicitly name alternatives or say when not to use it, so it falls short of a 5.

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

add_mounting_holeAdd Mounting HoleA
Destructive

Place a mounting hole (NPTH or PTH) at the specified position on the PCB.

ParametersJSON Schema
NameRequiredDescriptionDefault
diameterYesDiameter of the hole
positionYesPosition of the mounting hole
padDiameterNoOptional diameter of the pad around the hole

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate destructive behavior (destructiveHint=true), and the description adds context by noting that it creates NPTH or PTH holes. However, it does not disclose other behavioral traits such as whether the operation is irreversible or what happens to existing board geometry. The description is consistent with the annotations, and the additional context about hole type provides some value beyond the structured data.

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 one concise sentence, directly front-loaded with the action and resource. It contains no redundancy or irrelevant information, making it easy to parse and understand quickly.

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?

Given the tool's simplicity and the fact that the output schema and annotations are available, the description is adequate to convey the core functionality. It covers the essential purpose and hole type. However, it could be slightly more explicit about the board modification aspect (though this is implied by the annotations) and might mention the optional padDiameter parameter for completeness, but this is a minor gap.

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?

The input schema has 100% coverage with descriptions for all parameters (position, diameter, padDiameter). The description adds no new parameter semantics; it merely references 'specified position' but does not elaborate on units, relationships, or defaults. Since the schema already fully documents the parameters, the baseline of 3 is appropriate.

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 uses a specific verb ('Place') and clearly identifies the resource ('mounting hole') and its purpose ('on the PCB'). It also distinguishes the tool from sibling placement tools like add_via by specifying that it creates NPTH or PTH mounting holes.

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 description implies the tool should be used when a mounting hole needs to be placed on the PCB, but it does not explicitly state when to use it versus alternatives (e.g., add_via for vias). No exclusions or alternative tool recommendations are provided, though the tool's specific function makes the usage context clear.

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

add_netAdd NetB
Destructive

Create a new net on the PCB

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNet name
netClassNoNet class name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already disclose destructiveHint=true and readOnly=false, but the description adds no detail about what destructive side effects might occur, such as overwriting an existing net with the same name or requiring a board to be editable. The word 'create' slightly conflicts with the destructive hint, but no explicit contradiction exists.

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, front-loaded sentence with no wasted words. It efficiently communicates the core function.

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 tool with only two parameters and an output schema present, the description is minimally viable. However, the destructiveHint annotation suggests that the tool might behave unexpectedly (e.g., on duplicate net names), and the description does not address this, leaving a contextual gap.

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?

The input schema covers 100% of parameters with descriptions ('Net name' and 'Net class name'), so a baseline of 3 applies. The description does not add any additional parameter context beyond the schema.

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 clearly states the action ('create') and the resource ('a new net on the PCB'). It is distinctly different from sibling tools like 'add_net_class' or 'create_netclass', which deal with net classes rather than nets.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, typical workflows, or compare with similar tools such as 'add_net_class' or 'assign_net_to_class'.

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

add_net_classAdd Net ClassB
Destructive

Create a named net class with specific clearance, track-width, via, and differential-pair rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the net class
viaDrillYesVia drill size for this net class (mm)
clearanceYesClearance for this net class (mm)
trackWidthYesTrack width for this net class (mm)
uvia_drillNoMicro via drill size for this net class (mm)
viaDiameterYesVia diameter for this net class (mm)
diff_pair_gapNoDifferential pair gap for this net class (mm)
uvia_diameterNoMicro via diameter for this net class (mm)
diff_pair_widthNoDifferential pair width for this net class (mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

The description adds no behavioral context beyond the annotations. It doesn't address potential side effects such as overwriting existing net classes or how the tool interacts with current routing. Given annotations already flag destructiveHint=true, the lack of additional disclosure is a gap.

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 concise sentence that directly communicates the core functionality without unnecessary detail. It is front-loaded and free of filler.

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?

The description is minimal, relying heavily on schema and annotations. It doesn't explain important nuances like name conflicts, interaction with 'create_netclass', or whether any parameters are interdependent. Given the tool's complexity (9 params) and destructive hint, a bit more context would help.

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?

The input schema already includes descriptions for all 9 parameters (100% coverage). The description's mention of 'clearance, track-width, via, and differential-pair rules' maps to schema fields but doesn't add new meaning or clarify relationships between parameters.

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 clearly states the tool's function with a specific verb ('Create') and object ('named net class'), listing key parameters such as clearance, track-width, via, and differential-pair rules. However, it does not distinguish this tool from the sibling 'create_netclass', which likely serves a similar purpose.

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 guidance is provided on when to use this tool versus alternatives like 'create_netclass' or 'assign_net_to_class'. The description simply states the action without contextualizing its use cases.

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

add_no_connectAdd No ConnectA
Destructive

Add a no-connect flag (X marker) to a pin that is intentionally left unconnected. This suppresses ERC 'Pin not connected' errors for unused pins. PREFERRED: supply componentRef + pinNumber to snap to the exact pin endpoint. Alternatively supply position [x, y] in mm matching the pin endpoint exactly.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNoPosition [x, y] in mm. Required when componentRef/pinNumber are not given.
pinNumberNoPin number or name on componentRef (e.g. '1', 'GND'). Use with componentRef.
componentRefNoComponent reference to snap to (e.g. U1, R1). Use with pinNumber.
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint: true and readOnlyHint: false, so the description's safety burden is lower. It adds useful context about requiring the position to match the pin endpoint exactly and mentions ERC suppression, but it does not disclose side effects like overwriting existing flags or behavior on invalid input, leaving some opacity.

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 two sentences and front-loaded with the core purpose. The second sentence is slightly verbose with the capitalized 'PREFERRED' and repetition of 'exactly', but overall it is efficient and free of fluff.

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?

An output schema exists, so return values are covered elsewhere. The description adequately covers the two usage modes and the intended outcome (ERC suppression). It could mention error conditions or the batched alternative, but for a simple mutation tool it is sufficiently complete.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline 3. The description adds meaningful relationships between parameters, stating the preferred combination of componentRef + pinNumber and the alternative position, and emphasizes exact endpoint matching. This goes beyond the schema's individual field descriptions.

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 clearly states the tool adds a no-connect flag (X marker) to a pin, with a specific verb and resource, and explains it suppresses ERC 'Pin not connected' errors. This distinguishes it from other schematic editing tools, though it does not explicitly differentiate from the sibling batch_add_no_connects.

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 description gives clear guidance on how to specify the target pin (preferred componentRef + pinNumber, or alternative position) but does not mention when to choose this tool over batch_add_no_connects or any exclusion criteria. The context for use is implied (unused pins needing ERC suppression) but no alternatives are referenced.

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

add_schematic_componentAdd Schematic ComponentA
Destructive

Add a component to the schematic. Symbol format is 'Library:SymbolName' (e.g., 'Device:R', 'EDA-MCP:ESP32-C3')

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit number for multi-unit symbols (1=A, 2=B, 3=C, …). Defaults to 1.
angleNoRotation angle in degrees (KiCad CCW). 0=vertical resistor, 90=horizontal. Defaults to 0.
valueNoComponent value
symbolYesSymbol library:name reference (e.g., Device:R, EDA-MCP:ESP32-C3)
mirrorYNoMirror the symbol horizontally (flip left-right). Useful for transistors facing opposite direction.
positionNoPosition on schematic
footprintNoKiCAD footprint (e.g. Resistor_SMD:R_0603_1608Metric)
referenceYesComponent reference (e.g., R1, U1)
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate this is a mutating operation (readOnlyHint=false, destructiveHint=true). The description adds value by explaining the symbol format, but it does not disclose additional behavioral traits such as whether the schematic must be open, whether changes are saved immediately, or any side effects on existing components. No contradiction with 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?

The description is two concise sentences: the first states the primary action, the second provides a critical formatting rule with examples. No filler or redundant content.

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

Completeness3/5

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

With a well-covered schema and output schema present, the description is sufficient for a basic add operation. However, it lacks usage guidance and does not clarify potential ambiguity with sibling tools like 'batch_add_components' or 'place_component,' leaving some contextual gaps.

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

Parameters3/5

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

Schema coverage is 100%, with every parameter having a description. The tool description largely repeats the 'symbol' parameter format already in the schema, adding no new meaning beyond what the schema provides. Therefore, the baseline of 3 is appropriate.

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 clearly states a specific verb and resource: 'Add a component to the schematic.' This unambiguously distinguishes it from board-level tools like 'place_component' and from other schematic tools like 'add_schematic_wire.'

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 description implies usage (adding a component to a schematic) but does not explicitly state when to use this tool over alternatives, such as 'batch_add_components' for multiple components or 'place_component' for board placement. It offers no exclusions or alternative guidance.

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

add_schematic_hierarchical_labelAdd Schematic Hierarchical LabelA
Destructive

Add a hierarchical label (sheet interface port) to a sub-sheet schematic. Hierarchical labels are the connection points that link a sub-sheet to its parent via sheet pins. The label text must exactly match the corresponding sheet pin name.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesLabel text (e.g. 'SD_CLK') — must match the sheet pin name
shapeYesSignal direction from the sub-sheet's perspective
positionYesPosition [x, y] in mm
orientationNoRotation in degrees: 0=label points right, 180=label points left (default: 0)
schematicPathYesPath to the sub-sheet .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds valuable behavioral context beyond the annotations, notably the requirement that 'the label text must exactly match the corresponding sheet pin name' and the role of hierarchical labels in linking sub-sheets to parents. No contradiction with 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?

The description is two concise sentences that front-load the purpose and then provide essential context. Every sentence earns its place with no redundant or filler content.

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 mutation tool with a destructive hint, output schema, and fully documented parameters, the description covers the key conceptual point (hierarchical labels and the matching requirement). It might benefit from mentioning prerequisites like an existing hierarchy, but the existing schema and annotations fill many gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not provide additional parameter details beyond the schema; the only extra nuance is the exact-match requirement for 'text', but that is already present in the schema's description for the text 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 clearly identifies the tool's function: 'Add a hierarchical label (sheet interface port) to a sub-sheet schematic.' It explains what a hierarchical label is and how it connects to the parent via sheet pins, which differentiates it from sibling tools like add_schematic_net_label or add_sheet_pin.

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 usage context is implied by the description: it is for adding hierarchical labels to sub-sheet schematics. However, it does not explicitly state when to use this tool over alternatives (e.g., net labels) or mention any exclusions or prerequisites.

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

add_schematic_net_labelAdd Schematic Net LabelA
Destructive

Add a net label to the schematic. PREFERRED: supply componentRef + pinNumber to snap the label to the exact pin endpoint — this guarantees an electrical connection. Alternatively supply position [x, y], but the coordinates must match the pin endpoint exactly (even a 0.01 mm offset breaks the connection). The response includes actual_position (coordinates actually used) and snapped_to_pin (present when a pin reference was resolved).

ParametersJSON Schema
NameRequiredDescriptionDefault
netNameYesName of the net (e.g., VCC, GND, SIGNAL_1)
positionNoPosition [x, y] for the label. Required when componentRef/pinNumber are not given.
labelTypeNoLabel type (default: label)
pinNumberNoPin number or name on componentRef to snap label to (e.g. '1', 'GND'). Use with componentRef.
orientationNoRotation angle 0/90/180/270 (default: 0)
componentRefNoComponent reference to snap label to (e.g. U1, R1). Use with pinNumber.
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Even with annotations already marking destructiveHint=true and readOnlyHint=false, the description adds substantial behavioral context: the exact-pin snapping guarantee, the failure mode of even 0.01mm offsets, and what fields the response will include (actual_position, snapped_to_pin). This goes well beyond the annotation flags and helps the agent anticipate tool behavior accurately.

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 three sentences, each earning its place: action, preferred approach, alternative, and response detail. Key information is front-loaded and the formatting with PREFERRED is scannable. No wasted words.

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 7-parameter tool with complete schema descriptions and an output schema, the description covers the critical operational guidance needed to use the tool correctly: how to guarantee a connection, precision requirements, and response fields. It is fully sufficient for an agent to select and invoke this tool accurately.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful inter-parameter semantics: it explains how componentRef+pinNumber work together to snap the label, and that position must match the pin endpoint exactly. This clarifies relationships not evident from individual property descriptions, pushing above baseline.

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 clear action: 'Add a net label to the schematic.' This specific verb+resource distinguishes it from siblings like add_schematic_component or add_schematic_wire. It also clarifies the tool's role in creating electrical labels, reinforced by the preferred snapping behavior and connection guarantee.

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?

The description explicitly provides two usage paths: preferred componentRef+pinNumber and fallback position [x,y], with a clear warning about coordinate precision. It does not explicitly state when to use this tool instead of the sibling add_schematic_hierarchical_label, even though labelType supports hierarchical_label, leaving some ambiguity for that specific alternative.

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

add_schematic_textAdd Schematic TextA
Destructive

Add a free-form text annotation to the schematic. Use this to add notes, labels, section headings, or documentation strings directly on the schematic canvas. Unlike net labels, text annotations have no electrical significance.

ParametersJSON Schema
NameRequiredDescriptionDefault
boldNoBold text (default: false)
textYesText content to display
angleNoRotation angle in degrees (default: 0)
italicNoItalic text (default: false)
justifyNoHorizontal text justification (default: left)
fontSizeNoFont size in mm (default: 1.27)
positionYesPosition [x, y] in schematic mm coordinates
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The description adds the useful context that text annotations have no electrical significance, which is beyond the annotations (destructiveHint=true). It does not disclose file-saving requirements, reversibility, or side effects, but the destructive hint already signals mutation, so the additional context earns a mid-level score.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary action, followed by usage examples and a clear distinction from net labels. Every sentence adds value with no redundancy.

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

Completeness4/5

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

The description is sufficient for a tool with 8 parameters and an output schema. It provides the core purpose, usage guidance, and key distinction. It does not mention prerequisites like having a schematic open, but that is common to related tools and not a critical gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented. The description adds no additional parameter-level meaning, such as coordinate system or units, beyond what the schema provides. Baseline 3 is appropriate.

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?

Description clearly states the tool adds a free-form text annotation to the schematic, with a specific verb and resource. It distinguishes from net labels by noting text annotations have no electrical significance, which also differentiates it from the sibling tool add_schematic_net_label.

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 explicitly says 'Use this to add notes, labels, section headings, or documentation strings' and contrasts with net labels, implying when not to use it. However, it does not explicitly name an alternative tool or provide an exclusionary 'do not use for' scenario beyond the net label distinction.

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

add_schematic_wireAdd Schematic WireA
Destructive

Draws a wire on the schematic between two or more coordinate points. Always call get_schematic_pin_locations first to get the approximate pin coordinates, then pass them as the first and last waypoints. snapToPins (on by default) will correct any float imprecision by snapping endpoints to the exact nearest pin coordinate. To route around components, add intermediate waypoints between the start and end: e.g. [[x1,y1], [xMid,y1], [xMid,y2], [x2,y2]] routes horizontally then vertically. Intermediate waypoints are never snapped.

ParametersJSON Schema
NameRequiredDescriptionDefault
waypointsYesOrdered list of [x, y] coordinates. Minimum 2 points.
snapToPinsNoSnap the first and last waypoints to the nearest pin (default: true)
schematicPathYesPath to the .kicad_sch file
snapToleranceNoMaximum snap distance in mm (default: 1.0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already mark this as destructive (destructiveHint=true). The description adds valuable behavioral context beyond the annotations: snapToPins corrects float imprecision by snapping endpoints to exact pin coordinates, and intermediate waypoints are never snapped. This clarifies the tool's actual behavior. It doesn't discuss undoability or side effects, but the annotation covers the core destructive 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?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a mandatory prerequisite, then snapping behavior, a routing example, and a final clarification. Every sentence earns its place, and the structure is logical and easy to follow.

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 tool's moderate complexity (coordinate-based wiring with snapping nuances), the description covers all essential aspects: what it does, prerequisite steps, snapping behavior, intermediate waypoint handling, and a concrete example. With a present output schema and full parameter coverage, the description is complete for an agent to select and 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?

The schema provides 100% coverage for all four parameters. The description adds meaningful semantics beyond the schema: it explains how waypoints are interpreted (first/last snapped, intermediate not) and gives a routing example. It also names snapToPins default behavior and clarifies that it only affects endpoints. This adds real value to the parameter understanding.

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 clearly states the tool's function with a specific verb and resource: 'Draws a wire on the schematic between two or more coordinate points.' It also distinguishes itself from siblings like delete_schematic_wire and route_trace by specifying the schematic context and the coordinate-based approach.

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?

The description provides explicit usage guidance: 'Always call get_schematic_pin_locations first to get the approximate pin coordinates, then pass them as the first and last waypoints.' It also explains how to route around components with intermediate waypoints, giving a concrete example. This is clear, actionable guidance with no ambiguity.

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

add_sheet_pinAdd Sheet PinA
Destructive

Add a pin to a sheet symbol block on the parent schematic. Sheet pins are the parent-side connection points that correspond to hierarchical labels in the sub-sheet. The pinName must exactly match a hierarchical_label in the sub-sheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
pinNameYesPin name — must match a hierarchical_label in the sub-sheet
pinTypeYesSignal direction (should match the sub-sheet hierarchical label shape)
positionYesPin position [x, y] in mm — must be on the sheet block boundary
sheetNameYesSheet name as it appears in the Sheetname property (e.g. 'Storage')
orientationNoPin orientation: 0=right edge of sheet box, 180=left edge (default: 0)
schematicPathYesPath to the PARENT .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already flag this as destructive (destructiveHint=true) and not read-only, so the safety profile is known. The description adds the key constraint that pinName must exactly match a hierarchical_label in the sub-sheet, and explains what sheet pins are. However, it does not mention potential failure modes, whether existing pins are affected, or any side effects beyond adding a pin.

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 two sentences, front-loaded with the action ('Add a pin...') followed by a crisp explanation of sheet pins and the matching requirement. No filler or redundant content.

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?

The description covers the core operation and a critical constraint. With an output schema present, return values are handled there. It could mention prerequisites like having an existing sheet symbol, but the matching constraint implies the sub-sheet must exist, making this reasonably complete for a focused mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reiterates the pinName matching constraint (already in the schema) but adds no new parameter-level semantics. It provides useful context about the parent-side role of the pin, but this does not meaningfully extend what the schema already documents.

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 specific verb and resource: 'Add a pin to a sheet symbol block on the parent schematic.' It clearly distinguishes this from sibling tools like add_hierarchical_sheet (which adds the sheet itself) and add_schematic_hierarchical_label (which adds labels in the sub-sheet) by stating these are parent-side connection points.

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?

The description gives clear context: this is for parent schematic pins that correspond to sub-sheet hierarchical labels. It implies the workflow (must have a sub-sheet with matching labels) and does not explicitly name alternatives or exclusion criteria, but the context is sufficient for an agent to select this tool over related ones.

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

add_symbol_propertyAdd Symbol PropertyB
Destructive

Add or update a custom property (Manufacturer, MPN, LCSC, etc.) on a symbol in a .kicad_sym library file.

ParametersJSON Schema
NameRequiredDescriptionDefault
hideNoHide the property (default false)
positionNoPosition {x, y} in mm (default: 0, 0)
symbolNameYesSymbol name
libraryPathYesPath to the .kicad_sym file
propertyNameYesProperty name (e.g. Manufacturer, MPN)
propertyValueYesProperty value

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation aspect is covered. The description adds that it works on a .kicad_sym file and can 'update' existing properties, but it does not disclose whether an existing property is overwritten without warning or whether file modifications are permanent beyond what the destructive hint implies.

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, front-loaded sentence that clearly communicates the tool's purpose without redundancy. It includes useful examples and the file type, making it efficient and well-structured.

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?

The tool has a rich input schema and an output schema, so the description does not need to explain return values. However, given the existence of a very similar sibling tool ('add_library_symbol_property'), the description lacks enough contextual detail to guide an agent in selecting this specific variant, and it omits any mention of side effects beyond the annotations.

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?

The input schema covers all six parameters with descriptions, so schema_description_coverage is 100%. The description provides examples of property names but does not add meaningful semantic information beyond the schema, such as coordinate units or behavior of optional fields like 'hide' and 'position'.

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 clearly states the verb ('Add or update') and the resource ('custom property on a symbol in a .kicad_sym library file'), with examples like Manufacturer and MPN. It is specific and actionable, but it does not explicitly distinguish itself from the sibling tool 'add_library_symbol_property', which may perform a similar operation.

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 guidance is provided about when to use this tool versus alternatives such as 'add_library_symbol_property' or 'update_symbol_from_library'. The description only states what the tool does, not the context in which it should be chosen.

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

add_viaAdd ViaB
Destructive

Add a via to the PCB

ParametersJSON Schema
NameRequiredDescriptionDefault
netYesNet name
viaTypeNoVia type (through, blind, buried)
positionYesVia position

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the base safety profile is known. The description adds no extra behavioral context, such as whether the via is automatically connected to the provided net, how layer selection works, or what side effects occur (e.g., DRC implications). It does not contradict annotations but also does not build on them.

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 extremely concise ('Add a via to the PCB' — six words) and front-loaded. Every word is necessary; there is no redundancy or filler. It is appropriately sized for the simple operation it describes.

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?

Given the tool has multiple parameters, nested objects, an output schema, and many sibling tools, the description is too sparse. It omits critical behavioral context such as coordinate interpretation, net existence requirements, and how this differs from adding arrays of vias (add_gnd_stitching_vias). For a board-modifying tool, more context would help the agent invoke it correctly.

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?

The input schema provides descriptions for all three parameters (net, viaType, position) with 100% coverage. The description 'Add a via to the PCB' does not add any parameter-level meaning, so a baseline score of 3 is appropriate where the schema does the heavy lifting.

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 'Add a via to the PCB' uses a specific verb ('Add') and resource ('via') with a clear target (PCB). It distinguishes from sibling tools like add_mounting_hole and add_board_outline by naming a unique PCB element, making the purpose unambiguous.

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?

The description gives no guidance on when to use this tool versus alternatives such as add_gnd_stitching_vias (which also adds vias) or route_trace. It does not mention prerequisites (e.g., an open board) or provide any when-not-to-use instructions.

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

add_zoneAdd ZoneC
Destructive

Create a copper fill zone (pour) on a PCB layer for a specified net.

ParametersJSON Schema
NameRequiredDescriptionDefault
netYesNet name for the zone
unitYesUnit of measurement
layerYesLayer for the zone
pointsYesPoints defining the zone outline
minWidthNoMinimum width
clearanceNoClearance value

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds no extra behavioral context such as whether this modifies the board, requires a refill, or is undoable. It does not contradict annotations, but it also does not go beyond them. For a mutation tool, more disclosure (e.g., what happens to existing zones or nets) would be helpful.

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, focused sentence that immediately states the verb, object, and key modifiers. It is concise with no redundant information, and the structure front-loads the essential purpose. Ideal for quick agent comprehension.

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?

Although the output schema exists and annotations cover destructive behavior, the description lacks important contextual information such as when this tool should be used, how it relates to the sibling 'add_copper_pour', and any side effects like needing to refill zones. This leaves the agent underinformed for selecting and invoking the tool correctly in a broader workflow.

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

Parameters3/5

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

Schema description coverage is 100%, with all six parameters described in the input schema. The description itself adds no parameter-level detail beyond what the schema provides. Since the schema carries the full burden, a baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (create) and the resource (copper fill zone/pour) with a specific context (on a PCB layer for a specified net). It is not a tautology and conveys what the tool does. However, it does not distinguish from the sibling tool 'add_copper_pour', which appears to have the same purpose, so it lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'add_copper_pour' or when not to use it. There is no mention of prerequisites (e.g., board must be open) or relationships to other zone-related tools (e.g., 'refill_zones'). The usage context is only implied by the name and description.

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

align_componentsAlign ComponentsB
Destructive

Align multiple PCB components horizontally, vertically or on a grid with optional spacing.

ParametersJSON Schema
NameRequiredDescriptionDefault
spacingNoSpacing between components in mm
referencesYesArray of component references to align
alignmentTypeYesType of alignment
referenceComponentNoReference component for alignment

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already mark the tool as destructive and non-read-only, but the description adds no behavioral context beyond that. It does not explain that components will be repositioned, how the referenceComponent anchors alignment, or what happens to existing placements. No annotation contradiction exists.

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, focused sentence that front-loads the action and key options. It avoids redundancy with the schema and contains no filler.

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?

The tool has moderate complexity with four parameters, an output schema, and annotations, all of which cover most contextual needs. The description conveys the core operation effectively, though it relies on the schema for parameter details and offers no guidance on referenceComponent semantics or when to use the tool.

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?

The input schema has 100% coverage with meaningful descriptions for all parameters, including the enum for alignmentType and the unit for spacing. The description adds no parameter semantics beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool aligns multiple PCB components and enumerates the alignment modes (horizontal, vertical, grid) plus optional spacing. It is specific about the action and resource, but it does not explicitly distinguish this from sibling tools like batch_move_components or place_component_array.

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 guidance is provided on when to use this tool versus alternatives such as batch_move_components or place_component_array. There are no preconditions, exclusions, or examples of appropriate use beyond the implied meaning of the name and description.

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

annotate_schematicAnnotate SchematicA
Destructive

Assign reference designators to unannotated components (R? → R1, R2, ...). Must be called before tools that require known references.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation aspect is covered. The description adds the ordering dependency (must be called before other tools), which is valuable behavioral context 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?

Two concise sentences, front-loaded with the action and example. Every word earns its place, with no redundancy or 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 simple one-parameter tool with an output schema, the description fully covers purpose, usage timing, and effect. It is complete for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the only parameter (schematicPath), and the schema already provides a clear description. The tool description does not need to add parameter details, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly specifies the action ('Assign reference designators') and the target ('unannotated components'), with a concrete example (R? → R1, R2). This distinguishes it from all sibling tools, as no other tool performs annotation.

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 usage guidance is provided: 'Must be called before tools that require known references.' This tells the agent when to invoke this tool and implies that it is a prerequisite for other operations, which is sufficient given the tool's unique role.

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

assign_net_to_classAssign Net To ClassA
Destructive

Assign a net to an existing net class to apply its specific design rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
netYesName of the net
netClassYesName of the net class

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate the operation is destructive (destructiveHint=true) and non-read-only. The description adds minimal behavioral context beyond stating the purpose. It does not mention what happens if the net is already assigned to another class, which would be useful but is not required given 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?

A single sentence that is concise, front-loaded with the action, and contains no redundant information. Every word earns its place.

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 simple two-parameter tool with a complete schema and annotations, the description is sufficient. It could mention the consequences of reassigning a net (e.g., it is removed from any prior class), but the existing annotations cover the destructive nature, making the description adequately complete.

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?

The input schema fully describes both parameters ('Name of the net' and 'Name of the net class'). The description does not add any parameter-level detail, so it provides no added value beyond the schema, resulting in the baseline score.

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 clearly states the action ('Assign a net to an existing net class') and its purpose ('to apply its specific design rules'). It uses a specific verb and resource, and distinguishes from siblings like create_netclass or add_net by emphasizing 'existing net class'.

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?

The description gives clear context: assign an existing net to an existing net class. It implicitly differentiates from tools that create net classes (create_netclass) by saying 'existing', but it does not explicitly mention alternatives or exclusions.

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

autoplace_schematic_fieldsAutoplace Schematic FieldsA
Destructive

Automatically reposition every component's Reference and Value field so they sit outside the component body AND outside any net labels attached to its pins, avoiding collisions with other components and already-placed fields. Like KiCAD's built-in field auto-placement but net-label aware. Optionally limit to specific references.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearanceNoGap in mm between the body/label extent and field text (default one 1.27mm grid unit)
referencesNoOnly reposition these references (default: all components)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds meaningful behavioral context beyond annotations: it specifies the heuristic (avoid collisions with components/net labels), the net-label awareness compared to KiCAD, and the optional limitation by references. This adds value without contradicting 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?

The description is two sentences, front-loaded with the primary action, and every phrase earns its place. It packs a lot of semantic content (what, where, how, and optionality) into a compact, readable form without redundancy.

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

Completeness4/5

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

For a tool with 3 parameters, an output schema, and moderate complexity, the description covers the core algorithm, constraints, and optional filtering. It doesn't describe the return value, but the output schema likely covers that. It also doesn't mention prerequisites like whether the schematic must be open, but the file path parameter implies direct file editing. Overall, sufficiently complete for selection and 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 100%, so the schema already documents all parameters. The description independently mentions 'Optionally limit to specific references,' reinforcing the references parameter, but adds no new parameter details beyond what the schema provides. Baseline 3 is appropriate.

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 uses a specific verb ('reposition'), names the exact resources ('Reference and Value field'), and describes the outcome (outside body and net labels, avoiding collisions). It also distinguishes itself from sibling tools by focusing on field auto-placement rather than component or net label movement, making it unmistakable.

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?

The description provides clear context for when to use it ('Automatically reposition...', 'Like KiCAD's built-in field auto-placement but net-label aware') and implies it is for cleaning up field placement. However, it does not explicitly mention alternative tools (e.g., manual property position setters) or when not to use it, so it stops short of a 5.

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

autorouteAutorouteA
Destructive

Run Freerouting autorouter on the current PCB. Exports to Specctra DSN, runs Freerouting CLI, and imports the routed SES result. Requires Java 11+ and freerouting.jar (see check_freerouting). Set attempts > 1 to run best-of-N: Freerouting is invoked multiple times with varied --max-passes, each result is scored by (nets_routed * 1000 + segments, +50000 bonus when every targetNets entry routed), and the winning SES is imported. Single-attempt behaviour is unchanged when attempts is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoPer-attempt timeout in seconds (default: 300)
attemptsNoNumber of Freerouting runs to try (default: 1 — backward-compatible). When > 1, runs best-of-N: scores each attempt by routing completeness and keeps the SES with the highest score. Recommended: 3–5 for dense boards.
boardPathNoPath to .kicad_pcb file (default: current board)
maxPassesNoMaximum routing passes for single-attempt mode (default: 20). Ignored when `attempts` > 1; use `passSchedule` instead.
targetNetsNoOptional list of critical net names. An attempt that routes all of them earns a 50,000-point scoring bonus, breaking ties in favour of designs that include the must-have nets.
passScheduleNoPer-attempt `--max-passes` values to cycle through (default: [50, 60, 65, 70, 75, 80, 85, 90, 55, 95]). The list wraps if `attempts` exceeds its length.
freeroutingJarNoPath to freerouting.jar (default: ~/.kicad-mcp/freerouting.jar or FREEROUTING_JAR env)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, but the description adds valuable context: it exports to DSN and imports routed SES, which could overwrite the board, and explains the best-of-N scoring mechanism including the 50,000-point bonus for targetNets. It lacks explicit warning about destructive effects, but the workflow disclosure and scoring details go beyond the annotations without contradicting them.

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 substantial but well-organized and front-loaded with the core behavior. Every sentence earns its place: the workflow, the prerequisite, the best-of-N behavior, and scoring details. Slightly long but appropriate for the tool's complexity.

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 tool is complex (export, run external CLI, import, best-of-N mode) and the description covers the key aspects: prerequisites, workflow, mode behavior, scoring, and parameter interactions. An output schema exists but isn't shown here, so the description doesn't need to explain return values. For this complexity, the description is complete enough for an agent to invoke 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?

With 100% schema description coverage, the baseline is 3, but the description adds meaningful context beyond the schema: it explains how attempts > 1 changes behavior (best-of-N), how maxPasses is ignored when attempts > 1 in favor of passSchedule, and clarifies the scoring formula. These cross-parameter interactions and the recommended attempts range are only in the description.

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 ('Run Freerouting autorouter') and resource ('current PCB'), and details the full workflow: export to Specctra DSN, run Freerouting CLI, import routed SES. It clearly distinguishes itself from related tools like check_freerouting and import_ses by explaining the end-to-end process.

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?

The description gives explicit context: requires Java 11+ and freerouting.jar (referencing check_freerouting). It also explains when to use different modes: set attempts > 1 for best-of-N, recommends 3–5 for dense boards, and notes single-attempt behavior is unchanged when attempts is omitted. This provides clear situational guidance.

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

batch_add_and_connectBatch Add And ConnectA
Destructive

Place multiple components AND wire their nets in a single call — the fewest-round-trip way to build a subcircuit. Each component is like batch_add_components plus an optional 'nets' map {pin: netName}. Components are placed first, then nets are connected via batch_connect. labelType selects 'label' (sheet-local, default) or 'global_label' (cross-sheet by name) for all the nets wired in this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
origin_xNo
origin_yNo
labelTypeNoLabel kind used to wire the nets: 'label' = sheet-local (default); 'global_label' = cross-sheet by namelabel
componentsYesComponents to place and connect
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already provide destructiveHint=true and idempotentHint=false, and the description adds meaningful behavioral context: the sequence of operations (place then connect) and the effect of labelType on all nets wired in this call. This goes beyond the annotations and clarifies the tool's side effects without contradicting the destructive hint.

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 three sentences, front-loaded with the core purpose, and every sentence contributes essential information (combined action, relationship to sibling tools, operational order, labelType behavior). No filler or redundancy.

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

Completeness4/5

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

For a moderately complex combined operation, the description covers the main behavioral contract, references sibling tools for parameter defaults, and notes labelType's scope. The output schema exists, so return values are not needed. However, it omits any mention of origin_x/origin_y (which are also undocumented in the schema), leaving a small but noticeable gap in completeness.

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 60%, with missing descriptions for origin_x and origin_y. The description compensates by explaining the components object's structure ('Each component is like batch_add_components plus an optional nets map {pin: netName}') and elaborating on labelType's enum semantics. This adds meaningful value beyond the schema, though the placement origin parameters remain 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 description clearly states the tool's function: 'Place multiple components AND wire their nets in a single call' — a specific verb and resource. It also explicitly distinguishes it from related sibling tools by mentioning 'Each component is like batch_add_components plus an optional nets map' and contrasts it with 'batch_connect', making it unambiguous when this combined operation is intended.

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?

The description gives clear context: it is the 'fewest-round-trip way to build a subcircuit' and explains the internal order ('Components are placed first, then nets are connected via batch_connect'). While it doesn't explicitly say 'use batch_add_components alone if you don't need nets', the combined nature and reference to the alternative imply the right usage. A brief exclusion would make it perfect.

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

batch_add_componentsBatch Add ComponentsA
Destructive

Add multiple components to a schematic in one call (far fewer round-trips than add_schematic_component). Each component: {symbol:'Library:Name', reference, value?, footprint?, position:{x,y}, rotation?, includePins?}. Reference/Value fields are auto-positioned outside the body (disable with auto_position_fields=false). Returns per-component snapped position, field positions, body_bbox, and an overall placement_bbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
origin_xNoX offset added to every component position (mm)
origin_yNoY offset added to every component position (mm)
componentsYesComponents to place
schematicPathYesPath to the .kicad_sch file
auto_position_fieldsNoAuto-place Ref/Value fields outside the body (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses extra behavioral details beyond annotations: auto-positioning of reference/value fields (with override option) and the return payload structure. Annotations already mark the operation as destructive, so the description adds context without contradicting them.

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 three sentences, front-loaded with the main purpose and efficient in conveying parameter format and return values. No redundant phrases.

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?

Given the output schema exists, the description appropriately focuses on usage context and parameter semantics. It covers the core behavior and return expectations. Minor omissions like error handling or atomicity are not necessary given the annotations and 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?

While the schema covers all parameters with descriptions, the tool description goes further by giving a concrete structure example for the components array and explaining the effect of auto_position_fields. This clarifies optionality and data hierarchy better than the schema alone.

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 uses a specific verb 'Add' and identifies the resource 'components to a schematic'. It also distinguishes from the sibling add_schematic_component by noting 'far fewer round-trips', making the tool's purpose unmistakable.

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?

The description implies when to use by contrasting batch vs single-component calls, explicitly referencing add_schematic_component for smaller operations. It does not provide explicit exclusions or alternatives beyond that, but the context is clear.

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

batch_add_no_connectsBatch Add No ConnectsA
Destructive

Add no-connect (X) flags to multiple pins in one call, to mark intentionally unconnected pins and silence ERC. 'pins' is a list of {componentRef, pinName}.

ParametersJSON Schema
NameRequiredDescriptionDefault
pinsYesPins to mark no-connect
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds that it 'silence[s] ERC' and clarifies the data structure, but does not disclose potential side effects like overwriting existing flags or failing on invalid pins. This meets the baseline but offers limited extra behavioral insight.

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 two sentences, front-loaded with the core action and purpose, followed by a clarifying parameter note. No redundancy, filler, or unnecessary detail.

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 annotations covering safety semantics, an output schema present, and 100% parameter schema coverage, the description is mostly sufficient. However, it does not address idempotency or failure behavior (e.g., what happens if a pin already has a no-connect flag), which would be useful but not essential for a simple batch operation.

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

Parameters3/5

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

Schema coverage is 100% for both parameters. The description's mention of 'pins' being a list of {componentRef, pinName} merely restates the schema definition without adding new meaning. Thus the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's action: 'Add no-connect (X) flags to multiple pins in one call'. It specifies the resource (pins), the purpose ('mark intentionally unconnected pins and silence ERC'), and distinguishes itself from the singular 'add_no_connect' sibling by emphasizing batch operation.

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?

The description provides clear context for when to use this tool: when you need to mark multiple pins as no-connect to silence ERC. It implies batch usage but does not explicitly exclude the singular 'add_no_connect' or other alternatives, so it falls short of a 5.

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

batch_connectBatch ConnectA
Destructive

Place net labels on multiple pins in one call to wire nets quickly. 'connections' is a map {reference: {pin: netName}} where pin is a number or name. labelType selects 'label' (sheet-local, the default) or 'global_label' (connects across all sheets by name — use this for power rails and any net that spans sheets). For local labels, if a facing label for the same net is nearby a wire is drawn instead of a duplicate label; global labels are placed one-per-pin since they join their net by name. Set replace=true to clear any existing label at a pin first. Warns about power nets missing a PWR_FLAG.

ParametersJSON Schema
NameRequiredDescriptionDefault
replaceNoDelete existing labels at each pin before placing (default false)
labelTypeNoLabel kind: 'label' = sheet-local (default); 'global_label' = connects across all sheets by namelabel
connectionsYesMap of reference -> {pin: netName}
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses several behavioral traits: replace=true clears existing labels, local labels may draw a wire instead of a duplicate when a facing label is nearby, global labels are placed one-per-pin, and it warns about power nets missing a PWR_FLAG. This is rich behavioral detail not present in 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?

The description is three sentences, front-loaded with the core purpose, then details. Every sentence provides essential behavioral or parameter information with no filler or redundancy.

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 tool is moderately complex with nested objects and multiple behaviors, and the description covers parameter format, label semantics, edge-case behavior (facing labels), and warnings. An output schema exists, so return values need not be explained. The description is complete for effective use.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that pin can be a number or name, explaining the meaning of labelType with practical guidance (global for power rails/sheet-spanning nets), and describing the effect of replace=true. This goes beyond the schema's field descriptions.

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 specific verb+resource: 'Place net labels on multiple pins in one call to wire nets quickly.' This clearly states what the tool does and distinguishes it from single-label tools like add_schematic_net_label, emphasizing the batch aspect.

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 provides clear usage context: when to use local vs global labels ('for power rails and any net that spans sheets'), and implies batch use for wiring nets quickly. However, it does not explicitly name alternatives such as add_schematic_net_label or state when not to use this tool, stopping short of a 5.

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

batch_edit_schematic_componentsBatch Edit Schematic ComponentsA
Destructive

Edit multiple existing components in one call. 'components' is a map {reference: {value?, footprint?, newReference?, ...}}; each entry is applied via the single-component editor. Returns per-reference updated/errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentsYesMap of reference -> fields to change
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already mark destructive and non-idempotent behavior. The description adds valuable context: each entry is applied individually via the single-component editor, and results are returned as per-reference updated/errors, implying partial failure semantics.

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 two sentences long, front-loaded with the primary action, and every part earns its place. The map structure explanation and return behavior are packed efficiently without redundancy.

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 an output schema present and annotations covering safety, the description is complete: it explains the batch nature, the structure of the components parameter, how each edit is applied, and what is returned. No critical gaps for a tool of this complexity.

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

Parameters4/5

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

Schema descriptions cover both parameters, but the description goes further by giving a concrete map structure example ({reference: {value?, footprint?, newReference?, ...}}) and explaining how entries are applied. This enriches the abstract 'Map of reference -> fields to change'.

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 'Edit multiple existing components in one call' with a specific verb, resource, and scope. It clearly distinguishes from single-component editing and other batch operations like batch_move_components by focusing on property edits (value, footprint, reference) via a map.

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?

The description implies use when multiple components need property edits in one operation, and clarifies that each entry goes through the single-component editor. It lacks explicit exclusions or alternatives (e.g., when to use batch_move_components), but the context is clear for most users.

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

batch_list_symbol_pinsBatch List Symbol PinsA
Read-onlyIdempotent

Return pin names, numbers, types, and symbol-local coordinates for multiple symbols in a single call. Use instead of calling list_symbol_pins repeatedly when placing a subcircuit — saves 5–10 round-trips. Each result includes pins (with x/y/angle in symbol-local coords, Y-up per KiCAD lib convention) and body_bbox (bounding box of pin envelope ±1.27mm, symbol-local coords). IMPORTANT: coordinates are symbol-local (Y-up, pre-rotation); after placement use get_schematic_pin_locations for post-rotation schematic coordinates. Set compact=true for simple 2-pin passives (Device:R/C/L) to get just pin_count, body_bbox, and is_symmetric.

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNoIf true, omit per-pin detail for standard 2-pin symmetric passives.
symbolsYesArray of symbols in 'Library:SymbolName' format (e.g., ['Device:R', 'Device:C'])
schematicPathNoPath to .kicad_sch — enables project-local sym-lib-table lookup

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Despite strong annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false), the description adds valuable behavioral context: it explains the coordinate system ('symbol-local coords, Y-up per KiCAD lib convention'), warns about the pre-rotation nature, and describes the body_bbox derivation (±1.27mm). It also details the compact mode behavior. No contradiction with 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?

The description is front-loaded with purpose, then provides usage guidance, output details, an important coordinate warning, and a compact-mode tip. Every sentence earns its place; there is no fluff or repetition. It is appropriately sized given the tool's complexity.

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 thorough: it explains the return content (pins, body_bbox), the coordinate frame, and when to use an alternative tool. Even though an output schema exists, the description adds necessary context about coordinate conventions that would not be obvious from the schema alone. The tool is well-contextualized among its siblings.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all parameters, providing a solid baseline of 3. The description goes beyond this by giving concrete guidance for the 'compact' parameter: 'Set compact=true for simple 2-pin passives (Device:R/C/L) to get just pin_count, body_bbox, and is_symmetric.' This adds practical semantics not present in the schema.

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 specific verb ('Return') and clearly states the resource and scope: 'pin names, numbers, types, and symbol-local coordinates for multiple symbols in a single call.' It also differentiates itself from the sibling 'list_symbol_pins' by instructing to use it 'instead of calling list_symbol_pins repeatedly,' making the purpose unmistakable.

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?

The description gives explicit usage context: 'Use instead of calling list_symbol_pins repeatedly when placing a subcircuit — saves 5–10 round-trips.' It also specifies a clear alternative for post-placement coordinates: 'after placement use get_schematic_pin_locations for post-rotation schematic coordinates.' This goes beyond vague guidance and names exact alternatives.

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

batch_move_componentsBatch Move ComponentsA
Destructive

Move multiple PCB components transactionally. If one reference/spec is invalid, no components are moved. Saves by default unless save=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNoSave the board after all moves succeed (default true)
movesYesMap of reference designator to placement spec
dryRunNoValidate the batch without changing the board

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Beyond the annotations, it discloses transactional rollback ('If one reference/spec is invalid, no components are moved') and the default save behavior. It does not describe all side effects, but given destructiveHint=true already signals modification, the added context is valuable.

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

Conciseness5/5

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

Two sentences with front-loaded purpose and no filler. Every sentence contributes behavioral or usage 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 tool with 3 parameters, a nested moves object, and an output schema, the description covers core behavior, rollback, and save defaults. It leaves dryRun to the schema description, which is acceptable given the schema richness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema carries most parameter meaning. The description adds context about reference/spec validity and save default but does not detail the placement spec format, which the schema already documents.

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 'Move multiple PCB components transactionally,' clearly specifying the verb, resource, and batch nature. It distinguishes from sibling move_component by emphasizing multiple components and all-or-nothing behavior.

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?

The description conveys that this tool is for transactional multi-component moves, providing clear context for when to use it. It does not explicitly name single-component alternatives or list exclusions, so it stops short of a full 5.

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

batch_set_schematic_property_positionsBatch Set Schematic Property PositionsA
Destructive

Move many Reference/Value field labels in a single file read/write — far faster than repeated set_schematic_property_position calls. Pass an 'updates' array; each item is {reference, property:'Reference'|'Value', x, y, angle?, visible?}. Returns per-item applied/failed lists.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYesList of field moves to apply
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructive/write behavior, but the description adds useful context: 'single file read/write' clarifies the operation's scope, and 'Returns per-item applied/failed lists' discloses partial-failure behavior. This goes beyond the annotations without contradicting them.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states purpose and comparative advantage; the second specifies input format and return behavior. 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?

Given the annotations mark it as destructive and there's an output schema, the description covers what (move labels), when (when batching multiple moves), input structure, and result format ('applied/failed lists'). It is fully self-sufficient for an agent to invoke correctly.

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?

The schema covers 100% of parameters with descriptions and types, including the 'property' enum and optional angle/visible defaults. The description restates the updates object shape ('{reference, property, x, y, angle?, visible?}') but adds no new semantic detail beyond what the schema already provides, so it sits at the baseline.

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 specific verb and resource: 'Move many Reference/Value field labels in a single file read/write', which clearly states the action and scope. It also distinguishes itself from the sibling tool 'set_schematic_property_position' by noting it is 'far faster than repeated' calls, making the purpose unmistakable.

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?

Explicitly says 'far faster than repeated set_schematic_property_position calls', which names an alternative and implies when to use this batch version. While it doesn't list exclusion criteria, this direct comparison gives clear usage context.

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

check_clearanceCheck ClearanceA
Read-onlyIdempotent

Check the actual clearance between two PCB items (track, via, pad, zone or component) and report whether it meets the design rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
item1YesFirst item to check
item2YesSecond item to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is already covered. The description adds that it reports design-rule compliance, which is helpful but does not disclose any additional behavior such as edge cases, prerequisites, or error handling. It is adequate but not rich.

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, focused sentence that front-loads the action and resource. It is 18 words, contains no fluff, and every phrase contributes meaning.

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?

Given that an output schema exists and annotations cover safety, the description sufficiently explains the tool's core function. It does not mention prerequisites like a loaded board, but that is implied by the tool context. It is complete for a straightforward check tool, though a note on limitations would push it to 5.

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

Parameters3/5

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

Schema description coverage is 100%, with all properties (item1, item2, id, type, position, etc.) already described. The description does not add parameter-level details beyond what the schema provides, which meets the baseline for full coverage but does not elevate it.

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 uses a specific verb ('check') and names a concrete resource ('clearance between two PCB items'), lists the item types (track, via, pad, zone, component), and states the outcome ('report whether it meets design rules'). This clearly distinguishes it from sibling tools like check_placement_clearance and check_courtyard_overlaps.

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?

The description clearly indicates the use case: checking actual clearance between two specific PCB items and design rule compliance. However, it does not explicitly mention alternatives or when not to use this tool (e.g., for placement-specific clearance), so it stops short of a full 5.

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

check_courtyard_overlapsCheck Courtyard OverlapsA
Read-onlyIdempotent

Detect courtyard overlaps between footprints and (optionally) flag courtyards that extend past the board outline. Accepts a positions dict of hypothetical placements so an AI can validate a proposed move_component / place_component before committing it. Returns overlap pairs with intersection extents (mm) and per-component boundary violations.

ParametersJSON Schema
NameRequiredDescriptionDefault
refsNoLimit the check to these refs (default: every footprint on the board).
marginNoExtra clearance in mm added around every courtyard (default 0). Useful to enforce a manufacturing keepout wider than the symbol's declared courtyard.
positionsNoVirtual placements: map of reference designator to [x, y] or [x, y, rotation_degrees] in mm. Each listed ref is checked AS IF it were at the given coordinates. Unspecified refs use their current board position.
board_outlineNoOptional board outline bbox override. Default: derived from Edge.Cuts.
include_boundaryNoAlso flag courtyards that extend past the board outline (default true).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds meaningful behavioral context: it returns overlap pairs with intersection extents (mm) and per-component boundary violations. It also implies non-destructive validation by mentioning 'before committing' a placement. This complements the annotations without contradicting them.

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 three tightly written sentences. It front-loads the primary purpose in the first sentence, then explains the key use case and output. No redundant phrases or filler; every sentence contributes meaningful 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?

Given the output schema and rich annotations, the description covers the essential aspects: purpose, optionality, use case, and return summary. The schema documents parameter details, so the description does not need to repeat them. The tool's role in placement validation is fully conveyed.

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?

Input schema has 100% description coverage, so baseline is 3. The description adds value beyond the schema by explaining the purpose of the 'positions' parameter as a hypothetical placement for pre-commit validation. This clarifies the intended semantics of a complex nested object beyond its structural definition.

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 clearly states the tool's function: 'Detect courtyard overlaps between footprints' and optionally flag boundary violations. This specific verb+resource combination distinguishes it from sibling check tools like check_placement_clearance or check_clearance by focusing on courtyards and board outline compliance.

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?

The description provides a clear usage context: validating hypothetical placements before committing a move_component or place_component. It explains when to use the tool via the 'positions' parameter, but does not explicitly mention alternatives or exclusions, though the context is sufficiently clear.

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

check_freeroutingCheck FreeroutingA
Read-onlyIdempotent

Check if Java and Freerouting JAR are available on the system. Run this before autoroute to verify prerequisites.

ParametersJSON Schema
NameRequiredDescriptionDefault
freeroutingJarNoPath to freerouting.jar to check

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds the specific behavior of checking Java and JAR availability, which aligns with the annotations. No contradictions, and the behavior is clearly disclosed.

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 two short sentences, front-loaded with the action, and contains no unnecessary information. Every word 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?

For a simple check tool with full annotation coverage and an output schema, the description fully covers the purpose and usage context. Nothing meaningful is missing.

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

Parameters3/5

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

The schema fully describes the only parameter (path to freerouting.jar) with 100% coverage. The description adds no additional meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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 clearly states the tool checks if Java and the Freerouting JAR are available, using a specific verb and resource. It distinguishes from sibling tools by focusing on Freerouting prerequisites, unlike check_kicad_ui which checks KiCad UI.

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?

The description explicitly says to run this before autoroute, giving clear usage context. It does not mention exclusions or alternatives, but for a simple prerequisite check this is sufficient.

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

check_kicad_uiCheck Kicad UiA
Read-onlyIdempotent

Check if KiCAD UI is currently running

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the safety profile. The description adds the context that this is a status check, but provides no extra behavioral details (e.g., whether it returns a boolean, that it does not start the UI). It is consistent with 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?

The description is a single clear sentence of six words. Every word earns its place; there is no fluff or redundancy.

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 an extremely simple parameterless status check, the description is complete. Annotations cover safety, and the output schema (indicated as present) handles return value specifics. The description clearly conveys what is being checked.

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?

There are zero parameters, so there is nothing to document. The baseline for 0 params is 4; the description adds nothing about parameters, and it doesn't need to.

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 uses a specific verb ('Check') and resource ('KiCAD UI') and adds the qualifier 'currently running', clearly distinguishing it from sibling tools like launch_kicad_ui and get_backend_state. It states exactly what the tool does.

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 description implies its usage (when you need to know if the KiCAD UI is running) but does not explicitly state when or when-not to use it, nor does it name alternatives. There is no direct comparison to sibling state-checking tools, so guidance is only implicit.

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

check_placement_clearanceCheck Placement ClearanceA
Read-onlyIdempotent

Classify placement conflicts as body overlap, courtyard overlap, keepout violation, silk/text overlap or pad clearance.

ParametersJSON Schema
NameRequiredDescriptionDefault
refsNoOptional component reference filter
marginNoExtra bbox margin in mm for mechanical checks
padClearanceNoExtra pad bbox clearance in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the specific conflict categories, which is useful context beyond the annotations, but does not disclose any other behavioral traits such as side effects or limitations.

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, focused sentence that front-loads the verb 'Classify' and lists the conflict types without any wasted words or redundant 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?

The combination of a detailed description, complete schema, and annotations provides a solid understanding of the tool's purpose, inputs, and safety profile. The only notable gap is the lack of usage differentiation from sibling tools, which is covered under usage guidelines.

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

Parameters3/5

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

Schema description coverage is 100% for all three parameters, so the schema already fully documents refs, margin, and padClearance. The description does not add any parameter-level semantics, making the baseline score of 3 appropriate.

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 uses a specific verb 'Classify' with a clear resource 'placement conflicts' and enumerates five distinct conflict categories. This clearly distinguishes it from sibling tools like check_courtyard_overlaps and check_clearance by scope and granularity.

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?

The description provides no guidance on when to use this tool versus alternatives such as check_courtyard_overlaps or run_drc. It implies usage for classifying placement conflicts but does not mention exclusions or alternative tools, leaving the agent to infer the differentiation.

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

clear_board_outlineClear Board OutlineA
Destructive

Delete all Edge.Cuts graphics from the current PCB board.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

The destructiveHint annotation already indicates the destructive nature, and the description adds specific context that all Edge.Cuts graphics are removed. It does not mention irreversibility or side effects, but the annotation covers the key behavioral risk.

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, concise sentence that front-loads the action and object. Every word contributes meaning, with no redundancy or 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 simple, parameterless, destructive operation, the description fully specifies what is deleted and where. The presence of an output schema and the destructiveHint annotation further cover the remaining context, making the description complete.

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 has no parameters, and the schema covers this completely (100% coverage). The description adds no parameter details because none are needed, which is appropriate for a parameterless tool.

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 uses a specific verb ('Delete') and identifies the exact resource ('all Edge.Cuts graphics') and scope ('current PCB board'). This clearly distinguishes it from related tools like delete_graphic (individual graphics) and replace_board_outline (replacing rather than deleting).

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?

The description clearly implies the tool is for clearing the entire board outline, which provides sufficient context for when to use it. However, it does not explicitly name alternatives or state when not to use it, so it stops short of a full 5.

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

close_projectClose ProjectA
Destructive

Close the currently loaded KiCAD project: optionally save, then drop the in-memory board and clear session state. Use this to hand control back so the user (or the agent) can edit project files directly without the MCP later clobbering those changes on save.

ParametersJSON Schema
NameRequiredDescriptionDefault
saveNoSave the board to disk before closing (default true). If false and there are unsaved changes, the close proceeds but the response warns they were discarded.
forceNoBackward-compatible alias for forceExternalChanges
forceExternalChangesNoSave despite external changes to the loaded SWIG board file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses specific destructive behaviors: dropping the in-memory board and clearing session state. It also explains the motivation (avoid clobbering external edits) and notes the optional save behavior, adding valuable context not present in 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?

The description is two sentences, front-loaded with the core action and then the usage rationale. Every sentence serves a distinct purpose: the first explains what it does, the second explains why and when to use it. No wasted words.

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 annotations (destructiveHint=true) and the full parameter schema plus output schema, the description provides sufficient context by explaining the action, the rationale, and the consequence. It covers the key behaviors without needing to repeat return values or parameter details.

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

Parameters3/5

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

Schema description coverage is 100% with each parameter (save, force, forceExternalChanges) documented in detail. The tool description itself does not add parameter information, but it doesn't need to; the schema fully covers parameter semantics, meeting the baseline.

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+resource: 'Close the currently loaded KiCAD project' and elaborates the consequence: 'drop the in-memory board and clear session state.' This clearly distinguishes it from sibling tools like save_project, open_board, or reload_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?

The description explicitly says when to use it: 'Use this to hand control back so the user (or the agent) can edit project files directly without the MCP later clobbering those changes on save.' This provides a clear use case and implies when not to use (when you want to continue editing via MCP).

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

connect_passthroughConnect PassthroughA
Destructive

Connects all pins of a source connector (e.g. J1) to matching pins of a target connector (e.g. J2) via shared net labels — pin N gets net '{netPrefix}_{N}'. Use this for FFC/ribbon cable passthrough adapters instead of calling connect_to_net for every pin.

ParametersJSON Schema
NameRequiredDescriptionDefault
netPrefixNoNet name prefix, e.g. 'CSI' → CSI_1, CSI_2 (default: PIN)
pinOffsetNoAdd to pin number when building net name (default: 0)
sourceRefYesSource connector reference (e.g. J1)
targetRefYesTarget connector reference (e.g. J2)
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, covering the safety profile. The description adds the net naming template ('{netPrefix}_{N}') but does not disclose behaviors such as whether existing nets are overwritten or how mismatched pin counts are handled. It adds some context but not rich behavioral detail 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?

Two sentences, the first stating the core function and the second giving usage guidance. No filler, front-loaded with the main action, and every sentence earns its place.

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?

The tool has 5 parameters and an output schema, and the schema covers all parameter semantics. The description explains the core operation, the naming convention, and the recommended use case. Edge cases (e.g., pin mismatches) are not described, but the description is sufficient for selection and invocation for the common passthrough scenario.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's example ('CSI' → CSI_1, CSI_2) mirrors the schema's own description for netPrefix, adding no new meaning. pinOffset behavior is only in the schema, not reinforced in the description.

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 action ('Connects all pins of a source connector to matching pins of a target connector') with concrete examples (J1 to J2) and clearly distinguishes itself from sibling tools by explicitly naming connect_to_net as the alternative to avoid for this use case.

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?

Explicitly states when to use this tool ('Use this for FFC/ribbon cable passthrough adapters') and what not to do ('instead of calling connect_to_net for every pin'), making the usage context unambiguous.

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

connect_to_netConnect To NetA
Destructive

Connect a component pin to a named net by adding a wire stub and net label at the exact pin endpoint. The response includes pin_location (exact pin coords), label_location (where the label was placed), and wire_stub (the wire segment added) so you can confirm the placement.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNameYesName of the net to connect to
pinNameYesPin name/number to connect
componentRefYesComponent reference (e.g., U1, R1)
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so mutation is known. The description adds valuable context by detailing the exact operations (adding wire stub and net label) and the response fields (pin_location, label_location, wire_stub) for verification. It does not contradict annotations and provides more behavioral detail than just relying on the hints.

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 two sentences, with the action front-loaded and the response explanation following. Every sentence contributes value without fluff or redundancy.

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

Completeness4/5

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

Given the output schema and annotations, the description is complete enough for a mutation tool. It explains the action, the response, and provides confirmability. It does not explicitly mention preconditions like component existence or net validity, but these are likely obvious or covered by the schema/error handling.

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?

The input schema has 100% parameter description coverage, so all four parameters are already explained. The tool description does not add meaning beyond the schema, so it meets the baseline of 3.

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 clearly states the tool's function with a specific verb ('connect'), a resource ('component pin to a named net'), and the mechanism ('adding a wire stub and net label at the exact pin endpoint'). It distinguishes itself from siblings like add_schematic_wire or add_schematic_net_label by combining both actions on a specific pin.

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?

The description provides clear context: when you need to connect a component pin to a named net with a visual stub and label. It implies a single-pin, single-net scenario, but does not explicitly mention alternatives or when not to use it. This falls short of a 5 which requires explicit when/when-not/alternatives.

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

copy_routing_patternCopy Routing PatternA
Destructive

Copy routing pattern (traces and vias) from a group of source components to a matching group of target components. The offset is calculated automatically from the position difference between the first source and first target component. Useful for replicating routing between identical circuit blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceRefsYesReferences of the source components (e.g. ['U1', 'R1', 'C1'])
targetRefsYesReferences of the target components in same order as sourceRefs (e.g. ['U2', 'R2', 'C2'])
traceWidthNoOverride trace width in mm (default: keep original width)
includeViasNoAlso copy vias (default: true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds behavioral context: the offset is calculated automatically from the position difference between the first source and target components, and it copies both traces and vias. It does not contradict annotations and adds useful information beyond the structured hints.

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 two sentences with no filler. It front-loads the primary action, then adds a key detail (automatic offset) and a use case. Every word earns its place.

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?

The tool has an output schema, full parameter descriptions, and safety annotations. The description covers purpose, mechanism, and use case, which is sufficient for an agent to select and invoke it. It could mention overwrite behavior on target routing, but the annotations and schema already cover the main safety context.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all four parameters, so baseline is 3. The description adds meaning to sourceRefs/targetRefs by explaining the automatic offset calculation based on the first source/target pair, which clarifies how parameters relate. This goes beyond the schema's field-level descriptions.

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 clearly states the action: 'Copy routing pattern (traces and vias) from a group of source components to a matching group of target components.' It specifies the resource (routing pattern) and the mechanism (copying between component groups), which distinguishes it from sibling tools like route_trace or add_via.

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?

The description provides a clear context for use: 'Useful for replicating routing between identical circuit blocks.' This implies when to use the tool, though it does not explicitly mention alternatives or exclusions. The use case is specific enough to guide an agent.

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

create_board_from_schematicCreate Board From SchematicA
Destructive

Create a new .kicad_pcb file from a schematic, then update the PCB from that schematic so footprints and nets are present.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathNoDestination .kicad_pcb path; defaults next to schematic
overwriteNoReplace boardPath if it already exists
schematicPathYesAbsolute path to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is clear. The description adds context that after creating the file, it updates the PCB with footprints and nets, but it does not mention overwrite behavior or other side effects. This is useful but not rich detail.

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, front-loaded sentence that conveys the entire process without wasted words. It states the action, source, and result efficiently.

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?

Given the existence of an output schema (not shown) and rich annotations, the description adequately covers the core behavior. It does not explain edge cases like existing board paths or errors, but for a moderate-complexity creation tool, it is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter having a clear description. The tool description does not add parameter-specific meaning beyond what the schema provides, but it is not necessary given the high coverage. Baseline of 3 is appropriate.

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 clearly states a specific action: 'Create a new .kicad_pcb file from a schematic, then update the PCB'. It identifies the resource (.kicad_pcb file), the source (schematic), and the outcome (footprints and nets present). This distinguishes it from siblings like 'open_board' or 'sync_schematic_to_board'.

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?

The description implies usage by specifying 'Create a new .kicad_pcb file from a schematic', making the scenario clear. However, it does not explicitly explain when to use this over alternatives such as 'sync_schematic_to_board' for existing boards, but the 'new' keyword provides sufficient context for the intended use case.

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

create_footprintCreate FootprintA
Destructive

Create a new KiCAD footprint (.kicad_mod) inside a .pretty library directory. Supports SMD and THT pads, courtyard, silkscreen, and fab-layer rectangles.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFootprint name, e.g. 'R_0603_Custom'
padsNoList of pads to add (can be empty for outlines-only footprints)
tagsNoSpace-separated tag string, e.g. 'resistor SMD 0603'
fabLayerNoFab-layer rectangle on F.Fab (shows component body)
courtyardNoCourtyard rectangle on F.CrtYd (recommended: 0.25 mm clearance around pads)
overwriteNoReplace existing footprint file (default: false)
silkscreenNoSilkscreen rectangle on F.SilkS
descriptionNoHuman-readable description
libraryPathYesPath to the .pretty library directory (created if missing). E.g. C:/MyProject/MyLib.pretty
refPositionNoPosition of the REF** text (default: 0, -1.27)
valuePositionNoPosition of the Value text (default: 0, 1.27)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already mark this as destructive (destructiveHint: true) and not read-only, so the description doesn't need to restate that. It adds context about the library directory and supported features, which is mildly useful. However, it does not mention overwrite behavior (despite an overwrite parameter) or that the library path may be created if missing. The description adds some value beyond annotations but leaves out behavioral details that could affect invocation.

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, information-dense sentence. It front-loads the action ('Create a new KiCAD footprint') and includes the file format and directory. Every word contributes value; there is no repetition or filler.

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?

Given the tool's complexity (11 parameters, nested objects) and the presence of a detailed schema and output schema, the description provides a sufficient high-level overview. It explains the core purpose and capabilities, leaving detailed parameter semantics to the schema. It is slightly lacking in usage guidance (no mention of when to use vs. editing tools) and does not surface the overwrite safety behavior, but these are partially covered by annotations and schema.

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?

Input schema coverage is 100% with detailed descriptions for all parameters, so the baseline is 3. The description only lightly touches on parameters (e.g., SMD/THT pads, courtyard, silkscreen, fab-layer rectangles) without adding syntax or relationships not already in the schema. It adds no significant meaning beyond what the schema provides.

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 clearly states what the tool does: 'Create a new KiCAD footprint (.kicad_mod) inside a .pretty library directory.' It names the specific resource (KiCAD footprint), the file format, and the target directory. It also lists supported content types (SMD/THT pads, courtyard, silkscreen, fab-layer rectangles), which helps distinguish it from other creation tools like create_symbol or create_project.

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?

The description implies usage for creating new footprints in a .pretty library, with support for pads and graphic rectangles. It does not explicitly name alternative tools or exclude them, but the phrasing 'Create a new' and the specific resource make the intended use clear. It lacks explicit 'use this instead of X' guidance, but the context is unambiguous among siblings.

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

create_hierarchical_subsheetCreate Hierarchical SubsheetA
Destructive

Create a new sub-sheet .kicad_sch file and link it into a parent schematic in a single call (create_schematic + add_hierarchical_sheet). The fastest way to grow a hierarchical design.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
metadataNoOptional metadata for the new sub-sheet (title, etc.)
positionNo
sheetNameNoDisplay name for the sheetSheet
subsheetPathYesPath for the new sub-sheet .kicad_sch to create
parentSchematicPathYesPath to the parent .kicad_sch

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true. The description adds useful behavioral context by stating it creates a new file and links it into a parent, and that it performs two underlying operations in one call. This goes beyond what the annotations express, though it does not detail edge cases like overwriting existing files or failure modes.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and contains zero filler. It efficiently conveys the tool's purpose and relationship to sibling operations.

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 a destructive operation, the annotations and description together cover its side effects. The output schema exists, so return value details are not required. The description is sufficient for selecting and invoking the tool, though a brief note that the parent schematic must already exist would push it to full completeness.

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 67% (4 of 6 properties have descriptions). The description itself does not elaborate on any parameters, leaving size and position without schema descriptions and no compensating explanation. However, the key parameters (parentSchematicPath, subsheetPath) are described in the schema, so a baseline of 3 is appropriate.

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 uses a specific verb-resource pair: 'Create a new sub-sheet .kicad_sch file and link it into a parent schematic.' It clearly distinguishes this tool from its siblings by framing it as the combined operation of create_schematic and add_hierarchical_sheet, which is explicit and unambiguous.

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?

The description explains when to use this tool—'in a single call (create_schematic + add_hierarchical_sheet)'—and labels it 'the fastest way to grow a hierarchical design.' It names the two alternative operations it combines, but does not mention explicit exclusion cases or when the separate calls might be preferable, so it stops short of a full when/when-not guide.

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

create_netclassCreate NetclassA
Destructive

Create a new net class with custom design rules, optionally assigning nets to it immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNet class name
netsNoNet names to assign to this class immediately
viaDrillNoVia drill size in mm
clearanceNoClearance in mm
uviaDrillNoMicro via drill size in mm
traceWidthNoDefault trace width in mm
diffPairGapNoDifferential pair gap in mm
viaDiameterNoVia diameter in mm
uviaDiameterNoMicro via diameter in mm
diffPairWidthNoDifferential pair trace width in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation/destructive nature is known. The description adds the behavior of optional immediate net assignment, which is useful, but it does not disclose potential side effects like overwriting existing net classes or failure conditions. It neither contradicts annotations nor adds 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?

The description is a single sentence with no redundant information. It front-loads the primary action and adds the optional capability efficiently.

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 create tool with many optional design-rule parameters, the description covers the core purpose and optional net assignment. The presence of an output schema makes return-value documentation unnecessary. It is slightly incomplete in that it doesn't note whether design rules are optional or if there are constraints on net class names, but this is minor given the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 10 parameters. The description's phrases 'custom design rules' and 'optionally assigning nets' summarize the parameter groups but do not add additional meaning beyond what the schema provides. Baseline of 3 is appropriate.

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 uses a specific verb ('Create') with a clear resource ('new net class') and also mentions key capabilities ('custom design rules', 'optionally assigning nets'). This distinguishes it from similar tools like add_net_class by highlighting the design-rule aspect.

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 description implies usage when you want to create a net class with design rules, but it does not explicitly contrast with sibling tools like add_net_class or assign_net_to_class. There is no when-not or alternative guidance, making the usage context inferred rather than explicit.

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

create_projectCreate ProjectB
Destructive

Create a new KiCAD project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
pathYesProject directory path

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

The annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds no additional context about side effects, such as whether existing files are overwritten or if a project directory is created. The description only restates the basic operation.

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 concise sentence that immediately conveys the tool's purpose without any filler.

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 simple creation tool with full parameter schema and output schema, the description is mostly sufficient. However, it omits any note about potential error conditions or what constitutes a 'new project' (e.g., whether it initializes multiple files). Overall, it's adequate but not exhaustive.

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?

The description does not elaborate on the name and path parameters beyond the schema. Since schema coverage is 100%, the parameter semantics are adequately documented in the schema itself.

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 clearly states the action ('Create') and the resource ('a new KiCAD project'), distinguishing it from siblings like open_project and save_project.

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 explicit guidance is provided about when to use this tool versus alternatives. It simply states the operation without mentioning prerequisites, conditions, or alternative tools.

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

create_schematicCreate SchematicC
Destructive

Create a new schematic

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSchematic name
pathNoOptional path

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, but the description adds no extra behavioral context such as whether existing files are overwritten, whether a project must be open, or what side effects occur. No contradiction exists, but the description adds zero value beyond annotations.

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 description is very short, but its brevity stems from under-specification rather than efficient communication. It is not bloated and reads clearly, but it lacks substantive content that would justify its existence beyond the tool name.

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?

For a destructive mutation tool with an output schema (not shown) and numerous related sibling tools, this description is severely incomplete. It fails to explain the tool's role in the schematic lifecycle, its relationship to project context, or any expected return values, leaving significant gaps for an agent.

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?

The schema already provides descriptions for both parameters (name and path) with 100% coverage. The description adds no additional meaning beyond what the schema offers, so the baseline of 3 applies.

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

Purpose2/5

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

The description 'Create a new schematic' merely restates the tool's name and title, offering no additional specificity about what a schematic is, what creating entails, or how it differs from sibling tools like create_project or add_schematic_component. This is essentially a tautology.

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 guidance is provided on when to use this tool versus alternatives such as create_project or create_board_from_schematic. There is no mention of prerequisites like an open project or intended workflow, leaving the agent without context for correct invocation.

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

create_symbolCreate SymbolA
Destructive

Create a new schematic symbol in a .kicad_sym library file (created if missing). After creation, use register_symbol_library so KiCAD finds it. Pin positions are where the wire connects; the symbol body is drawn between them.

Coordinate tips:

  • Body rectangle typically spans ±2.54 to ±5.08 mm

  • Pins on left side: at.x = body_left - length, angle=0 (wire goes right)

  • Pins on right side: at.x = body_right + length, angle=180 (wire goes left)

  • Pins on top: at.y = body_top + length, angle=270 (wire goes down)

  • Pins on bottom: at.y = body_bottom - length, angle=90 (wire goes up)

  • Standard pin length: 2.54 mm, standard grid: 2.54 mm

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSymbol name, e.g. 'TMC2209', 'MyOpAmp'
pinsNoList of pins (can be empty for graphical-only symbols)
inBomNoInclude in BOM (default true)
onBoardNoInclude in netlist for PCB (default true)
keywordsNoSpace-separated search keywords
datasheetNoDatasheet URL or '~'
footprintNoDefault footprint, e.g. 'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm'
overwriteNoReplace existing symbol with same name (default false)
polylinesNoPolyline graphics for custom body shapes (op-amp triangles, etc.)
rectanglesNoBody rectangle(s). Typically one rectangle defining the IC body.
descriptionNoHuman-readable description
libraryPathYesPath to the .kicad_sym file (created if missing)
referencePrefixNoSchematic reference prefix: 'U' (IC), 'R' (resistor), 'J' (connector), etc. Default: 'U'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already flag destructive behavior (destructiveHint=true), so the description doesn't need to repeat that. It adds useful context about file creation ('created if missing') and pin/body geometry. However, it does not reveal that overwrite=true can replace an existing symbol, and no details about side effects on existing files are given. This is acceptable given annotation coverage.

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 organized into clear sections: overview, follow-up, and coordinate tips. Every sentence is useful, and bullet points make the coordinate rules easily scannable. It is longer than typical descriptions but earns its length with actionable details. Slight redundancy in mentioning pin length (also in schema), but not enough to hurt.

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 complex tool with 13 parameters and nested object structures, the description provides substantial context: what the symbol body represents, how pins connect, and coordinate conventions. It also points to a required next step (register_symbol_library). With an output schema present, return values need not be described. Missing explicit mention of overwrite side effects, but schema covers the overwrite parameter.

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 descriptions cover all parameters (100% coverage), so the baseline is 3. The description exceeds this by providing concrete formulas for pin placement (e.g., left pins: at.x = body_left - length, angle=0) and standard grid/length values, which directly explains how to set at.x, at.y, angle, and length. This adds significant practical meaning beyond the schema.

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 and resource: 'Create a new schematic symbol in a .kicad_sym library file'. Clearly distinguishes from siblings like create_project, create_schematic, and create_footprint by focusing on symbol creation. Also mentions the expected follow-up (register_symbol_library), reinforcing its unique role.

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?

Provides clear step-by-step usage context, including the requirement to call register_symbol_library after creation. Offers practical coordinate tips for placing pins and drawing the body. Does not explicitly state when not to use this tool or mention alternatives, but the guidance is strong enough for an agent to choose it appropriately.

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

delete_componentDelete ComponentA
Destructive

Remove a component from the PCB by its reference designator.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesReference designator of the component to delete (e.g., 'R5')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the agent knows this is destructive. The description adds minimal behavioral context beyond 'from the PCB', which is more about scope than behavior. It does not clarify consequences like trace/orphan handling or errors for missing components, but the annotations carry the main safety burden.

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 of 11 words that front-loads the action and resource. Every word earns its place; no redundancy or filler.

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 simple one-parameter tool with annotations and an output schema, the description is nearly complete. It captures the essential purpose and parameter usage, and the 'PCB' qualifier provides enough context to avoid confusion with schematic component tools. It lacks detail on error cases or side effects, but these are less critical given the schema and annotations.

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

Parameters3/5

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

Schema coverage is 100%: the 'reference' parameter already has a clear description with an example. The tool description merely repeats 'by its reference designator' without adding new semantic details, meeting the baseline but not exceeding it.

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 'Remove a component from the PCB by its reference designator' clearly states the action (remove), the resource (component from PCB), and the identifying method (reference designator). It distinguishes from siblings like 'delete_schematic_component' by explicitly specifying 'PCB'.

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 'from the PCB' implies this tool is for board-level components, distinguishing it from schematic-component deletes. However, it does not explicitly state when to prefer this tool over alternatives or mention exclusions, leaving usage context implied rather than explicit.

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

delete_graphicDelete GraphicA
Destructive

Delete a PCB graphic/drawing item by UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYesKiCad UUID of the graphic item

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

The annotations already indicate destructiveHint=true and readOnlyHint=false. The description does not add any additional behavioral context, such as whether deletion is permanent, whether it affects the board file, or what side effects occur. It only restates the operation and resource type.

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 sentence of 8 words, highly concise and directly front-loaded with the action. No fluff.

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 simple delete tool with 1 fully-documented parameter and an output schema, the description is adequate. It identifies the resource and identifier method. It could mention that the board must be open or that the UUID comes from list_graphics, but that's not strictly necessary for an agent.

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?

The schema provides full coverage (100%) with a clear description for uuid. The description simply says 'by UUID', which adds no new meaning beyond the schema. Baseline 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'Delete' with the resource 'PCB graphic/drawing item' and the method 'by UUID', clearly distinguishing it from sibling tools like delete_component or update_graphic.

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 description does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or complementary tools like list_graphics. The usage is only implied by the name and description.

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

delete_schematic_componentDelete Schematic ComponentA
Destructive

Remove a placed symbol from a KiCAD schematic (.kicad_sch).

This removes the symbol instance (the placed component) from the schematic. It does NOT remove the symbol definition from lib_symbols.

With deleteAttachedLabels, net labels sitting exactly on the deleted component's pin positions are removed too — unless a label is still attached to a wire or another component's pin. Recommended when permanently removing a wired part, since orphaned labels otherwise produce label_dangling ERC errors. Default false for backward compatibility (delete-then-re-add workflows rely on labels surviving).

Note: This tool operates on schematic files (.kicad_sch). To remove a footprint from a PCB, use delete_component instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesReference designator of the component to remove (e.g. R1, U3)
schematicPathYesPath to the .kicad_sch file
deleteAttachedLabelsNoAlso delete net labels sitting on the deleted component's pin positions, unless still attached to a wire or another component's pin (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses that the symbol definition in lib_symbols is not removed, and explains the nuanced behavior of deleteAttachedLabels including edge cases (labels still attached to wires or other pins survive) and default rationale. This adds significant behavioral context not inferable from annotations alone.

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

Conciseness5/5

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

The description is well-structured with a clear first sentence, followed by compact paragraphs for scope, parameter behavior, and alternative. Every sentence adds value, and the length is appropriate for the tool's nuance without unnecessary 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?

Given the tool's complexity, the annotation (destructive), and the presence of an output schema, the description is complete: it explains the scope, side effects, parameter semantics, file type, and sibling alternative. The agent has all the information needed to invoke the tool safely and 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 100%, so baseline is 3. The description adds substantial meaning for deleteAttachedLabels, clarifying its effect, default, and why it exists. It does not add much for reference or schematicPath, but the parameter itself is already well-described in the schema. Overall the extra semantic detail justifies a score above baseline.

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 clearly states the tool removes a placed symbol from a KiCAD schematic (.kicad_sch), distinguishing it from deleting the symbol definition. It also explicitly contrasts with delete_component for PCB footprints, ensuring the correct tool is selected.

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?

The description provides clear when-to-use guidance: use this for schematic symbols, and explicitly redirects PCB footprint removal to delete_component. It also explains when deleteAttachedLabels is recommended (permanently removing a wired part) and notes backward compatibility trade-offs.

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

delete_schematic_net_labelDelete Schematic Net LabelB
Destructive

Remove a net label from the schematic.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNameYesName of the net label to remove
positionNoPosition to disambiguate if multiple labels with same name
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

The description merely restates the destructive nature already captured by the destructiveHint annotation. It adds no additional context about side effects on connected elements, behavior when the label is not found, or whether the operation is undoable, missing an opportunity to add value beyond structured metadata.

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, direct sentence with no filler. It is appropriately sized for a simple deletion operation and front-loaded with the core action.

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?

The description is minimal but sufficient for a straightforward destructive operation. With complete schema, annotations, and an output schema present, it does not need to explain return values. It could mention the position-based disambiguation, but that is already documented in the schema, so overall completeness is strong.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any information about parameters beyond what the schema already provides; it stays at baseline without enhancing understanding of the parameters.

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 clearly states the action ('Remove') and the target ('net label'), and it distinguishes the tool from siblings like add_schematic_net_label and move_schematic_net_label. The verb-resource pairing is specific and unambiguous.

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?

The description offers no guidance on when to use this tool versus alternatives, no preconditions, and no exclusions. It does not mention that the optional position parameter is used to disambiguate when multiple labels share the same name, which is a relevant usage consideration.

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

delete_schematic_wireDelete Schematic WireB
Destructive

Remove a wire from the schematic by start and end coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesWire end position
startYesWire start position
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true, and the description simply repeats the removal action without adding any new behavioral context such as idempotency, effects on connectivity, or error behavior. No contradiction, but no added value beyond the annotation.

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 a single, front-loaded sentence that communicates the core purpose without fluff. It is appropriately concise for a simple tool, though it lacks any additional structuring or elaboration that could aid an agent.

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?

Given the tool's simplicity and the existence of an output schema, the description is adequate for understanding the basic operation. However, it lacks any mention of prerequisites, edge cases, or how the wire is uniquely identified, which could matter in a schematic editing context.

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

Parameters3/5

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

Schema description coverage is 100% with clear descriptions for each parameter (schematicPath, start, end). The description adds no additional parameter meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

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 uses a specific verb 'Remove' with a clear resource 'wire from the schematic' and specifies the selection criteria (start and end coordinates). It clearly distinguishes itself from sibling tools like add_schematic_wire or delete_component.

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 guidance is provided on when to use this tool versus alternatives such as delete_trace, delete_schematic_component, or how to first identify wire coordinates via list_schematic_wires. The description is purely a statement of action without context.

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

delete_symbolDelete SymbolA
Destructive

Remove a symbol from a .kicad_sym library file.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSymbol name to delete
libraryPathYesPath to the .kicad_sym file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the destructive nature is known. The description adds the file type context (.kicad_sym), but does not disclose other behavioral traits such as reversibility, prerequisites, or effects on references. This matches the baseline for annotation-covered tools.

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 concise sentence that communicates the essential action and target. There is no waste or redundancy.

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

Completeness4/5

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

For a simple deletion tool with two well-documented parameters, a clear schema, and annotations indicating destructive behavior, the description is largely complete. It could be enhanced by a note about when to use it or potential side effects, but given the low complexity, it is sufficient.

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

Parameters3/5

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

Schema description coverage is 100%: both 'name' and 'libraryPath' have clear descriptions. The tool description does not add any parameter-level meaning beyond what the schema provides, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb 'Remove' and identifies the resource as 'a symbol from a .kicad_sym library file.' This clearly distinguishes it from sibling tools like delete_component, delete_graphic, and delete_schematic_component.

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 description implies usage for deleting symbols from KiCad symbol library files, but does not explicitly state when to use this tool versus alternatives or mention any exclusions. With many sibling delete tools, some explicit guidance would improve the score.

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

delete_traceDelete TraceA
Destructive

Delete traces from the PCB. Can delete by UUID, position, or bulk-delete all traces on a net.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNoDelete all traces on this net (bulk delete)
layerNoFilter by layer when using net-based deletion
positionNoDelete trace nearest to this position
traceUuidNoUUID of a specific trace to delete
includeViasNoInclude vias in net-based deletion

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows it is a destructive write operation. The description adds the mode-of-deletion info (UUID/position/bulk) but that is already present in the schema; it does not disclose side effects like whether vias are removed by default or whether deletion is permanent beyond the annotation.

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 two short sentences, front-loaded with the primary action. No unnecessary words; each clause adds relevant information about the deletion modes.

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?

Given the rich schema and annotations, the description adequately orients the agent, but it omits the includeVias nuance and the precise meaning of position-based deletion beyond what schema states. The tool appears simple and safe to understand with the structured data, so the description is sufficient but not exhaustive.

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?

The schema has 100% parameter coverage, describing each parameter's purpose. The description merely summarises the three deletion methods (UUID, position, net) without adding new details about units, defaults, or interactions between parameters.

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 uses a specific verb ('Delete') and resource ('traces from the PCB'), and clearly identifies three deletion modes (UUID, position, bulk net). It distinguishes from sibling tools like modify_trace and route_trace by focusing on removal rather than modification or creation.

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 description implies when to use the tool (to remove traces) but provides no explicit guidance on alternatives or when not to use it. Sibling tools like query_traces and modify_trace are not mentioned, leaving the agent to infer the appropriate context.

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

discard_or_reloadDiscard Or ReloadA
Destructive

Discard the current in-memory PCB state and reload the board from disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathNoOptional .kicad_pcb path; defaults to current board

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

The description explicitly discloses that the current in-memory PCB state is discarded, which adds meaningful information beyond the destructiveHint annotation by specifying exactly what is destroyed (unsaved in-memory changes). It does not mention possible confirmation prompts or failure modes, but the annotation already sets the destructive 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?

The description is a single, concise sentence with the key information front-loaded. No filler or redundant content.

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?

The tool is simple with one optional parameter, and the description covers the core destructive action. However, given the existence of closely related sibling tools (reload_board, open_board), the lack of any usage distinction leaves the context incomplete for an agent deciding between tools.

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?

The only parameter, boardPath, is fully described in the schema with 'Optional .kicad_pcb path; defaults to current board.' The description adds no extra parameter information, and schema coverage is 100%, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly specifies the action: discard in-memory PCB state and reload from disk. It distinguishes itself from simple reload operations by emphasizing the discard step, but it does not explicitly compare against sibling tool reload_board, so it lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like reload_board or open_board. The description implies usage (when you want to discard changes) but offers no explicit when-to-use or exclusions.

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

download_jlcpcb_databaseDownload Jlcpcb DatabaseA
Destructive

Download the JLCPCB parts catalog to a local SQLite database for fast offline search.

Sources (no API credentials required by default):

  • cdfer (default): in-stock subset (~600k parts, ~1.5 GB download). Single file, no extra tools — the most reliable path, especially on Windows.

  • yaqwsx: the FULL catalog (all parts incl. out-of-stock, ~10 GB extracted). Use source="yaqwsx" if you specifically want everything. Requires a 7z CLI.

  • official: official JLCPCB API, used only if JLCPCB_APP_ID/JLCPCB_API_KEY/ JLCPCB_API_SECRET are set.

One-time setup; downloads resume automatically if interrupted. Re-run with force=true to refresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce re-download even if database exists
sourceNoForce one source. "cdfer" (default) = in-stock subset, no 7z needed. "yaqwsx" = FULL ~10GB catalog (needs a 7z CLI). "official" = JLCPCB API (needs creds).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations mark destructiveHint=true, and the description adds meaningful behavioral context: downloads resume automatically, force=true refreshes, and source-specific requirements (e.g., 7z CLI for yaqwsx). This goes beyond the annotations by detailing what side effects occur and under what conditions.

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 well-structured with a clear opening statement, a bulleted list for sources, and a concise closing note on setup and refresh. Every sentence provides necessary information without redundancy.

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

Completeness4/5

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

For a download tool, the description covers source options, prerequisites, credentials, resume behavior, and refresh semantics. It doesn't mention the database storage path or that search tools depend on this database, but with an output schema present and sibling search tools, the description is sufficiently complete for its complexity.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are already documented. The description adds extra value by enriching the 'source' parameter with concrete details (file sizes, reliability on Windows, 7z requirement) and by explaining the force parameter in the 'Re-run with force=true to refresh' sentence. This goes slightly beyond the schema descriptions.

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 specific verb+resource: 'Download the JLCPCB parts catalog to a local SQLite database for fast offline search.' This clearly states what the tool does and its purpose, and the source breakdown distinguishes it from sibling search/retrieval tools that consume the database.

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?

The description provides explicit guidance on when to use each source (e.g., 'Use source="yaqwsx" if you specifically want everything') and notes when official is used (only if credentials are set). It also mentions one-time setup and force refresh. However, it does not explicitly contrast with sibling tools like search_jlcpcb_parts, though the purpose implies this is a prerequisite for offline search.

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

download_registry_partDownload Registry PartA
Idempotent

Download a registry part's KiCAD file to a local directory:

  • format="kicad_mod" -> footprint (.kicad_mod text)

  • format="kicad_sym" -> symbol (.kicad_sym text)

  • format="step" -> 3D model (.step / .glb, downloaded from the asset host) Files are written to dest_dir with a sensible filename; returns the saved path(s).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRegistry part id (from search_parts_registry)
formatYesWhich file to download: footprint | symbol | 3D model
dest_dirYesExisting destination directory to write the file into (must already exist)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavior: files are written to dest_dir with a sensible filename, returns saved path(s), and step models are downloaded from the asset host. It does not mention overwrite or failure behavior, but does not contradict 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?

The description is compact, front-loaded, and uses a clean bullet list. Every line adds concrete information without repetition or filler.

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?

Given the output schema, annotations, and full parameter descriptions, the tool definition is largely complete. It covers the primary behaviors and return path(s), though explicit overwrite behavior and error conditions are not described, which would make it fully rounded.

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

Parameters4/5

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

Schema coverage is 100%, so parameters are documented, but the description adds real meaning: mapping each enum value to file extensions and text vs. 3D model download, and clarifying that dest_dir must already exist. This goes beyond the schema's basic descriptions.

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 uses a specific verb ('Download') and resource ('registry part's KiCAD file'), and enumerates each format with its resulting file type. This clearly distinguishes it from sibling tools like get_registry_part, which likely returns metadata rather than writing files locally.

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?

The description clearly implies when to use this tool: to download registry part assets into a local directory. It does not explicitly name alternatives or exclusions, but the format-to-extension mapping and destination requirement give strong usage context.

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

duplicate_componentDuplicate ComponentB
Destructive

Duplicate an existing PCB component at an offset position, optionally with a new reference designator.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of duplicates (default: 1)
offsetYesOffset from original position
referenceYesReference of component to duplicate
newReferenceNoNew reference designator

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows the operation is destructive. The description adds context about offset placement and optional new reference designator, but does not disclose whether the original component is preserved, how nets are affected, or other side effects. Given the annotations, this is acceptable but limited.

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 sentence, front-loaded with the verb 'Duplicate', and contains no redundancy. Every word contributes meaning, making it highly concise and well-structured.

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?

The tool has moderate complexity with a nested offset object and a count parameter. The description omits mention of count (though the schema documents it) and does not clarify behavior for multiple duplicates. With an output schema present, return values are covered, but the description could be more complete about the operation's scope.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all four parameters. The tool description reiterates offset and new reference but adds no new semantic details such as count behavior, unit defaults, or relationship between count and offset. Baseline 3 applies because the schema carries the parameter documentation.

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 the specific verb 'duplicate' and names the resource 'PCB component', clearly conveying the core action. It also mentions offset position and optional new reference designator. However, it does not explicitly distinguish from sibling tools like move_component or place_component_array, so it lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description simply restates the function without mentioning use cases, exclusions, or related tools such as move_component or place_component_array.

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

edit_componentEdit ComponentA
Destructive

Edit properties of an existing PCB component (reference, value, footprint).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoOptional new component value
footprintNoOptional new footprint
referenceYesReference designator of the component (e.g., 'R5')
newReferenceNoOptional new reference designator

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

The description is consistent with annotations (readOnlyHint=false, destructiveHint=true) but adds no new behavioral context beyond what the annotations and name already convey. It does not mention side effects, prerequisites, or that the board becomes dirty.

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

Conciseness5/5

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

A single, front-loaded sentence that efficiently conveys the tool's purpose without any redundant or filler content.

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?

The description, combined with a fully described schema and annotations, is sufficient for a simple editing tool. It clearly identifies the resource and action, and the output schema is present, so return values do not need to be explained.

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?

The schema fully describes all four parameters, so the baseline is 3. The description adds little beyond listing three of the four properties (reference, value, footprint) and omits newReference, which could be seen as a minor gap but does not reduce the score below baseline.

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 clearly states the tool edits properties of an existing PCB component, naming the specific editable attributes (reference, value, footprint). This distinguishes it from siblings like delete_component or move_component.

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 description implies it is for modifying existing components but does not explicitly differentiate it from overlapping siblings such as set_footprint_type or edit_schematic_component. No when-not-to-use guidance is provided.

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

edit_footprint_padEdit Footprint PadA
Destructive

Edit an existing pad inside a .kicad_mod footprint file. Updates size, position, drill, or shape without recreating the whole footprint.

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoNew pad position in mm
sizeNoNew pad size in mm
drillNoNew drill size (for THT pads)
shapeNoNew pad shape
padNumberYesPad number to edit, e.g. '1' or 2
footprintPathYesFull path to the .kicad_mod file, e.g. C:/MyLib.pretty/R_Custom.kicad_mod

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, which align with the description's edit/update semantics. The description adds useful context by specifying exactly which properties are updated and that it preserves the rest of the footprint. No annotation contradiction.

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 two sentences long, front-loaded with the key verb and resource, and every word earns its place. It is concise and well-structured.

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?

Given the rich schema (6 params, nested objects, enums) and annotations, the description provides a sufficient high-level overview. It lacks explicit notes on error cases (e.g., pad not found), but that is beyond the essential context for an agent.

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?

The input schema provides 100% coverage with detailed descriptions for all parameters (e.g., units, examples, enum values). The description merely lists the property categories briefly, adding no extra meaning beyond what the schema already documents.

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 clearly identifies the verb 'Edit' and the resource 'existing pad inside a .kicad_mod footprint file'. It also distinguishes itself from create_footprint by noting 'without recreating the whole footprint'.

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?

The description provides clear context for when to use this tool: editing an existing pad's properties (size, position, drill, shape). It implies a contrast with recreating the footprint but does not explicitly name alternative tools or state when-not-to-use conditions.

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

edit_schematic_componentEdit Schematic ComponentA
Destructive

Update properties of a placed symbol in a KiCAD schematic (.kicad_sch) in-place.

Use this tool to: • assign or update the footprint, value, or reference designator, • reposition field labels (Reference / Value text), • add, update, or remove ARBITRARY CUSTOM PROPERTIES used by BOM and sourcing workflows: MPN, Manufacturer, Manufacturer_PN, Distributor, DigiKey, DigiKey_PN, Mouser_PN, LCSC, JLCPCB_PN, Voltage, Tolerance, Power, Dielectric, etc.

Custom properties are first-class — they survive ERC, are exported by export_bom, and are picked up by the JLCPCB / Digi-Key BOM tooling. Newly-added properties default to hidden so they do not clutter the schematic canvas.

Multiple updates can be batched in a single call: pass any combination of footprint, value, newReference, fieldPositions, properties, and removeProperties together.

This is more efficient than delete + re-add because it preserves the component's position and UUID. Operates on .kicad_sch files only — to modify a PCB footprint use edit_component instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoNew value string (e.g. 10k, 100nF)
footprintNoNew KiCAD footprint string (e.g. Resistor_SMD:R_0603_1608Metric)
referenceYesCurrent reference designator of the component (e.g. R1, U3)
propertiesNoAdd or update component properties. Map of property name to either a string value (sensible defaults) or a full spec object {value, x?, y?, angle?, hide?, fontSize?}. Use this to attach BOM and sourcing metadata such as MPN, Manufacturer, Distributor, DigiKey, LCSC, JLCPCB_PN, Voltage, Tolerance, Dielectric, Power, etc. Built-in fields (Reference, Value, Footprint, Datasheet) can also be set this way but the dedicated parameters above are clearer. Example: {"MPN": "RC0603FR-0710KL", "Manufacturer": "Yageo", "Tolerance": "1%"}
newReferenceNoRename the reference designator (e.g. R1 → R10)
schematicPathYesPath to the .kicad_sch file
fieldPositionsNoReposition field labels: map of field name to {x, y, angle, justify?} (e.g. {"Reference": {"x": 12.5, "y": 17.0, "justify": "left"}})
removePropertiesNoList of custom property names to delete from this component. The built-in fields Reference, Value, Footprint, and Datasheet cannot be removed (clear them by setting value to "" instead). Example: ["OldMPN", "Distributor_PN"]

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Adds significant context beyond the annotations: custom properties are first-class (survive ERC, exported by export_bom, used by BOM tooling), newly-added properties default to hidden, and batching preserves component position and UUID. The description is consistent with destructiveHint=true and readOnlyHint=false.

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 well-structured with a clear opening sentence, bullet-point use case list, and short paragraphs for custom properties, batching, and file-type constraints. Every sentence earns its place and there is no fluff or repetition of the schema.

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 tool with 8 parameters and nested objects, the description covers purpose, usage, custom property semantics, batching, and the file-type limitation. Since an output schema exists, return values need not be detailed. The combination of description and schema is fully sufficient for an agent to select and 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 coverage is 100%, so the schema already documents every parameter in detail. The description adds value by explaining that parameters can be batched together and clarifying the purpose of custom properties, but it does not need to repeat per-parameter syntax. This exceeds the baseline of 3 without duplicating the schema.

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 action: 'Update properties of a placed symbol in a KiCAD schematic (.kicad_sch) in-place.' It enumerates concrete capabilities (footprint, value, reference, field labels, custom properties) and clearly differentiates from the sibling tool edit_component by restricting to .kicad_sch files and directing PCB footprint changes to edit_component.

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?

Provides an explicit 'Use this tool to' list covering all major use cases, and an explicit exclusion: 'Operates on .kicad_sch files only — to modify a PCB footprint use edit_component instead.' It also contrasts with delete+re-add, explaining when this tool is preferable because it preserves position and UUID.

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

enrich_datasheetsEnrich DatasheetsA
Destructive

Fill in missing Datasheet URLs in a KiCAD schematic using LCSC part numbers.

For every placed symbol that has: • (property "LCSC" "C123456") set • (property "Datasheet" "~") or empty

Sets the Datasheet field to: https://www.lcsc.com/datasheet/C123456.pdf

The URL is then visible in KiCAD's footprint browser, symbol properties dialog, and any tool that reads the standard KiCAD Datasheet field. No API key or internet lookup required – the URL is constructed directly.

Use dry_run=true to preview changes without writing.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, show what would be changed without writing to disk (default: false)
schematic_pathYesPath to the .kicad_sch file to enrich

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructive behavior, but the description adds valuable specifics: it only modifies symbols where the Datasheet field is '~' or empty, constructs the URL directly without API/internet, and supports dry_run to avoid writes. This goes beyond the structured hints by detailing the exact mutation conditions and non-network operation.

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 well-structured with a clear opening statement, bullet-pointed conditions, a code block for the URL format, and a final usage tip. It is concise and each sentence adds value, including the note about no API key and where the URL is visible. The dry_run tip is practical and does not feel redundant despite appearing in the schema.

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 tool's simplicity and the rich annotations/output schema, the description is fully complete. It covers what the tool does, the prerequisites, exact behavior, side effects, and the safe dry-run mode. No critical information is missing, and the output schema handles return-value details.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters already well-described (path and dry_run with default). The description adds minimal extra parameter semantics beyond restating the dry_run usage. The bullet points about LCSC properties are behavioral context, not parameter explanations, so a baseline 3 is appropriate.

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 begins with a specific verb and resource: 'Fill in missing Datasheet URLs in a KiCAD schematic using LCSC part numbers.' It clearly distinguishes itself from the sibling tool get_datasheet_url by focusing on updating the schematic, not just fetching a URL. The exact conditions and URL format are provided, making the tool's function unambiguous.

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?

The description clearly conveys when to use the tool: for every placed symbol with an LCSC property and missing/empty Datasheet field. It also mentions the dry_run option for previewing changes. However, it does not explicitly name alternatives for similar tasks (e.g., get_datasheet_url) or state when not to use it, so it does not fully earn a 5.

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

estimate_airwire_lengthsEstimate Airwire LengthsA
Read-onlyIdempotent

Alias for get_ratsnest: estimate airwire segments and lengths by net.

ParametersJSON Schema
NameRequiredDescriptionDefault
netsNo
maxPadsPerNetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds that it estimates lengths 'by net', which is useful scoping context, but it doesn't disclose additional behavioral details like maxPadsPerNet effects or output structure. This is a minimal addition over 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?

The description is extremely concise, front-loaded with the alias relationship, and every word adds value. There is no wasted prose or redundancy.

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?

Despite having an output schema, the description omits critical context: it doesn't explain maxPadsPerNet semantics, when to use this versus the original get_ratsnest, or any practical examples. For a two-parameter tool, it leaves the agent under-informed about the second parameter.

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%, so the description must compensate. It only hints at the 'nets' parameter via 'by net', but it does not explain maxPadsPerNet at all. This is insufficient for the two parameters.

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 clearly states the tool is an alias for get_ratsnest and specifies it estimates airwire segments and lengths by net. This gives a specific verb (estimate), resource (airwire lengths), and scope (by net), making the purpose unambiguous even among many siblings.

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 description implies usage by identifying the tool as an alias for get_ratsnest, which tells the agent it behaves identically to that sibling. However, it does not provide explicit when-to-use or when-not-to-use guidance beyond that, nor does it explain any distinctions from get_ratsnest.

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

export_3dExport 3dA
Destructive

Export the PCB as a 3D model (STEP, STL, VRML or OBJ) including optional copper, solder mask, silkscreen and component 3D models.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYes3D model format
outputPathYesPath to save the 3D model file
includeCopperNoWhether to include copper layers
includeComponentsNoWhether to include 3D component models
includeSilkscreenNoWhether to include silkscreen
includeSolderMaskNoWhether to include solder mask

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, indicating a file-writing/overwriting operation, and the description does not contradict this. However, the description adds no further behavioral context such as whether it overwrites existing files, requires an open board, or any side effects. It only describes the output options, which is more parameter-related than behavioral.

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 sentence that front-loads the primary action and format list, then efficiently notes the optional inclusions. Every word contributes to understanding the tool's function.

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 file-export tool with 6 parameters, full schema coverage, an output schema, and annotations, the description sufficiently covers the core purpose and options. It does not mention prerequisites like an open board or behavior on existing files, but these are partially addressed by the destructiveHint annotation and are not critical for selection.

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?

The input schema covers 100% of parameters with clear descriptions, so the baseline is 3. The description's mention of 'optional copper, solder mask, silkscreen and component 3D models' adds a grouped view of the boolean parameters but does not provide meaning beyond what the schema already states.

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 clearly states a specific verb and resource: 'Export the PCB as a 3D model', enumerates the supported formats (STEP, STL, VRML, OBJ), and lists optional inclusions (copper, solder mask, silkscreen, component 3D models). This distinguishes it from other export tools like export_vrml, export_pdf, and export_3d_cli.

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?

The description implies when to use this tool: whenever a 3D model of the PCB is needed, with formats and layer options. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to select it over other export tools.

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

export_3d_cliExport 3d CliA
Destructive

Export a 3D model of the PCB via kicad-cli. The format param selects the subcommand (step, glb, stl, ply, brep, xao, vrml); only flags valid for that subcommand are forwarded. STEP/glb/stl/ply/brep/xao share the geometry/include flag set (no-board-body, include-tracks/pads/zones/inner-copper/silkscreen/soldermask, fuse-shapes, fill-all-vias, component/net filters, min-distance, etc.; no-optimize-step is STEP-only); vrml uses units + models-dir/models-relative instead. Rich CLI sibling of export_3d and export_vrml. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverwrite output file
noDnpNoExclude 3D models for components with 'Do not populate' attribute
unitsNoOutput units (VRML only; default in)
formatYes3D output format (selects the kicad-cli subcommand)
boardOnlyNoOnly generate a board with no components
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
modelsDirNoFolder to store 3D models in (VRML only; empty = embed in main file)
netFilterNoOnly include copper items belonging to nets matching this wildcard
fuseShapesNoFuse overlapping geometry together
gridOriginNoUse Grid Origin for output origin
outputPathYesOutput 3D model file path
userOriginNoUser-specified output origin e.g. '1x1in', '25.4x25.4mm' (default unit mm)
drillOriginNoUse Drill Origin for output origin
fillAllViasNoDon't cut via holes in conductor layers
includePadsNoExport pads
minDistanceNoMin distance between points to treat as separate (default '0.01mm')
noBoardBodyNoExclude board body
substModelsNoSubstitute STEP/IGS models in place of VRML models
includeZonesNoExport zones
noComponentsNoExclude 3D models for components
cutViasInBodyNoCut via holes in board body even if conductor layers not exported
includeTracksNoExport tracks and vias
noUnspecifiedNoExclude 3D models for components with 'Unspecified' footprint type
modelsRelativeNoUse relative model paths with modelsDir (VRML only)
noOptimizeStepNoDo not optimize STEP file (enables writing parametric curves; STEP only)
componentFilterNoOnly include component models matching this refdes list (comma, wildcards)
includeSilkscreenNoExport silkscreen graphics as flat faces
includeSoldermaskNoExport soldermask layers as flat faces
includeInnerCopperNoExport elements on inner copper layers

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Beyond the annotation destructiveHint=true, the description discloses that the tool reads the last SAVED state of the PCB (not unsaved changes) and that only flags valid for the selected subcommand are forwarded. This adds meaningful behavioral context not present in the annotations. No contradictions with annotations were found.

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 dense but well-organized: a one-sentence purpose, a comprehensive but readable explanation of flag groups, a sibling context sentence, and a crucial state-read caveat. Every sentence provides value without repetition or fluff.

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 tool with 30 parameters, an output schema, and annotations, the description covers the essential operational context: how format dispatches, which parameters apply to which formats, the CLI relationship, and the saved-state caveat. The presence of an output schema removes the need to describe return values, and the description gives enough guidance for reliable use.

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?

With 100% schema coverage, the baseline is 3, but the description greatly enhances parameter understanding by grouping shared flags and identifying format-specific parameters (e.g., no-optimize-step is STEP-only, vrml uses units/models-dir). This interdependency information is absent from the schema and is essential for correct invocation.

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 clear, specific action: 'Export a 3D model of the PCB via kicad-cli.' It differentiates the tool from siblings by explicitly calling itself a 'Rich CLI sibling of export_3d and export_vrml' and immediately explains the format-based subcommand selection, leaving no ambiguity about its role.

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?

The description gives strong practical guidance on how to use the format parameter and which flags are valid per subcommand, including the split between the shared geometry flag set and VRML-specific flags. However, it does not explicitly state when to choose this tool over export_3d or export_vrml beyond calling it 'rich' and 'CLI' – the comparative usage guidance is implied rather than explicit.

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

export_bomExport BomA
Destructive

Export a Bill of Materials (BOM) from the PCB in CSV, XML, HTML or JSON format.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatYesBOM file format
outputPathYesPath to save the BOM file
groupByValueNoWhether to group components by value
includeAttributesNoOptional array of additional attributes to include

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations indicate destructiveHint is true, and the description does not contradict this. The description adds context that this tool exports BOM data in multiple formats from the PCB, but does not detail side effects such as file overwriting or any preconditions. Given annotations already cover the safety profile, this is acceptable.

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 sentence that efficiently conveys the tool's purpose and format options without waste. It is front-loaded and easy to parse.

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?

The description covers the essential purpose, source (PCB), and output formats. With the output schema available and annotations indicating destructive behavior, the description is sufficiently complete for a simple export tool. However, it lacks explicit usage differentiation from similar export tools, which prevents a higher score.

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

Parameters3/5

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

Schema description coverage is 100% per context, with each parameter (format, outputPath, groupByValue, includeAttributes) having descriptions. The tool description does not add parameter-level detail beyond the schema, but the baseline of 3 is appropriate since the schema handles this.

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 uses the specific verb 'export' with a clear resource 'Bill of Materials (BOM) from the PCB' and lists supported formats (CSV, XML, HTML, JSON). This clearly identifies the tool's function and distinguishes it from sibling export tools like export_sch_bom which target schematics.

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?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of using export_sch_bom for schematic BOMs or export_netlist for netlists. It simply states what it does without contextual placement.

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

export_drillExport DrillA
Destructive

Generate drill files for a PCB via kicad-cli, exposing the full Excellon/Gerber drill option set (format, drill origin, zero suppression, oval format, units, mirror-Y, minimal header, separate PTH/NPTH files, drill map + map format). Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoDrill file format (default excellon)
boardPathNoPath to the .kicad_pcb (default: current board)
mapFormatNoDrill map format when generateMap is set (default pdf)
outputDirYesOutput directory for the drill files
drillOriginNoDrill coordinate origin (default absolute)
generateMapNoGenerate a drill map / summary file
excellonUnitsNoExcellon output units (default mm)
excellonMirrorYNoMirror the Y axis (Excellon)
gerberPrecisionNoGerber coordinate precision (5 or 6) when format=gerber
excellonMinHeaderNoUse a minimal Excellon header
excellonOvalFormatNoExcellon oval hole format (default alternate)
excellonSeparateThNoGenerate independent files for NPTH and PTH holes
excellonZerosFormatNoExcellon zero-suppression format (default decimal)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description is not required to restate those. It adds useful context about reading the last saved state rather than in-memory changes, but it does not clarify what specifically might be overwritten or other side effects beyond the annotation.

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 two sentences, front-loaded with the primary purpose and a clear list of supported options. The caveat about saved state is a necessary addition and is stated concisely. No fluff or redundancy.

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

Completeness4/5

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

Given the tool's 13 parameters and complexity, the description covers the key aspects: it names the output format, the source file requirement, and the major option groups. An output schema exists, so return values need not be described. It does not mention prerequisites like having the board open, but the 'current board' default in the schema partially addresses that.

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?

The schema provides 100% parameter coverage, so the baseline is 3. The description's summary of option families (format, origin, zero suppression, etc.) adds minimal extra meaning beyond the schema's own descriptions, but it does group related parameters helpfully.

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 ('Generate drill files') and resource ('for a PCB via kicad-cli'), clearly distinguishing it from sibling export tools like export_gerber. It enumerates the full option set, leaving no ambiguity about what the tool does.

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?

The description clearly implies the tool is for generating drill files, which is distinct from other exports. It adds a prerequisite ('Reads the last SAVED state of the .kicad_pcb'), signaling when it should be used (after saving). However, it does not explicitly name alternatives or state when not to use it.

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

export_dsnExport DsnA
Destructive

Export the current PCB to Specctra DSN format. Useful for manual Freerouting workflow or external autorouters.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathNoPath to .kicad_pcb file (default: current board)
outputPathNoOutput DSN file path (default: same dir as board)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent is aware of mutation risk. The description adds the format and use case but does not disclose side effects like overwriting an existing output file. With annotations present, this is acceptable but not enriched.

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 two short sentences: the first states the action, the second provides usage context. There is no redundant information, and the key information is front-loaded in the first sentence.

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 simple export tool with two optional parameters and an output schema, the description adequately covers what the tool does and when to use it. The annotations handle safety, and the schema handles parameter details, so no additional context is necessary.

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

Parameters3/5

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

Schema description coverage is 100%, with both boardPath and outputPath documented. The description mentions 'current PCB' which aligns with boardPath's default, but adds no extra meaning beyond the schema. The baseline of 3 is appropriate.

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 starts with 'Export the current PCB to Specctra DSN format,' which clearly specifies the action (export), the resource (current PCB), and the output format (Specctra DSN). It distinguishes itself from sibling export tools by naming the specific format and invoking the Freerouting workflow.

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?

The phrase 'Useful for manual Freerouting workflow or external autorouters' provides a clear when-to-use context, differentiating it from other export formats. It does not explicitly mention when not to use it or name alternative tools, but the guidance is specific enough.

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

export_gencadExport GencadA
Destructive

Export the PCB in GenCAD format via kicad-cli. Assembly/test interchange format. Exposes padstack flip, unique pin/footprint shape generation, drill-file origin, and store-origin-coordinate options. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
outputPathYesOutput .cad file path
uniquePinsNoGenerate unique pin names
flipBottomPadsNoFlip bottom footprint padstacks
useDrillOriginNoUse drill/place file origin as origin
storeOriginCoordNoSave the origin coordinates in the file
uniqueFootprintsNoGenerate a new shape for each footprint instance (do not reuse shapes)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds value beyond the annotations by noting that the tool reads the saved state rather than current unsaved changes, and highlights specific options that modify output. It does not contradict the destructiveHint annotation, though it could further explain file-overwrite 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?

The description is concise (3 sentences) and front-loaded with the primary purpose. Each sentence adds useful information: format and method, use case, supported options, and the saved-state behavior. No wasted words.

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?

The description covers the main purpose, use case, options, and a critical behavioral caveat (saved state), which is strong for a tool of this complexity. It does not explicitly state prerequisites like saving the board, but that is implied and the output schema is provided separately.

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

Parameters4/5

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

Schema coverage is 100%, so a baseline of 3 applies. The description reinforces meaning by naming the option groups (padstack flip, unique pin/footprint, origin options), which helps the agent connect parameters to high-level behavior without repeating the schema.

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 clearly states the action ('Export the PCB in GenCAD format via kicad-cli'), identifies the resource and format, and adds context as an 'Assembly/test interchange format'. It distinguishes from sibling export tools by the specific target format.

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?

The description gives clear context for when to use the tool ('Assembly/test interchange format') and a key behavioral constraint ('Reads the last SAVED state'). However, it does not explicitly name alternatives or exclusions, so the guidance is not fully explicit.

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

export_gerberExport GerberA
Destructive

Export PCB Gerber manufacturing files to a directory. Optionally include drill files, map files and choose layer subset.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersNoOptional array of layer names to export (default: all)
outputDirYesDirectory to save Gerber files
useAuxOriginNoWhether to use auxiliary axis as origin
generateMapFileNoWhether to generate a map file
generateDrillFilesNoWhether to generate drill files
useProtelExtensionsNoWhether to use Protel filename extensions

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already disclose that this is a destructive operation (destructiveHint=true) and readOnlyHint=false. The description adds that files are written to a directory and optional components, but it does not mention overwriting, required board state, or other side effects. This is acceptable but not rich.

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, efficient sentence that front-loads the core action and follows with optional modifiers. Every word earns its place, with no filler or redundancy.

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

Completeness4/5

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

The tool is a straightforward export operation with a clear purpose and output schema. It does not explicitly mention that it exports the current board, but this is implied by the PCB design context. Given the parameter schema and annotations, the description is mostly complete for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already documented. The description adds a summarized context for optional drill files, map files, and layer subset, but does not explain useAuxOrigin or useProtelExtensions beyond what the schema provides. Baseline 3 is appropriate.

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 clearly states a specific verb and resource: 'Export PCB Gerber manufacturing files to a directory.' It distinguishes from siblings by mentioning optional drill files, map files, and layer subset selection, differentiating it from drill-only and single-layer export 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?

The description implies usage context—when you need Gerber manufacturing files—but does not explicitly state when to use this tool versus alternatives like export_drill or export_gerber_single. No exclusions or explicit alternative references are provided.

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

export_gerbersExport GerbersA
Destructive

Plot Gerber files for a PCB via kicad-cli, exposing the full Plot-dialog option set (X2, netlist attributes, DNP handling, soldermask subtraction, precision, drill-file origin, stored board plot settings, etc). Reads the board from disk, so it reflects the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
noX2NoDo not use the extended X2 Gerber format
layersNoLayers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts']
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
noNetlistNoDo not generate netlist attributes
outputDirYesOutput directory for the Gerber files
precisionNoGerber coordinate precision: 5 or 6 (default 6)
noProtelExtNoUse KiCad Gerber file extensions instead of Protel
commonLayersNoLayers to include on every plot (e.g. ['Edge.Cuts'])
drawingSheetNoPath to a drawing sheet override
excludeValueNoExclude value text
excludeRefdesNoExclude reference designator text
boardPlotParamsNoUse the Gerber plot settings already stored in the board file
includeBorderTitleNoInclude border and title block
subtractSoldermaskNoSubtract soldermask from silkscreen
useDrillFileOriginNoUse the drill/place file origin
disableApertureMacrosNoDisable aperture macros
sketchPadsOnFabLayersNoDraw pad outlines and numbers on fab layers
hideDnpFootprintsOnFabLayersNoDon't plot DNP footprint text/graphics on fab layers
sketchDnpFootprintsOnFabLayersNoPlot DNP footprints in sketch mode on fab layers
crossoutDnpFootprintsOnFabLayersNoPlot an 'X' over DNP footprint courtyards and strike out their refdes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, so the description doesn't need to repeat that. It adds valuable context beyond annotations: the tool reads the board from disk and thus reflects the last saved state, which is a critical behavioral nuance. It also conveys that it invokes kicad-cli and exposes a wide set of options, but doesn't detail overwrite behavior or error conditions.

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 two sentences, wastes no words, and front-loads the core action ('Plot Gerber files for a PCB via kicad-cli'). The parenthetical enumeration is compact, and the caveat about saved state is placed efficiently.

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?

Given the high parameter count (21) and presence of an output schema, the description covers the essential context: purpose, mechanism (kicad-cli), full option set, and the important 'reads from disk' caveat. It does not list every parameter or when to override boardPath, but the schema and output schema fill those gaps. It is complete enough for an export tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 21 parameters clearly. The description groups many options in parentheses (X2, netlist attributes, DNP handling, etc.), which adds a high-level semantic grouping but provides no additional detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool plots Gerber files for a PCB via kicad-cli, with a specific verb ('Plot') and resource ('PCBs'). It also distinguishes itself from siblings like export_gerber_single by emphasizing the full Plot-dialog option set and the fact it reads the last saved board state.

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 description implies when to use this tool (when full Plot-dialog options are needed) but does not explicitly state when not to use it or mention alternatives like export_gerber or export_gerber_single. The note about reading from disk hints at a caveat but lacks explicit comparison or exclusion.

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

export_gerber_singleExport Gerber SingleA
Destructive

Plot the given layers to a SINGLE Gerber file via kicad-cli (pcb export gerber). Singular sibling of export_gerbers. Exposes the full single-file Plot option set (X2, netlist attributes, DNP fab-layer modes, soldermask subtraction, aperture macros, drill-file origin, precision, Protel extension). Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
noX2NoDo not use the extended X2 Gerber format
layersNoLayers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts']
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
noNetlistNoDo not generate netlist attributes
precisionNoGerber coordinate precision: 5 or 6 (default 6)
outputPathYesOutput Gerber file path
noProtelExtNoUse KiCad Gerber file extensions instead of Protel
commonLayersNoLayers to include on every plot (e.g. ['Edge.Cuts'])
drawingSheetNoPath to a drawing sheet override
excludeValueNoExclude value text
excludeRefdesNoExclude reference designator text
includeBorderTitleNoInclude the border and title block
subtractSoldermaskNoSubtract soldermask from silkscreen
useDrillFileOriginNoUse the drill/place file origin
disableApertureMacrosNoDisable aperture macros
sketchPadsOnFabLayersNoDraw pad outlines and numbers on fab layers
hideDnpFootprintsOnFabLayersNoDon't plot DNP footprint text/graphics on fab layers
sketchDnpFootprintsOnFabLayersNoPlot DNP footprints in sketch mode on fab layers
crossoutDnpFootprintsOnFabLayersNoPlot an 'X' over DNP footprint courtyards and strike out their refdes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as destructive. The description adds that it reads the 'last SAVED state' of the .kicad_pcb, a non-obvious constraint, and specifies the underlying CLI command. It doesn't elaborate on file overwriting, but the destructive hint covers that aspect.

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 sentences, front-loaded with the primary action. Each sentence adds distinct value: function, sibling differentiation, and option summary. No redundant content; the long list of options is still compact and relevant.

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?

Given the tool's complexity (20 params, output schema present), the description offers a solid high-level overview including the critical saved-state behavior and the option families. Minor gaps like default layer handling remain, but the schema covers parameter specifics.

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?

The schema provides complete descriptions for all 20 parameters (100% coverage). The description groups them into broad categories (e.g., 'DNP fab-layer modes') but adds no syntax, dependency, or default-value details beyond the schema, so the baseline 3 is appropriate.

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?

Clearly states the tool's function: plotting layers to a SINGLE Gerber file via kicad-cli. The emphasis on 'SINGLE' and the phrase 'Singular sibling of export_gerbers' explicitly distinguishes it from the plural-export sibling.

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?

Explicitly identifies its sibling relationship with export_gerbers, implying a use case for single-file output. However, it does not explicitly contrast with the similarly named export_gerber tool or mention when not to use it, so the guidance is strong but not fully explicit.

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

export_ipc2581Export Ipc2581A
Destructive

Export the PCB in IPC-2581 format via kicad-cli. Single-file MES/CAD interchange carrying placement, nets and BOM part data inline. The bomCol* params map schematic fields to the embedded BOM columns (e.g. internal P/N, manufacturer P/N) — useful for assembly/MES imports. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsNoUnits (default mm)
versionNoIPC-2581 standard version (default 'C')
compressNoCompress the output
boardPathNoPath to the .kicad_pcb (default: current board)
bomColMfgNoSchematic field to use for the BOM Manufacturer column
defineVarNoProject variable overrides as 'KEY=VALUE' strings
precisionNoCoordinate precision (default 6)
bomColDistNoValue to insert into the BOM Distributor column
outputPathYesOutput .xml file path
bomColIntIdNoSchematic field to use for the BOM Internal Id column
bomColMfgPnNoSchematic field to use for the BOM Manufacturer Part Number column
bomColDistPnNoSchematic field to use for the BOM Distributor Part Number column
drawingSheetNoPath to a drawing sheet override

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already include destructiveHint=true and readOnlyHint=false, and the description adds an important behavioral trait: 'Reads the last SAVED state of the .kicad_pcb.' This warns that unsaved changes are not included, which annotations do not cover. The description does not contradict any annotation.

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

Conciseness5/5

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

The description is concise: two sentences. The first sentence states the core action and format; the second provides BOM parameter context and the saved-state caveat. There is no filler or redundant information; every sentence 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?

Given the tool has 13 parameters, a required outputPath, complete schema coverage, an output schema, and annotations, the description adequately covers the essential aspects: purpose, format content, BOM mapping rationale, and the saved-state behavior. It does not need to list all parameters because the schema documents them precisely.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by grouping the bomCol* parameters: 'The bomCol* params map schematic fields to the embedded BOM columns (e.g. internal P/N, manufacturer P/N).' This provides combined context beyond each individual schema description, such as recognizing that bomColMfg and bomColMfgPn belong to a related set.

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 the action explicitly: 'Export the PCB in IPC-2581 format via kicad-cli.' It further clarifies the output is a single-file MES/CAD interchange carrying placement, nets, and BOM data inline, which distinguishes it from sibling export tools like export_gerber or export_bom. This is a specific verb+resource+format statement.

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?

The description implies the tool is intended for assembly/MES imports by saying 'useful for assembly/MES imports.' However, it does not explicitly name alternatives or state when not to use this tool compared to other export options. It provides clear context but lacks explicit exclusions.

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

export_ipcd356Export Ipcd356A
Destructive

Generate an IPC-D-356 bare-board electrical-test netlist via kicad-cli. Consumed by flying-probe and bed-of-nails testers. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathNoPath to the .kicad_pcb (default: current board)
outputPathYesOutput .ipc / netlist file path

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, which the description doesn't contradict. The description adds valuable context beyond annotations: that it 'Reads the last SAVED state of the .kicad_pcb,' informing the user that unsaved changes are not included, and notes the generation is via kicad-cli. It does not detail what gets destroyed, but the annotation already signals destructiveness.

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, information-dense sentences. The first sentence states the primary action, the second gives consumers, the third warns about saved-state dependence. No wasted words.

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?

Given the schema covers parameters and the output schema presumably documents return values, the description adequately covers the tool's purpose, source, and intended consumers. It doesn't mention prerequisites like board must be saved, but the saved-state note implies it. It could mention when to prefer other formats, but that's a guidelines issue. Overall sufficient.

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

Parameters3/5

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

Schema description coverage is 100%: both boardPath (default current board) and outputPath (output .ipc/netlist file path) are documented in the schema. The description adds little parameter-specific detail beyond the schema, so a baseline 3 is appropriate.

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 uses a specific verb 'Generate' with a specific resource 'IPC-D-356 bare-board electrical-test netlist' and names the tool 'kicad-cli'. It distinguishes from sibling export tools like export_netlist or export_ipc2581 by specifying the format and test-consumer context.

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 states the output is 'Consumed by flying-probe and bed-of-nails testers,' giving clear context for when this export is needed. However, it does not explicitly mention alternatives or exclusions (e.g., when to use export_ipc2581 instead), so it lacks explicit when-not guidance.

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

export_netlistExport NetlistA
Destructive

Export the schematic netlist to a file using kicad-cli. Supports KiCad XML (default), Spice (for simulation), Cadstar, and OrcadPCB2 formats. Use this when you need to write a netlist file to disk — for example to produce a SPICE file for simulation or to diff against a reference. To get net/component data inline without writing a file, use generate_netlist instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoNetlist format (default: KiCad)
outputPathYesAbsolute path for the output file (e.g. /tmp/design.spice)
schematicPathYesAbsolute path to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare destructiveHint=true, and the description reinforces this by specifying it writes a netlist file to disk. It adds context about using kicad-cli and supported formats, which clarifies the operation's behavior beyond the bare annotation.

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

Conciseness5/5

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

Two sentences, front-loaded with the action, and includes the key alternative. No wasted words.

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 covers tool purpose, usage context, formats, and alternative. With an output schema present and 100% parameter coverage, the description is sufficiently complete for an export tool.

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 provides full descriptions for all three parameters, so the description doesn't need to explain them. It adds minor contextual meaning by noting Spice is for simulation and outputPath is good for diffing, but doesn't alter parameter syntax.

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 clearly states the tool exports the schematic netlist to a file using kicad-cli, listing specific formats. It distinguishes itself from the sibling generate_netlist by explicitly indicating file output versus inline data.

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 explicitly says 'Use this when you need to write a netlist file to disk' and gives example use cases (SPICE simulation, diffing). It also names the alternative tool generate_netlist for inline data, providing clear when/when-not guidance.

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

export_odbExport OdbA
Destructive

Export the PCB in ODB++ format via kicad-cli. Single job archive (copper, drill, placement, components, nets, outline) widely used by CAM/MES/assembly. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitsNoUnits (default mm)
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
precisionNoCoordinate precision (default 2)
outputPathYesOutput file path (archive or directory per compression)
compressionNoOutput container/compression mode (default zip)
drawingSheetNoPath to a drawing sheet override

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description adds valuable behavioral context: it reads the last SAVED state of the .kicad_pcb, implying unsaved changes are ignored. It also notes the output is a single job archive, providing content insight beyond the schema. No contradiction with 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?

The description is three focused sentences: first states the action and method, second provides the archive contents and use case, third notes the saved-state behavior. Every sentence earns its place with no redundancy or filler.

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?

The description covers the tool's purpose, key behavioral limitation (saved state only), and typical use cases. An output schema exists (per context signals), and annotations cover destructive behavior, so the description does not need to explain return values. A small gap remains in not mentioning how parameters like compression affect the output, but overall it is sufficiently complete for a 7-param export tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters. The description adds some context about output contents but does not explain parameter semantics (e.g., units, precision, compression). Baseline 3 is appropriate since the schema carries the parameter documentation burden.

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 clearly states the tool exports the PCB in ODB++ format via kicad-cli, with a specific verb and resource. It distinguishes from sibling export tools by naming the specific format and listing the archive contents (copper, drill, placement, components, nets, outline), which is unique among the siblings.

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?

The description indicates the tool is appropriate for CAM/MES/assembly workflows, providing a clear use case context. However, it does not explicitly state when not to use it or mention alternative export formats, so it stops short of full when/when-not guidance.

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

export_pcb_dxfExport Pcb DxfA
Destructive

Plot the PCB layout to DXF via kicad-cli, exposing the full layer-plot option set (layer + common-layer lists, refdes/value exclusion, soldermask subtraction, use-contours, use-drill-origin, border+title, output units, DNP fab-layer modes, drill shape, single/multi output modes). Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersNoLayers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts']
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
modeMultiNoMulti output; output path is a directory (GUI-like plotting)
modeSingleNoSingle file; output path is full path; LAYER_LIST controls all layers
outputPathYesOutput DXF file path (or directory in multi mode)
outputUnitsNoOutput units (default in)
useContoursNoPlot graphic items using their contours
commonLayersNoLayers to include on every plot (e.g. ['Edge.Cuts'])
drawingSheetNoPath to a drawing sheet override
excludeValueNoExclude value text
drillShapeOptNoPad/via drill shape option (0 none, 1 small, 2 actual; default 2)
excludeRefdesNoExclude reference designator text
useDrillOriginNoPlot using the drill/place file origin
includeBorderTitleNoInclude the border and title block
subtractSoldermaskNoSubtract soldermask from silkscreen
sketchPadsOnFabLayersNoDraw pad outlines and numbers on fab layers
hideDnpFootprintsOnFabLayersNoDon't plot DNP footprint text/graphics on fab layers
sketchDnpFootprintsOnFabLayersNoPlot DNP footprints in sketch mode on fab layers
crossoutDnpFootprintsOnFabLayersNoPlot an 'X' over DNP footprint courtyards and strike out their refdes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, so the write nature is known. The description adds valuable behavioral context beyond this: it reads the last SAVED state, warning that unsaved changes are not included. This is a meaningful disclosure not present in 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.

Conciseness4/5

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

The description is a single dense sentence that front-loads the action and resource, then lists option groups. Every listed item maps to schema parameters without filler. It's slightly run-on but efficient and appropriately sized for a complex tool.

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 20 parameters, an output schema, and a destructive annotation, the description provides a high-level overview of the option set and the saved-state behavior. It doesn't explain return values (output schema covers that) or prerequisites like an open board, but the phrase 'PCB layout' and the saved-state note together offer sufficient context for this complex exporter.

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

Parameters4/5

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

Schema coverage is 100%, so each parameter is individually described. The description adds semantic grouping and synonyms (e.g., 'refdes/value exclusion' for excludeRefdes/excludeValue, 'single/multi output modes' for modeSingle/modeMulti), helping the agent map high-level intent to the specific parameter names.

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 clearly states the action and resource: 'Plot the PCB layout to DXF via kicad-cli'. This specific verb+resource distinguishes it from sibling tools like export_gerber, export_pdf, export_svg, and export_sch_dxf, making it unambiguous.

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?

The tool's use case is implied by its name and description as the PCB DXF exporter. It doesn't explicitly name alternatives, but the caveat 'Reads the last SAVED state' gives an important usage condition—ensure the board is saved before exporting. No formal exclusions are stated, so it's clear but not exhaustive.

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

export_pcb_pdfExport Pcb PdfA
Destructive

Plot the PCB layout to PDF via kicad-cli, exposing the full layer-plot option set (layer + common-layer lists, mirror, refdes/value exclusion, border+title, soldermask subtraction, DNP fab-layer modes, negative, black-and-white, theme, drill shape, and single/separate/multipage output modes). Rich CLI sibling of export_pdf. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoColor theme to use (default: PCB editor settings)
layersNoLayers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts']
mirrorNoMirror the board (to show bottom layers)
negativeNoPlot as negative
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
modeSingleNoSingle file; output path is full path; LAYER_LIST controls all layers
outputPathYesOutput PDF file path (or directory in separate mode)
commonLayersNoLayers to include on every plot (e.g. ['Edge.Cuts'])
drawingSheetNoPath to a drawing sheet override
excludeValueNoExclude value text
modeSeparateNoPlot the layers to individual PDF files
blackAndWhiteNoBlack and white only
drillShapeOptNoPad/via drill shape option (0 none, 1 small, 2 actual; default 2)
excludeRefdesNoExclude reference designator text
modeMultipageNoPlot the layers to a single multi-page PDF
includeBorderTitleNoInclude the border and title block
subtractSoldermaskNoSubtract soldermask from silkscreen
sketchPadsOnFabLayersNoDraw pad outlines and numbers on fab layers
hideDnpFootprintsOnFabLayersNoDon't plot DNP footprint text/graphics on fab layers
sketchDnpFootprintsOnFabLayersNoPlot DNP footprints in sketch mode on fab layers
crossoutDnpFootprintsOnFabLayersNoPlot an 'X' over DNP footprint courtyards and strike out their refdes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The description adds a valuable behavioral detail beyond annotations: 'Reads the last SAVED state of the .kicad_pcb', which is crucial for understanding that unsaved changes are ignored. The annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. However, the description does not elaborate on the destructive behavior (e.g., whether it overwrites existing output files) or any side effects of file creation.

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 extremely concise at two sentences. The first sentence is dense but well-structured, front-loading the core purpose and listing the option set. The second sentence adds differentiation and the critical saved-state caveat. Every sentence earns its place with no fluff.

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?

Given the tool's complexity (22 parameters), the description provides a sufficient high-level overview. The output schema exists, so return-value details are handled. The description covers the key context: CLI-based, broad options, saved-state requirement, and sibling relation. The main gap is not clarifying the exclusivity or interplay of the output mode flags (modeSingle, modeSeparate, modeMultipage), which could confuse an agent, but the rich schema partially compensates.

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?

The schema has 100% parameter description coverage, so the baseline is 3. The description adds value by grouping the parameters into categories ('layer + common-layer lists, mirror, refdes/value exclusion, border+title, soldermask subtraction, DNP fab-layer modes, negative, black-and-white, theme, drill shape, and single/separate/multipage output modes'), which helps the agent understand the scope of options. However, it does not disambiguate interactions between mode parameters (e.g., single vs separate vs multipage), which could be ambiguous.

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 clearly states the tool's purpose: 'Plot the PCB layout to PDF via kicad-cli'. It names the specific resource (PCB layout), the action (plot to PDF), and the mechanism (kicad-cli). It also distinguishes itself from sibling export_pdf by calling itself a 'Rich CLI sibling of export_pdf', making its differentiated role clear.

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?

The description provides implicit usage guidance by highlighting the 'full layer-plot option set' and positioning the tool as a 'Rich CLI sibling of export_pdf', suggesting it is the advanced alternative. It also adds an important constraint: 'Reads the last SAVED state of the .kicad_pcb', which informs the agent to save the board first. However, it does not explicitly state when to avoid this tool or name specific alternatives beyond export_pdf.

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

export_pcb_svgExport Pcb SvgA
Destructive

Plot the PCB layout to SVG via kicad-cli, exposing the full layer-plot option set (layer + common-layer lists, mirror, soldermask subtraction, negative, black-and-white, theme, DNP fab-layer modes, page-size mode, fit-page-to-board, exclude-drawing-sheet, drill shape, single/multi output modes). Rich CLI sibling of export_svg. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoColor theme to use (default: PCB editor settings)
layersNoLayers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts']
mirrorNoMirror the board (to show bottom layers)
negativeNoPlot as negative
boardPathNoPath to the .kicad_pcb (default: current board)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
modeMultiNoMulti output; output path is a directory (GUI-like plotting)
modeSingleNoSingle file; output path is full path; LAYER_LIST controls all layers
outputPathYesOutput SVG file path (or directory in multi mode)
commonLayersNoLayers to include on every plot (e.g. ['Edge.Cuts'])
drawingSheetNoPath to a drawing sheet override
pageSizeModeNoPage sizing mode (0 frame+title block, 1 current page size, 2 board area only)
blackAndWhiteNoBlack and white only
drillShapeOptNoPad/via drill shape option (0 none, 1 small, 2 actual; default 2)
fitPageToBoardNoFit the page to the board
subtractSoldermaskNoSubtract soldermask from silkscreen
excludeDrawingSheetNoNo drawing sheet
sketchPadsOnFabLayersNoDraw pad outlines and numbers on fab layers
hideDnpFootprintsOnFabLayersNoDon't plot DNP footprint text/graphics on fab layers
sketchDnpFootprintsOnFabLayersNoPlot DNP footprints in sketch mode on fab layers
crossoutDnpFootprintsOnFabLayersNoPlot an 'X' over DNP footprint courtyards and strike out their refdes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the description does not need to restate safety. It adds valuable context beyond annotations: that it reads the last saved state (not live memory) and uses kicad-cli as an external mechanism. These are useful behavioral traits not inferable from the annotations alone.

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

Conciseness4/5

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

The description is three sentences, with the core purpose front-loaded. The first sentence is long but packed with relevant option names; it's not wasteful. The sibling relation and saved-state caveat are placed logically. Slightly verbose in listing every option, but acceptable for a tool with 21 parameters.

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 tool with 21 parameters and a rich schema, the description captures the essential function, the external CLI dependency, a critical behavioral note (saved state), and its relationship to a simpler sibling. It doesn't detail return values, but an output schema is present. The description is sufficiently complete given the structured context.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description enumerates several parameter groups (layer lists, mirror, negative, etc.) but does not add meaning beyond what the schema already provides. It reinforces that these options are available, but doesn't clarify syntax or interplay. Thus it meets but does not exceed the baseline.

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 clearly states the tool's action: 'Plot the PCB layout to SVG via kicad-cli'. It also distinguishes from the sibling tool by calling itself 'Rich CLI sibling of export_svg', indicating a fuller-featured variant. The specific mention of the full layer-plot option set clarifies its scope.

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?

The description provides clear usage context: it is the 'Rich CLI sibling of export_svg', implying use when full options are needed. It also highlights a critical prerequisite: 'Reads the last SAVED state of the .kicad_pcb', warning users to save before invoking. No explicit exclusions are stated, but context is clear enough for an informed choice.

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

export_pdfExport PdfA
Destructive

Export the PCB layout as a PDF document, optionally selecting layers, page size and colour mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersNoOptional array of layer names to include (default: all)
pageSizeNoPage size
outputPathYesPath to save the PDF file
blackAndWhiteNoWhether to export in black and white
frameReferenceNoWhether to include frame reference

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already include destructiveHint=true, signaling that the tool writes to the filesystem and may overwrite existing files. The description adds no behavioral context beyond what the schema and annotations provide, such as overwrite specifics or return behavior, but it does not contradict 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?

The description is a single concise sentence of 16 words, front-loaded with the verb and resource, and every word adds value. It avoids redundancy with the schema while effectively summarizing the tool's core function.

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?

Given the output schema is present, the description need not explain return values. With 100% schema coverage and a clear statement of what the tool does, the description is mostly complete for a simple export tool. However, given the large number of sibling export tools, a brief note about when to prefer this over export_pcb_pdf or export_schematic_pdf would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (layers, pageSize, outputPath, blackAndWhite, frameReference) are already documented. The description's mention of 'layers, page size and colour mode' paraphrases the schema but adds no new meaning beyond what the parameter descriptions already convey.

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 clearly states the verb 'Export', the resource 'PCB layout', and the output format 'PDF document', making the tool's purpose apparent. However, it does not explicitly distinguish from sibling tool export_pcb_pdf, which appears to target the same resource and format, so it lacks explicit sibling differentiation.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool to export the PCB layout as a PDF, with optional layer, page size, and color mode selections. It implies the primary use case but does not mention when not to use it or point to alternatives such as export_schematic_pdf, so it stops short of full guidance with exclusions.

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

export_posExport PosA
Destructive

Generate a component placement (position / pick-and-place) file via kicad-cli, exposing the full CLI option set (side, format, units, bottom-negate-X, drill-file origin, SMD-only, exclude through-hole / DNP, gerber board edge). Rich CLI sibling of export_position_file. Reads the last SAVED state of the .kicad_pcb.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoBoard side (gerber format only supports front or back; default both)
unitsNoOutput units; ascii or csv format only (default in)
formatNoOutput format (default ascii)
smdOnlyNoInclude only SMD footprints (ascii/csv only)
boardPathNoPath to the .kicad_pcb (default: current board)
excludeDnpNoExclude all footprints with the Do Not Populate flag set
outputPathYesOutput position file path
excludeFpThNoExclude all footprints with through-hole pads (ascii/csv only)
bottomNegateXNoUse negative X coordinates for bottom-layer footprints (ascii/csv only)
gerberBoardEdgeNoInclude board edge layer (Gerber only)
useDrillFileOriginNoUse drill/place file origin (ascii/csv only)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true; description adds the behavioral trait that it reads the last saved state, which is valuable. It also mentions exposure of the full CLI option set, giving a sense of scope. No contradiction with 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?

Two dense sentences, front-loaded with purpose, then sibling relationship, then the critical save-state caveat. No wasted words.

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?

Given the complexity (11 params, output schema exists), the description covers the key caveat and competitor tool. It doesn't describe the output file, but that's handled by schema. Could be more explicit about when to choose this over export_position_file, but adequate.

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 covers all 11 parameters with descriptions, so baseline 3. The description lists parameter names but does not add new meaning; it just mirrors the schema. The 'full CLI option set' phrase is generic.

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?

Description clearly states it generates a component placement file via kicad-cli, with a specific verb and resource. It also distinguishes itself from the sibling export_position_file by calling itself a 'Rich CLI sibling'.

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?

Explicitly positions itself as a richer alternative to export_position_file, giving context on when to use it. The caveat about reading the 'last SAVED state' adds a prerequisite. Does not fully enumerate exclusions but sufficient.

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

export_position_fileExport Position FileA
Destructive

Export a component placement/position file through kicad-cli. This compact alias of export_pos exposes the common side, format, and unit options.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoWhich board side to include (default: both)
unitsNoUnits to use (default: in)
formatNoFile format (default: ascii)
boardPathNoPath to the .kicad_pcb (default: current board)
outputPathYesPath to save the position file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, so the agent knows writes can be destructive. The description adds that it uses kicad-cli and is a compact alias, but doesn't elaborate on potential side effects like overwriting existing outputPath files. This adds minimal behavior 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?

The description is two sentences, front-loads the purpose, and clearly states the tool's scope. No redundant 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?

Given the simple export function, full schema coverage, and presence of an output schema, the description is adequate. It identifies the tool's purpose, the fact it's a compact alias, and the core exposed options. Could benefit from an explicit note on file overwriting behavior, but annotations partially compensate.

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?

The schema fully describes all five parameters with 100% coverage, including enums and defaults. The description only mentions side, format, and units, which are already clear from the schema; it doesn't add additional meaning or relationships beyond what the schema provides.

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 clearly states the function—'Export a component placement/position file through kicad-cli'—and differentiates from the sibling export_pos by characterizing it as a 'compact alias' exposing common options. This makes the tool's purpose unambiguous and distinguishes it from other export 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?

It provides context for when to use this tool by noting it's a compact alias of export_pos, highlighting the common side, format, and unit options. However, it doesn't explicitly state exclusions or when to prefer the full export_pos, leaving some inference to the agent.

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

export_sch_bomExport Sch BomA
Destructive

Generate a Bill of Materials from a schematic via kicad-cli (sch export bom), exposing the full option set (presets, field/label lists, grouping, sorting, filtering, DNP/excluded-from-BOM handling, and field/string/ref delimiters). schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoOrdered comma list of fields to export (supports special substitutions)
filterNoFilter string to remove output lines
labelsNoOrdered comma list of labels to apply to the exported fields
presetNoNamed BOM preset from the schematic, e.g. 'Grouped By Value'
groupByNoFields to group references by when field values match
sortAscNoSort ascending ('true') or descending ('false')
keepTabsNoKeep tab characters from input fields
sortFieldNoField name to sort by (default Reference)
excludeDnpNoExclude symbols marked Do-Not-Populate
outputPathYesOutput BOM file path
formatPresetNoNamed BOM format preset from the schematic, e.g. 'CSV'
refDelimiterNoCharacter between individual references (default ',')
schematicPathYesPath to the .kicad_sch (required)
fieldDelimiterNoSeparator between output fields/columns (default ',')
keepLineBreaksNoKeep line break characters from input fields
stringDelimiterNoCharacter to surround fields with (default '"')
refRangeDelimiterNoCharacter for reference ranges; blank disables ranges (default '-')
includeExcludedFromBomNoInclude symbols marked 'Exclude from BOM'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

The description adds behavioral context beyond the annotations by specifying the mechanism 'via kicad-cli' and the specific subcommand, which signals an external tool invocation. It also mentions 'exposing the full option set', giving insight into the tool's breadth. The destructiveHint=true annotation already flags potential destructive behavior, but the description does not detail what may be overwritten (e.g., the output file). Thus it provides some but not full transparency.

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 concise, consisting of two sentences. The first sentence states the purpose and scope, and the second highlights the required parameter. Every word adds value, with no redundant or filler content.

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?

Given the tool's complexity (18 parameters), the presence of an output schema, and detailed annotations, the description provides an adequate high-level overview. It captures the core purpose and parameter categories, while the schema and annotations fill in the technical details. It does not explain return values because an output schema exists, and it avoids redundant repetition.

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?

While schema coverage is 100%, the description enhances understanding by grouping parameters into categories: 'presets, field/label lists, grouping, sorting, filtering, DNP/excluded-from-BOM handling, and field/string/ref delimiters'. It also emphasizes `schematicPath` as required, which is a key usage point. This adds meaningful semantic organization beyond the individual field descriptions.

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 uses a specific verb 'Generate' and clearly identifies the resource: 'a Bill of Materials from a schematic'. It also mentions the underlying CLI command (`sch export bom`), which gives precise scope. This distinguishes it from sibling tools like `export_bom` or `export_netlist` by explicitly targeting schematic BOM export.

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?

The description clearly states the context for use: 'Generate a Bill of Materials from a schematic', which tells the agent when to choose this tool. It also notes that `schematicPath` is required. However, it does not explicitly mention alternatives or when not to use this tool, so it falls short of a 5.

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

export_sch_dxfExport Sch DxfA
Destructive

Export a schematic to DXF via kicad-cli (sch export dxf), one DXF per page into a directory. Exposes drawing-sheet override, theme, black-and-white, exclude-drawing-sheet, default-font, and page selection. schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoComma list of page numbers to print (blank = all pages)
themeNoColor theme to use (default: schematic settings)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
outputDirYesOutput directory for the DXF files
defaultFontNoDefault font name
drawingSheetNoPath to a drawing sheet override
blackAndWhiteNoBlack and white only
schematicPathYesPath to the .kicad_sch (required)
excludeDrawingSheetNoNo drawing sheet

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, so the description does not need to restate that. It adds useful behavioral context by mentioning that the result is one DXF file per page written to a directory, and it enumerates the exposed options. It does not discuss overwrite behavior or directory creation, but given the annotation coverage, this is acceptable.

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 only two sentences long, front-loaded with the verb and resource, and the second sentence efficiently enumerates the exposed options. Every word contributes meaning, with no redundancy or filler.

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?

The description is comprehensive for an agent to select and invoke the tool: it states the output form, lists key options, flags the required schematicPath, and mentions the CLI integration. The schema and output schema cover the remaining parameter and return details. A minor gap is that outputDir is also required but not highlighted, though it is visible in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description lists several parameter groups (drawing-sheet override, theme, black-and-white, etc.) that map to schema properties, but it does not add format, default, or usage details beyond what the schema already provides. It highlights schematicPath as REQUIRED but omits outputDir from the summary.

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 clearly states the action ('Export a schematic to DXF'), the target resource, and even the underlying command (`kicad-cli sch export dxf`). It also specifies the multi-page output behavior ('one DXF per page into a directory'), which distinguishes it from sibling schematic export tools like export_sch_pdf or export_sch_svg.

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 usage is implied by the format (DXF) and command reference, but there is no explicit guidance on when to choose this tool over siblings such as export_pcb_dxf or export_sch_pdf. It does not state any exclusions or alternatives, leaving the agent to infer the right context.

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

export_schematic_pdfExport Schematic PdfB
Destructive

Export schematic to PDF format using kicad-cli.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathYesOutput PDF file path
blackAndWhiteNoExport in black and white
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true, so the description need not repeat that. However, it adds minimal behavioral context beyond mentioning 'using kicad-cli', which hints at external tool dependency. It does not disclose that exporting may overwrite the output file or that kicad-cli must be installed.

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, concise sentence that front-loads the essential action and format. No wasted words or redundant information.

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?

The description is adequate for a simple export tool, and the schema/annotations cover the key details. However, it omits behavioral specifics like file overwriting behavior and doesn't clarify the relationship to similar export tools, leaving some contextual gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself provides clear parameter descriptions (e.g., output path, blackAndWhite flag, schematic file path). The description adds no extra parameter-level meaning, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (Export), resource (schematic), and output format (PDF), making the primary purpose obvious. However, it does not distinguish this tool from the similarly named sibling 'export_sch_pdf', which likely serves the same function.

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 guidance is provided on when to use this tool vs. alternatives like export_sch_pdf or export_pdf. The description simply states the function without contextualizing its use among the many export-related siblings.

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

export_schematic_svgExport Schematic SvgB
Destructive

Export schematic to SVG format using kicad-cli.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathYesOutput SVG file path
blackAndWhiteNoExport in black and white
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The description adds the implementation detail 'using kicad-cli', which is not present in the annotations. However, it does not disclose side effects such as overwriting existing files, which is relevant given the destructiveHint: true annotation. The annotation already signals a write operation, so the description adds only marginal 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?

The description is a single, concise sentence with no wasted words. It is immediately clear what the tool does and the method used. It is appropriately sized and front-loaded.

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

Completeness3/5

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

With a complete input schema, an output schema, and annotations providing safety information, the description is adequate but has gaps. It lacks usage guidelines and fails to distinguish from similar export tools. It does not mention overwriting behavior, but given the rich structured data, this is not critical. Overall, it is minimally viable.

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?

The input schema provides 100% coverage with clear descriptions for all three parameters (outputPath, blackAndWhite, schematicPath). The tool description itself adds no additional parameter meaning beyond what the schema already contains, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Export schematic to SVG format') and resource (schematic). It is specific and informative. However, it does not differentiate from the sibling tool 'export_sch_svg', which likely performs a similar function, so it lacks explicit sibling distinction.

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?

The description provides no guidance on when to use this tool versus other export tools such as 'export_sch_svg', 'export_svg', or 'export_pcb_svg'. There is no mention of preferred contexts, prerequisites, or alternatives, leaving the agent without comparative usage information.

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

export_sch_hpglExport Sch HpglA
Destructive

Export a schematic to HPGL via kicad-cli (sch export hpgl), one plot per page into a directory. Exposes drawing-sheet override, exclude-drawing-sheet, default-font, page selection, pen size, and the origin/scale mode. schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoComma list of page numbers to print (blank = all pages)
originNoOrigin and scale: 0 bottom left, 1 centered, 2 page fit, 3 content fit
penSizeNoPen size in mm (default 0.5)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
outputDirYesOutput directory for the HPGL files
defaultFontNoDefault font name
drawingSheetNoPath to a drawing sheet override
schematicPathYesPath to the .kicad_sch (required)
excludeDrawingSheetNoNo drawing sheet

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, and the description adds that output is one plot per page into a directory, which explains the file-creation behavior. However, it does not clarify whether existing files in the output directory are overwritten or other side effects, leaving the destructive nature under-explained.

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 two sentences: the first states the core action and output behavior, the second lists the parameter groups and the required input. It is front-loaded, uses no filler, and every sentence contributes meaningful information.

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 tool with 9 parameters and an output schema, the description covers the essential purpose and parameter categories, but it omits practical details like whether outputDir is required (schema lists it as required, but description only highlights schematicPath) and potential file-overwrite behavior. The output schema exists, so return values need not be described, yet side-effect caveats are 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 coverage is 100%, so baseline is 3. The description adds a concise summary of exposed options (drawing-sheet override, page selection, pen size, origin/scale mode) and flags schematicPath as required, which helps confirm which parameters are available without reading each schema description. It does not go into deep parameter-specific semantics beyond the schema, but the enumeration adds value.

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 clearly states the action: 'Export a schematic to HPGL via kicad-cli (`sch export hpgl`)' with the output format and structure ('one plot per page into a directory'). This distinguishes it from sibling export tools like export_sch_pdf or export_sch_svg by naming the specific format and command.

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?

Provides strong context by tying the operation to kicad-cli and noting schematicPath is required, but does not explicitly state when to choose HPGL over other export formats or any preconditions/limitations. The absence of direct alternative comparison lowers the score.

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

export_sch_pdfExport Sch PdfB
Destructive

Export a schematic to PDF via kicad-cli (sch export pdf), exposing the full option set (drawing-sheet override, theme, black-and-white, exclude-drawing-sheet, default-font, the PDF property-popup / hierarchical-link / metadata excludes, no-background-color, and page selection). schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoComma list of page numbers to print (blank = all pages)
themeNoColor theme to use (default: schematic settings)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
outputPathYesOutput PDF file path
defaultFontNoDefault font name
drawingSheetNoPath to a drawing sheet override
blackAndWhiteNoBlack and white only
schematicPathYesPath to the .kicad_sch (required)
noBackgroundColorNoAvoid setting a background color (regardless of theme)
excludePdfMetadataNoDo not generate PDF metadata from AUTHOR and SUBJECT variables
excludeDrawingSheetNoNo drawing sheet
excludePdfPropertyPopupsNoDo not generate property popups in PDF
excludePdfHierarchicalLinksNoDo not generate clickable links for hierarchical elements in PDF

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the description need not repeat that. It adds useful context about using kicad-cli and the set of options, but does not explain what destructive means (e.g., overwriting output) or other side effects. This is acceptable given annotation coverage but not exceptional.

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 a single, front-loaded sentence starting with the core purpose. The parenthetical option list is long but compact and scannable, though it partly duplicates schema information. No unnecessary filler.

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

Completeness3/5

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

For a complex 13-parameter tool with an output schema, the description covers the main function and option set but omits critical contextual details like overwriting behavior and the fact that outputPath is also required. It is minimally viable but leaves gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already well documented. The description broadly enumerates many option names but adds little meaning beyond the schema, only highlighting schematicPath as required. Baseline 3 is appropriate.

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 clearly states the tool's function: 'Export a schematic to PDF via kicad-cli (`sch export pdf`)'. It provides a specific verb, resource, and underlying command, and distinguishes itself from sibling tools by focusing on schematic PDF export with the full option set.

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 guidance is provided. The description does not compare this tool to siblings like export_pdf or export_schematic_pdf, nor does it state conditions for choosing it over alternatives. The only usage hint is that schematicPath is required, which is already in the schema.

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

export_sch_psExport Sch PsA
Destructive

Export a schematic to PostScript via kicad-cli (sch export ps), one PS per page into a directory. Exposes drawing-sheet override, theme, black-and-white, exclude-drawing-sheet, default-font, no-background-color, and page selection. schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoComma list of page numbers to print (blank = all pages)
themeNoColor theme to use (default: schematic settings)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
outputDirYesOutput directory for the PostScript files
defaultFontNoDefault font name
drawingSheetNoPath to a drawing sheet override
blackAndWhiteNoBlack and white only
schematicPathYesPath to the .kicad_sch (required)
noBackgroundColorNoAvoid setting a background color (regardless of theme)
excludeDrawingSheetNoNo drawing sheet

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description adds meaningful behavior beyond annotations: it uses kicad-cli, outputs one PS per page into a directory, and exposes several options. Since destructiveHint is true, the agent knows it writes files, but the description does not mention whether outputDir must exist or if overwriting occurs. Still, the added context is valuable and consistent with 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?

The description is compact and well-structured: two sentences that front-load the core purpose and then summarize options and highlight the required parameter. Every phrase adds relevant information without unnecessary fluff.

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?

Given the tool's complexity (10 parameters), full schema coverage, and presence of an output schema, the description provides sufficient context: format, output structure (one PS per page), implementation, and key options. It doesn't cover return values, but the output schema fills that gap. A small note on outputDir behavior (e.g., whether it is created) would push it to 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description summarizes key options (drawing-sheet, theme, black-and-white, etc.) but does not add new semantic details beyond the schema. It reinforces that schematicPath is required, but that is already in the schema as a required field.

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 clearly states the specific action: 'Export a schematic to PostScript via kicad-cli (`sch export ps`)' and includes the output behavior 'one PS per page into a directory'. This directly distinguishes it from sibling export tools (e.g., export_sch_pdf, export_sch_svg) by format and page-per-file behavior.

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?

The purpose implies when to use: when PostScript output is needed. It also lists key options (drawing-sheet override, theme, etc.) which helps the agent decide if this tool matches the need. However, it does not explicitly name alternatives or exclusions, so it stops short of a 5.

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

export_sch_python_bomExport Sch Python BomA
Destructive

Export the legacy Python-BOM intermediate XML from a schematic via kicad-cli (sch export python-bom). This is the XML netlist consumed by the schematic editor's Python BOM scripts. Minimal option set (output + input only). schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathYesOutput XML file path
schematicPathYesPath to the .kicad_sch (required)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint true), the description adds useful behavioral context: it invokes kicad-cli with a specific subcommand, has a minimal option set, and requires a schematic path. This goes beyond what the annotations already provide, although it does not detail side effects like file overwriting, which is acceptable given the annotation already flags destructiveness.

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 compact sentences, front-loaded with the primary action. Every sentence adds value: the first states what it does, the second explains why the output is used, and the third notes parameter constraints. No fluff or redundancy.

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 simple 2-parameter CLI wrapper, the description is complete: it specifies the exact command, the legacy nature, the output consumer, and the required input. With an output schema present, return-value details are not needed, and the tool's scope is fully covered by the description plus structured annotations.

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?

The schema already covers 100% of the parameters with descriptions ('Output XML file path', 'Path to the .kicad_sch (required)'). The description adds only 'schematicPath is REQUIRED' and 'output + input only', which reinforces existing schema info but doesn't enrich parameter meaning. Baseline 3 is appropriate.

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 action: 'Export the legacy Python-BOM intermediate XML from a schematic via kicad-cli (`sch export python-bom`)'. This clearly identifies the tool's resource and purpose, and the mention of 'legacy' and 'Python-BOM' distinguishes it from general BOM/netlist exports like export_bom or export_netlist.

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?

The description provides clear context for when to use this tool: it is the XML netlist consumed by the schematic editor's Python BOM scripts. It does not explicitly name alternatives or say 'use this instead of X', but the legacy-specific wording implies a niche use case, which is adequate guidance for an agent.

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

export_sch_svgExport Sch SvgB
Destructive

Export a schematic to SVG via kicad-cli (sch export svg), one SVG per page into a directory. Exposes drawing-sheet override, theme, black-and-white, exclude-drawing-sheet, default-font, no-background-color, and page selection. schematicPath is REQUIRED.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoComma list of page numbers to print (blank = all pages)
themeNoColor theme to use (default: schematic settings)
defineVarNoProject variable overrides as 'KEY=VALUE' strings
outputDirYesOutput directory for the SVG files
defaultFontNoDefault font name
drawingSheetNoPath to a drawing sheet override
blackAndWhiteNoBlack and white only
schematicPathYesPath to the .kicad_sch (required)
noBackgroundColorNoAvoid setting a background color (regardless of theme)
excludeDrawingSheetNoNo drawing sheet

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

The annotations indicate destructiveHint=true, but the description does not explain what destructive behavior occurs (e.g., overwriting files, creating directories). It adds only basic context about writing one SVG per page into a directory, but fails to disclose the full side effects or permission needs.

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 concise and front-loaded with the main purpose, followed by a compact list of options. The only slight issue is the incomplete required-note sentence, making it not perfectly accurate but still overall efficient.

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?

The description covers core behavior (export to SVG, one per page, supported options) and benefits from an existing output schema. However, it does not clarify output directory handling, potential overwrite behavior, or address the destructive annotation, leaving gaps for an agent invoking the tool.

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 already provides 100% field descriptions, so the baseline is 3. The description adds minimal value by listing option names but also misleadingly highlights 'schematicPath is REQUIRED' while omitting that outputDir is also required, potentially causing confusion about required parameters.

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 clearly states the tool exports a schematic to SVG via kicad-cli, with specific behavior (one SVG per page into a directory). It distinguishes from siblings like export_sch_pdf by specifying the SVG format and CLI-based approach.

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 description implies usage for CLI-based SVG export and lists available options, but it does not explicitly state when to use this tool over alternatives like export_sch_pdf or export_schematic_svg, nor does it mention exclusions or prerequisites beyond the required parameter.

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

export_svgExport SvgA
Destructive

Export the PCB layout as an SVG vector image, optionally selecting layers and colour mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
layersNoOptional array of layer names to include (default: all)
outputPathYesPath to save the SVG file
blackAndWhiteNoWhether to export in black and white
includeComponentsNoWhether to include component outlines

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, so the safety profile is partially disclosed. The description adds context about the output being a vector image and optional layers/color mode, but it does not detail side effects like file overwriting or prerequisites. It does not contradict annotations, and the added context is minimal.

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 states the core function and key options without waste. It is front-loaded with the main action and resource, making it easy for an agent to quickly grasp the tool's purpose.

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 straightforward export tool with a full input schema and an output schema present, the description covers the essential purpose and options. It lacks explicit prerequisites (e.g., board must be loaded) and does not differentiate from the nearly identical export_pcb_svg, but overall it is sufficiently complete given the low complexity and rich schema.

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

Parameters3/5

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

Schema coverage is 100%, with all four parameters described in the schema. The description only mentions 'layers and colour mode' at a high level, which adds no new meaning beyond the schema's existing parameter descriptions. Baseline 3 is appropriate as the schema handles the heavy lifting.

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 clearly states the tool's function: exporting the PCB layout as an SVG vector image. It specifies the resource (PCB layout), action (export), and format (SVG), and distinguishes from schematic export tools like export_schematic_svg by directly mentioning 'PCB layout'.

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 description implies usage by indicating this is for exporting the current PCB layout, but it does not explicitly mention when to use this tool versus siblings like export_pcb_svg or export_pcb_pdf. No alternatives or exclusions are given, so guidance is inferred rather than explicit.

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

export_symbolExport SymbolA
Destructive

Extract a single symbol from a .kicad_sym library into a standalone .kicad_sym file.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathYesPath for the output .kicad_sym file
symbolNameYesSymbol to export
libraryPathYesPath to the source .kicad_sym file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true, but the description does not clarify whether the source library is modified (e.g., the symbol removed) or whether the output file is overwritten. 'Extract' is ambiguous and could imply moving vs copying. This is a significant gap given the destructive hint.

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, front-loaded sentence that conveys the essence without redundant words or repetition. Every word earns its place.

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

Completeness3/5

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

The tool is simple, and the schema plus output schema provide good structural coverage. However, the missing side-effect disclosure (especially around the destructive hint) leaves the overall context incomplete for safe 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?

The schema already covers 100% of parameters with clear descriptions (source path, symbol name, output path). The tool description adds no additional parameter-level detail, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Extract') and clearly states the resource (a single symbol from a .kicad_sym library) and the result (a standalone .kicad_sym file). It distinguishes itself from siblings like list_symbols_in_library or import_symbol by focusing on the export operation.

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 description implies the use case (when you need to extract one symbol to its own file) but provides no explicit guidance on when not to use it or which alternative tools might be better suited. No exclusions or comparisons to sibling tools are given.

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

export_vrmlExport VrmlA
Destructive

Export the PCB as a VRML 3D model through kicad-cli. This compact alias of export_3d_cli exposes the VRML-specific options.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverwrite the output file
unitsNoOutput units
boardPathNoPath to the .kicad_pcb (default: current board)
modelsDirNoDirectory in which to store component models
outputPathYesPath to save the VRML file
modelsRelativeNoUse relative paths to modelsDir

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so the writing nature is known. The description adds that the operation runs through kicad-cli, an external dependency, but doesn't disclose other side effects or preconditions beyond what annotations and schema imply.

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 two sentences, front-loaded with the primary action, and every word contributes. The alias relationship is stated efficiently.

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?

Given the 100% schema coverage, destructive annotation, and presence of an output schema, the description is sufficient for a specialized export tool. It doesn't cover prerequisites like kicad-cli installation, but that's a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter meaning is fully documented in structured data. The description adds little beyond noting VRML-specific options are exposed, which is the baseline expectation.

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 clearly states the tool exports the PCB as a VRML 3D model via kicad-cli. It distinguishes itself from sibling export_3d_cli by explicitly identifying as a compact alias exposing VRML-specific options.

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 provides context that this is a specialized alias of export_3d_cli, implying it should be used for VRML exports. However, it doesn't explicitly state when to use export_3d_cli for other formats, so it stops short of full when/when-not guidance.

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

find_componentFind ComponentA
Read-onlyIdempotent

Search for a PCB component by reference designator or value and return its position and properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoComponent value to search for
referenceNoReference designator to search for

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the search-and-return behavior but does not disclose edge cases such as multiple matches, no matches, or match priority. No contradiction with 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?

A single, front-loaded sentence states the purpose and return value. No filler, redundancy, or unnecessary detail.

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 an output schema and supportive annotations, the description is largely sufficient for a simple read-only search tool. However, it omits behavior for ambiguous searches (e.g., both parameters provided, multiple matching components) and does not clarify that both parameters are optional. Still, it covers the core functionality.

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?

The input schema provides 100% coverage of the two parameters (value and reference) with clear descriptions. The description restates these search keys but adds no extra semantics about combined usage, precedence, or optionality. Baseline 3 is appropriate.

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 uses a specific verb ('Search for') and resource ('PCB component'), and clearly identifies search keys (reference designator or value) and return values (position and properties). This differentiates it from sibling tools like get_component_properties or get_component_list.

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 description implies when to use the tool (when searching by reference or value) but provides no explicit guidance on alternatives or exclusions. It does not mention, for example, that get_component_properties might be more appropriate when a reference is already known, or that get_component_list lists all components.

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

find_orphaned_wiresFind Orphaned WiresA
Read-onlyIdempotent

Find wire segments with at least one dangling endpoint — not connected to a component pin, net label, or another wire. Orphaned wires cause ERC 'wire end unconnected' errors. Does not require the KiCad UI to be running.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds that it does not require the KiCad UI to be running, which is a useful headless-operation trait, and explains the connection rules (pins, net labels, wires) that define orphaned status.

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 sentences with no fluff: the first defines the target, the second adds the ERC consequence, and the third notes the headless requirement. Each sentence earns its place, and the key action is front-loaded.

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 simple read-only tool with one well-documented parameter and an output schema, the description covers purpose, use case, and a critical runtime constraint. There is no missing information required for an agent to select and invoke it correctly.

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

Parameters3/5

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

The single parameter schematicPath is fully documented in the schema with 100% coverage, so the description need not add more. It correctly avoids duplicating the parameter's schema description.

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 uses a specific verb 'find' with a clear resource 'wire segments with at least one dangling endpoint', fully defining orphaned wires. This distinguishes it from siblings like list_schematic_wires or get_wire_connections by focusing on a specific defect rather than generic enumeration or connectivity.

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 provides clear context by explaining that orphaned wires cause ERC errors, implying when to use this tool. It does not explicitly mention alternative tools or when-not-to-use, but the intended use for detecting dangling wire ends is obvious.

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

find_overlapping_elementsFind Overlapping ElementsA
Read-onlyIdempotent

Detect spatially overlapping symbols, wires, and labels in the schematic. Finds duplicate power symbols at the same position, collinear overlapping wires, and labels stacked on top of each other.

ParametersJSON Schema
NameRequiredDescriptionDefault
toleranceNoDistance threshold in mm for label proximity and wire collinearity checks. Symbol overlap uses bounding-box intersection. (default: 0.5)
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds meaningful behavioral detail beyond annotations by specifying the types of overlaps detected and the detection context (spatial, schematic-level), which is useful and non-contradictory.

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 two sentences with no redundancy. The primary action is stated upfront, followed by clarifying examples, making it easy to scan and understand.

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?

The description adequately explains the tool's purpose and scope, and the output schema covers return values. It does not explicitly mention the tolerance parameter's role in detection, but the schema covers it. Given the tool's moderate complexity, this is sufficient.

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?

Input schema provides 100% parameter description coverage for both tolerance (with semantics and units) and schematicPath (with file format). The description adds no additional parameter context, so the baseline of 3 is appropriate.

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 uses the specific verb 'Detect' and names the exact resource types (symbols, wires, labels). It provides concrete examples (duplicate power symbols, collinear overlapping wires, stacked labels) that clearly distinguish it from sibling tools like find_orphaned_wires or find_wires_crossing_symbols.

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?

The description clearly conveys when to use this tool—to find spatial overlaps in a schematic—and gives specific detection categories. However, it does not explicitly state when not to use it or compare with alternative tools for other overlap types (e.g., check_courtyard_overlaps for board-level issues).

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

find_wires_crossing_symbolsFind Wires Crossing SymbolsA
Read-onlyIdempotent

Find all wires that cross over component symbol bodies. Wires passing over symbols are unacceptable in schematics — they indicate routing mistakes where a wire was drawn across a component instead of around it.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds explanatory context about why such crossings are mistakes, which is useful but does not disclose additional behavioral traits like return format or edge cases. This is adequate given the annotation coverage.

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

Conciseness5/5

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

Two sentences with zero filler. The first sentence states the action, and the second provides context and rationale. It is front-loaded with the primary purpose and remains concise.

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 simple read-only tool with one parameter, a clear description, and a defined output schema (indicated by has output schema=true), the description fully covers the purpose and rationale. There is no need to repeat return value details since the output schema handles that.

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?

The sole parameter schematicPath is already fully described in the input schema ('Path to the .kicad_sch schematic file'), so schema coverage is 100%. The description does not add any extra semantic detail beyond the schema, yielding a baseline score of 3.

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 clearly states the specific verb ('Find') and resource ('wires that cross over component symbol bodies'), making it distinct from sibling tools like find_orphaned_wires or find_overlapping_elements. The specificity of 'crossing component symbol bodies' uniquely identifies the tool's scope.

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?

The description provides clear context for when to use the tool: when checking for unacceptable wire-over-symbol routing mistakes. It does not explicitly name alternatives or exclusions, but the rationale ('unacceptable in schematics') strongly implies the intended use case.

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

generate_netlistGenerate NetlistA
Read-onlyIdempotent

Return a structured JSON netlist from the schematic — component list (reference, value, footprint) and net list (net name with all connected component/pin pairs). Use this to inspect or verify connectivity within the conversation. Does not write any file. To export a netlist file in Spice, KiCad XML, Cadstar, or OrcadPCB2 format, use export_netlist instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesAbsolute path to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces with 'Does not write any file.' It also discloses that the return is a structured JSON object, adding useful behavior context beyond the annotations. No contradiction, so the score reflects the extra value added.

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 sentences, each earning its place: purpose, usage, and alternative. Front-loaded with the core action and immediately clarifies what the output contains and why to use it. No filler or repetition of schema/annotations.

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 simple read-only tool with one parameter and an output schema, the description explains the return structure sufficiently (component list and net list) and clarifies side-effect-free behavior. It also points to the export alternative, making the tool's place in the broader workflow clear.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter schematicPath, so the schema already defines it. The description only mentions 'from the schematic' contextually, adding no extra parameter-level meaning. Baseline 3 is appropriate when the schema carries the semantic load.

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 specific verb and resource: 'Return a structured JSON netlist from the schematic' and explicitly names the output contents (component list and net list). It distinguishes itself from the sibling export_netlist tool by contrasting its in-conversation JSON return with file export.

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?

Explicitly states when to use it ('to inspect or verify connectivity within the conversation') and points to the alternative tool 'export_netlist' for file export in specific formats. This gives clear usage direction and differentiates it from the closest sibling.

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

get_backend_stateGet Backend StateA
Read-onlyIdempotent

Return the active backend, realtime status, loaded project/board paths, and dirty state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context by enumerating the specific data returned (active backend, realtime status, loaded paths, dirty state), which is not visible in annotations or the empty input schema.

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 sentence that is front-loaded with the verb 'Return' and concisely lists the key contents. Every word earns its place with no redundancy or 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?

This is a simple parameterless getter with an output schema present. The description lists all the major return fields, and the output schema handles detailed structure. No additional context is needed for a tool of this simplicity.

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 has zero parameters, so the baseline is 4. There is no parameter semantics to clarify, and the description appropriately focuses on return values instead.

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 uses the specific verb 'Return' and clearly specifies the resource ('active backend, realtime status, loaded project/board paths, and dirty state'). This distinguishes it from siblings like is_dirty (only dirty state) and get_project_info, making the tool's purpose unambiguous.

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 usage is implied: call this to get overall backend state. It does not explicitly state when to prefer this over alternatives like is_dirty or get_project_info, nor does it provide exclusions. The lack of explicit guidance places it at the 'implied usage' tier.

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

get_board_2d_viewGet Board 2d ViewA
Destructive

Render a 2D image of the PCB using kicad-cli. Returns PNG, JPG, or SVG. Use layers to filter — e.g. ["F.Cu","B.Cu","Edge.Cuts"] for copper + outline only. Use responseMode to choose delivery: "inline" (default) — PNG/JPG rendered as an image visible to Claude; SVG returned as text. "file" — image written next to the .kicad_pcb as _2d_view.; filePath is returned. Use file mode for large boards to avoid MCP message-size limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoOutput image width in pixels (default: 1600)
formatNoOutput format (default: png)
heightNoOutput image height in pixels (default: 1200)
layersNoLayer names to include, e.g. ["F.Cu","B.Cu","Edge.Cuts"]. Omit for all layers.
pcbPathNoAbsolute path to the .kicad_pcb file. Falls back to the currently loaded board if omitted.
responseModeNo"inline" (default): image returned directly; "file": written to disk, filePath returned

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description transparently explains side effects: file mode writes an image next to the .kicad_pcb file and returns filePath, while inline mode returns the image directly. It also clarifies that SVG is returned as text versus PNG/JPG as rendered images. These details complement the destructiveHint: true annotation without contradicting it.

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 concise but information-dense. It opens with the core purpose, then uses examples and brief explanations to clarify layers and responseMode. Every sentence contributes meaningful guidance, with no repetition or 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?

Given the tool's moderate complexity, the description covers all key aspects: what it renders, available formats, layer filtering, both delivery modes, and a practical warning about large boards. An output schema exists so return values are further documented, and the description provides sufficient context for an agent to use 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?

The schema already covers all parameters with descriptions, providing a baseline of 3. The description adds extra meaning beyond the schema by giving a concrete layer example (F.Cu, B.Cu, Edge.Cuts) and explaining the inline/file response modes with their delivery implications, which increases the value to 4.

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 clearly states the tool renders a 2D image of the PCB using kicad-cli and returns PNG, JPG, or SVG. It names the specific resource (PCB) and action (render). However, it does not explicitly compare with sibling export tools like export_pcb_svg, so it stops short of a 5.

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

Usage Guidelines4/5

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

The description provides clear usage guidance: layer filtering examples, responseMode choices with defaults, and a specific recommendation to use file mode for large boards to avoid MCP message-size limits. It does not discuss when to prefer alternative export tools, but within its own scope the usage context is clear.

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

get_board_extentsGet Board ExtentsA
Read-onlyIdempotent

Return the bounding box (min/max X and Y) of all objects on the current PCB board.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit of measurement for the result

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful context: it returns min/max X and Y for all objects, clarifying the scope. It does not contradict annotations and adds value by stating the exact geometric output.

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, front-loaded sentence with no unnecessary words. It immediately states the action and result, making it highly efficient for an agent to parse.

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?

Given the tool's simplicity, rich annotations, and the existence of an output schema, the description covers the essential aspects: what it returns and the scope (all objects on the current board). It is complete enough without needing to explain return formats or side effects.

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?

The schema covers the only parameter (unit) with 100% coverage, including an enum and description. The tool description adds no parameter-specific information, but the schema is sufficient, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Return') and the specific resource ('bounding box of all objects on the current PCB board'). It distinguishes from siblings like get_board_origin or set_board_size by focusing on the overall extents.

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?

The phrase 'current PCB board' provides clear context that this operates on the active board. While it does not explicitly mention alternatives or when-not-to-use, the purpose is specific enough to guide selection among the many sibling tools.

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

get_board_infoGet Board InfoA
Read-onlyIdempotent

Retrieve general information about the current PCB board (dimensions, layer count, DRC status).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is well covered. The description adds that it returns dimensions, layer count, and DRC status, which is useful behavioral context, but doesn't elaborate on what 'DRC status' means (e.g., last run vs. live violations).

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, front-loaded sentence with a clear verb and object. Every word adds value, and the parenthetical provides helpful examples without bloat.

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?

Given no parameters and the presence of an output schema, the description is adequately complete for a simple read-only getter. It names the main data categories. A minor gap is that 'DRC status' could be interpreted as a live check vs. last run, but this is not critical.

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 has zero parameters, so the empty schema fully covers the input. The description correctly omits parameter details. Baseline 4 is appropriate as there is no need for additional semantics.

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 uses a specific verb ('Retrieve') and resource ('general information about the current PCB board'), and includes concrete examples (dimensions, layer count, DRC status). This clearly distinguishes it from more specific sibling tools like get_board_origin, get_layer_list, or get_drc_violations.

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 description implies useful for a general board overview but does not explicitly state when to prefer this over more specialized getters or mention alternatives. No exclusions or 'use X instead' guidance is provided.

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

get_board_originGet Board OriginA
Read-onlyIdempotent

Read back the auxiliary (drill/place) origin and grid origin of a .kicad_pcb in mm.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathYesPath to the .kicad_pcb file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint false, so the safety profile is known. The description adds value by specifying the exact data returned (auxiliary/drill/place origin and grid origin) and the unit (mm), which goes 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?

The description is a single, front-loaded sentence that directly states the action and scope. No wasted words or redundant repetition of information already in the schema.

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?

This is a simple, one-parameter read tool with an output schema. The description is complete for the agent to understand what it does, and the annotations cover safety. No additional context is needed.

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

Parameters3/5

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

Schema coverage is 100%, and the boardPath description explains it as a path to the .kicad_pcb file. The tool description does not add additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Read back') with a clear resource (auxiliary and grid origin of a .kicad_pcb) and units (mm). It distinguishes itself from sibling tools like set_board_origin by focusing on read-only retrieval.

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?

The description clearly implies a read-only query for origin values, but it does not explicitly name alternatives or provide when-not-to-use guidance. Given the obvious contrast with set_board_origin, the context is sufficient for most agents.

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

get_category_toolsGet Category ToolsA
Read-onlyIdempotent

Return all tools available in a specific category. Use list_tool_categories first to find valid category names.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory name from list_tool_categories

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the dependency on valid category names from `list_tool_categories` but does not discuss error handling or return format, which is acceptable given the output schema exists. It provides modest value beyond 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?

The description is exactly two sentences: the first states the function, and the second gives a necessary prerequisite. No wasted words and it is front-loaded with the primary purpose.

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 simple lookup tool with one parameter, full annotation coverage, and an output schema, the description covers the purpose and prerequisite clearly. It leaves minor gaps such as behavior on invalid category names, but overall it is sufficiently complete for an agent to use it correctly.

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?

The schema covers 100% of parameter descriptions, with the `category` parameter already described as 'Category name from list_tool_categories.' The description reinforces this same relationship but adds no new detail, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'Return' and identifies the resource as 'all tools available in a specific category.' This clearly distinguishes it from sibling tools like `list_tool_categories` and `search_tools` by focusing on category-based enumeration.

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?

The description explicitly instructs to use `list_tool_categories` first to obtain valid category names, providing clear context for when to use this tool. It does not explicitly mention when not to use it or name alternatives, but the prerequisite guidance is strong.

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

get_component_geometryGet Component GeometryA
Read-onlyIdempotent

Return separated footprint geometry bboxes: body, pads, courtyard, keepout, fab, silk and text.

ParametersJSON Schema
NameRequiredDescriptionDefault
refsNoOptional list of component references
referenceNoOptional single component reference

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds the output scope (the specific bbox categories) but does not disclose additional behavioral details such as behavior with no refs, missing components, or error handling. This is adequate given the annotations, but not especially rich.

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 sentence, front-loaded with the action and output list. No filler or redundant phrasing.

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?

The output schema covers return values, and the tool is simple. The only minor gap is that it does not clarify whether at least one of refs/reference is needed, but with both optional and no further complexity, this is sufficient.

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?

The schema fully describes both parameters (refs and reference) with clear descriptions, so the description does not need to add much. It does not discuss parameter interaction or requirements, but with 100% schema coverage, the baseline of 3 is appropriate.

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 clearly states the tool returns separated footprint geometry bounding boxes and enumerates the specific geometry types (body, pads, courtyard, keepout, fab, silk, text). This is a specific verb+resource combination that distinguishes it from sibling tools like get_component_properties or get_component_pads.

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?

The description implies when to use this tool: when you need footprint geometry bounding boxes. It provides clear context but does not explicitly name alternatives or exclusions, stopping short of the highest tier of guidance.

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

get_component_listGet Component ListA
Read-onlyIdempotent

Return a list of all components on the PCB, optionally filtered by layer or bounding box region.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit for coordinates (default: mm)
layerNoFilter by layer (e.g., 'F.Cu', 'B.Cu')
boundingBoxNoFilter by bounding box region

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds no extra behavioral context about filter combination semantics, coordinate origin, or response size, but it does not contradict 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?

The description is a single, front-loaded sentence that states the primary action and the optional filters. It contains no filler or redundant phrasing.

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 simple read-only list tool with an output schema, the description is sufficient to convey the core behavior. Minor gaps include not explaining how layer and boundingBox filters interact or noting the coordinate system origin, but these are non-critical for a basic list operation.

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?

The input schema provides descriptions for all parameters (100% coverage), including unit, layer, and boundingBox. The tool description merely repeats that filters exist without adding new meaning, such as how multiple filters combine or the default coordinate unit behavior.

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 clearly states that the tool returns a list of all components on the PCB, with optional filters by layer or bounding box. This specific verb-resource pairing distinguishes it from component-specific tools like get_component_properties or find_component.

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 description implies usage through its name and 'all components' phrasing, but it does not explicitly differentiate from similar tools such as find_component or list_graphics. No alternatives or exclusion criteria are mentioned.

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

get_component_padsGet Component PadsA
Read-onlyIdempotent

Return all pads of a PCB component with their positions, net assignments and sizes.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit for coordinates (default: mm)
referenceYesReference designator of the component (e.g., 'U1')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds meaningful behavior beyond those annotations by specifying that it returns all pads along with positions, net assignments, and sizes. No contradictions exist, and the additional behavioral context is useful without being excessive.

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, front-loaded sentence that states the action, target, and output content without any filler. It is concise and effectively structured for quick comprehension.

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 tool's low complexity, full schema coverage, strong read-only annotations, and the presence of an output schema, the description is sufficiently complete. It conveys the essential purpose and result content without needing to restate structured schema details.

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?

The input schema already provides 100% coverage with descriptive definitions for both parameters: 'reference' is clearly explained and 'unit' has an enum with a default note. The description adds no additional parameter semantics beyond the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Return all pads of a PCB component' and further specifies the returned data (positions, net assignments, sizes). This clearly differentiates it from sibling tools like get_pads or get_net_pads by anchoring it to a specific component reference designator.

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 context is only implied by the phrase 'of a PCB component'. There is no explicit guidance about when to choose this over sibling tools like get_pads, get_net_pads, or get_pad_position, nor any exclusions or prerequisites. The user can infer the intended use, but the description does not explicitly state it.

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

get_component_propertiesGet Component PropertiesA
Read-onlyIdempotent

Return all properties of a PCB component (position, rotation, layer, value, footprint).

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesReference designator of the component (e.g., 'R5')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds the list of returned properties, which is helpful context, but does not disclose error behavior or return format beyond what the output schema likely covers. It adds some value but not rich behavioral detail.

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 sentence, front-loaded with the action ('Return all properties'), and concisely enumerates the property types. No unnecessary words or repetition, making it highly efficient.

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?

Given the tool's simplicity, one parameter, and presence of an output schema, the description is nearly complete. It does not mention behavior for missing components, but for a read-only getter this is a minor gap. Overall it provides sufficient context for a well-scoped tool.

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?

The input schema provides 100% coverage for the single 'reference' parameter with a clear description. The tool description does not add extra parameter semantics, but the schema already fully documents it, so the baseline score of 3 is appropriate.

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 clearly states the tool returns all properties of a PCB component, listing specific properties (position, rotation, layer, value, footprint). This distinguishes it from sibling tools like get_component_pads and get_component_geometry, making the purpose unambiguous.

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 description implies usage for retrieving component properties but does not explicitly mention when to use this tool over sibling getters like get_component_pads or get_component_geometry. No exclusions or alternative tool references are provided, leaving guidance implied rather than explicit.

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

get_datasheet_urlGet Datasheet UrlA
Read-onlyIdempotent

Get the LCSC datasheet URL for a component by LCSC number.

Returns the direct PDF URL and product page URL. No network request – URL is constructed from the LCSC number alone.

Example: get_datasheet_url("C179739") → https://www.lcsc.com/datasheet/C179739.pdf

ParametersJSON Schema
NameRequiredDescriptionDefault
lcscYesLCSC part number, with or without "C" prefix (e.g. "C179739" or "179739")

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and idempotent, and the description adds important behavioral context: the URL is constructed locally without a network request. It also discloses the exact return payload (PDF URL and product page URL). This exceeds the annotation baseline.

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

Conciseness5/5

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

The description is compact and well-structured, leading with the core purpose and adding only essential details: return values, network behavior, and a clear example. No redundant or tangential content.

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 tool with one parameter and rich annotations, the description fully explains the operation's purpose, behavior, and outputs. The presence of an output schema (implied) and example make it complete.

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?

The schema provides full coverage of the single 'lcsc' parameter, including format details and example. The description's example reinforces the parameter usage but does not add substantial semantic information beyond the schema.

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 uses the specific verb 'Get' with the resource 'LCSC datasheet URL for a component by LCSC number', clearly stating what is returned. It distinguishes from sibling tools like search_jlcpcb_parts or get_jlcpcb_part by specifying the URL construction method and the no-network behavior.

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?

The description implies the tool is for retrieving a datasheet URL when you have an LCSC part number, and the 'No network request' note suggests it's suitable for quick, offline URL construction. However, it does not explicitly name alternative tools or exclusionary conditions, so it falls short of full guidance.

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

get_design_rulesGet Design RulesA
Read-onlyIdempotent

Return the current PCB design rules (clearance, track width, via sizes, courtyard settings).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds value by specifying the exact categories of design rules returned, which helps the agent understand what data to expect. It does not add details about side effects or auth, but none are needed for this read-only operation.

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. It front-loads the core action ('Return the current PCB design rules') and immediately provides concrete examples in parentheses. No wasted words or redundancy.

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 simple read-only getter with no parameters, an output schema, and comprehensive annotations, the description is fully complete for an agent to invoke the tool correctly. It clearly explains what the tool returns, and the output schema covers the return structure. No additional context is needed.

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 has zero parameters, and the schema is empty with 100% coverage. Per the rubric, a baseline of 4 applies for zero-parameter tools. The description adds no parameter information, but none is necessary. The description does not ignore any parameter semantics because there are no parameters.

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 clearly states the tool returns the current PCB design rules and enumerates specific categories (clearance, track width, via sizes, courtyard settings). This distinguishes it from sibling tools like set_design_rules (which modifies rules) and run_drc (which checks violations). The verb 'Return' and resource 'current PCB design rules' are specific and unambiguous.

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?

The description clearly indicates when to use this tool: whenever you need the current PCB design rules. It does not explicitly mention alternatives or exclusions, but the read-only nature and contrast with set_design_rules make the usage context clear. No explicit 'when-not' guidance is given, but it is not critical for a simple getter.

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

get_drc_violationsGet Drc ViolationsA
Read-onlyIdempotent

Return the list of current DRC violations on the PCB, optionally filtered by severity (error, warning).

ParametersJSON Schema
NameRequiredDescriptionDefault
severityNoFilter violations by severity

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds 'current' which implies the results reflect the latest DRC run, a stateful nuance not captured by annotations. However, it doesn't disclose what happens if no DRC has been run, leaving a slight gap.

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, clear sentence that front-loads the primary action ('Return the list') and specifies the resource. No fluff or redundant jargon. It is appropriately concise for a simple read 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?

For a tool with one optional parameter, an output schema, and safe annotations, the description is largely complete. The only missing context is an explicit note that this reads previously computed DRC results and does not trigger a new check, which would help disambiguate from run_drc. Still, the description is sufficient for most use cases.

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?

The input schema provides 100% coverage for the severity parameter, including an enum and description. The tool description repeats the severity filter with examples but does not add new meaning beyond the schema. The baseline of 3 applies because the schema carries the full semantic weight.

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 clearly states the tool's function: returning the list of current DRC violations on the PCB, with an optional severity filter. The verb 'Return' specifies the read-only nature, distinguishing it from siblings like run_drc that perform a check. The mention of severity filter adds precision.

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 description implies the tool is used to retrieve DRC violations but does not explicitly state when to use it vs. alternatives. There is no mention of needing to run DRC first or that run_drc is the complementary tool for executing checks. The usage context is inferred rather than explicit.

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

get_elements_in_regionGet Elements In RegionA
Read-onlyIdempotent

List all symbols, wires, and labels within a rectangular region of the schematic. Useful for understanding what is in a specific area before modifying it.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesLeft X coordinate of the region in mm
x2YesRight X coordinate of the region in mm
y1YesTop Y coordinate of the region in mm
y2YesBottom Y coordinate of the region in mm
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe-read nature is covered. The description adds specificity about the element types (symbols, wires, labels) and region, but does not disclose additional behavioral details such as coordinate system nuances or handling of sub-sheets. This is adequate but not rich.

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 two sentences: the first gives the action and scope, the second gives the use case. No redundant words, no repetition of schema or annotations. It is front-loaded and efficient.

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 presence of an output schema and comprehensive annotations, the description is sufficiently complete for an agent to select and invoke the tool. It explains the purpose, scope, and ideal usage context without needing to detail return values or safety since those are already provided by structured data.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for all five parameters (schematicPath and four coordinates). The description adds no extra parameter-level semantics, but the schema already handles the meaning, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states a specific action ('List') and a specific resource ('symbols, wires, and labels') within a rectangular region. It distinguishes this from sibling tools like get_schematic_view_region or find_overlapping_elements by explicitly naming the element types returned.

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?

The description provides a clear situational context ('before modifying it') that signals read-only reconnaissance use. It does not explicitly name alternative tools or exclusion criteria, but the stated use case is workable guidance for when to invoke this tool.

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

get_footprint_infoGet Footprint InfoB
Read-onlyIdempotent

Get detailed information about a specific footprint

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameYesName of the library containing the footprint
footprint_nameYesName of the footprint to get information about

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the read-only nature is well covered. The description adds no additional behavioral context such as error conditions, return value shape, or required permissions beyond what annotations and schema already convey.

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, front-loaded sentence with no filler or redundant information. It is appropriately concise for a simple read-only getter.

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 simple getter with full schema coverage and an output schema, the description is mostly complete. It doesn't specify what 'detailed information' includes or how errors are handled, but the presence of an output schema mitigates the need for describing return values.

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?

The input schema has 100% description coverage, with both library_name and footprint_name clearly described. The tool description adds no extra parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the action ('get') and resource ('detailed information about a specific footprint'), making the purpose obvious. It doesn't explicitly differentiate from sibling lookup/list tools like list_library_footprints or search_footprints, but the specificity of 'specific footprint' implies a targeted lookup.

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 guidance is provided on when to use this tool versus alternatives such as search_footprints or list_library_footprints. There are no stated prerequisites, exclusions, or usage contexts beyond the implicit need for a library and footprint name.

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

get_jlcpcb_database_statsGet Jlcpcb Database StatsA
Read-onlyIdempotent

Get statistics about the local JLCPCB parts database

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds the 'local' qualifier, clarifying that it accesses the local database rather than a remote service, but otherwise does not elaborate on behavior or output specifics.

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, front-loaded with the verb and resource, with no wasted words. It exactly states the purpose without any redundant explanation.

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?

This is a simple, side-effect-free stats query with no parameters and an output schema to define returns. The description, combined with strong annotations and the output schema, provides everything an agent needs to decide to invoke it.

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 accepts zero parameters, so schema coverage is trivially 100%. Per the baseline for 0-parameter tools, the description doesn't need to document parameter semantics, and it correctly avoids adding any.

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 uses the specific verb 'Get' and identifies the resource as 'statistics about the local JLCPCB parts database', clearly distinguishing it from sibling tools like search_jlcpcb_parts and get_jlcpcb_part. The 'local' qualifier adds needed scope.

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 description implies usage when an agent needs statistics about the local JLCPCB parts database, but it does not explicitly state when to prefer this over alternatives such as download_jlcpcb_database or search_jlcpcb_parts. No exclusions or alternative references are given, leaving the agent to infer the appropriate context.

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

get_jlcpcb_partGet Jlcpcb PartA
Read-onlyIdempotent

Get detailed information about a specific JLCPCB part by LCSC number.

When JLCPCB Open Platform credentials are configured (JLCPCB_APP_ID / JLCPCB_API_KEY / JLCPCB_API_SECRET, e.g. in a project-root .env), this performs a REAL-TIME lookup — live stock, tiered pricing, parameters and library type — and falls back to the local snapshot database if the API call fails or no credentials are set. The response reports which backend answered via "source" ("live-api" vs "local-db").

ParametersJSON Schema
NameRequiredDescriptionDefault
lcsc_numberYesLCSC part number (e.g., 'C25804', 'C2286')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds meaningful behavioral detail beyond these: the two backend modes (live API vs local DB), the fallback condition (API failure or missing credentials), the specific data returned (stock, tiered pricing, parameters, library type), and the 'source' field in the response. This is rich context that helps the agent predict behavior and interpret results.

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 concise and front-loaded. The first sentence states the core purpose, and the second paragraph details the credential-dependent behavior. Every sentence adds information, with no redundancy or off-topic content. Formatting with line breaks and quoting of env vars improves readability.

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 simple single-parameter nature, the presence of an output schema, and comprehensive annotations, the description is complete. It explains the important fallback behavior and the 'source' indicator, which is essential for the agent to interpret results correctly. There is no notable missing information for this tool's complexity.

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?

The input schema has 100% coverage for the single parameter with a clear description and examples ('LCSC part number (e.g., \'C25804\', \'C2286\')'). The tool description does not add additional parameter semantics beyond restating the purpose. This meets the baseline of 3 where the schema does the heavy lifting.

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 specific verb+resource: 'Get detailed information about a specific JLCPCB part by LCSC number.' This clearly distinguishes the tool from siblings like search_jlcpcb_parts (search vs get) and get_jlcpcb_database_stats (one part vs database-wide stats). The scope is unambiguous.

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?

The description provides clear conditional context: if credentials are set, it performs a real-time lookup; otherwise or on failure, it falls back to the local snapshot. This is explicit when-to-use behavior. However, it does not explicitly name alternative tools (e.g., 'use search_jlcpcb_parts to find parts by query'), so it stops short of a 5.

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

get_layer_listGet Layer ListA
Read-onlyIdempotent

Return the list of all layers defined in the current PCB board.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds the scope ('current PCB board') which is useful, but it does not disclose any additional behavioral details such as error conditions (e.g., no board open) or whether the returned list is ordered. It meets the baseline but does not go beyond it.

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, concise sentence that immediately states the action and result. It is front-loaded with the verb and resource, and every word adds value. No filler or redundant 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?

This is a simple read-only list operation with no parameters and an existing output schema. The description fully captures the tool's purpose and scope ('all layers defined in the current PCB board'), which is sufficient for an agent to decide when to call it. The output schema handles return-value structure, so the description need not elaborate further.

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 has zero parameters and the input schema is empty (100% schema coverage). Baseline for 0 params is 4; the description correctly implies that no arguments are needed and the tool operates on the current board. No further parameter explanation 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 clearly states the tool's function with a specific verb ('Return') and resource ('list of all layers'), scoped to the current PCB board. This distinguishes it from sibling tools like add_layer (which creates layers) and set_active_layer (which changes the active layer).

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 description implies when to use the tool (when you need the list of all layers in the current board) but provides no explicit guidance about alternatives or when not to use it. It does not name sibling tools like get_board_info or add_layer as alternatives, so the usage context is implicit rather than clearly defined.

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

get_net_at_pointGet Net At PointA
Read-onlyIdempotent

Returns the net name at a given (x, y) coordinate in a schematic, or null if no net label or wire endpoint is present at that position. Faster than get_pin_net when you only need the net name at a known coordinate and don't need pin traversal.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesX coordinate in mm
yYesY coordinate in mm
schematicPathYesPath to the schematic file (.kicad_sch)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral context: it returns null when no label or wire endpoint is present, and it performs a localized lookup rather than pin traversal. This is beyond the annotations but doesn't fully elaborate on other potential behaviors like coordinate precision or error handling, hence a 4.

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 two sentences, front-loaded with the primary action and return value, then a single comparative usage note. Every sentence earns its place; there is no redundancy or filler. This is exemplary conciseness.

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 tool is a simple read-only query with full schema coverage, an output schema present, and annotations covering safety. The description covers what it does, when to use it, and what it returns (including null). Given the low complexity and rich structured metadata, the description is complete.

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?

The input schema provides 100% coverage with descriptions for x, y, and schematicPath. The description adds no additional parameter semantics—it simply refers to a 'given (x, y) coordinate' and the schematic context. Since the schema already fully documents parameters, the baseline of 3 is appropriate.

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 clearly states the tool's function: 'Returns the net name at a given (x, y) coordinate in a schematic' and specifies the null return condition. It also distinguishes itself from 'get_pin_net' by noting it avoids pin traversal. This satisfies the requirement of a specific verb and resource while differentiating from siblings.

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?

The description explicitly provides usage guidance: 'Faster than get_pin_net when you only need the net name at a known coordinate and don't need pin traversal.' This tells the agent when to choose this tool over the alternative. It also describes the null condition, clarifying expected outcomes.

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

get_net_connectionsGet Net ConnectionsB
Read-onlyIdempotent

Get all connections for a named net

ParametersJSON Schema
NameRequiredDescriptionDefault
netNameYesName of the net to query
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is well-covered. The description adds minimal behavioral context (e.g., 'all connections') but does not disclose edge cases like empty results or error conditions, though the presence of an output schema partially mitigates this.

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 sentence that directly states the tool's purpose with no filler. It is front-loaded with the verb and resource, making it easy to scan. There is zero waste, earning a high score.

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?

Given the tool's simplicity and the rich structured data (annotations, full schema coverage, output schema), the description is adequate but not complete. The main gap is the lack of differentiation from sibling tools and missing usage context, which could lead to an agent selecting the wrong tool. Overall, it meets the minimum viable bar but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (netName and schematicPath) are already documented with clear descriptions. The tool description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Get') and the resource ('all connections for a named net'), with the input schema identifying the net and schematic path. However, it does not distinguish from similar sibling tools like 'get_wire_connections' or 'get_net_pads', leaving ambiguity about the scope (schematic vs board).

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?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It is a simple getter with no context about when it is appropriate, unlike the high-scoring example which explicitly named an alternative.

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

get_net_padsGet Net PadsA
Read-onlyIdempotent

Return every PCB pad attached to a net name or net code.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNoNet name
unitNoUnit for coordinates (default: mm)
netCodeNoKiCad net code

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is known. The description adds the 'every' scope and the dual lookup by name or code, but it does not disclose behavior when both net and netCode are supplied, when neither is supplied, or the output format beyond what the output schema presumably provides.

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 sentence that is front-loaded with the verb 'Return' and efficiently conveys the core functionality without redundancy. Every word earns its place.

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 read-only query tool with full schema coverage and an output schema, the description is adequate. It specifies the query criteria (net name or code) and the result scope ('every PCB pad'). Minor gaps remain around parameter combination rules, but overall it is sufficiently complete for agent selection and 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?

The input schema already documents all three parameters with descriptions (net name, unit default, net code), and coverage is 100%. The description does not add any additional meaning beyond what is in the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description uses a specific verb 'Return' and a specific resource 'every PCB pad' attached to a net, clearly defining the tool's scope. It distinguishes itself from sibling tools like get_component_pads (pads of a component) and get_pads (generic pad queries) by focusing on net-based lookup.

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 description implies when to use the tool (when you need all pads on a net) but provides no explicit guidance on when not to use it or which alternative to prefer. No alternatives are named, and the interaction between net and netCode parameters is not clarified.

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

get_nets_listGet Nets ListA
Read-onlyIdempotent

Get a list of all nets in the PCB with optional statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit for length measurements
includeStatsNoInclude statistics (track count, total length, etc.)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the schema, such as output format or side effects, but none are needed given the simple 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?

A single, front-loaded sentence that efficiently states the purpose and optional statistics. Every word earns its place; no wasted space.

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 simple tool complexity, the presence of an output schema, and strong annotations, the description fully covers what an agent needs to know. It avoids redundant explanations of return values and focuses on the core action.

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?

The schema provides 100% coverage for both parameters with clear descriptions. The description's mention of 'optional statistics' aligns with includeStats but adds no new meaning beyond the schema, so the baseline of 3 is appropriate.

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 'Get a list of all nets in the PCB with optional statistics' uses a specific verb and resource, clearly scoping to all nets on the board. It distinguishes itself from net-specific sibling tools like get_net_pads and get_net_connections.

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 purpose implies when to use it (whenever you need all nets), but there is no explicit guidance about alternatives or when not to use it. Clear context is missing, so it remains at the implied-usage level.

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

get_pad_positionGet Pad PositionA
Read-onlyIdempotent

Return the exact XY position of a specific pad on a PCB component. Use this before routing to get accurate start/end coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
padYesPad number or name (e.g., '1', 'A1')
unitNoUnit for coordinates (default: mm)
referenceYesComponent reference designator (e.g., 'U1')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only marginal behavioral context ('exact', 'accurate') and does not disclose return format or error behavior, but with annotations present and an output schema, the added value beyond annotations is limited.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the core purpose, followed by a practical usage tip. No redundant or filler content; every sentence 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?

Given the tool's simplicity (3 parameters, 2 required), existing output schema, and strong annotations, the description is complete for an AI agent to select and invoke it. It even includes a use case ('before routing') that aids selection. No further context is needed.

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

Parameters3/5

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

Schema description coverage is 100%, with all parameters (pad, unit, reference) already having clear descriptions. The tool description does not add extra meaning beyond what the schema provides, such as default unit behavior or coordinate system, so the baseline 3 is appropriate.

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 clearly states the tool returns the exact XY position of a specific pad on a PCB component, using a specific verb ('Return') and resource ('exact XY position of a specific pad'). It distinguishes itself from sibling tools like get_pads or get_component_pads by emphasizing the 'specific pad' and 'exact position' rather than listing all pads.

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?

Provides clear when-to-use guidance: 'Use this before routing to get accurate start/end coordinates.' It does not explicitly mention alternatives or when not to use the tool, but the routing context is a strong usage signal. This fits 'clear context, no exclusions'.

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

get_padsGet PadsA
Read-onlyIdempotent

Return pads for one PCB component, selected refs, or all components, including XY, layer, size and net.

ParametersJSON Schema
NameRequiredDescriptionDefault
refsNoOptional reference filter
unitNoUnit for coordinates (default: mm)
referenceNoOptional component reference designator

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the safety profile is covered. The description adds behavioral context by specifying the returned data (XY, layer, size, net) and indicating that it can return pads for all components, which may imply a broad result set. No contradictions with 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?

The description is a single, front-loaded sentence that efficiently covers the tool's purpose and scope. There is no wasted wording, and it earns its place by conveying the key functionality immediately.

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?

Given the tool has an output schema (per context signals), the description doesn't need to detail return values, and it still mentions key output fields. It's complete for a simple read-only tool with optional parameters, though it could clarify behavior when both refs and reference are supplied, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a clear description. The tool description adds minimal extra meaning beyond mapping refs to 'selected refs' and reference to 'one PCB component', but it doesn't explain parameter interactions or further syntax, aligning with the baseline for high schema coverage.

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 clearly states the tool returns pads for PCB components with specific data (XY, layer, size, net). It differentiates scope (single component, selected refs, all components) but doesn't explicitly distinguish from sibling tools like get_component_pads or get_net_pads, so it lacks explicit sibling differentiation.

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

Usage Guidelines4/5

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

The description provides clear usage context by listing the three scopes (one component, selected refs, all components), which tells an agent when to use this tool. However, it doesn't offer exclusions or mention alternative tools, so it stops short of full guidance.

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

get_project_infoGet Project InfoB
Read-onlyIdempotent

Get information about the current KiCAD project

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds no additional behavioral context, such as whether the tool fails if no project is open, what format the information comes in, or whether it performs any computation. It does not contradict annotations, but it also contributes nothing beyond the basics.

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 short sentence with no filler or redundant information. It is concise and to the point, earning full marks for brevity and structure.

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?

Given the tool has no parameters and an output schema exists, the description does not need to detail return values. However, it lacks any contextual framing about the 'current' project state, such as what happens if no project is open or how this information might be used. For a simple getter, it is minimally complete, but it would benefit from a sentence indicating the tool's role in the broader workflow.

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 has no parameters, so the description does not need to explain parameter semantics. The baseline for zero-parameter tools is 4, and the description does not introduce any confusion. It does not attempt to explain parameters that do not exist, so this is adequate.

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

Purpose3/5

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

The description states it gets information about the current KiCAD project, which is a clear verb+resource but remains vague about what 'information' includes. It does not meaningfully distinguish from sibling tools like get_board_info or get_schematic_view, as those also return project-related data. The description is barely more specific than the tool name.

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 guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., whether a project must be open), no indication of what the returned information is useful for, and no comparison to related getter tools. The context where this tool is appropriate is left entirely implicit.

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

get_ratsnestGet RatsnestA
Read-onlyIdempotent

Estimate ratsnest/airwire segments and lengths from current pad positions grouped by net.

ParametersJSON Schema
NameRequiredDescriptionDefault
netsNoOptional net-name filter
maxPadsPerNetNoSkip nets above this pad count (default 128)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to emphasize safety. It adds behavioral context by specifying that the estimate is based on 'current pad positions' and results are 'grouped by net', which goes beyond the annotations. It does not mention potential performance implications or default skip behavior, but these are partially covered by the maxPadsPerNet parameter.

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 sentence with 14 words, front-loaded with the core action ('Estimate ratsnest/airwire segments and lengths') followed by essential context. Every word earns its place; no fluff or redundant 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?

Given the tool's simplicity (0 required parameters, 2 optional, full schema coverage, and an output schema present), the description is sufficiently complete. It conveys the core behavior and source data. The only missing piece is explicit differentiation from the similar sibling 'estimate_airwire_lengths', which prevents a perfect 5.

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 descriptions cover 100% of parameters, clearly explaining 'nets' as an optional filter and 'maxPadsPerNet' as a threshold with a default. The description adds no additional parameter meaning, but the baseline of 3 is appropriate because the schema does the heavy lifting.

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 clearly states the verb 'estimate' and the resource 'ratsnest/airwire segments and lengths', with additional context on input ('current pad positions') and grouping ('grouped by net'). It is specific and well-defined, but it does not explicitly distinguish itself from the sibling tool 'estimate_airwire_lengths', which shares similar terminology.

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?

The description provides no guidance on when to use this tool versus alternatives such as 'estimate_airwire_lengths' or 'get_net_pads'. It only states what it does, not when it is the preferred choice.

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

get_registry_partGet Registry PartA
Read-onlyIdempotent

Get full details for one registry part by id: description, downloadable files (footprint/symbol/3D), datasheet, license, and provenance. Use the id returned by search_parts_registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRegistry part id (from search_parts_registry)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the read-only, open-world, idempotent, and non-destructive nature. The description adds useful context about the content of the response (files, datasheet, license, provenance), going beyond the annotations. It does not disclose error conditions or pagination, but for a simple read operation this is sufficient.

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 two sentences, front-loaded with the action and resource, and contains no filler. Every element contributes to understanding the tool's purpose and usage.

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 simple single-parameter lookup with comprehensive annotations and an output schema, the description covers the source of the id and the nature of the returned details. It is complete for the tool's complexity.

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

Parameters3/5

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

The schema fully documents the single 'id' parameter with 100% coverage, including the note that it comes from search_parts_registry. The description repeats this origin but adds no new semantic details about the parameter itself, so baseline 3 is appropriate.

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 'Get full details for one registry part by id' and enumerates the included specifics (description, downloadable files, datasheet, license, provenance). This clearly distinguishes it from sibling tools like search_parts_registry and download_registry_part.

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?

The description instructs to use the id returned by search_parts_registry, providing clear context for when this tool is appropriate. It does not explicitly mention alternatives or when-not-to-use, but the sibling list and the reference to the search tool make the usage context unambiguous.

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

get_schematic_componentGet Schematic ComponentA
Read-onlyIdempotent

Get full component info from a schematic: position, every field's value, and each field's label position (at x/y/angle). Returns ALL properties — both built-in fields (Reference, Value, Footprint, Datasheet) and any custom BOM/sourcing properties present on the symbol (MPN, Manufacturer, DigiKey_PN, LCSC, Voltage, Tolerance, Dielectric, etc.). Use this before edit_schematic_component / set_schematic_component_property to inspect what is currently set, or to plan a label repositioning.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesComponent reference designator (e.g. R1, U1)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context by stating that it returns 'ALL properties' including custom BOM/sourcing fields and label positions, which goes beyond what the annotations express. It also clarifies that it returns complete state information useful for inspection before edits. No contradiction with 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?

The description is two sentences, front-loaded with the core purpose and immediately followed by a concise enumeration of return contents and a usage hint. Every sentence adds value, with no redundant or filler text. It is well-structured and easy to scan.

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 that an output schema exists and the tool is a simple read-only getter with only two well-documented parameters, the description fully covers the necessary context. It explains what data is returned, the inclusion of both built-in and custom fields, and when to use it. No important gaps remain.

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?

The input schema already provides 100% description coverage for both parameters (reference, schematicPath). The description does not add additional parameter-level detail beyond what the schema specifies; it mentions the schematic context but not any new syntax or constraints. Baseline 3 applies because schema adequately documents parameters.

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 ('Get'), resource ('component info from a schematic'), and precisely defines the scope: position, every field's value, and each field's label position. It distinguishes itself from broader component tools by focusing on schematic component data and explicitly mentions included built-in and custom fields. The naming and details make the tool's purpose unmistakable.

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?

The description explicitly says to use this tool before edit_schematic_component or set_schematic_component_property, providing clear context for when it is appropriate. It also mentions planning label repositioning. It does not explicitly list when not to use it or name alternative read tools, but the guidance is actionable and the scoping is clear.

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

get_schematic_pin_locationsGet Schematic Pin LocationsA
Read-onlyIdempotent

Returns the exact x/y coordinates of every pin on a schematic component. Use this before add_schematic_net_label to place labels correctly on pin endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesComponent reference designator (e.g. U1, R1, J2)
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable behavioral detail about the output ('exact x/y coordinates of every pin') and the intended workflow (label placement on pin endpoints), going beyond the structured 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?

The description is two sentences: the first states the tool's purpose clearly, and the second gives concise usage guidance. No redundant information or unnecessary detail.

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 tool's simplicity (2 required params, read-only, output schema present), the description covers the essential elements: what it returns, how to use it in context, and the necessary parameters. It is complete for an agent to invoke correctly.

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?

The input schema has 100% description coverage for both parameters (reference, schematicPath), including examples like 'U1, R1, J2'. The description itself does not add parameter-specific details, but the schema already provides sufficient semantic meaning, so the baseline of 3 is appropriate.

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 clearly states the function: 'Returns the exact x/y coordinates of every pin on a schematic component.' It identifies a specific resource (schematic component pins) and provides a concrete use case, distinguishing it from siblings like add_schematic_net_label.

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?

The description explicitly directs when to use the tool: 'Use this before add_schematic_net_label to place labels correctly on pin endpoints.' This names a specific sibling tool and provides context, though it does not explicitly state when not to use it or mention alternative approaches.

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

get_schematic_viewGet Schematic ViewA
Read-onlyIdempotent

Return a rasterized image of the schematic (PNG by default, or SVG). Uses kicad-cli to export SVG, then converts to PNG via cairosvg. Use this for visual feedback after placing or wiring components.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoImage width in pixels (default: 1200)
formatNoOutput format (default: png)
heightNoImage height in pixels (default: 900)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable implementation context: it uses kicad-cli to export SVG and converts to PNG via cairosvg, which explains the intermediate pipeline without contradicting 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?

Two sentences, front-loaded with the primary purpose, and no redundant detail. Every clause adds value, making it highly efficient.

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 a complete schema, annotations, and an output schema, the description covers the essential purpose, usage timing, and implementation detail. It could mention return type specifics, but the output schema handles that, so it is adequately complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal parameter context ('PNG by default, or SVG' aligns with the format parameter), but the schema already fully documents all four parameters.

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 clearly states the tool returns a rasterized image of the schematic, with PNG as default and SVG as an option. It uses a specific verb ('Return') and specific resource, and distinguishes itself from export tools by emphasizing visual feedback.

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 explicitly says 'Use this for visual feedback after placing or wiring components,' providing clear context. It does not name alternatives like export_sch_svg for export tasks, but the intended use case is well communicated.

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

get_schematic_view_regionGet Schematic View RegionA
Read-onlyIdempotent

Export a cropped region of the schematic as an image (PNG or SVG). Specify bounding box coordinates in schematic mm. Useful for zooming into a specific area to inspect wiring or layout.

ParametersJSON Schema
NameRequiredDescriptionDefault
x1YesLeft X coordinate of the region in mm
x2YesRight X coordinate of the region in mm
y1YesTop Y coordinate of the region in mm
y2YesBottom Y coordinate of the region in mm
widthNoOutput image width in pixels (default: 800)
formatNoOutput image format (default: png)
heightNoOutput image height in pixels (default: 600)
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe read. The description adds context about coordinate units (schematic mm) and supported image formats, but does not disclose other behaviors like return value structure. Given annotations cover the safety profile, this is adequate.

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

Conciseness5/5

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

Two sentences: the first states the action and output, the second gives usage guidance. No filler or redundancy.

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

Completeness4/5

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

For a read-only image-export tool with full schema parameter descriptions and an output schema, the description is complete enough. It covers the purpose, the crop region concept, and the common use case. It could optionally mention defaults for width/height, but the schema already does.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter including units and defaults (e.g., 'Left X coordinate of the region in mm', 'default: 800'). The description reinforces the mm unit but adds no new parameter meaning beyond the schema.

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 clearly states 'Export a cropped region of the schematic as an image (PNG or SVG)' with a specific verb, resource, and output. This distinguishes it from sibling tools like get_schematic_view or export_schematic_svg that export full views.

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 explicitly states 'Useful for zooming into a specific area to inspect wiring or layout,' which tells the agent when to use this tool. While it doesn't name alternatives, the 'cropped region' scope makes the differentiation self-evident.

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

get_sheet_propertiesGet Sheet PropertiesA
Read-onlyIdempotent

List hierarchical sheets in a schematic with their name, file, uuid, position, and full property map (built-ins plus custom properties set via set_sheet_property). With sheetName or sheetPath, returns just that sheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNameNoOnly this sheet (by display name)
sheetPathNoOnly this sheet (by file basename)
schematicPathYesPath to the parent .kicad_sch

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context by specifying the sheet hierarchy, the inclusion of full property maps (including custom properties set via set_sheet_property), and the optional filtering behavior. No contradiction with 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?

The description is two sentences, front-loaded with the primary action and resource, and second sentence adds the optional filtering. Every word contributes meaning; there is no fluff or repetition.

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 simple read-only listing tool with annotations covering safety and an output schema provided, the description fully captures the tool's scope and behavior. The mention of hierarchical sheets and custom properties adds necessary context beyond the schema, making it complete.

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

Parameters3/5

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

Schema description coverage is 100% for all three parameters, so the schema already documents them. The description adds a small clarification that sheetName or sheetPath returns only that sheet, but this is mostly redundant with the schema descriptions. No new parameter-specific semantics are introduced.

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 uses a specific verb ('List') and clearly defines the resource ('hierarchical sheets in a schematic') and the returned data (name, file, uuid, position, property map). It also distinguishes from sibling tools like set_sheet_property and add_hierarchical_sheet by focusing on read-only listing.

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?

The description clearly states the tool's purpose and optional filtering by sheetName or sheetPath, giving users context on when to use it. It does not explicitly name alternatives or exclusions, but the read-only nature and sibling tool names provide enough indication.

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

get_symbol_infoGet Symbol InfoA
Read-onlyIdempotent

Get detailed information about a specific symbol (global or project-scope when projectPath is supplied or a project has been opened).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesSymbol specification (e.g., 'Device:R' or 'PCM_JLCPCB-MCUs:STM32F103C8T6')
projectPathNoOptional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path so project-scope libraries are searched.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as read-only and idempotent. The description adds the scoping behavior (global/project) beyond annotations, but does not describe what 'detailed information' contains beyond what the output schema provides. No contradiction with 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?

The description is a single, concise sentence of 19 words. It is front-loaded with the primary action and resource, then adds the scope nuance. No wasted words.

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?

Given the simple getter nature, full schema description, output schema presence, and safety annotations, the description is mostly complete. It covers the tool's main function and scoping, though 'detailed information' could be slightly more explicit about what fields are returned (though the output schema presumably covers this).

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?

Both parameters (symbol and projectPath) are fully described in the schema with examples and usage details. The description adds no extra semantics beyond what the schema already covers, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get detailed information about a specific symbol'. It identifies the resource (symbol) and distinguishes this from sibling search/list tools by focusing on a single symbol. The scope behavior (global vs project) adds specificity.

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 description provides context on when global vs project-scope applies ('when projectPath is supplied or a project has been opened'), but it does not explicitly compare with sibling tools like search_symbols or list_symbol_pins. Usage is implied for fetching info about a specific symbol, but no exclusions or alternatives are named.

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

get_wire_connectionsGet Wire ConnectionsA
Read-onlyIdempotent

Returns the net name and all wires and component pins connected at a given point. Accepts either a component reference + pin number (e.g. reference='U1', pin='3') or a schematic coordinate (x, y in mm). Returns net=null for unnamed (unlabelled) nets. The query point must be at a wire endpoint or junction — midpoints are not matched. Use get_schematic_pin_locations or list_schematic_wires to obtain exact endpoint coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX coordinate of a wire endpoint in mm. Pair with y.
yNoY coordinate of a wire endpoint in mm. Pair with x.
pinNoPin number or name (e.g. '3', 'SDA'). Pair with reference.
referenceNoComponent reference (e.g. U1, R1). Pair with pin.
schematicPathYesPath to the schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description adds operationally important details: unnamed nets return net=null, and the query point must be an exact endpoint/junction rather than a midpoint. This prevents incorrect assumptions about coordinate tolerance and net naming.

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 sentences, front-loaded with the main result, and every sentence adds essential information: input modes, null behavior, endpoint constraint, and helper tools. There is no redundancy with the schema or annotations.

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 tool is a read-only query with rich annotations and an output schema. The description covers the two input modes, the exact-point constraint, and the unlabeled-net null behavior. No critical operational aspect appears missing for an agent to select and invoke it correctly.

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

Parameters4/5

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

The schema already documents all five parameters with 100% coverage, establishing a baseline of 3. The description adds valuable semantics by defining the two parameter-pair modes (reference/pin vs x/y), including an example and units, which is not fully explicit in the schema alone.

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 specific action and resource: 'Returns the net name and all wires and component pins connected at a given point.' It also clearly defines the two supported input modes (reference+pin or x/y coordinate) and the endpoint/junction requirement, which distinguishes it from more generic net or point query 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?

The description states when the tool is usable (wire endpoints or junctions) and explicitly excludes midpoints. It also directs users to get_schematic_pin_locations or list_schematic_wires to obtain exact endpoint coordinates. However, it does not explicitly contrast this tool with similar query tools like get_net_at_point or get_net_connections.

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

hierarchical_placeHierarchical PlaceA
Destructive

Cluster a board's footprints by their schematic-sheet hierarchy (the HierPlace algorithm). After sync_schematic_to_board piles every footprint at the origin, this packs each functional block together as a starting point for manual placement. File-based: reads and rewrites the .kicad_pcb on disk, so save any in-memory board edits first. Locked footprints are left in place.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathYesAbsolute path to the .kicad_pcb file to re-place

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint:true. The description adds critical behavioral detail: it reads and rewrites the .kicad_pcb on disk, requiring a save first, and leaves locked footprints in place. This goes beyond the annotations and gives the agent important safety 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 sentences, each earning its place: main purpose, workflow context, and critical file/locked-footprint behavior. No filler or repetition.

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 one well-documented parameter and an output schema present, the description covers the algorithm, when to use it, file safety, and locked-footprint handling. This is sufficient for an agent to decide when and how to invoke the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% for boardPath, with its own description. The tool description reinforces that the file is modified on disk but adds no new syntax or format details beyond the schema. Baseline 3 is appropriate since the schema already explains the parameter fully.

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 the exact function: 'Cluster a board's footprints by their schematic-sheet hierarchy', naming the algorithm. It also clarifies the outcome ('packs each functional block together') and frames it as a starting point for manual placement, distinguishing it from manual placement and other placement 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?

The description gives clear context: it should be used after sync_schematic_to_board has piled footprints at the origin, and before manual placement. It also includes a precondition to save in-memory edits first. However, it doesn't explicitly name alternatives or state when not to use it, so it falls short of a 5.

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

import_3d_modelImport 3d ModelA
Destructive

Copy a 3D model file (.step/.stp/.wrl/.x3d/.iges) into the project's *.3dshapes library folder and return a portable ${KIPRJMOD}/... path. Feed the returned 'modelPath' straight into add_footprint_3d_model or add_component_3d_model.

ParametersJSON Schema
NameRequiredDescriptionDefault
newNameNoRename the copied file (source extension kept if omitted)
modelPathYesPath to the source 3D model file to import
overwriteNoOverwrite an existing destination file (default false)
libraryDirNoTarget *.3dshapes directory (absolute, or relative to the project). Default: <project>/<project>.3dshapes
projectPathYesPath to the .kicad_pro file or the project directory (used to locate the .3dshapes folder and compute ${KIPRJMOD})

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation is acknowledged. The description adds context by explaining the copy operation, the return of a portable ${KIPRJMOD} path, and the overwrite behavior (via schema). This goes beyond bare annotation disclosure, though it omits failure modes or permission requirements.

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 two sentences, front-loaded with the main action, and each sentence earns its place. No redundant wording or fluff.

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?

Given the presence of an output schema and rich parameter descriptions, the description is complete enough. It covers the workflow, file types, and return value usage. It does not detail every edge case (e.g., behavior when libraryDir is omitted), but those are already in the schema, so the description is adequate.

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

Parameters4/5

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

Schema coverage is 100%, so the parameters are already described in detail. The description adds value by noting the source file's supported extensions and explicitly linking the returned modelPath to downstream tools, which helps agents understand the purpose of modelPath and projectPath beyond the schema definitions.

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 uses a specific verb ('Copy') and resource ('3D model file into project's *.3dshapes library folder'), clearly distinguishing it from sibling tools like add_footprint_3d_model. It also lists supported file extensions, removing ambiguity about what files it accepts.

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?

The description provides clear context: it is a preliminary step before attaching the model via add_footprint_3d_model or add_component_3d_model. It names these alternatives explicitly, but does not explicitly state when not to use this tool (e.g., if the file already exists in the library), so it falls short of a 5.

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

import_eagle_projectImport Eagle ProjectA
Destructive

Import an Eagle project (.brd + .sch) and convert it to a KiCad project. Converts the PCB layout via kicad-cli and translates the schematic from Eagle XML to KiCad S-expression format.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_fileYesAbsolute path to the Eagle .brd board file
output_dirNoOutput directory for the KiCad project (defaults to a subdirectory next to the .brd file)
project_nameNoKiCad project name (defaults to the .brd filename without extension)
schematic_fileNoAbsolute path to the Eagle .sch schematic file (auto-detected from .brd path if omitted)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true, and the description adds conversion details (kicad-cli, Eagle XML to S-expression) that explain the process. However, it does not disclose side effects such as overwriting files, source file handling, or any preconditions like requiring kicad-cli to be installed, so it adds limited behavioral context 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?

The description is two sentences long, front-loads the core purpose, and provides a brief but useful technical overview. Every sentence contributes value without wasteful elaboration.

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 an output schema present and rich input schema, the description covers the essential conversion steps and file types. It lacks explicit prerequisites or side-effect warnings, but for a moderately complex import tool, it is sufficiently complete for an agent to understand the tool's role.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (board_file, output_dir, project_name, schematic_file) are already described. The description mentions .brd and .sch but does not add meaningful parameter semantics beyond what the schema already provides, aligning with the baseline score of 3.

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 clearly states the tool's function: importing Eagle .brd + .sch files and converting them to KiCad. It uses specific verbs ('Import', 'convert'), names the resource (Eagle project), and specifies the output (KiCad project), distinguishing it from generic importers like 'import_pcb'.

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 description implies the tool is for Eagle-to-KiCad conversion, but it does not explicitly state when to use it over alternatives (e.g., 'import_pcb' or 'create_project'). No exclusions or alternative tool references are provided, leaving usage context implicit.

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

import_pcbImport PcbA
Destructive

Import a vendor PCB file (PADS, Altium, Eagle, CADSTAR, Fabmaster, P-CAD, SolidWorks PCB, or a binary Cadence Allegro .brd) and convert it to a KiCad .kicad_pcb file via kicad-cli's native pcb importer. Binary Cadence Allegro .brd files must use format 'auto' (kicad-cli auto-detects the Allegro binary format; there is no 'allegro' format literal). This only imports PCB/layout data — it does not import schematics.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoInput format hint (default 'auto'). Use 'auto' for binary Cadence Allegro .brd files — there is no 'allegro' literal in this enum.
inputFileYesAbsolute path to the vendor PCB file to import
outputFileNoDestination .kicad_pcb path (defaults beside inputFile, same basename)
reportFormatNoCapture a structured import report from kicad-cli (default 'none')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Despite the annotations providing destructiveHint=true, the description adds meaningful behavioral context: it specifies the conversion mechanism (kicad-cli native importer), the need for format 'auto' for binary Allegro .brd files, and the scope limitation to PCB/layout data only. It does not detail overwrite behavior, but since annotations already cover destructiveness, the bar is lower and the added context is valuable.

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 compact and front-loaded, with the primary action and supported formats in the first sentence. The following sentences add essential caveats (Allegro format handling and scope limitation) without redundancy. Every sentence earns its place, and the structure is clear and efficient.

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 tool with 4 parameters, enums, and an output schema, the description covers the core purpose, supported formats, a special case, and a scope limitation. It relies on the schema and annotations for details like output defaults, report format, and destructiveness, which is acceptable. Minor gaps include not mentioning potential side effects beyond the annotation, but overall it is complete enough for the complexity.

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?

The schema already provides 100% parameter coverage with detailed descriptions for each parameter, including the special Allegro note. The description reinforces some of this (e.g., the Allegro 'auto' requirement and .kicad_pcb output) but does not add significant new semantics beyond the schema's existing rich documentation. Baseline 3 is appropriate.

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 clearly states the tool's function: importing a vendor PCB file and converting it to a KiCad .kicad_pcb file via kicad-cli's native importer. It enumerates specific supported formats and explicitly distinguishes itself from schematic import by stating it only handles PCB/layout data, which differentiates it from sibling tools like import_eagle_project or schematic importers.

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?

The description provides clear context for when to use the tool (importing vendor PCB layout files) and explicitly states a key exclusion: it does not import schematics. However, it does not name alternative sibling tools for schematic imports, so it lacks explicit when-not-to-use guidance with alternatives.

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

import_sesImport SesA
Destructive

Import a Specctra SES (session) file into the current PCB. Use after running Freerouting externally.

ParametersJSON Schema
NameRequiredDescriptionDefault
sesPathYesPath to the .ses file to import
boardPathNoPath to .kicad_pcb file (default: current board)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds minimal extra context, only mentioning importing into the current PCB. It does not disclose effects like overwriting existing routing or requiring a valid SES file, but with annotations covering the main risk, a middle score is appropriate.

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 two short sentences with no redundant information. Every word contributes to understanding the tool's purpose and usage context.

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?

The tool is simple with two parameters and an output schema, so the description covers the essential purpose and usage. The main missing piece is the effect on existing routing (e.g., replacement), but given the annotations and schema, it is reasonably complete.

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

Parameters3/5

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

Schema description coverage is 100%, with both sesPath and boardPath having descriptions. The tool description does not add parameter-specific detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the action: 'Import a Specctra SES (session) file into the current PCB.' It uses a specific verb ('import') and resource ('Specctra SES file'), and the mention of Freerouting distinguishes it from other import tools like import_pcb or import_eagle_project.

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?

The phrase 'Use after running Freerouting externally' provides clear context for when to use the tool. However, it does not explicitly name alternatives or exclusions, but the context is sufficient to guide an agent to this tool for SES files from Freerouting.

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

import_symbolImport SymbolA
Destructive

Copy a symbol from one .kicad_sym library into another, with optional rename and overwrite. The target library is created if missing. A derived symbol (one using (extends ...)) needs its parent imported into the target first.

ParametersJSON Schema
NameRequiredDescriptionDefault
newNameNoRename the symbol on import
overwriteNoOverwrite if the symbol already exists in the target
symbolNameYesSymbol to import
sourceLibraryPathYesPath to the source .kicad_sym file
targetLibraryPathYesPath to the target .kicad_sym (created if missing)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already signal destructive behavior (destructiveHint=true). The description adds side effects not fully captured by annotations: the target library is created if missing, and derived symbols require their parent to be imported first. No contradiction with annotations and no misleading statements.

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 three sentences, front-loaded with the primary purpose, followed by two valuable caveats. Every sentence provides necessary context without redundancy or filler.

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 an output schema available, the description does not need to explain return values. It covers the main operation, key side effects (target creation, overwrite), and an important prerequisite (derived symbols need parent). A minor gap is lack of failure behavior details (e.g., when overwrite is false and the symbol already exists), but overall it is sufficiently complete.

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

Parameters4/5

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

Schema coverage is 100% with each parameter already having a clear description, so baseline is 3. The description adds a practical layer by explaining the derived-symbol caveat, which directly affects how the symbolName parameter should be used, elevating it slightly above baseline.

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 action (copy a symbol between .kicad_sym libraries), specifies the resources involved, and includes optional rename/overwrite behavior. This clearly distinguishes it from sibling tools like delete_symbol, create_symbol, or rename_symbol.

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?

The description gives clear usage context: copying a symbol into another library, with the target library auto-created and a caveat about derived symbols needing their parent imported first. It does not explicitly mention when to avoid the tool or offer alternative tools, so it stops short of a 5.

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

is_dirtyIs DirtyA
Read-onlyIdempotent

Return whether the MCP knows the loaded board has unsaved memory changes or external disk changes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as readOnly, idempotent, and non-destructive. The description adds valuable context by defining 'dirty' as 'unsaved memory changes or external disk changes' and clarifying that it reports the MCP's knowledge state. This goes beyond the annotations without contradiction.

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 sentence that is front-loaded with the action ('Return whether') and contains no fluff. Every word 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?

For a zero-parameter, boolean-returning tool with an output schema, the description fully explains what the tool does. It covers both types of changes and the 'MCP knows' qualifier, making the purpose clear without missing relevant context.

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. The description correctly focuses on what the tool returns rather than parameter meanings, which are irrelevant here. No parameter documentation is needed.

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 ('Return whether') and a precise resource: whether the MCP knows the loaded board has unsaved memory changes or external disk changes. This clearly distinguishes it from sibling tools that save, reload, or discard changes.

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 description implies usage as a status check before save/reload operations but does not explicitly state when to use it over alternatives or mention any exclusions. There is no direct guidance such as 'Use before reloading' or 'Use to detect external modifications before saving.'

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

launch_kicad_uiLaunch Kicad UiB
Destructive

Launch KiCAD UI, optionally with a project file

ParametersJSON Schema
NameRequiredDescriptionDefault
autoLaunchNoWhether to launch KiCAD if not running (default: true)
projectPathNoOptional path to .kicad_pcb file to open

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already flag the operation as destructive and non-read-only, but the description adds no behavioral context beyond that. It does not mention process spawning, effect on already-running instances, or potential side effects, leaving the agent without extra insight.

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

Conciseness5/5

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

A single, front-loaded sentence that is functional and free of filler. Every word earns its place.

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 simple launcher with complete parameter schemas and an output schema, the description is nearly sufficient. It could be improved by noting behavior when KiCAD is already running or handling of nonexistent project paths, but these are minor gaps.

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?

The input schema fully describes both parameters (autoLaunch and projectPath) with 100% coverage. The description adds no new meaning beyond paraphrasing projectPath, so the baseline of 3 is appropriate.

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 action ('Launch KiCAD UI') and the optional project file scope, clearly distinguishing this from project/board-opening tools like open_project or open_board. It is direct and unambiguous.

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 guidance is given on when to use this tool versus alternatives such as check_kicad_ui, open_project, or open_board. The description implies launching the UI but does not specify contexts, prerequisites, or exclusions.

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

lint_offgridLint OffgridA
Destructive

Report every off-grid connection-relevant coordinate in a schematic — wire/bus endpoints, symbol origins, label/junction/no_connect anchors — and optionally snap them to the nearest grid point (fix: true). KiCad's connection grid is fixed at 50 mil (1.27 mm) and junction placement uses exact matching, so a single off-grid endpoint can poison junction placement for a whole sheet. Unlike snap_to_grid (whole-file rewrite), fixes here are byte-exact text splices that preserve file formatting; (lib_symbols) content and property field positions are never touched. Offenders more than 0.5 mm off-grid are reported as NEEDS HUMAN and never auto-snapped.

ParametersJSON Schema
NameRequiredDescriptionDefault
fixNoSnap offenders in place (default false: report only)
gridSizeNoGrid spacing in mm (default: 1.27 mm = 50 mil, the KiCad connection grid)
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Despite destructiveHint being true in annotations, the description adds significant behavioral context: it clarifies that fixes are 'byte-exact text splices' that preserve formatting, that '(lib_symbols) content and property field positions are never touched', and that there's a 0.5 mm safety threshold for auto-snapping. This goes well beyond the annotation and informs the agent exactly what side effects to expect.

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 structured as three dense but well-organized sentences. It front-loads the core function, then explains the rationale and limitations. There is no wasted text; every sentence contributes essential information about purpose, safety, or differentiation.

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 covers the tool's main function, optional fix behavior, why it matters (junction placement poisoning), what it does not modify, when it refuses to auto-snap, and how it relates to snap_to_grid. With an output schema present to describe return values, this is a complete and self-contained description for an agent to select and 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 coverage is 100% (each parameter has a description), which gives a baseline of 3. The description adds valuable context: it explains why gridSize defaults to 1.27 mm ('KiCad's connection grid is fixed at 50 mil') and what fix:true does ('snap them to the nearest grid point'). This enhances the meaning of the parameters beyond the schema, though not exhaustively.

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 clearly states the tool's purpose: 'Report every off-grid connection-relevant coordinate in a schematic' and lists specific element types (wire/bus endpoints, symbol origins, label/junction/no_connect anchors). It also distinguishes itself from sibling snap_to_grid by contrasting its byte-exact fix behavior, eliminating ambiguity about what the tool does and how it differs.

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?

Provides explicit alternative guidance: 'Unlike snap_to_grid (whole-file rewrite), fixes here are byte-exact text splices that preserve file formatting.' It also explains when auto-snapping is unsafe ('Offenders more than 0.5 mm off-grid are reported as NEEDS HUMAN and never auto-snapped'). However, it doesn't fully enumerate when not to use this tool versus other linting/reporting tools beyond snap_to_grid, so it's not a 5.

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

lint_schematic_cosmeticLint Schematic CosmeticA
Destructive

Netlist-safe cosmetic cleanup of a .kicad_sch, applied as raw-text edits that never move a symbol, pin, wire, junction, or label anchor. Pass hide_pin_names gives every top-level embedded lib_symbol a (pin_names ... (hide yes)) directive — in label-driven schematics the internal pin names duplicate the net label on the same pin. Pass orient_labels sets each net/global/hierarchical label's text angle and justify from the sheet-space outward side of the pin it sits on (rotation/mirror aware), so text reads away from the symbol body; labels not on a pin are left untouched. Complements autoplace_schematic_fields (which handles Reference/Value fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
dryRunNoReport change counts without writing (default false)
passesNoPasses to run, in order (default: both)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

The annotations already flag destructiveHint=true and readOnly=false. The description adds valuable behavioral detail beyond those annotations: raw-text edits never move anchors, are netlist-safe, leave non-pin labels untouched, and are rotation/mirror aware. This is exactly the kind of context the agent needs.

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 three dense sentences, front-loaded with the key safety guarantee, then methodically explains each pass. Every sentence earns its place with no filler or repetition.

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 3-parameter schema, the presence of an output schema, and the complexity of the two passes, the description is complete. It covers both passes' behavior, safety constraints, and relationship to a sibling tool; defaults and return values are left to the schema, which is appropriate.

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?

Even though the schema covers 100% of parameters, the description gives deep meaning to the two passes that the bare enum values do not convey, including the exact directive added by hide_pin_names and the orientation/justify behavior of orient_labels. This far exceeds the schema's baseline.

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 clearly states the tool performs 'netlist-safe cosmetic cleanup' on .kicad_sch files via raw-text edits, and enumerates two specific passes (hide_pin_names and orient_labels). It also distinguishes itself from the sibling autoplace_schematic_fields by noting it complements that tool.

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 concrete context for when each pass is useful (e.g., hide_pin_names for label-driven schematics) and explicitly mentions autoplace_schematic_fields as a complementary tool. However, it does not provide explicit when-not-to-use exclusions or alternatives beyond that single complement reference.

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

list_floating_labelsList Floating LabelsA
Read-onlyIdempotent

Returns all net labels in the schematic that are not connected to any component pin. A label is 'floating' when no component pin falls on the wire-network reachable from the label's position. Floating labels indicate misplaced or off-grid labels that cause ERC errors. Does not require the KiCAD UI to be running.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds valuable operational context by stating that it does not require the KiCAD UI to be running, and it explains the underlying logic for determining 'floating' status. No contradiction with 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?

The description is four sentences, each earning its place: main action, definition, significance, and operational note. It is front-loaded with the core purpose and avoids redundant wording or 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?

Given the output schema exists to explain return values and annotations cover safety semantics, the description provides sufficient context: what the tool does, what counts as floating, why it matters, and that it works without the UI. For a simple list tool, this is complete.

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?

The input schema has 100% coverage for the single parameter schematicPath, including its description. The tool description does not add extra detail about the parameter beyond the schema, but since the schema already fully documents it, a baseline score of 3 is appropriate.

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 clearly states the tool's function with a specific verb ('Returns') and resource ('net labels'), and precisely scopes it to 'floating' labels. It distinguishes from sibling tools like list_schematic_labels by defining the condition that makes a label floating, so there is no ambiguity.

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?

The description explains the relevance of floating labels—they cause ERC errors—and thus when this tool would be useful. It does not explicitly name alternatives or exclusionary conditions, but the context is clear and the definition separates it from generic label listing.

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

list_footprint_librariesList Footprint LibrariesA
Read-onlyIdempotent

List available .pretty footprint libraries and their contents (first 20 footprints per library). Searches KiCAD standard install paths by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchPathsNoOverride default search paths. Each entry should be a directory that contains .pretty subdirs.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare the operation as read-only and idempotent, and the description adds useful behavioral context: it returns only the first 20 footprints per library and defaults to KiCAD standard install paths. This explains the partial listing behavior and search scope beyond the safety profile.

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

Conciseness5/5

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

Two concise sentences with no wasted words; the verb and scope are front-loaded. It efficiently communicates the tool's purpose and default behavior.

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?

The tool is simple, has an output schema, and annotations cover side-effects. The description covers the key behavioral details (library type, truncation, default paths). Minor omission: no explicit pointer to sibling tools for full footprint listing, but not required given the output schema and annotations.

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 schema fully describes searchPaths with clear meaning ('directory that contains .pretty subdirs'), and the description complements it by explaining the default behavior ('Searches KiCAD standard install paths by default') that searchPaths overrides. This adds context beyond the schema alone.

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 ('List') and resource ('available .pretty footprint libraries and their contents'), with a clear scope ('first 20 footprints per library'). This distinguishes it from sibling tools like list_library_footprints, which lists footprints for a specific library, and list_libraries, which may list all library types.

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?

The description gives clear context: it searches KiCAD standard install paths by default and can be overridden via searchPaths. It does not explicitly name alternatives or exclusions, but the context is sufficient for an agent to understand when this tool is appropriate. Could be improved by stating when to prefer this over list_library_footprints.

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

list_graphicsList GraphicsA
Read-onlyIdempotent

List PCB graphic/drawing items such as gr_line, gr_arc, gr_rect, gr_text and dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoOptional layer filter, e.g. Edge.Cuts or F.SilkS

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only and idempotent behavior, and the description adds value by enumerating the types of items included (gr_line, gr_arc, etc.), giving the agent a concrete sense of what to expect. No contradiction with 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?

The description is a single, well-structured sentence that front-loads the core function and provides specific examples. Every word earns its place, with no fluff or redundancy.

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 simple list operation, one optional parameter, and a rich set of annotations plus an output schema, the description is complete. It conveys the type of content and examples, and the schema covers filtering and return structure.

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?

The input schema has 100% description coverage, with the layer parameter already described as an optional filter. The tool description does not add further parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

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 clearly states the tool lists PCB graphic/drawing items with specific examples (gr_line, gr_arc, gr_rect, gr_text, dimensions). This is a specific verb+resource combination that distinguishes it from sibling tools like delete_graphic or update_graphic.

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?

The description implies the tool is for retrieving graphic items, and the layer parameter suggests filtering usage. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough for an agent to select this tool when enumeration of graphics is needed.

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

list_librariesList LibrariesB
Read-onlyIdempotent

List all available KiCAD footprint libraries

ParametersJSON Schema
NameRequiredDescriptionDefault
search_pathsNoOptional additional search paths for libraries

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is well covered. The description adds the 'footprint' scope but does not elaborate on how 'available' is determined, whether search_paths expands the search, or what the output structure looks like. This adds marginal value beyond 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?

The description is a single, concise sentence that front-loads the action and resource. It contains no filler or redundant 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?

Given the existence of an output schema and the simple read-only nature, the description is mostly complete. The only gap is ambiguity with the sibling list_footprint_libraries and lack of mention of search_paths, but those are partially addressed by schema and context.

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?

The schema has 100% coverage for its single optional parameter, including a description for search_paths. The tool description adds nothing about the parameter, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'KiCAD footprint libraries', which is specific. However, it does not distinguish this tool from the sibling tool list_footprint_libraries, which likely performs the same function, so it misses the top score for sibling differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus list_footprint_libraries or list_symbol_libraries, nor any mention of when the optional search_paths parameter might be needed. The description gives no context for choosing this tool over alternatives.

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

list_library_footprintsList Library FootprintsA
Read-onlyIdempotent

List all footprints in a specific KiCAD library

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of footprints to list
filterNoOptional filter pattern for footprint names
library_nameYesName of the library to list footprints from

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With annotations already declaring readOnlyHint, idempotentHint, and non-destructive behavior, the description adds no further behavioral context. The 'all' claim is not qualified by the limit parameter, which could mislead, so no added value.

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 clean sentence, front-loaded with the verb and resource, no unnecessary words.

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?

The tool is simple with an output schema and strong annotations. The description is sufficient for basic invocation, but the 'all' vs limit nuance could be clearer. Acceptable for this complexity.

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?

All three parameters are described in the schema (100% coverage), so the description doesn't need to add parameter details. Baseline 3 applies.

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

Purpose5/5

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

The description uses the specific verb 'list' and identifies both the resource ('footprints') and the scope ('specific KiCAD library'), clearly distinguishing it from sibling tools like list_footprint_libraries and search_footprints.

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?

The description implies the appropriate use case (when you need footprints from a named library) and requires the library_name parameter. It doesn't explicitly mention when not to use it or alternatives, but the context is clear.

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

list_library_symbolsList Library SymbolsA
Read-onlyIdempotent

List all symbols in a specific KiCAD symbol library (global or project-scope when projectPath is supplied or a project has been opened).

ParametersJSON Schema
NameRequiredDescriptionDefault
libraryYesLibrary name (e.g., 'Device', 'PCM_JLCPCB-MCUs')
projectPathNoOptional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path to resolve project-scope libraries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already indicate this is a read-only, idempotent, non-destructive operation. The description adds the behavioral detail of global vs. project-scope resolution, which is useful context beyond annotations. However, it does not describe return structure, pagination, or error behavior, and with annotations covering safety, a mid-range score is appropriate.

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. It front-loads the main purpose and packs in the scope nuance without waste. Every word 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?

This is a simple list operation with an output schema present, full parameter documentation, and strong annotations (read-only, idempotent). The description covers the key decision point (which library and how scope is resolved). There is no need for more detail; it is complete for its complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces the purpose of projectPath ('when projectPath is supplied or a project has been opened') and hints at library selection, but it does not add substantial meaning beyond the detailed schema parameter descriptions. It is adequate but not exceptional.

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 uses the specific verb 'List' with a clear resource: 'symbols in a specific KiCAD symbol library.' It distinguishes itself from sibling tools like list_libraries, list_symbol_libraries, and get_symbol_info by focusing on the contents of a single library. It also clarifies the scope (global or project-scope), removing any ambiguity.

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?

The description conveys when to use the tool: when all symbols in a particular library are needed, with nuance about project-scope resolution via projectPath or an opened project. It does not explicitly name alternatives or exclusions, but the sibling context makes the intended use clear. This is more than merely implied usage, hence a 4.

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

list_schematic_componentsList Schematic ComponentsA
Read-onlyIdempotent

List all components in a schematic with their references, values, positions, and pins. Essential for inspecting what's on the schematic before making edits.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoOptional filters
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this with 'List all components' and adds specific output details (references, values, positions, pins), going beyond the annotation signals. No contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and resource. The second sentence adds valuable context without redundancy, making the description both concise and informative.

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 simple read-only list operation with one required parameter and an optional filter, the description covers purpose, output content, and usage context. The schema documents parameters and the output schema presumably handles return structure, so nothing essential is missing.

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

Parameters3/5

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

Schema coverage is 100%, with descriptions for both schematicPath and filter. The description does not elaborate on the parameters themselves but only mentions the output content. Baseline 3 applies because the schema carries the parameter documentation.

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 uses a specific verb ('List') and names the exact resource ('components in a schematic') with the returned fields (references, values, positions, pins). This clearly distinguishes it from sibling tools like list_schematic_nets or list_schematic_wires.

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 says 'Essential for inspecting what's on the schematic before making edits,' providing a clear context for when to use. It does not explicitly name alternatives or exclusions, so it misses the top score.

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

list_schematic_labelsList Schematic LabelsA
Read-onlyIdempotent

List all net labels, global labels, and power flags in the schematic. Optionally filter by label name (netName) and/or label type (labelType).

ParametersJSON Schema
NameRequiredDescriptionDefault
netNameNoFilter to labels whose name exactly matches this string (case-sensitive). Omit to return all labels.
labelTypeNoFilter by label type. 'net' = local label, 'global' = global label, 'power' = power symbol. Omit to return all types.
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

The annotations already declare the tool as read-only and idempotent. The description adds value by specifying the exact scope (net labels, global labels, power flags) and that filtering is optional. It does not introduce any additional side effects or contradict the annotations. It could elaborate on whether it searches the whole schematic hierarchy, but this is a minor gap.

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 two sentences, with the core purpose front-loaded. It uses straightforward language without fluff, and each sentence adds useful 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?

Given the simple read-only nature, comprehensive annotations, and full parameter documentation, the description is sufficient for an agent to understand and invoke the tool correctly. The presence of an output schema further reduces the need to describe return values. The description clearly differentiates from sibling tools by naming the label types.

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?

The tool description adds no new information beyond the schema, which has 100% coverage with detailed parameter descriptions including case-sensitivity and enum values. The description merely restates the filter parameters, so the schema carries the full semantic load.

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 clearly states the tool's function: listing net labels, global labels, and power flags in the schematic. It specifies the resource (schematic) and includes optional filters, distinguishing it from sibling tools like list_schematic_nets or list_schematic_components.

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 description implies when to use the tool (when you need schematic labels) and describes filtering options, but it does not explicitly mention alternatives or contrast with list_schematic_nets or other list tools. The usage context is clear but no exclusions are provided.

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

list_schematic_netsList Schematic NetsA
Read-onlyIdempotent

List all nets in the schematic with their connections.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is known. The description adds the 'with their connections' scope, which slightly extends beyond the tool name, but it does not disclose additional behavioral traits like hierarchical flattening or net naming conventions. With annotations present, this is a baseline 3.

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 clear sentence, front-loaded with the action and resource. Every word earns its place with no fluff or redundancy.

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 tool's simplicity (one parameter, read-only, output schema present), the description fully covers the necessary context. The combination of annotations, schema, and output schema handles safety, parameters, and return values, leaving no critical gaps.

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?

The input schema has 100% description coverage for the only parameter (schematicPath), so the schema documents the parameter fully. The description does not add any parameter-specific detail, matching the baseline 3 for high schema coverage.

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 uses a specific verb ('List') and resource ('all nets in the schematic') with clear scope ('all nets') and additional detail ('with their connections'). This distinguishes it from similar siblings like list_schematic_wires and list_schematic_components, and clearly states what the tool does.

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?

The description provides no guidance on when to use this tool versus alternatives such as get_nets_list or get_net_connections. It does not mention exclusions, prerequisites, or scenarios where another tool would be more appropriate.

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

list_schematic_textsList Schematic TextsA
Read-onlyIdempotent

List all free-form text annotations (notes, headings, documentation strings) in the schematic. Returns position, angle, font size, bold/italic flags, and justification for each text element. Optionally filter by a substring match on the text content.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoCase-insensitive substring filter — only return texts containing this string
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior, so the description doesn't need to restate these. It adds value by describing the return fields (position, angle, font size, etc.) and the optional substring filter, giving the agent a clear picture of what to expect. It does not disclose any side effects or error conditions, but those are less critical given the strong annotation coverage.

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 two sentences: the first states the primary purpose, and the second explains what is returned and the optional filter. It is concise, front-loaded, and every sentence contributes meaningful information without redundancy.

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 simple read-only list operation with complete parameter documentation, strong annotations, and an output schema, the description is fully adequate. It covers the purpose, the data returned, and the filter behavior, leaving no significant gaps for an agent to invoke the tool correctly.

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?

The input schema fully covers both parameters with descriptions (100% coverage), including the case-insensitive substring filter. The description's mention of the filter adds no new meaning beyond the schema; it effectively restates what the schema already documents. Baseline 3 is appropriate because the schema does the heavy lifting.

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 clearly identifies the tool's function: listing free-form text annotations in the schematic. It specifies the resource type and distinguishes from sibling tools like list_schematic_labels by mentioning notes, headings, and documentation strings, which are separate from labels.

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?

The description provides clear context by specifying the resource is free-form text annotations, implying it's not for labels or other schematic elements. However, it does not explicitly state when to use this tool over alternatives or exclude specific cases, such as net labels. The scope is clear but lacks an explicit 'when not to use' statement.

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

list_schematic_wiresList Schematic WiresA
Read-onlyIdempotent

List all wires in the schematic with start/end coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing safety. The description adds value by specifying that it returns all wires with start/end coordinates, which goes beyond annotations and clarifies the result scope and content.

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 sentence with the verb front-loaded, no irrelevant details, and perfectly sized for the tool's simplicity. Every word contributes to the meaning.

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 tool's simplicity, full annotation coverage, a well-described single parameter, and the presence of an output schema, the description is complete. It states the resource, scope, and returned coordinates, leaving no significant gaps for a read-only list operation.

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?

The only parameter, schematicPath, has 100% schema coverage with the clear description 'Path to the .kicad_sch file'. The tool description does not add further detail about the parameter, so the baseline of 3 is appropriate.

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 uses the specific verb 'List' with the resource 'wires in the schematic' and adds the scope 'all wires' plus the returned data 'start/end coordinates'. This clearly distinguishes it from sibling tools like list_schematic_components and list_schematic_nets, and even from get_wire_connections.

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 description does not explicitly state when to use this tool versus alternatives like get_wire_connections or find_orphaned_wires. The purpose is implied, but no exclusionary or alternative guidance is provided, which is a typical missing piece for list-style tools.

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

list_symbol_librariesList Symbol LibrariesA
Read-onlyIdempotent

List all available KiCAD symbol libraries from global sym-lib-table, plus the project's sym-lib-table when projectPath (or any related file) is supplied or a project has been opened.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathNoOptional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path. Including this exposes project-scope sym-lib-table libraries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare read-only and idempotent behavior. The description adds useful context about global vs project scope and the condition for including project libraries. It doesn't contradict annotations and offers extra detail beyond them, though 'any related file' is somewhat vague.

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 a single sentence, front-loaded with the verb and object, and contains no redundant filler. It is appropriately concise, though the phrase 'any related file' introduces slight ambiguity.

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 simple read-only list tool with one optional parameter and an existing output schema, the description covers scope and conditional behavior well. Annotations handle safety, so the description is sufficiently complete.

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?

The input schema already documents the single parameter projectPath with a descriptive explanation, so schema coverage is 100%. The description adds little beyond the schema; mentioning 'any related file' is broader but less precise than the schema's file type list.

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 clearly identifies the tool as listing KiCAD symbol libraries, with a specific scope (global sym-lib-table plus project sym-lib-table when relevant). It distinguishes from siblings by focusing on library collections rather than symbols within a library, but does not explicitly name alternatives.

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 implied: you list symbol libraries when you need the available libraries, and project scope is included if a project is opened or projectPath is given. No explicit when-not or comparison to alternatives is provided.

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

list_symbol_pinsList Symbol PinsA
Read-onlyIdempotent

Return pin names, numbers, and types for a symbol directly from the library — no schematic required. Use this before add_schematic_component to discover pins for connect_to_net calls. Each pin has 'number' (e.g. '1', 'A5') and 'name' (e.g. 'FB', 'GND') — connect_to_net accepts either. Pass schematicPath to resolve project-local symbols. Returns close-match suggestions if the symbol name is slightly wrong.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesSymbol in 'Library:SymbolName' format (e.g., Device:R, Connector:Conn_01x04)
schematicPathNoPath to .kicad_sch — enables project-local sym-lib-table lookup

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds valuable behavioral context beyond annotations: return field semantics, acceptance of either number or name by connect_to_net, project-local symbol resolution, and close-match suggestions.

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?

Four sentences, each adding distinct value: purpose, usage, return field examples, and optional parameter behavior. Concise and front-loaded, though slightly longer than strictly necessary.

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?

Given the output schema exists and annotations cover safety, the description is complete for a moderate-complexity read-only tool. It covers purpose, use case, param semantics, and a notable behavioral quirk without needing to explain return structure.

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 already covers both parameters with 100% description coverage, so baseline is 3. Description confirms the 'Library:SymbolName' format and explains why schematicPath is needed, but adds no new parameter-level meaning beyond the schema.

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?

Starts with a specific verb-resource pair: 'Return pin names, numbers, and types for a symbol directly from the library — no schematic required.' It clearly distinguishes from siblings by focusing on pins and library access, and explicitly ties to the add_schematic_component and connect_to_net workflow.

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-use context: 'Use this before add_schematic_component to discover pins for connect_to_net calls.' It also states a key condition ('no schematic required') and explains when to pass schematicPath, but doesn't enumerate exclusions or alternative tools.

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

list_symbols_in_libraryList Symbols In LibraryA
Read-onlyIdempotent

List all symbol names in a .kicad_sym library file.

ParametersJSON Schema
NameRequiredDescriptionDefault
libraryPathYesPath to the .kicad_sym file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare the operation read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds the specific scope of returning symbol names from a given file, which is useful but does not disclose edge cases like handling of missing files or invalid formats. No contradiction with 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?

The description is a single, front-loaded sentence with no filler. It efficiently states the action and object.

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 a rich output schema present, annotations covering safety, and a single well-described parameter, the description is complete for this simple read tool. It conveys the essential purpose without needing to explain return values.

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?

The schema covers 100% of the single parameter with a clear description ('Path to the .kicad_sym file'). The tool description adds no further parameter semantics beyond what the schema already provides, so baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function: listing all symbol names from a .kicad_sym file. The verb 'list' and resource 'symbol names' are specific, and the '.kicad_sym library file' scope distinguishes it from other library-related tools like list_library_symbols.

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 description implies the use case: when you need to enumerate symbol names in a specific .kicad_sym file. However, it does not explicitly mention when not to use it or point to alternatives such as list_library_symbols, so the guidance is inferred rather than stated.

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

list_tool_categoriesList Tool CategoriesA
Read-onlyIdempotent

List all available KiCAD tool categories with their descriptions and tool counts. Use this to discover which tools are available via the router.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
categoriesYes
total_toolsYes
total_categoriesYes

TDQS

A4.3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds that it returns categories with descriptions and tool counts, contributing some context beyond the annotations, but doesn't disclose additional behavioral traits like pagination or response structure (though an output schema exists).

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 two sentences, front-loaded with the action and result, and the second sentence gives a clear usage directive. Every word earns its place; no filler or repetition.

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 tool's simplicity (no params, read-only, output schema present), the description fully covers what it does and when to use it. It is complete for a catalog/discovery tool, especially with rich sibling context around it.

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 has zero parameters, so the description doesn't need to explain any. Per the rubric, 0 params gives a baseline of 4; the description does not dilute this by adding irrelevant parameter information.

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 uses a specific verb ('List') and resource ('all available KiCAD tool categories'), and explicitly mentions the content ('descriptions and tool counts'). It clearly distinguishes from siblings like get_category_tools and search_tools, which are more focused or search-oriented.

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?

The description provides explicit usage context: 'Use this to discover which tools are available via the router.' It doesn't explicitly state when not to use it or name alternatives, but the context clearly implies it as a top-level discovery mechanism, which is sufficient for this simple tool.

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

modify_traceModify TraceA
Destructive

Modify an existing trace (change width, layer, or net).

ParametersJSON Schema
NameRequiredDescriptionDefault
netNoNew net name
layerNoNew layer name
widthNoNew trace width in mm
traceUuidYesUUID of the trace to modify

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description is consistent with these. The description adds minimal behavioral context beyond the parameter list, such as that it modifies an existing trace, but does not disclose failure conditions or irreversible effects. It neither contradicts nor significantly enriches 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?

The description is a single sentence of eight words, concise and front-loaded with the core action and object. Every word contributes meaning, with no redundant detail.

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 simple mutation tool with fully described parameters, an output schema, and clear annotations, the description is adequate. It covers the core function and aligns with the safety profile, though it omits contextual details like when to use it or potential side effects, which are partly covered by the annotations.

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?

Input schema covers 100% of parameters with descriptions (traceUuid, width, layer, net). The description's mention of 'change width, layer, or net' simply restates the parameter names without adding new semantic meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool modifies an existing trace and lists the specific properties (width, layer, net) that can be changed. It distinguishes from sibling tools like delete_trace and route_trace by focusing on modification of existing traces rather than creation or deletion.

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 guidance is provided on when to use this tool versus alternatives. The description does not mention that it is for editing existing trace properties or exclude scenarios like creating or deleting traces, nor does it reference any sibling tools.

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

move_componentMove ComponentA
Destructive

Move a PCB component to a new position. Optionally update rotation or flip to a different copper layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoOptional target layer (e.g., 'F.Cu', 'B.Cu') - flips component if needed
positionYesNew position coordinates and unit
rotationNoOptional new rotation in degrees
referenceYesReference designator of the component (e.g., 'R5')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructive behavior (destructiveHint=true). The description adds context beyond this by mentioning optional rotation updates and layer flipping, which are not covered by annotations. It does not discuss side effects like trace breakage, but the additional behavior info is useful.

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 sentence that front-loads the primary action ('Move a PCB component to a new position') and efficiently conveys the optional capabilities. No unnecessary words or repetition.

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?

Given the tool's moderate complexity (4 params, nested object), the schema fully documents parameters, annotations cover safety (destructive), and an output schema exists. The description succinctly covers the core purpose and options. It doesn't mention prerequisites like an open board, but that is evident from sibling tools and the overall workflow.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mentions 'new position', 'rotation', and 'flip to a different copper layer', but the schema already provides detailed explanations for these parameters. The description does not add substantial meaning beyond the schema.

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 clearly states the tool moves a PCB component to a new position, with optional rotation and layer flip. This distinguishes it from siblings like rotate_component and batch_move_components, making the purpose specific and unambiguous.

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 description implies this is for moving a component, but it does not explicitly state when to use it over alternatives such as rotate_component for rotations or batch_move_components for multiple components. There are no exclusions or comparisons provided.

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

move_footprint_textMove Footprint TextA
Destructive

Move or update a footprint Reference/Value/user text field without moving the footprint.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoNew X coordinate
yNoNew Y coordinate
unitNoCoordinate unit
fieldYesText field to move, e.g. reference or value
layerNoOptional destination layer
visibleNoOptional visibility
rotationNoOptional text rotation in degrees
referenceYesComponent reference designator

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that the tool modifies footprint text independently of the footprint, which complements the destructiveHint annotation. It adds value by clarifying the scope of modification (text fields only) but does not elaborate on potential side effects. No contradiction with 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 sentence, front-loaded with the primary action, and no redundant detail. Extremely efficient.

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?

The description covers the core operation and scope sufficiently, and the input schema fully documents all parameters. The optional properties (layer, visibility, rotation) are not explained in the description but are self-explanatory in the schema. Given the presence of an output schema and full param coverage, it's adequately complete.

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 description clarifies that the 'field' parameter can be Reference, Value, or user text, going beyond the schema's 'e.g. reference or value'. It also reinforces that coordinates apply to the text, not the footprint. Since schema coverage is 100%, this modest addition earns a 4.

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 clearly identifies the tool's function: moving or updating footprint text fields (Reference/Value/user) without relocating the footprint itself. This differentiates it from sibling tools like move_component, which moves the entire component.

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?

The phrase 'without moving the footprint' provides context for when to use this tool versus alternatives, indicating it's for text-only adjustments. However, it does not explicitly name alternative tools or state exclusions.

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

move_schematic_componentMove Schematic ComponentA
Destructive

Move a placed symbol to a new position in the schematic. By default (preserveWires=true) wire endpoints touching the component's pins are stretched to follow the new position.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYesNew position in schematic mm coordinates
referenceYesReference designator (e.g., R1, U1)
preserveWiresNoStretch connected wire endpoints to follow the move (default true)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations by explaining that wire endpoints touching the component's pins are stretched by default. This is a key side-effect not captured in annotations. Since annotations already hint at destructiveness and the description provides additional nuance, it earns a strong score.

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 concise: two sentences that front-load the main action and provide key default behavior. Every sentence earns its place, with no redundant information or filler.

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 move operation, the description covers the core action and default wire behavior, which is sufficient. It does not explain edge cases (e.g., what happens when preserveWires=false) explicitly, but the schema covers the parameter and given the output schema exists, this is acceptable. Overall, the description is complete enough for the tool's complexity.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining the default behavior of the preserveWires parameter and its effect on wires, which is not fully captured by the schema's description. This justifies a score above baseline.

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 clearly states the tool's function: 'Move a placed symbol to a new position in the schematic.' It uses a specific verb ('move'), identifies the resource ('placed symbol' / 'schematic'), and distinguishes from sibling tools like 'move_component' (which applies to boards) and other schematic editing tools. The wording is unambiguous and action-oriented.

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?

The description gives clear context for when this tool is appropriate (moving schematic components) and mentions the default behavior of preserveWires, which helps understand the move operation. However, it does not explicitly name alternative tools or exclusions (e.g., 'use move_component for PCB moves'), so it falls short of a 5.

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

move_schematic_net_labelMove Schematic Net LabelA
Destructive

Move a net label (local, global, or hierarchical) to a new position in the schematic. Use currentPosition to disambiguate when multiple labels share the same name.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNameYesName of the net label to move
labelTypeNoRestrict search to a specific label type
newPositionYesTarget position in mm
schematicPathYesPath to the .kicad_sch file
currentPositionNoCurrent position to disambiguate when multiple labels share the same name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation behavior is known. The description adds that currentPosition helps disambiguate, which is useful context beyond the annotations. It does not describe side effects or failure modes, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

Two sentences, both relevant and front-loaded. The first states the core action, the second adds a practical disambiguation tip. No waste or repetition.

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?

Given the tool's moderate complexity (5 params, output schema present, annotations provided), the description is sufficient. It explains the action and key edge case (duplicate names), while the schema and annotations cover the remaining details. Could mention coordinate system or error behavior, but these are not essential for basic usage.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description's mention of 'local, global, or hierarchical' aligns with the labelType enum, and the currentPosition disambiguation tip mirrors the schema description, adding no new semantic value. Baseline 3 applies because the schema does the heavy lifting.

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 clearly states 'Move a net label (local, global, or hierarchical) to a new position in the schematic' – a specific verb, resource, and scope. It distinguishes from sibling move tools like move_schematic_component by targeting net labels, and mentions label types.

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?

Provides clear context for its intended use (moving net labels) and also gives a specific guideline for using currentPosition to disambiguate duplicate names. It does not explicitly state when not to use it or name alternatives, but the purpose is unambiguous.

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

open_boardOpen BoardA
Destructive

Open a specific .kicad_pcb board file and refresh the MCP in-memory board state.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathYesPath to the .kicad_pcb file to open

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already set destructiveHint=true, but the description adds context that opening a file will 'refresh the MCP in-memory board state,' indicating a replacement of current state. This goes beyond the raw annotation by specifying the nature of the mutation, though it does not elaborate on side effects like unsaved changes or error scenarios.

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 front-loaded sentence that conveys both the action and its consequence. Every clause adds value, with no redundant or filler content.

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 simple tool with one parameter, an output schema, and annotations, the description covers the essential purpose and effect. It does not explain what happens if the file is invalid or if there are unsaved changes, but these are beyond the core need for a straightforward open operation. The presence of an output schema also reduces the need to describe return values.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter 'boardPath' is already well-described as 'Path to the .kicad_pcb file to open.' The tool description adds no additional parameter detail, so with complete schema coverage, a baseline score of 3 is appropriate.

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 ('Open') and resource ('.kicad_pcb board file'), clearly distinguishing it from project-level tools like open_project. It also mentions the specific effect of refreshing the MCP in-memory board state, which adds precision beyond just naming the operation.

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 description implies when to use the tool—when you need to open a specific board file—but it does not explicitly discuss alternatives or when not to use it. There is no direct comparison to sibling tools like reload_board or open_project, so the usage guidance is only implied, not explicit.

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

open_projectOpen ProjectC
Destructive

Open an existing KiCAD project

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesPath to .kicad_pro or .kicad_pcb file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations include destructiveHint=true, alerting the agent to destructiveness, but the description adds no context about what is destroyed (e.g., current project state) or whether it prompts for unsaved changes. It only restates the basic action.

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 a single concise sentence with no filler. It is front-loaded and easy to parse, though it omits additional context that would be valuable.

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?

Given the tool's destructive annotation and its relationship to siblings, the description is too sparse. It does not explain the impact of opening a project (e.g., replacing the current one) or when to prefer open_board. Even with a good schema, the behavioral and usage context is missing.

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

Parameters3/5

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

The single parameter filename is fully described in the schema (100% coverage) with a clear path format. The description adds no additional semantic information beyond the schema, so it meets the baseline.

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 clearly states the action (open) and resource (existing KiCAD project), aligning with the tool name. However, it does not differentiate from sibling open_board, which could confuse an agent about which to use.

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 guidance is provided on when to use this tool versus alternatives like open_board or close_project. The description is a bare instruction with no context or exclusions.

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

place_componentPlace ComponentA
Destructive

Place a footprint component onto the PCB at the specified position. Optionally set reference, value, footprint, rotation and layer.

ParametersJSON Schema
NameRequiredDescriptionDefault
layerNoOptional layer (e.g., 'F.Cu', 'B.SilkS')
valueNoOptional component value (e.g., '10k')
positionYesPosition coordinates and unit
rotationNoOptional rotation in degrees
boardPathNoPath to the .kicad_pcb file – required when using project-local footprint libraries
footprintNoOptional specific footprint name
referenceNoOptional desired reference (e.g., 'R5')
componentIdYesIdentifier for the component to place (e.g., 'R_0603_10k')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations include destructiveHint=true and the description aligns by indicating a placement action. It adds context about optional properties (reference, value, footprint, rotation, layer) but does not disclose potential side effects like overwriting existing components or requiring a loaded board.

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 two short sentences with no filler, efficiently front-loading the main action and listing optional settings compactly.

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 full schema documentation and an output schema present, the description covers the essential purpose without needing to explain parameters or return values. It is sufficient for a placement tool, though mentioning board state prerequisites could improve it.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 8 parameters. The description lists some optional parameters but adds no semantic detail beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool places a footprint component onto the PCB at a specified position, using a specific verb and resource. It distinguishes from typical placement-related siblings by focusing on adding a new component, though it doesn't explicitly name alternative 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?

Usage is implied by the action 'place' but there is no explicit guidance on when to use this tool versus alternatives like move_component or hierarchical_place. No exclusions or prerequisites are mentioned.

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

place_component_arrayPlace Component ArrayA
Destructive

Place a rectangular grid array of identical components on the PCB with configurable row/column spacing.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYesNumber of rows
valueNoComponent value
columnsYesNumber of columns
rotationNoRotation in degrees
footprintNoFootprint name
rowSpacingYesSpacing between rows
componentIdYesComponent identifier
columnSpacingYesSpacing between columns
startPositionYesStarting position
startReferenceNoStarting reference (e.g., 'R1')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true and readOnlyHint=false, setting the baseline. The description adds context about the array nature but does not disclose additional behavioral traits such as collision handling, overwriting existing components, or whether the operation is reversible. It neither contradicts annotations nor adds substantial behavior beyond them.

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, front-loaded sentence that immediately states the action and scope. Every word earns its place with no filler or redundancy.

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

Completeness4/5

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

Given an output schema is present and the input schema has 100% parameter descriptions, the description is sufficient for an agent to understand the core operation. It could mention prerequisites or edge cases but the structured data already covers parameter and return details.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds high-level meaning (e.g., 'identical components', 'rectangular grid array') but does not clarify parameter semantics like spacing units, direction of rows/columns, or the role of optional parameters, leaving the schema to carry the full details.

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 uses a specific verb ('Place') and resource ('rectangular grid array of identical components on the PCB') that clearly distinguishes it from single-component placement tools like place_component or hierarchical_place. It is immediately obvious what the tool does and how it differs.

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 description implies when to use this tool (when you need a rectangular array of identical components) but does not explicitly state when to use it versus alternatives like place_component or batch_move_components. No exclusions or alternative tool names are mentioned.

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

query_tracesQuery TracesA
Read-onlyIdempotent

Query traces on the board with optional filters by net, layer, or bounding box.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNoFilter by net name
unitNoUnit for coordinates
layerNoFilter by layer name
boundingBoxNoFilter by bounding box region

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety. The description adds minimal behavioral context beyond the filters, such as what a default query returns or performance implications. It does not contradict 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?

The description is a single sentence of 12 words, front-loaded with the action and resource. Every word contributes meaning, with no redundancy or irrelevant details.

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 a nested boundingBox parameter, output schema, and annotations present, the description covers the core functionality (querying traces with optional filters) adequately. It implies that omitting filters returns all traces, and since an output schema exists, return details need not be described. Slightly more guidance on defaults would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100% for all parameters (net, unit, layer, boundingBox), so the description adds little beyond referencing the same filters. It does not provide extra details like default units or coordinate behavior, staying at the baseline for full schema coverage.

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 states 'Query traces on the board with optional filters by net, layer, or bounding box,' which clearly identifies the verb (query), resource (traces), and location (board). It distinguishes from sibling tools by focusing on traces specifically, though it does not explicitly contrast with similar query tools like query_zones.

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 description implies usage through 'optional filters' but does not explicitly state when to use this tool over alternatives like query_zones or get_net_pads. It gives clear context for filtering but lacks exclusions or alternative tool references.

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

query_zonesQuery ZonesA
Read-onlyIdempotent

Query copper zones (filled pours) on the board with optional filters by net, layer, or bounding box. Returns zone net, layers, priority, fill state, and bounding box. Useful for auditing power planes and GND pours that query_traces does not include.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNoFilter by net name
layerNoFilter by layer name (matches zones that include this layer)
boundingBoxNoFilter to zones whose bounding box overlaps this region

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the description adds useful context by listing the returned fields (net, layers, priority, fill state, bounding box). It does not go into edge cases or limitations, but given annotation coverage, this is sufficient.

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

Conciseness5/5

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

Two concise sentences: the first states the purpose and filters, the second lists return values and a use case. No wasted words, and the most important information is front-loaded.

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 tool's simplicity, the presence of a full output schema, and strong annotations, the description covers all necessary context: what it operates on, optional filters, return data, and relationship to query_traces. It is complete without being verbose.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already well-documented. The description merely restates that filters are by net, layer, or bounding box, adding no new semantic detail beyond what the schema provides.

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 clearly states the tool queries copper zones (filled pours) with optional filters, which is a specific verb+resource. It also differentiates from sibling query_traces by explicitly noting zones are not included in that tool.

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?

The description gives clear context for when to use it (auditing power planes and GND pours) and names the alternative query_traces. It does not explicitly state when not to use it, but the contrast with query_traces provides enough guidance.

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

refill_zonesRefill ZonesA
Destructive

Refill all copper zones on the board. WARNING: SWIG path has known segfault risk (see KNOWN_ISSUES.md). Prefer using IPC backend (KiCAD open) or triggering zone fill via KiCAD UI instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

The description adds a crucial warning beyond the annotations: 'SWIG path has known segfault risk (see KNOWN_ISSUES.md).' This discloses a specific behavioral risk and directs to further documentation. It could go further by describing the operation's effects on existing fills, but the warning adds significant value.

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 two sentences: the first states the purpose, the second provides a warning and alternatives. Every sentence earns its place, and the information is front-loaded. No redundancy or fluff.

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 zero-parameter mutation tool with an output schema, the description covers the key aspects: what it does, the risk, and better alternatives. It might benefit from stating when to use it (e.g., after zone edits), but given the strong guidance, it is sufficiently complete.

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?

There are no parameters, and the description correctly does not invent any. The phrase 'all copper zones' clarifies the scope of the operation, which is a helpful semantic addition. The baseline for zero params is 4, and this description meets it.

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 clearly states the action ('Refill all copper zones on the board') with a specific verb and resource, and it distinguishes itself from siblings like add_copper_pour or query_zones by focusing on refilling existing zones.

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?

The description explicitly provides alternatives: 'Prefer using IPC backend (KiCAD open) or triggering zone fill via KiCAD UI instead.' This tells the agent when not to use this tool and which other methods to prefer, which is excellent guidance.

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

register_footprint_libraryRegister Footprint LibraryA
Destructive

Register a .pretty footprint library in KiCAD's fp-lib-table so KiCAD can find the footprints. Run this after create_footprint when KiCAD shows 'library not found in footprint library table'.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoproject = writes fp-lib-table next to the .kicad_pro file (default); global = writes to the user's global KiCAD config
descriptionNoOptional description
libraryNameNoNickname for the library in KiCAD (default: directory name without .pretty)
libraryPathYesFull path to the .pretty directory to register
projectPathNoPath to the .kicad_pro file or its directory (required for scope=project when the library is not in the project folder)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate a destructive, non-read-only operation. The description adds useful workflow context (error-recovery trigger) but does not disclose what exactly is modified (e.g., overwriting the fp-lib-table entry) or any side effects. It does not contradict 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?

The description is extremely concise: two sentences that front-load the action and resource, then follow with a practical usage trigger. Every word earns its place.

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?

Given the output schema exists and the input schema is comprehensive, the description covers the key workflow trigger. It lacks explicit details about side effects or scope implications, but these are in the schema/annotations, making the description sufficiently complete for a simple registration tool.

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?

The input schema has 100% parameter description coverage, so the description adds no additional parameter semantics. The baseline of 3 applies since the schema fully documents the parameters, and the description does not need to compensate.

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 clearly states a specific action ('Register a .pretty footprint library') on a specific resource (KiCAD's fp-lib-table), with a clear goal ('so KiCAD can find the footprints'). It also distinguishes from related tools like create_footprint by specifying its role in the workflow.

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?

Provides explicit when-to-use context: 'Run this after create_footprint when KiCAD shows "library not found in footprint library table"'. This gives a concrete trigger and workflow position. However, it does not mention alternatives or when not to use the tool, which prevents a perfect score.

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

register_symbol_libraryRegister Symbol LibraryA
Destructive

Register a .kicad_sym library in KiCAD's sym-lib-table so symbols can be used in schematics. Run this after create_symbol when KiCAD shows 'library not found'.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoproject = writes sym-lib-table next to .kicad_pro; global = user config
descriptionNo
libraryNameNoNickname (default: file name without extension)
libraryPathYesFull path to the .kicad_sym file
projectPathNoPath to .kicad_pro or its directory (for scope=project)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true, so the agent knows it writes. The description adds that it modifies the sym-lib-table, which is useful, but does not disclose side effects like overwriting existing entries or whether the change persists across sessions. This is adequate but not rich, matching a 3.

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 two sentences, front-loaded with the core purpose and followed by a usage trigger. Every word contributes to understanding, with no filler or repetition, making it exceptionally concise.

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 5-parameter tool with an output schema and destructive annotation, the description adequately covers the primary use case and workflow ('after create_symbol'), while the schema fills in parameter details. It could mention scope semantics or projectPath requirements, but overall it provides enough context for an agent to act appropriately.

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?

The description adds no parameter-specific meaning, but the schema provides descriptions for 80% of parameters, including libraryPath, libraryName, scope, and projectPath. With high schema coverage, the baseline of 3 is appropriate; the description's lack of parameter detail does not drop it further.

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 clearly states a specific verb and resource: 'Register a .kicad_sym library in KiCAD's sym-lib-table so symbols can be used in schematics.' It also provides a concrete trigger scenario ('when KiCAD shows library not found') and distinguishes from the sibling tool register_footprint_library by focusing on .kicad_sym files.

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?

The description gives explicit when-to-use guidance: 'Run this after create_symbol when KiCAD shows library not found.' This is a clear context, though it omits when-not-to-use or alternative tools beyond the implied create_symbol. A score of 4 reflects the strong contextual cue without exclusions.

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

reload_boardReload BoardA
Destructive

Reload the current or specified .kicad_pcb from disk, discarding stale in-memory board state.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathNoOptional .kicad_pcb path; defaults to current board

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description adds specific context by stating it 'discards stale in-memory board state', clarifying that the destruction applies to in-memory state, not the on-disk file. It also indicates the reload source ('from disk') and scope ('current or specified'), which is useful beyond the raw annotation.

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, front-loaded sentence that states the action, target, and effect without any filler. Every word contributes to understanding the tool's behavior. No redundancy or unnecessary detail.

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 simple tool with one optional parameter (already fully described in schema) and an existing output schema, the description is complete. It covers the action (reload), the object (.kicad_pcb), the source (from disk), and the consequence (discard stale state). No important context is missing for safe and 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?

The schema coverage is 100% with the boardPath parameter already described as 'Optional .kicad_pcb path; defaults to current board'. The description's phrase 'current or specified' merely restates the schema. No additional parameter semantics are added beyond what the schema provides, so a baseline 3 is appropriate.

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 uses a specific verb ('Reload') with a clear resource ('.kicad_pcb from disk') and a clarifying behavioral effect ('discarding stale in-memory board state'). It distinguishes this from sibling tools like open_board (initial open) and save_board (writing to disk) by emphasizing reloading from disk and discarding in-memory state.

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?

The description clearly implies when to use it: when you want to refresh the board state from disk and discard stale in-memory data. It does not explicitly name alternatives or exclusions, but the context ('current or specified .kicad_pcb') and the destructive-effect wording provide clear contextual guidance. Sibling tool names (open_board, discard_or_reload) further help, though the description doesn't reference them.

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

remove_hierarchical_sheetRemove Hierarchical SheetA
Destructive

Remove a hierarchical-sheet reference from a parent schematic (the reverse of add_hierarchical_sheet). Identify the sheet by sheetName (matches the sheet's name property) or by subsheetPath (matched by basename against the sheet's file property). Deletes the (sheet ...) block and any matching (sheet_instances) page entry. Does NOT delete the sub-sheet .kicad_sch file on disk.

ParametersJSON Schema
NameRequiredDescriptionDefault
sheetNameNoSheet display name to remove (matches the Sheetname/Sheet name property)
subsheetPathNoSub-sheet file to remove (matched by basename against the Sheetfile property)
schematicPathYesPath to the parent .kicad_sch

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes beyond the annotations (which already indicate destructiveHint=true) by specifying exactly what gets removed: the (sheet ...) block and matching (sheet_instances) page entry. It also explicitly discloses what it does NOT do (delete the sub-sheet file), providing important behavioral nuance. No contradiction with 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?

The description is three sentences, each earning its place: the first defines the operation, the second explains identification, and the third details scope and the file deletion caveat. It is front-loaded and free of unnecessary wording.

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 tool, the description covers all relevant aspects: what gets removed, how to identify the target, and what is preserved. With an output schema present, return value details are not required. Given its moderate complexity and good annotations, the description is complete and contextually sound.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description does reiterate how sheetName and subsheetPath are matched (by name property and basename against file property), which adds slight emphasis, but it stays consistent with the schema. Baseline 3 is appropriate since the schema carries the parameter meaning.

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 clearly states the action: 'Remove a hierarchical-sheet reference from a parent schematic', identifying both verb and resource. It also differentiates from siblings by explicitly noting it's 'the reverse of add_hierarchical_sheet', making the purpose unambiguous.

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?

The description provides clear context by framing the tool as the reverse of add_hierarchical_sheet, which implies when to use it. It also explains which sheet is affected via sheetName or subsheetPath and clarifies what is deleted (sheet block and sheet_instances entry). However, it does not explicitly state exclusions or alternative tools for file deletion, though the note about not deleting the .kicad_sch file offers indirect guidance.

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

remove_schematic_component_propertyRemove Schematic Component PropertyA
Destructive

Remove a single custom property from a placed schematic symbol.

Built-in fields (Reference, Value, Footprint, Datasheet) cannot be removed — KiCad requires them on every symbol. To clear a built-in field, use edit_schematic_component and set its value to an empty string.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCustom property name to remove (e.g. 'MPN', 'Distributor_PN', 'OldField')
referenceYesReference designator of the component (e.g. R1, U3)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, and the description reinforces that it removes a property. It adds useful behavioral context by clarifying that built-in fields are protected from removal and pointing to an alternative for those cases. No contradictions with annotations are present.

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 appropriately short: one sentence for purpose and a follow-up for restrictions/alternatives. Every sentence earns its place, with no wasted words.

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 annotations (destructiveHint=true) and complete schema, the description fully covers the tool's purpose, key restriction, and alternative usage. The presence of an output schema means return-value details are not necessary for the description.

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?

The input schema has 100% coverage with each parameter described (e.g., 'Custom property name to remove'). The description does not add additional parameter semantics beyond what the schema already provides, so it meets the baseline for high schema coverage.

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 clearly states the tool's purpose: 'Remove a single custom property from a placed schematic symbol.' It specifies a verb (Remove), a resource (custom property on a placed schematic symbol), and differentiates from siblings like edit_schematic_component by noting that built-in fields cannot be removed.

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?

The description explicitly provides usage guidance: it states that built-in fields cannot be removed and names the alternative tool (edit_schematic_component) with a specific workaround (set value to empty string). This directly addresses when to use this tool versus alternatives.

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

rename_symbolRename SymbolA
Destructive

Rename a symbol in a .kicad_sym library, including its sub-symbol shards (name_0_1, ...) and any (extends ...) references from derived symbols in the same library. Note: schematics that already place the old lib_id are NOT updated — use replace_instance_lib_ids for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
newNameYesNew symbol name
oldNameYesCurrent symbol name
libraryPathYesPath to the .kicad_sym file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate destructiveHint=true, but the description adds crucial behavioral details: it updates sub-symbol shards and extends references, and it does NOT update placed schematic instances. This goes beyond annotations and gives the agent a clear picture of side effects and limitations.

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?

Exactly two sentences, front-loaded with the main action and immediately followed by the critical caveat. No redundant wording; every clause adds 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?

For a destructive library mutation tool, the description addresses what is changed, what is not changed, and the appropriate alternative. An output schema exists, so return values are already covered. The description is fully sufficient given the tool's complexity and schema richness.

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?

The input schema provides 100% coverage with descriptions for all three parameters (libraryPath, oldName, newName). The description does not add further parameter-specific semantics, but the schema already makes each parameter clear. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Rename' and the resource 'a symbol in a .kicad_sym library', and further specifies that it includes sub-symbol shards and (extends ...) references. It explicitly contrasts with replace_instance_lib_ids, distinguishing its scope from that sibling tool.

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?

The description explicitly states when NOT to use this tool: when schematics already place the old lib_id, and directs the user to replace_instance_lib_ids instead. It also implies its use for library-level symbol renaming including derived symbols, providing clear context relative to alternatives.

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

repair_flat_symbolsRepair Flat SymbolsA
Destructive

Repair "flat" vendor symbols so schematic tools can parse the file.

SnapEDA/SamacSys .kicad_sym captures often put pins and graphics directly under the top-level (symbol "NAME" ...) with no _1_1 sub-unit. KiCad and kicad-cli tolerate this, but the kicad-skip parser used by the schematic edit/inspect tools (list_schematic_components, batch_connect, ...) crashes on it — for any sheet that uses, or embeds a snapshot of, such a symbol.

This tool wraps the drawable/pin children in a proper (symbol "NAME_1_1") sub-unit via pure text insertion (formatting preserved, render-neutral). Works on standalone .kicad_sym libraries and on the embedded (lib_symbols) block of a .kicad_sch. Idempotent; already-wrapped and extends-derived symbols are skipped. Dry-run by default — files are edited in place, so keep them under version control before repairing.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes.kicad_sym library or .kicad_sch schematic to repair
dryRunNoReport flat symbols without writing (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior1/5

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

Description contradicts annotations: annotation idempotentHint=false, while description claims 'Idempotent'. Despite useful info about dry-run and destructive edits, the direct contradiction forces a score of 1 per rubric.

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?

Well-structured into three cohesive paragraphs: the problem, the mechanism, and operational notes. Every sentence earns its place, providing necessary context without fluff.

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?

Covers the problem, solution, supported formats, idempotency caveat, dry-run default, destructive nature, and version control advice. An output schema exists, so no need to describe return values. Very complete aside from the idempotency flag mismatch.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already has a meaningful description. The description adds context about file types and dry-run behavior, but these are also present in the schema descriptions, so no additional semantics are provided. Baseline 3 applies.

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

Purpose5/5

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

Clearly states the tool repairs 'flat' vendor symbols, explaining the exact problem (missing _1_1 sub-unit) and the solution (wrapping children in sub-unit). It distinguishes itself from siblings by referencing specific crashing tools and file types.

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?

Provides explicit when to use: when kicad-skip parser crashes on schematics containing such symbols. Lists supported file types (.kicad_sym and .kicad_sch) and mentions dry-run default. Does not explicitly state when not to use or alternatives, but the context is strong enough.

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

replace_board_outlineReplace Board OutlineB
Destructive

Replace the current Edge.Cuts board outline with a rectangle, rounded rectangle, circle or polygon.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeYes
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true, and the description's 'replace' aligns with that. It adds context that the operation targets the Edge.Cuts layer and lists the shape types, but it does not disclose any additional behavioral details such as whether the existing outline is completely overwritten or if existing graphics on that layer are affected.

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 description is a single concise sentence that front-loads the operation, but it omits critical parameter semantics. While not verbose, the lack of shape-parameter mapping makes it less effective than it could be.

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?

Given the complexity of four shape types and a nested params object, plus zero schema descriptions, the description is far too sparse. It doesn't explain how to specify different shapes or units, and the only behavioral context comes from the destructiveHint annotation. An AI agent would struggle to invoke this tool correctly.

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

Parameters1/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 explain the parameters. It only lists shape types and does not clarify which params apply to each shape (e.g., width/height for rectangle, radius/center for circle, points for polygon, cornerRadius for rounded_rectangle). This leaves an agent without enough information to construct valid arguments.

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 clearly states a specific action (replace) on a specific resource (the current Edge.Cuts board outline) and enumerates the four allowed shape types. This distinguishes it from sibling tools like add_board_outline and clear_board_outline.

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 verb 'replace' implies that this tool should be used when an existing outline must be changed, but there is no explicit guidance about when to use it versus adding or clearing an outline. No alternatives are mentioned, leaving usage somewhat implied.

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

replace_instance_lib_idsReplace Instance Lib IdsA
Destructive

Replace lib_id references in schematic symbol instances per an explicit old-to-new mapping — the mechanical layer of a library migration (e.g. eagle_import symbols to curated library symbols). Mirror-variant suffixes (__m0/__m90/__m180/__m270) get automatic angle correction; each needs its own mapping entry. Only instances are rewritten; lib_symbols is preserved (use update_symbol_from_library to refresh definitions afterwards).

ParametersJSON Schema
NameRequiredDescriptionDefault
mappingYesMap of old full lib_id to new full lib_id, e.g. {"eagle_import:C_100n": "Device:C"}. Values are used verbatim.
schematicPathYesPath to the .kicad_sch file
sourceLibraryNoLibrary prefix whose instances are candidateseagle_import

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, but the description adds meaningful behavioral context: 'Only instances are rewritten; lib_symbols is preserved' clarifies exactly what is mutated. It also discloses the automatic angle correction for mirror-variant suffixes, which is a non-obvious side effect. No contradiction with 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?

Three sentences, each dense with information: purpose, special-case behavior, and scope/preservation. The description leads with the main action and stays on point without fluff.

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, migration-specific tool, the description covers purpose, exclusions (lib_symbols preserved), follow-up action, and edge cases (mirror suffixes). An output schema exists, so not explaining return values is acceptable. It gives the agent enough to select and invoke this tool correctly within the migration workflow.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions, so the baseline is 3. The description adds extra semantic guidance for the mapping parameter: 'Mirror-variant suffixes (__m0/__m90/__m180/__m270) get automatic angle correction; each needs its own mapping entry', which directly informs how to construct mapping keys.

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 specific verb+resource+scope: 'Replace lib_id references in schematic symbol instances per an explicit old-to-new mapping'. It clearly frames this as the 'mechanical layer of a library migration' and distinguishes itself by noting 'Only instances are rewritten; lib_symbols is preserved (use update_symbol_from_library...)' vs siblings like update_symbol_from_library and replace_schematic_component.

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?

The description gives clear context: when performing a library migration (example eagle_import to curated), use this to rewrite instance lib_ids. It also names a follow-up alternative ('use update_symbol_from_library to refresh definitions afterwards') and warns that mirror-variant suffixes require separate mapping entries. It does not explicitly state 'don't use if ...' but the workflow guidance is strong.

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

replace_schematic_componentReplace Schematic ComponentA
Destructive

Replace a placed component's symbol with a different one (e.g. Device:R -> Device:R_Potentiometer), preserving its position, rotation, and field values (Value/Footprint/custom). Optionally override rotation with newRotation. Returns the new pin positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
newSymbolYesNew symbol in 'Library:Symbol' form (e.g., Device:D_Zener)
referenceYesReference of the component to replace (e.g., D1)
newRotationNoOverride rotation in degrees (default: keep existing)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With destructiveHint already indicating a destructive operation, the description adds useful context: it preserves position, rotation, and field values (Value/Footprint/custom), and it returns new pin positions. This goes beyond annotations by clarifying what remains unchanged and what output to expect.

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 two sentences, front-loaded with the action, includes an illustrative example, and packs essential details (preservation, optional override, return value) without fluff. Every sentence earns its place.

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?

Given the tool's complexity (4 parameters, output schema, destructive nature), the description covers the key aspects: what it does, what is preserved, optional rotation override, and return value. The output schema handles return specifics, so this is sufficient. Minor gaps like error conditions or impact on connectivity are not critical.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces the parameter semantics (e.g., newRotation overrides rotation, preserving field values) but does not add extra meaning beyond what the schema already explains. It is adequate but not exceptional.

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 action ('Replace a placed component's symbol') with a concrete example ('Device:R -> Device:R_Potentiometer'), clearly distinguishing it from siblings like place_component, edit_component, or set_footprint_type. The verb+resource combination is unambiguous and informative.

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?

The description implies when to use this tool: when you want to change a component's symbol while preserving its position, rotation, and field values. It also notes the optional newRotation override, which suggests when rotation is also needed. However, it does not explicitly mention alternatives or exclusions, such as 'use rotate_component if only rotation is needed'.

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

rotate_componentRotate ComponentA
Destructive

Rotate a PCB component to an absolute angle in degrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
angleYesRotation angle in degrees (absolute, not relative)
referenceYesReference designator of the component (e.g., 'R5')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is a mutation with potentially destructive consequences. The description adds the 'absolute angle' semantics, but this is also present in the input schema, so it does not add much beyond what annotations and schema already provide. No contradiction exists.

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, front-loaded sentence that concisely states the action, target, and key property (absolute angle in degrees). It contains no superfluous information and earns a perfect score for brevity and clarity.

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 simple two-parameter mutation tool with an output schema and comprehensive annotations, the one-sentence description suffices. It fully conveys the operation and context, especially when combined with the sibling tool list that distinguishes PCB vs schematic rotations. No additional behavioral or return-value details are necessary.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (angle and reference), so the schema fully documents their meaning. The description does not add additional parameter details beyond the schema, keeping the baseline score of 3.

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 uses a specific verb ('rotate') and resource ('PCB component'), clearly distinguishing this from the schematic rotation tool (rotate_schematic_component) and other component manipulation tools like move_component or place_component. It also adds the 'absolute angle in degrees' detail, which makes the operation unambiguous.

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?

The description implies usage context by specifying 'PCB component', which separates it from schematic operations, but it does not explicitly state when to use this tool rather than alternatives or mention any prerequisites or side effects. It provides clear context without explicit exclusions, so a score of 4 is appropriate.

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

rotate_schematic_componentRotate Schematic ComponentB
Destructive

Rotate a placed symbol in the schematic.

ParametersJSON Schema
NameRequiredDescriptionDefault
angleYesAbsolute rotation in degrees (0, 90, 180, 270). This is the symbol's final orientation, not a relative increment — passing 90 sets the symbol to 90° regardless of its current angle (unlike KiCad's UI 'R' key).
mirrorNoOptional mirror axis
referenceYesReference designator (e.g., R1, U1)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows it is a mutating operation. However, the description adds no further behavioral context—it does not mention side effects, whether the operation modifies the file directly, or any constraints. The absolute-angle behavior is only in the schema, not the tool description.

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 sentence with no filler or redundancy. It is front-loaded with the action and target, making it highly concise and efficient for an agent to parse.

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?

While the schema is rich and annotations are present, the description lacks crucial usage context, such as differentiating from 'rotate_component' and explaining the meaning of the optional 'mirror' parameter. The tool is simple, but the minimal description leaves gaps that the agent must infer from sibling names and schema, making it adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters adequately. The tool description adds nothing beyond the schema, such as clarifying the mirror effect or the relationship between angle and mirror. Since the schema carries the full burden, a baseline score of 3 is appropriate.

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 uses a specific verb ('Rotate') and resource ('a placed symbol in the schematic'), clearly distinguishing it from board-level rotation tools like 'rotate_component'. The context of the schematic is explicit, making the tool's purpose unambiguous.

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?

The description provides no guidance on when to use this tool versus alternatives such as 'rotate_component' or 'move_schematic_component'. There is no mention of exclusions, prerequisites, or scenarios where this tool is preferred, leaving the agent to infer usage solely from the name.

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

route_arc_traceRoute Arc TraceA
Destructive

Route a copper arc trace defined by start/mid/end points. Uses true PCB arc primitives when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesArc end position
midYesA point on arc midpoint
netNoNet name
layerYesPCB layer
startYesArc start position
widthYesTrace width in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructive/write behavior. The description adds one useful detail: 'Uses true PCB arc primitives when available,' hinting at a fallback behavior. However, it does not explain what happens when primitives are unavailable or what destructive effects may occur, leaving the agent partially informed.

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 two sentences, action-first, with no redundant words. Every sentence provides useful information, making it exemplary in conciseness.

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?

While the output schema exists and annotations are present, the description is minimal for a geometry-heavy tool with 6 parameters and nested objects. It fails to clarify the arc construction geometry (e.g., what 'mid' really means), fallback behavior, or collision/clearance implications. Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema documents all parameters. The description repeats start/mid/end but adds no additional context about units, net handling, or width. It neither improves nor harms beyond the schema baseline.

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 uses a specific verb+resource: 'Route a copper arc trace' and clearly defines the construction via start/mid/end points. This distinguishes it from generic route_trace and other routing tools by focusing on arc primitives.

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 description does not explicitly state when to use this tool over alternatives like route_trace or route_pad_to_pad, nor does it provide exclusions. The 'defined by start/mid/end points' phrase implies a specific use case, but lacks clear guidance on alternatives.

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

route_differential_pairRoute Differential PairC
Destructive

Route a differential pair between two sets of points.

ParametersJSON Schema
NameRequiredDescriptionDefault
gapYesGap between traces in mm
layerYesPCB layer
widthYesTrace width in mm
negativeNetYesNegative net name
negativePadYesNegative pad (component and pad number)
positiveNetYesPositive net name
positivePadYesPositive pad (component and pad number)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, but the description adds no further behavioral detail. It doesn't explain whether existing traces are replaced, whether both nets must already exist, or any side effects of routing.

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?

Single sentence, no wasted words, front-loaded with verb and object. Could be expanded with behavioral context, but as a statement of purpose it is appropriately sized.

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?

Given the tool's moderate complexity (nested pad objects, multiple parameters), the description is adequate but terse. With an output schema and annotations present, it doesn't need to explain return values, but it lacks details about routing behavior that would help an agent set expectations.

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?

Input schema covers all 7 parameters with descriptions, so baseline is 3. The description adds minimal semantic context by calling them 'two sets of points', but doesn't elaborate on how width/gap interact or how pads are specified beyond schema.

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?

Description states a clear action ('Route') and resource ('differential pair') with location ('between two sets of points'). It clearly identifies the tool's purpose and distinguishes it from single-ended routing tools, though it does not explicitly name alternatives.

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 guidance on when to use this tool vs alternatives like route_trace or route_pad_to_pad. No conditions, prerequisites, or exclusions are provided.

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

route_pad_to_padRoute Pad To PadA
Destructive

PREFERRED tool for pad-to-pad routing. Looks up pad positions automatically, detects the net from the pad, and — critically — if the two pads are on different copper layers (e.g. J1 on F.Cu and J2 on B.Cu) automatically inserts a via at the midpoint so the connection is complete. Always use this instead of route_trace when routing between named component pads.

ParametersJSON Schema
NameRequiredDescriptionDefault
netNoNet name override (default: auto-detected from pad)
layerNoPCB layer (default: F.Cu)
toPadYesPad number on the target component (e.g. '15' or 15)
toRefYesReference of the target component (e.g. 'U1')
widthNoTrace width in mm (default: board default)
fromPadYesPad number on the source component (e.g. '6' or 6)
fromRefYesReference of the source component (e.g. 'U2')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Description goes beyond the destructiveHint annotation by revealing the automatic via insertion at the midpoint when pads are on different layers, and the automatic net detection. This is a non-obvious behavioral trait that helps the agent predict side effects.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the tool's status and core function, and every sentence adds value. The critical via behavior and the usage rule against route_trace are both included without wasted words.

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 tool's complexity, the description covers the essential workflow (pad lookup, net detection, via insertion) and explicitly names the alternative. The output schema exists, so return values need no explanation. The description is complete enough for an agent to select and 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?

While the schema provides complete parameter descriptions (100% coverage), the description adds contextual meaning by explaining that 'fromRef/toRef' are named component pads, that 'net' is auto-detected but can be overridden, and that 'layer' relates to differences in copper layers triggering via insertion. This enriches the parameters beyond raw schema definitions.

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 clearly states it is the preferred tool for pad-to-pad routing, with a specific verb ('routing') and resource ('pads'), and distinguishes itself from route_trace by name. It also explains the automatic via insertion behavior, making its purpose unambiguous.

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?

The description explicitly says to use this tool instead of route_trace when routing between named component pads, providing a clear alternative and when-to-use guidance. It also explains the critical via-insertion condition, giving the agent situational context.

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

route_traceRoute TraceA
Destructive

Route a trace segment between two XY points on a fixed layer. WARNING: Does NOT handle layer changes — if start and end are on different copper layers, use route_pad_to_pad instead, which automatically inserts a via.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYesEnd position
netYesNet name
layerYesPCB layer
startYesStart position
widthYesTrace width in mm

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, covering the mutation aspect. The description adds valuable behavioral context by warning that the tool does NOT handle layer changes and requires a fixed layer, which is important for correct usage. It doesn't fully describe all side effects, but the annotation coverage plus the added caveat make this above average.

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

Conciseness5/5

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

Two sentences, front-loaded with the main purpose and a concise warning. No wasted words, and the structure clearly separates the core function from the critical limitation and alternative.

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 presence of an output schema and rich sibling context, the description covers the essential purpose, key limitation, and alternative usage. It doesn't need to detail return values due to the output schema, and it provides enough context for a routing tool with a layer-change caveat.

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

Parameters3/5

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

Schema description coverage is 100% with each parameter (start, end, layer, width, net) having a clear description. The tool description adds context about the 'fixed layer' and 'XY points' but does not significantly elaborate on parameter meanings. Baseline 3 applies as the schema does the heavy lifting.

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 clearly states the tool routes a trace segment between two XY points on a fixed layer, with a specific verb and resource. It also distinguishes itself from the sibling route_pad_to_pad by explicitly noting it does not handle layer changes, making its purpose unambiguous.

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?

The description gives explicit usage guidance: when start and end are on different copper layers, use route_pad_to_pad instead, which auto-inserts a via. This clearly indicates when not to use this tool and names the alternative, fulfilling the 'when/when-not/alternatives' criterion.

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

run_drcRun DrcA
Destructive

Run the KiCAD Design Rule Check (DRC) on the current PCB and return violations. Optionally save the report to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
reportPathNoOptional path to save the DRC report

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The description adds the optional file-saving side effect (reportPath) beyond annotations, and mentions it returns violations. However, it does not explain potential side effects of running DRC (e.g., updating markers or consuming time), though annotations already flag destructiveHint=true.

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 sentence with two clauses, front-loading the primary action ('Run the KiCAD DRC') and then the return value, followed by the optional file save. No filler.

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?

Given one optional parameter and an output schema (not shown) that likely details the violations return format, the description covers the essential purpose and optional side effect. It doesn't mention prerequisites like requiring a board to be loaded, but those are implied by 'current PCB' and covered by sibling tools.

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?

The schema already fully documents reportPath with a description, and the tool description only mirrors that 'Optionally save the report to a file' without adding new semantic details. Since schema coverage is 100%, baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool runs KiCAD DRC on the current PCB and returns violations, with the verb 'Run' distinguishing it from sibling query tools like get_drc_violations. The mention of 'current PCB' provides scope and differentiates from run_erc (schematic ERC).

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 description implies use when DRC results are needed on the current board, but it does not explicitly state when to prefer it over get_drc_violations or check_clearance, nor any prerequisites like an open board.

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

run_ercRun ErcA
Read-onlyIdempotent

Runs the KiCAD Electrical Rules Check (ERC) on a schematic and returns all violations. Use after wiring to verify the schematic before generating a netlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description adds that it returns violations and suggests timing, but does not disclose additional behavioral traits such as whether the schematic must be open or how the tool handles errors. With high annotation coverage, the description adds only marginal 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?

The description is two sentences with no redundant words. The core function is front-loaded, and the usage note is brief and actionable. Every sentence earns its place.

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?

The tool is simple, with one well-described parameter, strong annotations, and an output schema. The description covers purpose and usage. It could mention prerequisites like whether the schematic must be open, but given the read-only and idempotent nature, that is not essential. Overall, it is complete enough for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the single required parameter 'schematicPath', which is already described as 'Path to the .kicad_sch schematic file'. The description does not add parameter-level details, but the baseline of 3 applies because the schema fully documents the 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 clearly states the tool runs the KiCAD Electrical Rules Check (ERC) on a schematic and returns all violations. It specifies the exact verb and resource, and the phrase 'on a schematic' distinguishes it from the sibling tool run_drc which checks PCB design rules.

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?

The description provides clear usage guidance: 'Use after wiring to verify the schematic before generating a netlist.' This indicates when to invoke the tool relative to other steps, though it does not explicitly mention alternatives or exclusions. That is sufficient for this simple, well-defined check operation.

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

save_asSave AsA
Destructive

Save the current PCB board to a new .kicad_pcb path.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoAllow saving over external changes to the loaded file
boardPathYesDestination .kicad_pcb path
overwriteNoReplace the destination if it already exists
forceExternalChangesNoExplicit alias for force; takes precedence when both are provided

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true, but the description adds no further behavioral context. It does not mention potential overwriting, the force/overwrite parameters, or how external changes are handled. No additional transparency beyond what annotations provide.

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

Conciseness5/5

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

The description is a single, clear sentence that immediately states the action and target. No wasted words or redundant 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 simple save operation, the description combined with the schema and annotations is largely sufficient. The output schema exists, so return values are covered. Missing a note about destructive behavior, but annotations provide that.

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?

The schema provides detailed descriptions for all four parameters with 100% coverage. The description itself does not explain parameters, but the schema carries that burden, so baseline 3 is appropriate.

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 clearly identifies the action ('Save'), the resource ('current PCB board'), and the destination ('a new .kicad_pcb path'). It is distinct from sibling tools like save_board, which likely save in place.

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 description implies use for saving to a new path, but it does not explicitly state when to use this tool versus alternatives such as save_board or save_project. No exclusions or conditions are mentioned.

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

save_boardSave BoardA
Destructive

Save the current PCB board. Refuses to overwrite external disk edits unless force=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOverwrite even if the board changed externally on disk
boardPathNoOptional destination .kicad_pcb path
overwriteNoReplace boardPath if it already exists and differs from the current board
forceExternalChangesNoExplicit alias for force

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the tool as destructive, and the description adds meaningful context about refusing to overwrite external disk edits unless force=true. This goes beyond the safety hint by explaining a specific conflict-resolution behavior, though it does not detail other side effects or failure modes.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action, and every clause provides useful information. No filler or repetition.

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?

The description is sufficient for a save operation, covering the core action and key edge case. With an output schema present and full parameter documentation in the schema, the description does not need to explain return values or all parameters. It could mention what happens on success or failure, but this is not essential given the schema.

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?

The input schema fully documents all four parameters with 100% coverage, so the schema carries the parameter semantics. The description only mentions force=true, which is already in the schema, adding no extra meaning beyond what is provided.

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 clearly states the verb 'Save' and the specific resource 'current PCB board', distinguishing it from sibling tools like save_project or save_as. It also adds a distinctive behavior (refusing external overwrites) that further identifies the tool.

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 description implies when to use the tool (to save the current board) and mentions the force=true condition for overwriting external edits, but it does not explicitly discuss alternatives or when not to use it. No comparison to save_project or save_as is provided.

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

save_projectSave ProjectA
Destructive

Save the current KiCAD project. Refuses to overwrite the board file if its contents changed on disk since load (external edit) unless force is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoOptional new path to save to
forceNoOverwrite the loaded board file even if its on-disk contents changed externally
overwriteNoReplace an existing destination when path points to a different file
forceExternalChangesNoExplicit alias for force; takes precedence when both are provided

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the destructiveHint annotation, the description discloses the critical safety behavior that it refuses to overwrite the board file if externally modified unless force is true. This adds meaningful context that annotations alone do not capture, and clarifies the scope (current project).

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, front-loaded sentence that states the primary purpose and the one critical guardrail. Every word earns its place, with no redundancy or filler.

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?

Given the output schema and annotations, the description adequately covers the core save behavior and the force condition. It does not need to describe return values due to the output schema, and parameter interactions are mostly captured by the schema, though it leaves the relationship between force and forceExternalChanges slightly implicit.

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?

The input schema already provides 100% coverage with descriptions for all four parameters. The description only restates the force behavior already present in the schema, without adding extra meaning for the path, overwrite, or forceExternalChanges parameters. A baseline of 3 is appropriate.

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 clearly states 'Save the current KiCAD project' with a specific verb and resource, and 'current' distinguishes it from save_as (new path) and save_board (board-only). It also hints at the unique force behavior, making it distinct from siblings.

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 description implies this is the standard save operation and notes the force parameter for handling external edits, but it does not explicitly contrast with alternatives like save_as or save_board. No exclusions or when-not-to-use guidance is given, so usage context is implied rather than clearly directed.

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

search_footprintsSearch FootprintsA
Read-onlyIdempotent

Search for footprints matching a pattern across all libraries

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
libraryNoOptional specific library to search in
search_termYesSearch term or pattern to match footprint names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the cross-library scope and pattern matching, but does not detail matching behavior, case sensitivity, or result organization. It adds some context beyond 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?

The description is one concise sentence, front-loading the action and scope with no fluff.

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?

The tool is simple with three documented parameters and an output schema, and annotations cover safety. However, the description does not explain what 'pattern' means or how search results are ordered, leaving minor ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (limit, library, search_term) having a description. The description does not add any additional parameter semantics beyond the schema.

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 uses a specific verb ('Search') and resource ('footprints') with a clear scope ('across all libraries'), distinguishing it from sibling tools like list_library_footprints and get_footprint_info.

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 description implies cross-library search but does not explicitly state when to prefer it over alternatives like list_library_footprints. No exclusions or alternative tool names are mentioned.

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

search_jlcpcb_partsSearch Jlcpcb PartsA
Read-onlyIdempotent

Search JLCPCB parts catalog by specifications.

Searches the local JLCPCB database (must be downloaded first with download_jlcpcb_database). Provides real pricing, stock info, and library type (Basic parts = free assembly).

Use this to find components with exact specifications and cost optimization.

For a verified, ready-to-use KiCAD footprint/symbol/3D bundle (rather than sourcing/stock data), use search_parts_registry instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryNoFree-text search (e.g., '10k resistor 0603', 'ESP32', 'STM32F103')
packageNoFilter by package type (e.g., '0603', 'SOT-23', 'QFN-32')
categoryNoFilter by category (e.g., 'Resistors', 'Capacitors', 'Microcontrollers')
in_stockNoOnly show parts with available stock
library_typeNoFilter by library type (Basic = free assembly at JLCPCB)All
manufacturerNoFilter by manufacturer name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds valuable context about the local database requirement, the need to download it first, and that it provides real pricing, stock info, and library type. No contradiction with annotations.

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 well-structured and front-loaded with the core purpose, followed by prerequisite, usage context, and alternative. It is slightly redundant (first sentence repeats the title), but every sentence carries meaningful 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?

Given the presence of a complete input schema with 100% coverage and an output schema, the description covers the remaining crucial context: the local database prerequisite, differentiation from a sibling tool, and the type of data returned (pricing, stock, library type). It is complete for a search/filter tool.

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

Parameters3/5

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

Schema description coverage is 100% with detailed descriptions for all 7 parameters. The tool description adds minimal parameter-level detail beyond what the schema already provides, though it reinforces the meaning of 'library_type' by noting 'Basic parts = free assembly'.

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 clearly states the verb 'Search' and the resource 'JLCPCB parts catalog by specifications'. It also explicitly differentiates from the sibling tool 'search_parts_registry' by contrasting sourcing/stock data with verified KiCAD footprints.

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?

Provides explicit when-to-use: 'Use this to find components with exact specifications and cost optimization.' Also gives an explicit alternative: 'For a verified, ready-to-use KiCAD footprint/symbol/3D bundle... use search_parts_registry instead.' Additionally, it states the prerequisite of downloading the database first with download_jlcpcb_database.

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

search_parts_registrySearch Parts RegistryA
Read-onlyIdempotent

Search an open, gate-verified parts registry for existing KiCAD parts BEFORE generating a custom footprint/symbol from scratch. Complements search_jlcpcb_parts: use that tool for JLCPCB sourcing data (price, stock, assembly tier); use this one to fetch a verified existing footprint/symbol/3D bundle.

Default registry: PartReel (https://partreel.com) — 18k+ verified parts, no auth. Override with the PARTREEL_API_BASE environment variable to point at any compatible registry. Matches are case-insensitive substrings over the part name, keywords, family, and manufacturer.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryYesFree-text search (e.g. 'STM32F103', 'USB-C receptacle', 'LM358')
categoryNoOptional category/family filter (e.g. 'Connectors', 'MCU')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already state readOnly, openWorld, idempotent, non-destructive. The description adds valuable behavioral context: the registry is 'gate-verified', has '18k+ verified parts, no auth', supports 'case-insensitive substrings' over specific fields, and can be pointed to any 'compatible registry' via PARTREEL_API_BASE. These details go beyond the annotations and inform the agent of data quality and flexibility.

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 concise sentences, each earning its place: purpose, differentiation from sibling, and registry/matching details. No filler or repetition of schema/annotations. Front-loaded with the most critical usage instruction.

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 tool's moderate complexity, an output schema exists, and annotations cover safety, the description covers all needed context: purpose, position in workflow, registry details, matching behavior, and configuration. No significant gaps for an agent to select and 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?

Input schema covers all 3 parameters with descriptions, so baseline is 3. The description enhances query semantics by explaining 'Matches are case-insensitive substrings over the part name, keywords, family, and manufacturer', which clarifies how the query parameter behaves beyond the schema's free-text example. It doesn't add details for limit or category, but they are self-explanatory.

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 clearly states the tool's purpose: 'Search an open, gate-verified parts registry for existing KiCAD parts BEFORE generating a custom footprint/symbol from scratch.' It identifies the verb, resource, and specific workflow context. It also explicitly distinguishes itself from search_jlcpcb_parts, making its role unambiguous.

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?

Usage guidance is explicit: use this tool before creating custom assets, and use search_jlcpcb_parts for JLCPCB sourcing data. It also explains the default registry, environment variable override, and matching behavior. This provides clear when-to-use and alternatives.

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

search_symbolsSearch SymbolsA
Read-onlyIdempotent

Search for symbols in local KiCAD symbol libraries.

Searches by: symbol name, LCSC ID, description, manufacturer, MPN, category. Use this to find components already in your local libraries (e.g., JLCPCB-KiCad-Library).

Returns symbol references that can be used directly in schematics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryYesSearch query (e.g., 'ESP32', 'STM32F103', 'C8734' for LCSC ID)
libraryNoOptional: filter to specific library name pattern (e.g., 'JLCPCB')
projectPathNoOptional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path so project-scope sym-lib-table libraries are searched too.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint, so the safety profile is known. The description adds meaningful behavioral context by specifying what fields are searched and that it returns symbol references directly usable in schematics. It does not contradict annotations, and the added context goes beyond what the schema alone provides.

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 three sentences, front-loaded with the core purpose, followed by searchable fields and a use-case hint. Every sentence carries distinct value; there is no redundancy or fluff. It is concise yet informative.

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 covers what the tool does, which libraries it targets, what search criteria it supports, and what it returns. Combined with full schema coverage, annotations, and an output schema, the agent has sufficient information to select and invoke the tool correctly. The projectPath nuance is in the schema, so no gap remains.

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 input schema covers all parameters with descriptions (100% coverage). The description further enriches query semantics by listing the specific fields searched (symbol name, LCSC ID, description, manufacturer, MPN, category), which is not repeated in the schema. This gives the agent a better mental model of what the query parameter matches against.

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 specific verb and resource: 'Search for symbols in local KiCAD symbol libraries.' It clearly lists multiple search dimensions (symbol name, LCSC ID, description, manufacturer, MPN, category) and explicitly contrasts with sibling tools like search_footprints by focusing on symbols and local libraries. This fully distinguishes it from other search/list 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?

The description states when to use this tool: 'Use this to find components already in your local libraries (e.g., JLCPCB-KiCad-Library).' It provides clear context and even gives an example library. However, it does not explicitly name alternatives or conditions when not to use it, so it stops short of a 5.

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

search_toolsSearch ToolsA
Read-onlyIdempotent

Search all available KiCAD tools by keyword. Returns matching tool names and their categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term (e.g., 'gerber', 'zone', 'export', 'drc')

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
countYes
queryYes
matchesYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds the scoping detail 'all available' and mentions the return content (names and categories), which is partially redundant with the output schema. No additional behavioral traits (e.g., case sensitivity, partial matching) are disclosed, but none are required given the low-risk 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?

The description is a single, front-loaded sentence that states the action, scope, mechanism, and result. There is zero filler or redundancy, making it highly concise and well structured.

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 simple one-parameter search tool with strong annotations and an output schema, the description is fully complete. It conveys the tool's purpose, scope, and return type in one sentence. No additional prerequisites, caveats, or configuration details are needed.

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?

The schema description covers 100% of the query parameter with concrete examples ('gerber', 'zone', 'export', 'drc'). The description only says 'by keyword,' which adds no meaning beyond the schema. Therefore the baseline of 3 is appropriate, as the schema does the heavy lifting.

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 clearly states the verb 'Search' with the resource 'all available KiCAD tools' and the method 'by keyword.' It distinguishes itself from sibling tools like list_tool_categories and get_category_tools by targeting a keyword-based cross-tool search, and from entity-specific searches (search_footprints, search_symbols) by the explicit 'all available KiCAD tools' scope.

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 description gives clear context that this is for searching tools by keyword, but it does not explicitly mention when to use this vs. browsing categories or listing all tools. Alternative tools like list_tool_categories are implied but never named, so the guidance is mostly implicit rather than explicit exclusions or alternatives.

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

set_active_layerSet Active LayerA
Destructive

Set the currently active PCB layer by name (e.g. F.Cu, B.Cu).

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYesLayer name to set as active

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already disclose destructiveHint=true and readOnlyHint=false, so the agent knows this is a state-changing write. The description adds minimal behavioral context beyond that—no mention of side effects on subsequent operations or selection—but it is not misleading.

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, front-loaded sentence with no unnecessary words. It delivers the action, the target, and an example in under 15 words.

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 tool is simple with one parameter and has an output schema, so the description is fully adequate. It states what the tool does, gives examples, and annotations cover the safety profile; no additional context is needed.

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 schema fully documents the single parameter 'layer' (100% coverage), but the description adds concrete examples (F.Cu, B.Cu) that clarify valid input values, going beyond the schema's bare definition.

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 clearly states the tool 'set the currently active PCB layer by name' with examples (F.Cu, B.Cu), using a specific verb and resource. It distinguishes itself from siblings like add_layer (creating layers) and get_layer_list (listing layers).

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 description implies the tool is used to switch the active layer, but it does not explicitly state when to use it versus alternatives, nor does it mention exclusions or prerequisites. Usage context is self-evident from the purpose but not explicitly articulated.

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

set_board_originSet Board OriginA
Destructive

Set the auxiliary (drill/place) origin and/or grid origin of a .kicad_pcb. The aux origin is the datum used by export_drill's drillOrigin:'plot' option and by pick-and-place / plot exports with useAuxOrigin. File-based (LoadBoard -> SaveBoard): if the board is open in the KiCad GUI, a later GUI save will overwrite this edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesOrigin X coordinate
yYesOrigin Y coordinate
typeNoWhich origin to set (default: aux)
unitNoCoordinate unit (default: mm)
boardPathYesPath to the .kicad_pcb file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true, but the description adds valuable context: the file-based edit can be overwritten by a later GUI save, and the aux origin affects specific exports. This goes beyond the structured annotations and warns the agent about a non-obvious persistence issue.

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

Conciseness5/5

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

Two sentences, each earning its place: the first states the core action, the second provides a critical caveat about GUI overwrites. There is no redundancy or filler, and the information is front-loaded.

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 mutation tool with 5 parameters and an output schema, the description adequately covers purpose, export relevance, and the overwrite risk. It does not explain grid origin semantics in depth, but the schema covers parameter choices, so the description is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (boardPath, x, y, type, unit) are individually documented. The description adds no parameter-specific syntax or format details beyond the schema, so the baseline of 3 is appropriate.

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 action ('Set the auxiliary (drill/place) origin and/or grid origin') on a specific resource ('.kicad_pcb'), clearly distinguishing it from sibling tools like set_board_size or get_board_origin. It also notes the file-based nature, further clarifying its scope.

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?

The description provides clear context on when to use the tool by explaining that the aux origin is the datum for export_drill and pick-and-place exports. It implies usage before those exports, though it does not explicitly list alternative tools or exclusions, which is a minor gap.

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

set_board_sizeSet Board SizeA
Destructive

Set the PCB board dimensions (width and height) in the specified unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitYesUnit of measurement
widthYesBoard width
heightYesBoard height

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds no extra behavioral context (e.g., whether existing board content is clipped or how the origin is affected), but it does not contradict 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?

The description is a single direct sentence that immediately conveys the action and scope. No unnecessary words or repetition of schema details.

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?

The tool is simple and fully described by the schema and annotations. The description covers the core purpose, and an output schema is present so return values need not be explained. Minor gap: no mention of effects on existing board geometry or origin, but this is not critical for a setter of this simplicity.

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

Parameters3/5

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

Schema coverage is 100%: width, height, and unit all have descriptions, and unit has an enum. The description merely reiterates these parameters without adding additional semantics like valid ranges or unit conversion behavior.

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 uses the specific verb 'Set' with a clear resource ('PCB board dimensions') and explicitly names width, height, and unit. It distinguishes this tool from siblings like set_board_origin and set_active_layer by focusing on board size.

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 description clearly states what the tool does, but it does not provide explicit guidance on when to use this tool versus alternatives (e.g., set_board_origin, add_board_outline). Usage context is implied by the name and description rather than spelled out.

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

set_design_rulesSet Design RulesB
Destructive

Configure PCB design rules: clearance, track width, via dimensions and courtyard requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
viaDrillNoDefault via drill size (mm)
clearanceNoMinimum clearance between copper items (mm)
trackWidthNoDefault track width (mm)
minViaDrillNoMinimum via drill size (mm)
viaDiameterNoDefault via diameter (mm)
microViaDrillNoDefault micro via drill size (mm)
minTrackWidthNoMinimum track width (mm)
minViaDiameterNoMinimum via diameter (mm)
minHoleDiameterNoMinimum hole diameter (mm)
microViaDiameterNoDefault micro via diameter (mm)
minMicroViaDrillNoMinimum micro via drill size (mm)
requireCourtyardNoWhether to require courtyards for all footprints
courtyardClearanceNoMinimum clearance between courtyards (mm)
minMicroViaDiameterNoMinimum micro via diameter (mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The annotations already signal a destructive write operation (destructiveHint=true, readOnlyHint=false), and the description's 'Configure' verb is consistent with that, so no contradiction exists. However, it does not disclose whether unspecified parameters are left unchanged or reset, whether an open board is required, or whether existing routing is affected—key behavioral context for a mutating tool with 14 optional parameters.

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 12-word sentence that front-loads the verb and resource and then lists specifics after a colon. Every word earns its place, with no fluff or redundancy.

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 tool with 14 optional parameters, the description fails to clarify whether calling it with no arguments is a no-op, resets to defaults, or errors, and does not address replace-versus-merge semantics. The presence of an output schema and full parameter coverage mitigates the need to document return values, but the all-optional parameter ambiguity remains a notable gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents each of the 14 parameters, warranting the baseline of 3. The description adds a useful high-level grouping (clearance, track width, vias, courtyards) that maps to the schema parameters but provides no additional syntax, units, or relationship details.

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 ('Configure') with a clear resource ('PCB design rules') and enumerates the rule categories (clearance, track width, via dimensions, courtyard requirements). It clearly distinguishes from the sibling get_design_rules tool by its set-oriented verb, though it does not explicitly contrast with other set tools like set_layer_constraints.

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?

The description provides no guidance on when to use this tool versus alternatives such as get_design_rules, set_layer_constraints, or run_drc. No exclusions, prerequisites, or workflow context (e.g., set rules before routing/DRC) are mentioned, leaving the agent to infer applicability.

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

set_footprint_typeSet Footprint TypeA
Destructive

Set the placement type (through_hole / smd / unspecified) and optional exclusion flags on a placed PCB footprint. The placement type controls whether the footprint is included in pick-and-place (.pos) output files. Use exclude_from_pos_files to suppress a footprint from .pos exports without changing its type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesPlacement type: 'smd' for surface-mount, 'through_hole' for PTH components, 'unspecified' to clear both bits (e.g. for board-only or mechanically-placed items)
referenceYesReference designator of the footprint (e.g. 'R1', 'U3')
exclude_from_bomNoWhen true, suppress this footprint from BoM exports. Omit to leave the current setting unchanged.
not_in_schematicNoWhen true, marks the footprint as board-only (no corresponding schematic symbol). Omit to leave the current setting unchanged.
exclude_from_pos_filesNoWhen true, suppress this footprint from pick-and-place (.pos) exports. Omit to leave the current setting unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag the tool as destructive/non-read-only. The description adds valuable behavior context: the placement type controls inclusion in pick-and-place files, and exclude_from_pos_files suppresses exports without altering the type. It explains a subtle distinction that goes beyond the schema.

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 two sentences, front-loaded with the core action, and each sentence provides non-redundant information. It avoids restating schema details and stays under 50 words.

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?

Given the tool's moderate complexity (5 params, 2 required) and existing output schema, the description covers the primary purpose, target resource, and a key side effect (.pos inclusion). It does not explicitly discuss BOM/schematic flags, but those are adequately described in the schema. Overall it is sufficient for an agent to understand when and how to invoke it.

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 100% schema coverage, the baseline is 3. The description goes beyond by explaining the functional relationship between 'type' and .pos export behavior, and clarifying that exclude_from_pos_files is distinct from changing the type. This adds meaningful semantic nuance not present in the schema.

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 clearly states a specific action ('Set the placement type... and optional exclusion flags') on a specific resource ('a placed PCB footprint'). It names the three type values and explains the concrete effect on pick-and-place output, distinguishing it from generic editing 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?

The description provides clear context for when to use the tool: it is for setting placement type and exclusion flags on already-placed footprints, affecting .pos export. It also gives parameter-specific guidance ('Use exclude_from_pos_files to suppress... without changing its type'). It does not explicitly name alternatives, but the intent is clear.

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

set_layer_constraintsSet Layer ConstraintsA
Destructive

Set per-layer design rule constraints (minimum track width, clearance and via dimensions).

ParametersJSON Schema
NameRequiredDescriptionDefault
layerYesLayer name (e.g., 'F.Cu')
minViaDrillNoMinimum via drill size for this layer (mm)
minClearanceNoMinimum clearance for this layer (mm)
minTrackWidthNoMinimum track width for this layer (mm)
minViaDiameterNoMinimum via diameter for this layer (mm)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already indicate this is a write operation (readOnlyHint=false) and destructive (destructiveHint=true). The description adds no additional behavioral context, such as whether it overwrites existing constraints or if it triggers a DRC re-run.

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 concise sentence that conveys the core purpose without unnecessary words. It is well-structured and front-loaded.

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?

Given the high schema coverage, presence of output schema, and clear annotations, the description is sufficient for basic understanding. It could mention the effect on existing constraints, but for a simple setter tool this is not a major gap.

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?

The schema provides 100% coverage with clear descriptions and units for all five parameters. The description merely summarizes the parameter types without adding new semantics beyond what the schema already specifies.

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 uses a specific verb ('Set') with a clear resource ('per-layer design rule constraints') and lists the specific properties (track width, clearance, via dimensions). This distinguishes the tool from global design rule setters like set_design_rules.

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 description implies usage for per-layer constraint modifications but does not explicitly contrast with alternative tools such as set_design_rules or get_design_rules. There is no guidance on when to use this over global rule setting.

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

set_schematic_component_propertySet Schematic Component PropertyA
Destructive

Add or update a single custom property on a placed schematic symbol.

This is a focused convenience wrapper around edit_schematic_component for the very common case of attaching one BOM / sourcing field at a time. The property is created if it does not already exist on the component.

Typical custom properties: • MPN, Manufacturer, Manufacturer_PN — manufacturer part number metadata • DigiKey, DigiKey_PN, Mouser_PN, LCSC, JLCPCB_PN — distributor part numbers • Voltage, Tolerance, Power, Dielectric, Temperature_Coefficient — passive parameters • Description, Notes — free-form documentation • Any custom field your BOM exporter expects.

These properties are written into the .kicad_sch file as standard KiCad property records, are exported by export_bom, and are picked up by the JLCPCB and Digi-Key sourcing tools. Newly-created properties default to hidden — set hide=false to display the value on the schematic canvas.

For batch updates of multiple properties at once, use edit_schematic_component with the properties parameter instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoLabel X position in mm (default: component X)
yNoLabel Y position in mm (default: component Y)
hideNoHide the property text on the schematic canvas. Defaults to true for newly-created custom properties.
nameYesProperty name (e.g. 'MPN', 'Manufacturer', 'DigiKey_PN', 'Voltage', 'Dielectric')
angleNoLabel rotation in degrees (default: 0)
valueYesProperty value to write (use empty string to clear)
justifyNoText justification for the property label. KiCad alignment keywords: "left", "right", "center", "top", "bottom", or combined e.g. "left top". Omit to leave unchanged. Pass "center" to reset to the KiCad default.
fontSizeNoFont size in mm for the label (default: 1.27)
referenceYesReference designator of the component (e.g. R1, U3)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations indicate a destructive write operation (destructiveHint=true), and the description enriches this by explaining the property is created if missing, defaults to hidden unless hide=false, persists to the .kicad_sch file, and participates in export_bom and sourcing tools. It adds context beyond the raw annotation, especially the hidden default behavior, which directly affects invocation.

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 well-structured with a clear opening, bullet points for typical properties, and a closing alternative note. It is somewhat verbose for the simplicity of the operation, but every sentence contributes useful context—examples, defaults, downstream effects, and alternatives—so it earns its length while remaining scannable.

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 mutation tool with annotations and an output schema, the description covers the operation's purpose, use cases, alternative when to use edit_schematic_component, default visibility behavior, and impact on exports. It leaves no practical gaps that an agent needs for correct invocation, even for the full 10-parameter 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?

The input schema has 100% description coverage, so the baseline is 3. The description adds semantic value by listing typical property names (MPN, DigiKey_PN, etc.) and clarifying that 'use empty string to clear' and the hidden default apply within the broader property lifecycle. It doesn't repeat every schema field but reinforces behavior tied to the parameters.

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 'Add or update a single custom property on a placed schematic symbol,' giving a specific verb and resource. It immediately distinguishes itself from sibling edit_schematic_component by positioning as a 'focused convenience wrapper' for one-property-at-a-time updates, which is clear differentiation.

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?

Explicitly states when to use this tool versus the alternative: 'This is a focused convenience wrapper' for attaching one BOM/sourcing field at a time, and directly instructs 'For batch updates of multiple properties at once, use edit_schematic_component.' This provides clear when-to-use and when-not-to-use guidance.

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

set_schematic_property_positionSet Schematic Property PositionA
Destructive

Move a component's Reference or Value field label to an absolute (x, y) coordinate (mm), optionally rotating or hiding it. Only 'Reference' and 'Value' are supported. Use autoplace_schematic_fields to place all of them automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesNew X position in mm (absolute schematic coordinate)
yYesNew Y position in mm (absolute schematic coordinate)
angleNoText angle in degrees (default 0)
visibleNoWhether the field is visible (default true)
propertyYesWhich field to move
referenceYesComponent reference designator (e.g., R1, U2)
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate destructive behavior, and the description adds that only Reference and Value are supported, and that rotation/hiding is optional. It doesn't contradict annotations, and it clarifies the scope of the mutation.

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 sentences, front-loaded with the main action, then constraint, then alternative. No fluff.

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 covers the core functionality, constraints, and an alternative, and with the schema and output schema present, it's sufficient for an agent to use the tool effectively.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters are documented in the schema. The description provides a high-level summary of the parameters (position, rotation, visibility) but no additional semantics beyond what the schema already states.

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 clearly states the action (Move), the target (component's Reference or Value field label), the coordinate system (absolute x,y in mm), and optional rotation/hiding. It distinguishes itself from autoplace_schematic_fields by naming it as an alternative and from batch tool by implying individual use.

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?

The description explicitly recommends using autoplace_schematic_fields for placing all fields automatically, providing a clear alternative. It also constrains supported properties to Reference and Value, giving context for when this tool is appropriate. However, it doesn't explicitly mention batch_set_schematic_property_positions as an option for multiple components.

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

set_sheet_propertySet Sheet PropertyA
Destructive

Add or update a custom property on a hierarchical sheet's (sheet ...) block — e.g. cell identity or generator parameters carried as sheet metadata. Identify the sheet by sheetName or sheetPath (basename match against the sheet's file property). The property is created hidden if absent, otherwise its value is updated in place; the file's formatting is preserved. The built-in 'Sheet name'/'Sheet file' properties cannot be set here — use add/remove_hierarchical_sheet to manage the sheet link.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesProperty name (e.g. 'IS.Cell')
valueYesProperty value
sheetNameNoSheet display name (matches the Sheetname/Sheet name property)
sheetPathNoSub-sheet file (matched by basename against the Sheetfile property)
schematicPathYesPath to the parent .kicad_sch

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, which the description aligns with by explaining write/update behavior. It adds useful context about hidden creation, in-place updates, and formatting preservation, going beyond the annotations. However, it does not detail potential failure modes or what happens if the sheet is not found.

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

Conciseness5/5

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

Two well-structured sentences that front-load the main action and then provide necessary details and exclusions. No redundant wording, every sentence contributes.

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?

The description covers purpose, identification, behavior, and exclusions, which is sufficient given the detailed annotations and presence of an output schema. It doesn't elaborate on error conditions, but that is a minor gap for a tool with clear schema and annotation support.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the matching semantics for sheetName/sheetPath (basename match against file property) and clarifying that key/value represent custom metadata. This goes beyond the schema descriptions.

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 uses specific and actionable language ('Add or update a custom property') and identifies the exact resource ('hierarchical sheet's block'). It distinguishes itself from sibling tools by explicitly excluding built-in 'Sheet name'/'Sheet file' properties and pointing to add/remove_hierarchical_sheet for managing sheet links.

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?

Provides explicit when-to-use context (adding/updating custom sheet metadata) and clearly states what cannot be done (built-in properties) with a directed alternative (use add/remove_hierarchical_sheet). Also clarifies identification via sheetName or sheetPath with basename matching, giving practical usage guidance.

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

snapshot_projectSnapshot ProjectA
Destructive

Save a named checkpoint snapshot of the current project state (renders board to PDF and records step label). Call after completing each major step — e.g. after Step 1 (schematic_ok) and Step 2 (layout_ok). Required by the demo workflow before waiting for user confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepYesStep number or identifier, e.g. '1' or '2'
labelYesShort label for this checkpoint, e.g. 'schematic_ok' or 'layout_ok'
promptNoFull prompt text to save as PROMPT_step{step}_{timestamp}.md alongside the snapshot

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Despite annotations already indicating destructive/write behavior, the description adds valuable context about the side effects: 'renders board to PDF and records step label.' It also explains the workflow role, which goes beyond what annotations provide.

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

Conciseness5/5

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

Two sentences quickly convey the action, the context, and the workflow need. Every sentence earns its place with no redundancy.

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

Completeness4/5

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

The tool is part of an explicit workflow and the description explains when to invoke it. With an output schema and annotations present, the description is sufficient for an agent to decide when and how to use it, though file-naming behavior is only hinted at in the schema.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are fully documented. The description reinforces meaning with examples like 'schematic_ok' and 'layout_ok' but does not add significant new information beyond the schema.

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 clearly specifies the tool's function: 'Save a named checkpoint snapshot of the current project state (renders board to PDF and records step label).' This distinguishes it from sibling save/export tools by emphasizing the checkpoint-specific behavior.

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?

The description provides clear context for when to use the tool: 'Call after completing each major step — e.g. after Step 1 (schematic_ok) and Step 2 (layout_ok).' It also notes it is 'Required by the demo workflow before waiting for user confirmation,' but does not explicitly mention alternatives or when not to use it.

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

snap_to_gridSnap To GridA
Destructive

Snap schematic element coordinates to the nearest grid point. KiCAD uses exact integer matching for connectivity, so off-grid coordinates cause wires that look connected to fail ERC checks. Modifies the .kicad_sch file in place. Does not require the KiCAD UI to be running.

ParametersJSON Schema
NameRequiredDescriptionDefault
elementsNoElement types to snap (default: ["wires", "junctions", "labels"]). "components" is opt-in — moving a component without re-routing wires creates new mismatches.
gridSizeNoGrid spacing in mm (default: 1.27 mm = 50 mil, the KiCad connection grid; do NOT use 2.54 — snapping to a 100 mil grid moves pins off their 50 mil positions and breaks connectivity)
schematicPathYesPath to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint; the description adds specificity by stating it 'Modifies the .kicad_sch file in place' and notes that the KiCAD UI need not be running. It also explains the technical rationale for snapping, which goes beyond the annotation metadata.

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 focused sentences with no redundancy. Each sentence adds value: what the tool does, why it matters, and key side-effects/prerequisites. The warning about grid size is embedded in the schema rather than bloating the description.

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 tool with a modest scope and rich schema, the description covers the essential context: purpose, rationale, in-place mutation, and lack of UI dependency. An output schema exists, so not describing return values is acceptable. The tool's complexity aligns well with the description's completeness.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already provides detailed descriptions for all parameters, including default values and the component opt-in caveat. The description does not add additional parameter semantics beyond what the schema offers, so baseline 3 is appropriate.

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?

Description specifies the action (snap), target (schematic element coordinates), and result (to nearest grid point). It also explains why this is needed (KiCAD's integer-based connectivity matching), clearly distinguishing it from general move/placement 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?

The description clearly implies when to use this tool: when off-grid elements may cause connectivity/ERC issues. It also notes that component snapping is opt-in due to potential mismatches. However, it does not explicitly name alternative tools (e.g., lint_offgrid for detection) or state when not to use this tool.

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

suggest_jlcpcb_alternativesSuggest Jlcpcb AlternativesA
Read-onlyIdempotent

Suggest alternative JLCPCB parts for a given component.

Finds similar parts that may be cheaper, have more stock, or are Basic library type. Useful for cost optimization and finding alternatives when parts are out of stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of alternatives to return
lcsc_numberYesReference LCSC part number to find alternatives for

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already communicate readOnly, idempotent, and non-destructive behavior. The description adds criteria for suggestions (cheaper, more stock, Basic library type) but does not disclose prerequisites such as database availability or network access. It neither contradicts annotations nor provides rich behavioral detail beyond them.

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 concise and front-loaded with the main purpose. The second sentence elaborates on the types of alternatives, and the third gives usage context. Each sentence earns its place, though there is minor redundancy between 'suggest alternative' and 'finds similar parts'.

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 an output schema present, return values are handled. The description covers what the tool does, why it is useful, and the criteria for alternatives. It does not mention potential prerequisites like downloading the JLCPCB database, but this is a minor gap given the simple nature of the tool and the annotations.

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

Parameters3/5

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

Schema description coverage is 100%, with both lcsc_number and limit clearly described in the schema. The tool description adds no additional parameter meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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 clearly states the tool's purpose with a specific verb ('Suggest') and resource ('alternative JLCPCB parts for a given component'). It further specifies the meaning of alternatives (cheaper, more stock, Basic library type), distinguishing it from other JLCPCB search tools like search_jlcpcb_parts.

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?

The description provides clear usage context: 'Useful for cost optimization and finding alternatives when parts are out of stock.' It gives when-to-use guidance but does not explicitly name alternative tools or state when-not-to-use, though the sibling list makes the distinction inferable.

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

suggest_placementSuggest PlacementA
Destructive

Propose an optimized PCB footprint placement that shortens net length, orients parts toward their partners, and removes courtyard overlaps. Force-directed clustering pulls connected parts together (a converter's feedback divider and decoupling caps end up hugging its IC), power/high-current nets are weighted short & direct, and each part is rotated (0/90/180/270) to face neighbours so airwires stop crossing. PCB ONLY — does not touch the schematic. DRY RUN by default: returns proposals {ref:[x,y,rot]} plus a score (HPWL before/after, overlap counts) without modifying the board. Validate via check_courtyard_overlaps(positions=proposals), then re-run with apply=true before autoroute.

ParametersJSON Schema
NameRequiredDescriptionDefault
refsNoReferences to move (default: every non-locked footprint on the board).
alignNoTidy the result into rows/columns (default true). Snaps near-collinear part centers onto shared row (Y) and column (X) lines so passives line up cleanly with centers aligned — like KiCad's Align Centers + Distribute. Disable for a pure shortest-wire layout.
applyNoIf true, move + rotate components to the proposed positions. Default false (dry run — board untouched).
boundsNoSCOPED REGROUP: confine movable parts to this box (mm) — e.g. the area beside one IC. Combine with `refs` (that IC's passives) to regroup one cluster at a time; unlisted parts stay as anchors. Far more reliable than a whole-board run on a dense board. Default: whole board.
lockedNoReferences to hold fixed as anchors (connectors, mounting-constrained, RF, edge parts). They still pull movable parts. KiCad-locked footprints are added automatically.
rotateNoEnable pin-facing rotation (default true).
spreadNoEnable density spreading (default true). Diffuses parts across free board area so a whole-board run stays legal (few/zero courtyard overlaps) instead of over-packing into a blob. Leave on for whole-board runs.
grid_mmNoSnap proposed positions to this grid (default 0.5).
margin_mmNoExtra keepout enforced between courtyards (default 0.3).
iterationsNoForce-directed relaxation passes (default 200).
power_netsNoNet-name fragments treated as high-current and pulled short & direct (case-insensitive). Defaults to common rails (VBAT, VBUS, VCC, 3V3, 5V, ...). Pass [] to disable.
align_tol_mmNoMax center spacing (mm) for parts to be pulled onto the same row/column line during align (default 1.5).
power_weightNoPull multiplier for power nets (default 3.0).
board_outlineNoOptional board containment bbox override. Default: derived from Edge.Cuts.
rotation_stepsNoCandidate orientations in degrees (default [0, 90, 180, 270]).
decoupling_boostNoExtra pull for 2-pin-passive <-> multi-pin-IC links so caps/feedback parts hug their IC (default 2.0).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

The description explicitly discloses the default non-destructive behavior ('DRY RUN by default... without modifying the board') and the apply=true flag that enables mutation, which aligns with the destructiveHint annotation while adding crucial nuance. It also reveals internal behavior: force-directed clustering, rotation logic, power-net weighting, and what the output contains ({ref:[x,y,rot]} plus score). This goes far beyond the annotations, which only say readOnlyHint false and destructiveHint true.

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 long (about 150 words) but every sentence contributes meaningful information: purpose, mechanism, scope, default behavior, validation step, and application requirement. It is front-loaded with a one-sentence summary and then elaborates efficiently. It loses a point only because it could be slightly tighter, but for a complex 16-parameter tool with safety implications, the detail is 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?

Given the tool's complexity (16 parameters, nested objects, potentially destructive behavior), the description is remarkably complete. It covers the output format, the dry-run/apply lifecycle, the validation step, the scoped-use strategy, and PCB-only scope. There is also a clear distinction between dry-run proposals and actual modification. It leaves no major contextual gaps for an agent to make a wrong decision.

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 input schema already provides detailed descriptions for all 16 parameters (100% coverage), so the baseline is 3. The tool description goes further by giving examples and domain meaning: 'align' is compared to 'KiCad's Align Centers + Distribute', 'bounds' gets a concrete use case ('the area beside one IC'), and 'decoupling_boost' is explained with the feedback-divider/caps-hugging-IC behavior. This adds value beyond the schema's field-level descriptions.

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 specific verb and resource: 'Propose an optimized PCB footprint placement that shortens net length, orients parts toward their partners, and removes courtyard overlaps.' It clearly distinguishes itself from schematic tools with 'PCB ONLY — does not touch the schematic' and from simple move tools by describing the force-directed optimization and dry-run/apply workflow. This effectively separates it from sibling tools like move_component and align_components.

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?

The description provides clear context for when to use this tool: it proposes placements, defaults to dry-run, and advises validating via check_courtyard_overlaps before applying. It also includes scoped-regroup guidance ('SCOPED REGROUP: confine movable parts to this box... Far more reliable than a whole-board run') and notes it is for PCB only. It does not explicitly list alternatives like 'use move_component for single-part moves,' but the workflow it describes is specific enough to guide selection.

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

suggest_schematic_declutterSuggest Schematic DeclutterA
Destructive

Re-orient overlapping net/global labels so their text lands in free space and becomes readable. Each label's (at x,y) anchor is its electrical connection point, so it is held FIXED — only the orientation (0/90/180/270) and justification change, throwing the text away from component bodies and other labels. Connectivity is never altered. DRY RUN by default: returns proposals [{name, at, from_angle, to_angle}] plus an overlap score (before/after) WITHOUT modifying the schematic. Set apply=true to rewrite the label orientations. (Phase 1: labels only; symbol spreading + wire reroute is a separate future capability.)

ParametersJSON Schema
NameRequiredDescriptionDefault
applyNoIf true, rewrite the label orientations. Default false (dry run — schematic untouched, proposals only).
marginNoExtra clearance in mm when testing label overlap (default 0.3).
referencesNoLimit which component bodies count as obstacles (default: every component on the sheet).
schematicPathYesPath to the .kicad_sch file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing that connectivity is never altered, the anchor is fixed, dry run is the default, and apply=true is required for mutation. This directly complements the destructiveHint=true annotation by clarifying exactly when modification occurs and what is returned (proposals + overlap score).

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 compact yet comprehensive, using two sentences to convey purpose, mechanics, default behavior, and scope. Every clause earns its place, with no redundancy or fluff.

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 covers the tool's purpose, default dry-run behavior, the effect of apply=true, the return structure (proposals with name/at/from_angle/to_angle plus overlap score), and scope limitations. Given the tool's mutation capability and the presence of an output schema, this is fully sufficient for an agent to select and invoke correctly.

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?

The input schema already provides full descriptions for all four parameters (100% coverage), including defaults and meanings. The description restates the apply default and margin default but adds no new parameter-level semantics, so the baseline of 3 is appropriate.

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 clearly states the specific action: 'Re-orient overlapping net/global labels' and explicitly differentiates from moving labels by noting the anchor is held FIXED and only orientation/justification changes. This distinguishes it from sibling tools like move_schematic_net_label.

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?

The description provides clear context for when to use (overlapping labels needing readability) and explains the dry-run vs apply=False/true workflow. It also states scope limitations ('Phase 1: labels only'), but does not explicitly name alternative tools or exclusion scenarios, so slightly below full marks.

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

sync_schematic_to_boardSync Schematic To BoardA
Destructive

Import the schematic netlist into the PCB board — equivalent to pressing F8 in KiCAD (Tools → Update PCB from Schematic). MUST be called after the schematic is complete and before placing or routing components on the PCB. Without this step, the board has no footprints and no net assignments — place_component and route_pad_to_pad will produce an empty, unroutable board.

ParametersJSON Schema
NameRequiredDescriptionDefault
boardPathYesAbsolute path to the .kicad_pcb board file
schematicPathYesAbsolute path to the .kicad_sch schematic file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With destructiveHint=true already in annotations, the description adds valuable context about the tool's dependency and state effects: without it, the board lacks footprints and net assignments. It explains why the destructive action is necessary, going beyond the annotation without contradicting it.

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 three sentences, each earning its place: the core action, the equivalent UI command, the mandatory ordering, and the consequences of skipping it. It is front-loaded with the main verb and highly efficient.

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?

Given the tool's mutating nature and the annotation, the description covers purpose, timing, and consequences well. It does not detail what specifically happens to existing board data, but the destructiveHint annotation covers that, and the output schema presumably handles return value documentation. Overall, it is complete for the provided context.

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?

The schema covers 100% of parameters with clear descriptions for both schematicPath and boardPath. The tool description does not add extra meaning beyond the schema, so it meets the baseline for high schema coverage.

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 clearly states the tool's function: 'Import the schematic netlist into the PCB board' with a specific verb and resource. It further clarifies by referencing the KiCAD F8 shortcut and distinguishes it from dependent tools like place_component and route_pad_to_pad, ensuring no ambiguity.

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?

The description gives explicit timing instructions ('MUST be called after the schematic is complete and before placing or routing components') and warns of consequences if skipped. It does not directly compare with sibling tools but provides a clear sequence context, which earns a strong but not perfect score.

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

update_graphicUpdate GraphicC
Destructive

Update common properties of a PCB graphic/drawing item by UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
textNo
unitNo
uuidYes
layerNo
startNo
widthNo
centerNo
positionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds no further behavioral context. It does not explain what updating common properties entails, whether unlisted properties are preserved, or how destructive the operation is.

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 a single concise sentence with zero wasted words. However, conciseness borders on under-specification, though it is still well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, nested objects, a destructive operation, and an output schema, the description provides almost no operational context. It fails to explain usage, parameter semantics, or behavior, making it highly incomplete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/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, but it mentions no parameters. 'Common properties' gives no indication of which fields can be updated, leaving all semantics to raw schema names.

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 clearly identifies the action (update), resource (PCB graphic/drawing item), and identifier (UUID). It effectively distinguishes from siblings like list_graphics and delete_graphic, though 'common properties' is somewhat vague.

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 guidance on when to use this tool versus alternatives, prerequisites (e.g., obtaining UUID via list_graphics), or exclusions. The description provides no context for selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_symbol_from_libraryUpdate Symbol From LibraryA
Destructive

Refresh embedded lib_symbols cache entries from a KiCad symbol library (equivalent to KiCad's Update Symbol from Library). Skips mirror-cache entries (__m0, __m90, …). Flattens (power) symbols for schematic format. Pass projectsDir to update all schematics in a folder, or schematicPath for one file.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolsNoOptional: update only these symbol names (without Library: prefix)
backupDirNoBackup folder with matching .kicad_sch filenames (for repairMirrorFromBackup)
libraryNameYesSymbol library nickname from sym-lib-table (e.g. Device, project_lib)
projectsDirNoDirectory containing project subfolders with .kicad_sch files
schematicPathNoSingle .kicad_sch file to update
schematicPathsNoMultiple .kicad_sch files
repairMirrorFromBackupNoRestore __m* mirror-cache lib_symbols blocks from backupDir first

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description reveals the tool skips mirror-cache entries (__m0, __m90, …) and flattens power symbols, which are important side effects. It also explicitly notes it's equivalent to KiCad's Update Symbol from Library, adding 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?

The description is compact and front-loaded, with the main action stated first, followed by two behavior notes and a usage note. Every sentence adds meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core purpose, key transformations, and file-scope options. Combined with the fully described schema and existing output schema, it is sufficiently complete for an agent to know what to expect. It doesn't mention backup/repair features, but those are documented in the 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?

The schema already provides descriptions for all 7 parameters (100% coverage). The description adds value by clarifying the relationship between projectsDir and schematicPath, explicitly stating one is for folder-wide updates and the other for a single file, which is not obvious from the schema alone.

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 clearly states the tool refreshes embedded lib_symbols cache entries from a KiCad symbol library, referencing KiCad's Update Symbol from Library. It further specifies skipping mirror-cache entries and flattening power symbols, making the purpose concrete and distinct from other symbol-related 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?

The description provides clear context by telling the user to pass projectsDir for updating all schematics in a folder or schematicPath for one file, indicating when each parameter is appropriate. It doesn't explicitly mention alternatives or exclusions, but the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.1/5.0
Disambiguation2/5

Many tools have overlapping or near-duplicate purposes, such as export_gerber/export_gerbers/export_gerber_single, export_pdf/export_pcb_pdf, export_position_file/export_pos, and explicit aliases like get_ratsnest/estimate_airwire_lengths. While descriptions help in some cases, the number of ambiguous boundaries is high enough that an agent will frequently struggle to choose the correct tool.

Naming Consistency4/5

Tool names overwhelmingly follow a consistent verb_noun pattern (create_project, get_board_info, add_layer, export_gerbers). Minor deviations exist, such as mixed abbreviations (export_sch_bom vs export_schematic_pdf), singular/plural variants (export_gerber vs export_gerbers), and a few compact aliases, but the overall convention is predictable and readable.

Tool Count1/5

With 219 tools, this server vastly exceeds any reasonable tool count for an agent-facing interface. Even though KiCAD is feature-rich, the surface is extremely heavy and will lead to high selection overhead and context bloat.

Completeness4/5

The tool set covers nearly the entire KiCAD workflow: project lifecycle, schematic editing, PCB layout, design rules, DRC/ERC, exports, library management, part sourcing, and external autorouting. Minor gaps exist, such as no explicit delete_net, delete_zone, or remove schematic text, but these are edge cases that do not significantly hamper typical workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to design PCBs in KiCAD through natural language, with transactional preview-verify-commit workflow, undo/redo, and an engineering knowledge base.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.
    49
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Avinash1286/KiCAD-MCP-Server-THEAVI'

If you have feedback or need assistance with the MCP directory API, please join our Discord server