KiCAD MCP Server
Automates KiCad PCB design, providing tools for schematic capture, board layout, component management, routing, design rule checking, and integration with part libraries and manufacturing services.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@KiCAD MCP Serverrun DRC and export Gerber files for manufacturing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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_pcbconverts PADS, Altium, Eagle, CADSTAR, Fabmaster, P-CAD, SolidWorks PCB and binary Cadence Allegro.brdfiles via KiCad 10's native importer.Hierarchical schematics:
remove_hierarchical_sheet,set_sheet_property,get_sheet_properties, andhierarchical_placefor arranging footprints by schematic hierarchy.Schematic lint and repair:
lint_offgridfinds and safely snaps off-grid geometry that silently breaks junction placement;repair_flat_symbolsfixes SnapEDA/SamacSys symbols that crash kicad-skip;lint_schematic_cosmetictidies 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 lintused to runblackin write mode against whateverblackwas onPATH, silently reformatting your working tree with a version that disagreed with CI. It now checks only;npm run format:pyis 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_clearanceandset_layer_constraintseach had a full schema and a router entry but no dispatch handler, so every call returnedUnknown command. Found by a documentation-coverage audit.Per-layer constraints are written to a project-scoped
.kicad_drucustom-rules file, whichkicad-cli pcb drcand the GUI both pick up — there is no pcbnew API for them.
Silent failures removed
autoroutewas abandoned by the Node bridge at 30 s while Freerouting was still running, reporting failure against a valid.sesthat existed on disk. Its timeout now derives from thetimeoutandattemptsyou pass.get_board_2d_viewomitted--layersentirely when no layers were given, and KiCad 9+ then refuses the export — producing no file at all.create_zoneraisedAttributeErroron every call over the IPC backend.
New part-sourcing tools
search_parts_registry/get_registry_part/download_registry_partreuse a verified existing footprint or symbol instead of generating one. Downloads are host-allowlisted, extension-checked and size-capped.get_jlcpcb_partreturns 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_symbolcopy a symbol between.kicad_symlibraries, 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_propertyandadd_library_symbol_propertyset custom BOM fields (Manufacturer, MPN, LCSC, ...) on a library symbol or on a schematic's cached definition.update_symbol_from_libraryrefreshes cachedlib_symbolsdefinitions across one schematic, a list, or every project under a directory — the programmatic equivalent of KiCad's Update Symbol from Library.replace_instance_lib_idsswapslib_idreferences 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_symand schematic write raisedTypeErroron Python 3.9, the project's declared floor —Path.write_textdid not acceptnewlineuntil 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-cli10.0.Component placement snaps to the 1.27 mm grid,
import_sesno longer creates phantom slashless nets, andexport_dsn/autoroutekeep.kicad_pronet classes.
Full details in the CHANGELOG.
What's New in v2.3.1
Eagle schematic import
import_eagle_projectconverts Eagle.schXML designs to KiCad format with symbol mapping, net wires, multi-gate parts, dangling-wire pruning, and ground-truth ERC reporting viakicad-cli.
3D model tools and interactive reload
add_component_3d_modelattaches STEP/WRL models to footprints.Opt-in
KICAD_INTERACTIVE_SCHEMATIC=1auto-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_profiles match what KiCad itself writes.Format version
20260101ensures all KiCad 10.0.x builds can open generated schematics.
KiCad 10 compatibility
Derived symbols in
.kicad_symdirlibraries resolve their parent from sibling shards.Unified install discovery finds relocated Windows installs via registry.
User env-var placeholders from
kicad_common.jsonare resolved in library paths.Phantom cross-unit pin reports in
get_wire_connectionsare 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_projectrefuses to overwrite a board file whose contents changed on disk since load (passforce: trueto 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-cliand 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:
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).sync_schematic_to_board— imports the net assignments into the PCB.route_pad_to_pad— routes each connection with automatic via insertion when pads are on opposite copper layers.snapshot_project— saves a named checkpoint into<project>/snapshots/.
Bug Fixes (KiCAD 9 / Windows)
Via insertion for B.Cu footprints —
route_pad_to_padnow correctly detects when a footprint is on B.Cu and inserts the required via. (KiCAD 9 SWIG returnedF.Cufor all SMD pads regardless of layer — fixed.)Board outline rounded corners —
add_board_outlinenow correctly appliescornerRadiuswhenshape="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_projectonly created PCB files, no schematicsadd_schematic_componentcalled non-existent API methodsSchematics 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_projectnow creates both .kicad_pcb and .kicad_sch filesAdded 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_symlibrary filesZero 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:
Static Templates: 13 pre-configured symbols (R, C, L, LED, etc.) for instant use
Dynamic Loading: On-demand injection of ANY symbol from KiCad libraries:
Parse
.kicad_symlibrary files using S-expression parserInject symbol definition into schematic's
lib_symbolssectionCreate offscreen template instance
Reload schematic so kicad-skip sees new template
Clone template to create actual component
Wire Creation: S-expression-based wire injection (bypasses kicad-skip API limitations)
Pin Discovery: Parse symbol definitions, apply rotation transformations, calculate absolute positions
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 categoriesget_category_tools- View the tools in one categorysearch_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:
Local Symbol Libraries - Search JLCPCB libraries installed via KiCAD Plugin and Content Manager (contributed by @l3wi)
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/statuskicad://board/info,kicad://board/layers,kicad://board/statisticskicad://componentsandkicad://components/placementkicad://board/extents{?unit}andkicad://board/2d-view{?format,width,height,layers}kicad://component/{reference}/detailsand/connectionslibrary, 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/discoverLegacy 2025 initialization compatibility on the same stdio entrypoint
Deterministic catalogs with
ttlMsandcacheScopehintsStructured 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 projectsopen_project- Load existing project filesclose_project- Release the active project and its backend statesave_project- Save current project stateget_project_info- Retrieve project metadatasnapshot_project- Save named checkpoint snapshot
Board Operations (12 tools)
set_board_size- Configure PCB dimensionsadd_board_outline- Create board edge (rectangle, circle, polygon, rounded rectangle)add_layer- Add custom layers to stackset_active_layer- Switch working layerget_layer_list- List all board layersget_board_info- Retrieve board propertiesget_board_2d_view- Generate board preview imageget_board_extents- Get board bounding boxadd_mounting_hole- Place mounting holesadd_board_text- Add text annotationsadd_zone- Add copper zone/pour with clearance settingsimport_svg_logo- Import SVG file as PCB silkscreen polygons
Component Management (16 tools)
place_component- Place single component with footprintmove_component- Reposition existing componentrotate_component- Rotate component by angledelete_component- Remove component from boardedit_component- Modify component propertiesfind_component- Search by reference or valueget_component_properties- Query component detailsset_footprint_type- Change through-hole/SMD footprint typeget_component_pads- Get all pad informationget_component_list- List all placed componentsget_pad_position- Get precise pad positionplace_component_array- Create component grids/patternsalign_components- Align multiple componentscheck_courtyard_overlaps- Detect footprint courtyard collisionssuggest_placement- Generate a deterministic placement suggestionduplicate_component- Copy existing component
Routing (16 tools)
add_net- Create electrical netroute_trace- Route copper traces between XY pointsroute_arc_trace- Route an arc-shaped traceroute_pad_to_pad- Route between pads with auto-via insertionadd_via- Place vias for layer transitionsdelete_trace- Remove traces (by UUID, position, or net)query_traces- Query/filter tracesquery_zones- Query/filter copper zonesadd_gnd_stitching_vias- Place ground stitching viasget_nets_list- List all nets with statisticsmodify_trace- Change trace width, layer, or netcreate_netclass- Define net class with rulesadd_copper_pour- Create copper zones/poursroute_differential_pair- Route differential signalsrefill_zones- Refill all copper zonescopy_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 librarydelete_schematic_component- Remove componentedit_schematic_component- Edit footprint, value, reference, label positions, and arbitrary custom properties (MPN, Manufacturer, DigiKey_PN, LCSC, Voltage, Tolerance, Dielectric, …) in one batched callset_schematic_component_property- Add or update a single custom property (BOM/sourcing field) on a componentremove_schematic_component_property- Delete a single custom property from a componentget_schematic_component- Inspect every field on a component (built-in + custom) including label positionslist_schematic_components- List all componentsmove_schematic_component- Reposition componentrotate_schematic_component- Rotate componentannotate_schematic- Auto-assign reference designators
Wiring and Connections:
add_schematic_wire- Create wire between pointsdelete_schematic_wire- Remove wire segmentbatch_connect/batch_add_and_connect- Connect multiple pins in one operationadd_schematic_net_label- Add net labels (VCC, GND, signals)delete_schematic_net_label- Remove net labelconnect_to_net- Connect pin to named netconnect_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 connectivitylist_schematic_nets/list_schematic_wires/list_schematic_labelscreate_schematic- Create new schematic fileget_schematic_view- Rasterized schematic previewexport_schematic_svg/export_schematic_pdfrun_erc- Electrical rule checkgenerate_netlist- Generate netlist from schematicsync_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 rulesrun_drc- Execute design rule checkget_drc_violations- Get violation list by severityadd_net_class/create_netclass- Net class management (compatibility and canonical names)assign_net_to_class- Assign a net to a configured classset_layer_constraints/check_clearance- Layer and clearance rules
Export (27 tools; selected examples)
export_gerber- Gerber fabrication filesexport_pdf/export_svg- Documentation and vector graphicsexport_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 placeexport_vrml- VRML 3D model
Footprint Libraries (4 tools) and Symbol Libraries (4 tools)
list_libraries/list_symbol_libraries- Browse available librariessearch_footprints/search_symbols- Search across all librarieslist_library_footprints/list_library_symbols- Browse specific libraryget_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/pinsedit_footprint_pad- Modify pad propertiesregister_footprint_library/register_symbol_library- Register in lib-tablelist_footprint_libraries/list_symbols_in_library- Browse custom librariesdelete_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 numbersget_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 filtersget_jlcpcb_part- Detailed part info with pricingget_jlcpcb_database_stats- Database statisticssuggest_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 workflowcheck_freerouting- Verify Java and Freerouting availability
See Freerouting Guide for setup and usage.
UI Management (3 tools)
get_backend_state- Inspect the active KiCad backendcheck_kicad_ui- Check if KiCAD is runninglaunch_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 --versionandnpm --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:
Claude Desktop - Official Anthropic desktop app
Claude Code - Official CLI tool
Cline - VSCode extension
OpenCode - Terminal-based AI coding agent with MCP support
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.ps1The script will:
Detect KiCAD installations, including both machine-wide installs under
C:\Program Files\KiCadand per-user installs under%LOCALAPPDATA%\Programs\KiCadVerify 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 setupThe 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.shIn 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.shso 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
PYTHONPATHgenerating 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 --verifyPreview configuration (dry run)
./setup-macos.sh --dry-runApply configuration
./setup-macos.sh --applyAfter 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:
kicadExample:
./setup-macos.sh --apply --name kicad-devUse 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.jsonExample:
./setup-macos.sh --dry-run --claude-config ~/tmp/claude_config.jsonUse 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 --yesAfter Setup
Fully quit Claude Desktop
Reopen Claude Desktop
Open a new chat
Click + → Connectors
Verify the server appears (e.g.
kicador 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
mcpServerssection and leaves all other configuration untouchedExisting 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.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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-packagesWindows:
C:\Program Files\KiCad\10.0\lib\python3\dist-packagesor%LOCALAPPDATA%\Programs\KiCad\10.0\lib\python3\dist-packagesmacOS:
/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:
KICAD_PYTHON env var - Explicit user or packaged-launcher override (highest priority)
Virtual environment -
venv/bin/pythonor.venv/bin/pythonKiCad bundled Python -
/usr/lib/kicad/bin/python3,/usr/local/lib/kicad/bin/python3,/opt/kicad/bin/python3System Python via which - Resolves
which python3to absolute path (e.g.,/usr/bin/python3)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 accessGitHub Copilot (VS Code)
Copy the template to your workspace:
cp config/vscode-mcp.example.json .vscode/mcp.jsonVS Code will auto-detect .vscode/mcp.json and register the server. The template uses ${workspaceFolder} so no path editing is needed.
Note:
.vscode/mcp.jsonis 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:
McpServerPathis this repository, wheredist/cli.jsis builtProjectPathis the project that should receiveopencode.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, anddist/cli.jsbefore 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 synchronizationswig- use the file-basedpcbnewbackend
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 swigFor -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 -SkipBuildPreview OpenCode configuration
Use dry run mode when you want to inspect the exact JSON before writing it.
.\setup-windows-opencode.ps1 -DryRun -SkipInstall -SkipBuildExample 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 projectBy 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 globalUse 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-devUse 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 -SkipBuildAfter applying configuration
Fully quit OpenCode.
Start OpenCode again so it reloads
opencode.json.Ask OpenCode to use the
kicadMCP server and runcheck_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:
Open KiCAD
Go to Tools > Plugin and Content Manager
Search for "JLCPCB" or "JLC"
Install libraries like
JLCPCB-KiCAD-LibraryorEDA_MCPUse
search_symbolsto 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:
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
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
envconfiguration when it does not inherit your shell profile. The server does not automatically load project-root.envfiles.
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-jreThe 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 folderManual 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.sesDesign 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/listplus 3 supplemental catalog toolsResults: Structured output, standard MCP errors, cancellation propagation, cache hints, and MRTR confirmations
TypeScript Server (src/)
Uses
@modelcontextprotocol/serverv2 andserveStdio()for protocol-era negotiationManages 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.tsfrom the same first-class tool registrations used by MCPProvides
src/tools/router.tsonly 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 backendsipc_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 operationsboard.py- Board manipulationcomponent.py- Component placementrouting.py- Trace routing and netsdesign_rules.py- DRC operationsexport.py- File generationschematic.py- Schematic designlibrary.py- Footprint librarieslibrary_symbol.py- Symbol library search (local JLCPCB libraries)jlcpcb.py- JLCPCB API clientjlcpcb_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 devRunning Tests
# TypeScript tests
npm run test:ts
# Python tests
npm run test:py
# All tests with coverage
npm run test:coverageLinting and Formatting
# Lint TypeScript and Python
npm run lint
# Format code
npm run formatTroubleshooting
Server Not Appearing in Client
Symptoms: MCP server doesn't show up in Claude Desktop or Cline
Solutions:
Verify build completed:
ls dist/cli.jsCheck configuration paths are absolute
Restart MCP client completely
Check client logs for error messages
Python Module Import Errors
Symptoms: ModuleNotFoundError: No module named 'pcbnew'
Solutions:
Verify KiCAD installation:
python3 -c "import pcbnew"Check PYTHONPATH in configuration matches your KiCAD installation
Ensure KiCAD was installed with Python support
Tool Execution Failures
Symptoms: Tools fail with unclear errors
Solutions:
Check the current server log:
~/.kicad-mcp/logs/kicad-mcp-YYYY-MM-DD.logVerify a project is loaded before running board operations
Ensure file paths are absolute, not relative
Check tool parameter types match schema requirements
Windows-Specific Issues
Symptoms: Server fails to start on Windows
Solutions:
Run automated diagnostics:
.\setup-windows.ps1Verify Python path uses double backslashes:
C:\\Program Files\\KiCad\\10.0Check Windows Event Viewer for Node.js errors
Getting Help
Check the GitHub Issues
Review the current server log:
~/.kicad-mcp/logs/kicad-mcp-YYYY-MM-DD.logOpen 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 verbosity ( |
|
| Max size per log file before it rotates; |
|
| Number of rotated backups to keep. |
| unset | Set to |
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:
Star the repo if you find it useful
Contributing
Contributions are welcome! Please follow these guidelines:
Report Bugs: Open an issue with reproduction steps
Suggest Features: Describe use case and expected behavior
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
Built on the Model Context Protocol by Anthropic
Powered by KiCAD open-source PCB design software
Uses kicad-skip for schematic manipulation
JLCSearch API by @tscircuit - Public JLCPCB parts API
JLCParts Database by @yaqwsx - JLCPCB parts data
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 toolsadd_board_outlineAdd Board OutlineADestructive
Draw the PCB board outline (Edge.Cuts layer) as a rectangle, rounded rectangle, circle or polygon.
| Name | Required | Description | Default |
|---|---|---|---|
| shape | Yes | Shape of the outline | |
| params | Yes | Parameters for the outline shape |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TextADestructive
Add a text label to a PCB layer (e.g. silkscreen, fab, courtyard).
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | Text size | |
| text | Yes | Text content | |
| layer | Yes | Layer to place the text on | |
| style | No | Text style | |
| position | Yes | Position of the text | |
| rotation | No | Rotation angle in degrees | |
| thickness | No | Line thickness |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ModelADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Model scale factor (default 1,1,1) | |
| offset | No | Model offset in mm (default 0,0,0) | |
| rotate | No | Model rotation in degrees (default 0,0,0) | |
| replace | No | Replace an existing model with the same filename (default true) | |
| modelPath | Yes | Path to the 3D model, e.g. ${KIPRJMOD}/MyProj.3dshapes/MyPart.step | |
| reference | Yes | Footprint reference(s), e.g. 'D1', ['D1','D2'], or '*' for all footprints |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PourBDestructive
Add a copper pour (ground/power plane) to the PCB
| Name | Required | Description | Default |
|---|---|---|---|
| net | Yes | Net name | |
| layer | Yes | PCB layer | |
| outline | No | Array of {x, y} points defining the pour boundary. If omitted, the board outline is used. | |
| clearance | No | Clearance in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ModelADestructive
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).
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Model scale factor (default 1,1,1) | |
| offset | No | Model offset in mm (default 0,0,0) | |
| rotate | No | Model rotation in degrees (default 0,0,0) | |
| replace | No | Replace an existing model with the same filename (default true) | |
| modelPath | Yes | Path to the 3D model file. Prefer ${KIPRJMOD}/MyProj.3dshapes/MyPart.step for portability. | |
| footprintPath | Yes | Full path to the .kicad_mod file, e.g. C:/MyLib.pretty/MyPart.kicad_mod |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ViasADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | If true, return the placements that would be made but don't modify the board (default false). | |
| gndNet | No | Name of the ground net (default: auto-detect GND / GROUND / VSS / /GND). | |
| maxVias | No | Cap on total placements across all strategies (default unlimited). | |
| spacing | No | Grid spacing in mm for `grid` and `around_refs` strategies (default 5.0). | |
| viaSize | No | Via pad diameter in mm (default 0.6). | |
| viaDrill | No | Via drill diameter in mm (default 0.3). Must be smaller than viaSize. | |
| clearance | No | Extra clearance beyond required between each new via and existing copper, in mm (default 0.2). | |
| edgeMargin | No | Keep-out from the board edge in mm (default 0.5). | |
| strategies | No | Which placement strategies to combine (default: ['grid']). Pass ['grid', 'around_refs', 'in_zones'] for full coverage. | |
| densifyRefs | No | Reference designators to densify ground around (used by `around_refs`). Targets: MCUs, switching regulators, RF parts. | |
| densifyRadius | No | How many grid cells around each ref to try (default 2 = 5x5 candidate field per ref). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SheetADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Sheet box size in mm (default 80x50) | |
| position | No | Top-left of the sheet box in mm (default 50,50) | |
| sheetName | No | Display name for the sheet | Sheet |
| subsheetPath | Yes | Path to the existing sub-sheet .kicad_sch to reference | |
| schematicPath | Yes | Path to the parent .kicad_sch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LayerADestructive
Add a new copper or technical layer to the PCB stackup.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Layer name | |
| type | Yes | Layer type | |
| number | No | Layer number (for inner layers) | |
| position | Yes | Layer position |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertyADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| hide | No | Hide the property (default false) | |
| position | No | Position {x, y} in mm (default: 0, 0) | |
| symbolName | Yes | Symbol name (e.g. R, C, GND) | |
| libraryName | Yes | Symbol library nickname (e.g. Device, power) | |
| propertyName | Yes | Property name (e.g. Manufacturer, MPN) | |
| propertyValue | Yes | Property value | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 HoleADestructive
Place a mounting hole (NPTH or PTH) at the specified position on the PCB.
| Name | Required | Description | Default |
|---|---|---|---|
| diameter | Yes | Diameter of the hole | |
| position | Yes | Position of the mounting hole | |
| padDiameter | No | Optional diameter of the pad around the hole |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 NetBDestructive
Create a new net on the PCB
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Net name | |
| netClass | No | Net class name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ClassBDestructive
Create a named net class with specific clearance, track-width, via, and differential-pair rules.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the net class | |
| viaDrill | Yes | Via drill size for this net class (mm) | |
| clearance | Yes | Clearance for this net class (mm) | |
| trackWidth | Yes | Track width for this net class (mm) | |
| uvia_drill | No | Micro via drill size for this net class (mm) | |
| viaDiameter | Yes | Via diameter for this net class (mm) | |
| diff_pair_gap | No | Differential pair gap for this net class (mm) | |
| uvia_diameter | No | Micro via diameter for this net class (mm) | |
| diff_pair_width | No | Differential pair width for this net class (mm) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConnectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| position | No | Position [x, y] in mm. Required when componentRef/pinNumber are not given. | |
| pinNumber | No | Pin number or name on componentRef (e.g. '1', 'GND'). Use with componentRef. | |
| componentRef | No | Component reference to snap to (e.g. U1, R1). Use with pinNumber. | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
Add a component to the schematic. Symbol format is 'Library:SymbolName' (e.g., 'Device:R', 'EDA-MCP:ESP32-C3')
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit number for multi-unit symbols (1=A, 2=B, 3=C, …). Defaults to 1. | |
| angle | No | Rotation angle in degrees (KiCad CCW). 0=vertical resistor, 90=horizontal. Defaults to 0. | |
| value | No | Component value | |
| symbol | Yes | Symbol library:name reference (e.g., Device:R, EDA-MCP:ESP32-C3) | |
| mirrorY | No | Mirror the symbol horizontally (flip left-right). Useful for transistors facing opposite direction. | |
| position | No | Position on schematic | |
| footprint | No | KiCAD footprint (e.g. Resistor_SMD:R_0603_1608Metric) | |
| reference | Yes | Component reference (e.g., R1, U1) | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LabelADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Label text (e.g. 'SD_CLK') — must match the sheet pin name | |
| shape | Yes | Signal direction from the sub-sheet's perspective | |
| position | Yes | Position [x, y] in mm | |
| orientation | No | Rotation in degrees: 0=label points right, 180=label points left (default: 0) | |
| schematicPath | Yes | Path to the sub-sheet .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LabelADestructive
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).
| Name | Required | Description | Default |
|---|---|---|---|
| netName | Yes | Name of the net (e.g., VCC, GND, SIGNAL_1) | |
| position | No | Position [x, y] for the label. Required when componentRef/pinNumber are not given. | |
| labelType | No | Label type (default: label) | |
| pinNumber | No | Pin number or name on componentRef to snap label to (e.g. '1', 'GND'). Use with componentRef. | |
| orientation | No | Rotation angle 0/90/180/270 (default: 0) | |
| componentRef | No | Component reference to snap label to (e.g. U1, R1). Use with pinNumber. | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TextADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | Bold text (default: false) | |
| text | Yes | Text content to display | |
| angle | No | Rotation angle in degrees (default: 0) | |
| italic | No | Italic text (default: false) | |
| justify | No | Horizontal text justification (default: left) | |
| fontSize | No | Font size in mm (default: 1.27) | |
| position | Yes | Position [x, y] in schematic mm coordinates | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 WireADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| waypoints | Yes | Ordered list of [x, y] coordinates. Minimum 2 points. | |
| snapToPins | No | Snap the first and last waypoints to the nearest pin (default: true) | |
| schematicPath | Yes | Path to the .kicad_sch file | |
| snapTolerance | No | Maximum snap distance in mm (default: 1.0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PinADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pinName | Yes | Pin name — must match a hierarchical_label in the sub-sheet | |
| pinType | Yes | Signal direction (should match the sub-sheet hierarchical label shape) | |
| position | Yes | Pin position [x, y] in mm — must be on the sheet block boundary | |
| sheetName | Yes | Sheet name as it appears in the Sheetname property (e.g. 'Storage') | |
| orientation | No | Pin orientation: 0=right edge of sheet box, 180=left edge (default: 0) | |
| schematicPath | Yes | Path to the PARENT .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertyBDestructive
Add or update a custom property (Manufacturer, MPN, LCSC, etc.) on a symbol in a .kicad_sym library file.
| Name | Required | Description | Default |
|---|---|---|---|
| hide | No | Hide the property (default false) | |
| position | No | Position {x, y} in mm (default: 0, 0) | |
| symbolName | Yes | Symbol name | |
| libraryPath | Yes | Path to the .kicad_sym file | |
| propertyName | Yes | Property name (e.g. Manufacturer, MPN) | |
| propertyValue | Yes | Property value |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ViaBDestructive
Add a via to the PCB
| Name | Required | Description | Default |
|---|---|---|---|
| net | Yes | Net name | |
| viaType | No | Via type (through, blind, buried) | |
| position | Yes | Via position |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ZoneCDestructive
Create a copper fill zone (pour) on a PCB layer for a specified net.
| Name | Required | Description | Default |
|---|---|---|---|
| net | Yes | Net name for the zone | |
| unit | Yes | Unit of measurement | |
| layer | Yes | Layer for the zone | |
| points | Yes | Points defining the zone outline | |
| minWidth | No | Minimum width | |
| clearance | No | Clearance value |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentsBDestructive
Align multiple PCB components horizontally, vertically or on a grid with optional spacing.
| Name | Required | Description | Default |
|---|---|---|---|
| spacing | No | Spacing between components in mm | |
| references | Yes | Array of component references to align | |
| alignmentType | Yes | Type of alignment | |
| referenceComponent | No | Reference component for alignment |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SchematicADestructive
Assign reference designators to unannotated components (R? → R1, R2, ...). Must be called before tools that require known references.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ClassADestructive
Assign a net to an existing net class to apply its specific design rules.
| Name | Required | Description | Default |
|---|---|---|---|
| net | Yes | Name of the net | |
| netClass | Yes | Name of the net class |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FieldsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| clearance | No | Gap in mm between the body/label extent and field text (default one 1.27mm grid unit) | |
| references | No | Only reposition these references (default: all components) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
autorouteAutorouteADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Per-attempt timeout in seconds (default: 300) | |
| attempts | No | Number 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. | |
| boardPath | No | Path to .kicad_pcb file (default: current board) | |
| maxPasses | No | Maximum routing passes for single-attempt mode (default: 20). Ignored when `attempts` > 1; use `passSchedule` instead. | |
| targetNets | No | Optional 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. | |
| passSchedule | No | Per-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. | |
| freeroutingJar | No | Path to freerouting.jar (default: ~/.kicad-mcp/freerouting.jar or FREEROUTING_JAR env) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConnectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| origin_x | No | ||
| origin_y | No | ||
| labelType | No | Label kind used to wire the nets: 'label' = sheet-local (default); 'global_label' = cross-sheet by name | label |
| components | Yes | Components to place and connect | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| origin_x | No | X offset added to every component position (mm) | |
| origin_y | No | Y offset added to every component position (mm) | |
| components | Yes | Components to place | |
| schematicPath | Yes | Path to the .kicad_sch file | |
| auto_position_fields | No | Auto-place Ref/Value fields outside the body (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConnectsADestructive
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| pins | Yes | Pins to mark no-connect | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConnectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| replace | No | Delete existing labels at each pin before placing (default false) | |
| labelType | No | Label kind: 'label' = sheet-local (default); 'global_label' = connects across all sheets by name | label |
| connections | Yes | Map of reference -> {pin: netName} | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| components | Yes | Map of reference -> fields to change | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PinsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| compact | No | If true, omit per-pin detail for standard 2-pin symmetric passives. | |
| symbols | Yes | Array of symbols in 'Library:SymbolName' format (e.g., ['Device:R', 'Device:C']) | |
| schematicPath | No | Path to .kicad_sch — enables project-local sym-lib-table lookup |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentsADestructive
Move multiple PCB components transactionally. If one reference/spec is invalid, no components are moved. Saves by default unless save=false.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Save the board after all moves succeed (default true) | |
| moves | Yes | Map of reference designator to placement spec | |
| dryRun | No | Validate the batch without changing the board |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PositionsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | List of field moves to apply | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ClearanceARead-onlyIdempotent
Check the actual clearance between two PCB items (track, via, pad, zone or component) and report whether it meets the design rules.
| Name | Required | Description | Default |
|---|---|---|---|
| item1 | Yes | First item to check | |
| item2 | Yes | Second item to check |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OverlapsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | Limit the check to these refs (default: every footprint on the board). | |
| margin | No | Extra clearance in mm added around every courtyard (default 0). Useful to enforce a manufacturing keepout wider than the symbol's declared courtyard. | |
| positions | No | Virtual 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_outline | No | Optional board outline bbox override. Default: derived from Edge.Cuts. | |
| include_boundary | No | Also flag courtyards that extend past the board outline (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FreeroutingARead-onlyIdempotent
Check if Java and Freerouting JAR are available on the system. Run this before autoroute to verify prerequisites.
| Name | Required | Description | Default |
|---|---|---|---|
| freeroutingJar | No | Path to freerouting.jar to check |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 UiARead-onlyIdempotent
Check if KiCAD UI is currently running
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ClearanceARead-onlyIdempotent
Classify placement conflicts as body overlap, courtyard overlap, keepout violation, silk/text overlap or pad clearance.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | Optional component reference filter | |
| margin | No | Extra bbox margin in mm for mechanical checks | |
| padClearance | No | Extra pad bbox clearance in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OutlineADestructive
Delete all Edge.Cuts graphics from the current PCB board.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ProjectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Save 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. | |
| force | No | Backward-compatible alias for forceExternalChanges | |
| forceExternalChanges | No | Save despite external changes to the loaded SWIG board file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PassthroughADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| netPrefix | No | Net name prefix, e.g. 'CSI' → CSI_1, CSI_2 (default: PIN) | |
| pinOffset | No | Add to pin number when building net name (default: 0) | |
| sourceRef | Yes | Source connector reference (e.g. J1) | |
| targetRef | Yes | Target connector reference (e.g. J2) | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 NetADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| netName | Yes | Name of the net to connect to | |
| pinName | Yes | Pin name/number to connect | |
| componentRef | Yes | Component reference (e.g., U1, R1) | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PatternADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceRefs | Yes | References of the source components (e.g. ['U1', 'R1', 'C1']) | |
| targetRefs | Yes | References of the target components in same order as sourceRefs (e.g. ['U2', 'R2', 'C2']) | |
| traceWidth | No | Override trace width in mm (default: keep original width) | |
| includeVias | No | Also copy vias (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SchematicADestructive
Create a new .kicad_pcb file from a schematic, then update the PCB from that schematic so footprints and nets are present.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | No | Destination .kicad_pcb path; defaults next to schematic | |
| overwrite | No | Replace boardPath if it already exists | |
| schematicPath | Yes | Absolute path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FootprintADestructive
Create a new KiCAD footprint (.kicad_mod) inside a .pretty library directory. Supports SMD and THT pads, courtyard, silkscreen, and fab-layer rectangles.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Footprint name, e.g. 'R_0603_Custom' | |
| pads | No | List of pads to add (can be empty for outlines-only footprints) | |
| tags | No | Space-separated tag string, e.g. 'resistor SMD 0603' | |
| fabLayer | No | Fab-layer rectangle on F.Fab (shows component body) | |
| courtyard | No | Courtyard rectangle on F.CrtYd (recommended: 0.25 mm clearance around pads) | |
| overwrite | No | Replace existing footprint file (default: false) | |
| silkscreen | No | Silkscreen rectangle on F.SilkS | |
| description | No | Human-readable description | |
| libraryPath | Yes | Path to the .pretty library directory (created if missing). E.g. C:/MyProject/MyLib.pretty | |
| refPosition | No | Position of the REF** text (default: 0, -1.27) | |
| valuePosition | No | Position of the Value text (default: 0, 1.27) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SubsheetADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | ||
| metadata | No | Optional metadata for the new sub-sheet (title, etc.) | |
| position | No | ||
| sheetName | No | Display name for the sheet | Sheet |
| subsheetPath | Yes | Path for the new sub-sheet .kicad_sch to create | |
| parentSchematicPath | Yes | Path to the parent .kicad_sch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 NetclassADestructive
Create a new net class with custom design rules, optionally assigning nets to it immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Net class name | |
| nets | No | Net names to assign to this class immediately | |
| viaDrill | No | Via drill size in mm | |
| clearance | No | Clearance in mm | |
| uviaDrill | No | Micro via drill size in mm | |
| traceWidth | No | Default trace width in mm | |
| diffPairGap | No | Differential pair gap in mm | |
| viaDiameter | No | Via diameter in mm | |
| uviaDiameter | No | Micro via diameter in mm | |
| diffPairWidth | No | Differential pair trace width in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ProjectBDestructive
Create a new KiCAD project
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name | |
| path | Yes | Project directory path |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SchematicCDestructive
Create a new schematic
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Schematic name | |
| path | No | Optional path |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolADestructive
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Symbol name, e.g. 'TMC2209', 'MyOpAmp' | |
| pins | No | List of pins (can be empty for graphical-only symbols) | |
| inBom | No | Include in BOM (default true) | |
| onBoard | No | Include in netlist for PCB (default true) | |
| keywords | No | Space-separated search keywords | |
| datasheet | No | Datasheet URL or '~' | |
| footprint | No | Default footprint, e.g. 'Package_SO:SOIC-8_3.9x4.9mm_P1.27mm' | |
| overwrite | No | Replace existing symbol with same name (default false) | |
| polylines | No | Polyline graphics for custom body shapes (op-amp triangles, etc.) | |
| rectangles | No | Body rectangle(s). Typically one rectangle defining the IC body. | |
| description | No | Human-readable description | |
| libraryPath | Yes | Path to the .kicad_sym file (created if missing) | |
| referencePrefix | No | Schematic reference prefix: 'U' (IC), 'R' (resistor), 'J' (connector), etc. Default: 'U' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
Remove a component from the PCB by its reference designator.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Reference designator of the component to delete (e.g., 'R5') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GraphicADestructive
Delete a PCB graphic/drawing item by UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | KiCad UUID of the graphic item |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Reference designator of the component to remove (e.g. R1, U3) | |
| schematicPath | Yes | Path to the .kicad_sch file | |
| deleteAttachedLabels | No | Also 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LabelBDestructive
Remove a net label from the schematic.
| Name | Required | Description | Default |
|---|---|---|---|
| netName | Yes | Name of the net label to remove | |
| position | No | Position to disambiguate if multiple labels with same name | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 WireBDestructive
Remove a wire from the schematic by start and end coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | Wire end position | |
| start | Yes | Wire start position | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolADestructive
Remove a symbol from a .kicad_sym library file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Symbol name to delete | |
| libraryPath | Yes | Path to the .kicad_sym file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TraceADestructive
Delete traces from the PCB. Can delete by UUID, position, or bulk-delete all traces on a net.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Delete all traces on this net (bulk delete) | |
| layer | No | Filter by layer when using net-based deletion | |
| position | No | Delete trace nearest to this position | |
| traceUuid | No | UUID of a specific trace to delete | |
| includeVias | No | Include vias in net-based deletion |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ReloadADestructive
Discard the current in-memory PCB state and reload the board from disk.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | No | Optional .kicad_pcb path; defaults to current board |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DatabaseADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force re-download even if database exists | |
| source | No | Force 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PartAIdempotent
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Registry part id (from search_parts_registry) | |
| format | Yes | Which file to download: footprint | symbol | 3D model | |
| dest_dir | Yes | Existing destination directory to write the file into (must already exist) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentBDestructive
Duplicate an existing PCB component at an offset position, optionally with a new reference designator.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of duplicates (default: 1) | |
| offset | Yes | Offset from original position | |
| reference | Yes | Reference of component to duplicate | |
| newReference | No | New reference designator |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
Edit properties of an existing PCB component (reference, value, footprint).
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Optional new component value | |
| footprint | No | Optional new footprint | |
| reference | Yes | Reference designator of the component (e.g., 'R5') | |
| newReference | No | Optional new reference designator |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PadADestructive
Edit an existing pad inside a .kicad_mod footprint file. Updates size, position, drill, or shape without recreating the whole footprint.
| Name | Required | Description | Default |
|---|---|---|---|
| at | No | New pad position in mm | |
| size | No | New pad size in mm | |
| drill | No | New drill size (for THT pads) | |
| shape | No | New pad shape | |
| padNumber | Yes | Pad number to edit, e.g. '1' or 2 | |
| footprintPath | Yes | Full path to the .kicad_mod file, e.g. C:/MyLib.pretty/R_Custom.kicad_mod |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | New value string (e.g. 10k, 100nF) | |
| footprint | No | New KiCAD footprint string (e.g. Resistor_SMD:R_0603_1608Metric) | |
| reference | Yes | Current reference designator of the component (e.g. R1, U3) | |
| properties | No | Add 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%"} | |
| newReference | No | Rename the reference designator (e.g. R1 → R10) | |
| schematicPath | Yes | Path to the .kicad_sch file | |
| fieldPositions | No | Reposition field labels: map of field name to {x, y, angle, justify?} (e.g. {"Reference": {"x": 12.5, "y": 17.0, "justify": "left"}}) | |
| removeProperties | No | List 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DatasheetsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | If true, show what would be changed without writing to disk (default: false) | |
| schematic_path | Yes | Path to the .kicad_sch file to enrich |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LengthsARead-onlyIdempotent
Alias for get_ratsnest: estimate airwire segments and lengths by net.
| Name | Required | Description | Default |
|---|---|---|---|
| nets | No | ||
| maxPadsPerNet | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 3dADestructive
Export the PCB as a 3D model (STEP, STL, VRML or OBJ) including optional copper, solder mask, silkscreen and component 3D models.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | 3D model format | |
| outputPath | Yes | Path to save the 3D model file | |
| includeCopper | No | Whether to include copper layers | |
| includeComponents | No | Whether to include 3D component models | |
| includeSilkscreen | No | Whether to include silkscreen | |
| includeSolderMask | No | Whether to include solder mask |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 CliADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite output file | |
| noDnp | No | Exclude 3D models for components with 'Do not populate' attribute | |
| units | No | Output units (VRML only; default in) | |
| format | Yes | 3D output format (selects the kicad-cli subcommand) | |
| boardOnly | No | Only generate a board with no components | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| modelsDir | No | Folder to store 3D models in (VRML only; empty = embed in main file) | |
| netFilter | No | Only include copper items belonging to nets matching this wildcard | |
| fuseShapes | No | Fuse overlapping geometry together | |
| gridOrigin | No | Use Grid Origin for output origin | |
| outputPath | Yes | Output 3D model file path | |
| userOrigin | No | User-specified output origin e.g. '1x1in', '25.4x25.4mm' (default unit mm) | |
| drillOrigin | No | Use Drill Origin for output origin | |
| fillAllVias | No | Don't cut via holes in conductor layers | |
| includePads | No | Export pads | |
| minDistance | No | Min distance between points to treat as separate (default '0.01mm') | |
| noBoardBody | No | Exclude board body | |
| substModels | No | Substitute STEP/IGS models in place of VRML models | |
| includeZones | No | Export zones | |
| noComponents | No | Exclude 3D models for components | |
| cutViasInBody | No | Cut via holes in board body even if conductor layers not exported | |
| includeTracks | No | Export tracks and vias | |
| noUnspecified | No | Exclude 3D models for components with 'Unspecified' footprint type | |
| modelsRelative | No | Use relative model paths with modelsDir (VRML only) | |
| noOptimizeStep | No | Do not optimize STEP file (enables writing parametric curves; STEP only) | |
| componentFilter | No | Only include component models matching this refdes list (comma, wildcards) | |
| includeSilkscreen | No | Export silkscreen graphics as flat faces | |
| includeSoldermask | No | Export soldermask layers as flat faces | |
| includeInnerCopper | No | Export elements on inner copper layers |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BomADestructive
Export a Bill of Materials (BOM) from the PCB in CSV, XML, HTML or JSON format.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | BOM file format | |
| outputPath | Yes | Path to save the BOM file | |
| groupByValue | No | Whether to group components by value | |
| includeAttributes | No | Optional array of additional attributes to include |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DrillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Drill file format (default excellon) | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| mapFormat | No | Drill map format when generateMap is set (default pdf) | |
| outputDir | Yes | Output directory for the drill files | |
| drillOrigin | No | Drill coordinate origin (default absolute) | |
| generateMap | No | Generate a drill map / summary file | |
| excellonUnits | No | Excellon output units (default mm) | |
| excellonMirrorY | No | Mirror the Y axis (Excellon) | |
| gerberPrecision | No | Gerber coordinate precision (5 or 6) when format=gerber | |
| excellonMinHeader | No | Use a minimal Excellon header | |
| excellonOvalFormat | No | Excellon oval hole format (default alternate) | |
| excellonSeparateTh | No | Generate independent files for NPTH and PTH holes | |
| excellonZerosFormat | No | Excellon zero-suppression format (default decimal) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DsnADestructive
Export the current PCB to Specctra DSN format. Useful for manual Freerouting workflow or external autorouters.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | No | Path to .kicad_pcb file (default: current board) | |
| outputPath | No | Output DSN file path (default: same dir as board) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GencadADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| outputPath | Yes | Output .cad file path | |
| uniquePins | No | Generate unique pin names | |
| flipBottomPads | No | Flip bottom footprint padstacks | |
| useDrillOrigin | No | Use drill/place file origin as origin | |
| storeOriginCoord | No | Save the origin coordinates in the file | |
| uniqueFootprints | No | Generate a new shape for each footprint instance (do not reuse shapes) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GerberADestructive
Export PCB Gerber manufacturing files to a directory. Optionally include drill files, map files and choose layer subset.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Optional array of layer names to export (default: all) | |
| outputDir | Yes | Directory to save Gerber files | |
| useAuxOrigin | No | Whether to use auxiliary axis as origin | |
| generateMapFile | No | Whether to generate a map file | |
| generateDrillFiles | No | Whether to generate drill files | |
| useProtelExtensions | No | Whether to use Protel filename extensions |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GerbersADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| noX2 | No | Do not use the extended X2 Gerber format | |
| layers | No | Layers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts'] | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| noNetlist | No | Do not generate netlist attributes | |
| outputDir | Yes | Output directory for the Gerber files | |
| precision | No | Gerber coordinate precision: 5 or 6 (default 6) | |
| noProtelExt | No | Use KiCad Gerber file extensions instead of Protel | |
| commonLayers | No | Layers to include on every plot (e.g. ['Edge.Cuts']) | |
| drawingSheet | No | Path to a drawing sheet override | |
| excludeValue | No | Exclude value text | |
| excludeRefdes | No | Exclude reference designator text | |
| boardPlotParams | No | Use the Gerber plot settings already stored in the board file | |
| includeBorderTitle | No | Include border and title block | |
| subtractSoldermask | No | Subtract soldermask from silkscreen | |
| useDrillFileOrigin | No | Use the drill/place file origin | |
| disableApertureMacros | No | Disable aperture macros | |
| sketchPadsOnFabLayers | No | Draw pad outlines and numbers on fab layers | |
| hideDnpFootprintsOnFabLayers | No | Don't plot DNP footprint text/graphics on fab layers | |
| sketchDnpFootprintsOnFabLayers | No | Plot DNP footprints in sketch mode on fab layers | |
| crossoutDnpFootprintsOnFabLayers | No | Plot an 'X' over DNP footprint courtyards and strike out their refdes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SingleADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| noX2 | No | Do not use the extended X2 Gerber format | |
| layers | No | Layers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts'] | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| noNetlist | No | Do not generate netlist attributes | |
| precision | No | Gerber coordinate precision: 5 or 6 (default 6) | |
| outputPath | Yes | Output Gerber file path | |
| noProtelExt | No | Use KiCad Gerber file extensions instead of Protel | |
| commonLayers | No | Layers to include on every plot (e.g. ['Edge.Cuts']) | |
| drawingSheet | No | Path to a drawing sheet override | |
| excludeValue | No | Exclude value text | |
| excludeRefdes | No | Exclude reference designator text | |
| includeBorderTitle | No | Include the border and title block | |
| subtractSoldermask | No | Subtract soldermask from silkscreen | |
| useDrillFileOrigin | No | Use the drill/place file origin | |
| disableApertureMacros | No | Disable aperture macros | |
| sketchPadsOnFabLayers | No | Draw pad outlines and numbers on fab layers | |
| hideDnpFootprintsOnFabLayers | No | Don't plot DNP footprint text/graphics on fab layers | |
| sketchDnpFootprintsOnFabLayers | No | Plot DNP footprints in sketch mode on fab layers | |
| crossoutDnpFootprintsOnFabLayers | No | Plot an 'X' over DNP footprint courtyards and strike out their refdes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 Ipc2581ADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | Units (default mm) | |
| version | No | IPC-2581 standard version (default 'C') | |
| compress | No | Compress the output | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| bomColMfg | No | Schematic field to use for the BOM Manufacturer column | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| precision | No | Coordinate precision (default 6) | |
| bomColDist | No | Value to insert into the BOM Distributor column | |
| outputPath | Yes | Output .xml file path | |
| bomColIntId | No | Schematic field to use for the BOM Internal Id column | |
| bomColMfgPn | No | Schematic field to use for the BOM Manufacturer Part Number column | |
| bomColDistPn | No | Schematic field to use for the BOM Distributor Part Number column | |
| drawingSheet | No | Path to a drawing sheet override |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 Ipcd356ADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| outputPath | Yes | Output .ipc / netlist file path |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 NetlistADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Netlist format (default: KiCad) | |
| outputPath | Yes | Absolute path for the output file (e.g. /tmp/design.spice) | |
| schematicPath | Yes | Absolute path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OdbADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | Units (default mm) | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| precision | No | Coordinate precision (default 2) | |
| outputPath | Yes | Output file path (archive or directory per compression) | |
| compression | No | Output container/compression mode (default zip) | |
| drawingSheet | No | Path to a drawing sheet override |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DxfADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Layers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts'] | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| modeMulti | No | Multi output; output path is a directory (GUI-like plotting) | |
| modeSingle | No | Single file; output path is full path; LAYER_LIST controls all layers | |
| outputPath | Yes | Output DXF file path (or directory in multi mode) | |
| outputUnits | No | Output units (default in) | |
| useContours | No | Plot graphic items using their contours | |
| commonLayers | No | Layers to include on every plot (e.g. ['Edge.Cuts']) | |
| drawingSheet | No | Path to a drawing sheet override | |
| excludeValue | No | Exclude value text | |
| drillShapeOpt | No | Pad/via drill shape option (0 none, 1 small, 2 actual; default 2) | |
| excludeRefdes | No | Exclude reference designator text | |
| useDrillOrigin | No | Plot using the drill/place file origin | |
| includeBorderTitle | No | Include the border and title block | |
| subtractSoldermask | No | Subtract soldermask from silkscreen | |
| sketchPadsOnFabLayers | No | Draw pad outlines and numbers on fab layers | |
| hideDnpFootprintsOnFabLayers | No | Don't plot DNP footprint text/graphics on fab layers | |
| sketchDnpFootprintsOnFabLayers | No | Plot DNP footprints in sketch mode on fab layers | |
| crossoutDnpFootprintsOnFabLayers | No | Plot an 'X' over DNP footprint courtyards and strike out their refdes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PdfADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Color theme to use (default: PCB editor settings) | |
| layers | No | Layers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts'] | |
| mirror | No | Mirror the board (to show bottom layers) | |
| negative | No | Plot as negative | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| modeSingle | No | Single file; output path is full path; LAYER_LIST controls all layers | |
| outputPath | Yes | Output PDF file path (or directory in separate mode) | |
| commonLayers | No | Layers to include on every plot (e.g. ['Edge.Cuts']) | |
| drawingSheet | No | Path to a drawing sheet override | |
| excludeValue | No | Exclude value text | |
| modeSeparate | No | Plot the layers to individual PDF files | |
| blackAndWhite | No | Black and white only | |
| drillShapeOpt | No | Pad/via drill shape option (0 none, 1 small, 2 actual; default 2) | |
| excludeRefdes | No | Exclude reference designator text | |
| modeMultipage | No | Plot the layers to a single multi-page PDF | |
| includeBorderTitle | No | Include the border and title block | |
| subtractSoldermask | No | Subtract soldermask from silkscreen | |
| sketchPadsOnFabLayers | No | Draw pad outlines and numbers on fab layers | |
| hideDnpFootprintsOnFabLayers | No | Don't plot DNP footprint text/graphics on fab layers | |
| sketchDnpFootprintsOnFabLayers | No | Plot DNP footprints in sketch mode on fab layers | |
| crossoutDnpFootprintsOnFabLayers | No | Plot an 'X' over DNP footprint courtyards and strike out their refdes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SvgADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Color theme to use (default: PCB editor settings) | |
| layers | No | Layers to plot, untranslated names e.g. ['F.Cu','B.Cu','Edge.Cuts'] | |
| mirror | No | Mirror the board (to show bottom layers) | |
| negative | No | Plot as negative | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| modeMulti | No | Multi output; output path is a directory (GUI-like plotting) | |
| modeSingle | No | Single file; output path is full path; LAYER_LIST controls all layers | |
| outputPath | Yes | Output SVG file path (or directory in multi mode) | |
| commonLayers | No | Layers to include on every plot (e.g. ['Edge.Cuts']) | |
| drawingSheet | No | Path to a drawing sheet override | |
| pageSizeMode | No | Page sizing mode (0 frame+title block, 1 current page size, 2 board area only) | |
| blackAndWhite | No | Black and white only | |
| drillShapeOpt | No | Pad/via drill shape option (0 none, 1 small, 2 actual; default 2) | |
| fitPageToBoard | No | Fit the page to the board | |
| subtractSoldermask | No | Subtract soldermask from silkscreen | |
| excludeDrawingSheet | No | No drawing sheet | |
| sketchPadsOnFabLayers | No | Draw pad outlines and numbers on fab layers | |
| hideDnpFootprintsOnFabLayers | No | Don't plot DNP footprint text/graphics on fab layers | |
| sketchDnpFootprintsOnFabLayers | No | Plot DNP footprints in sketch mode on fab layers | |
| crossoutDnpFootprintsOnFabLayers | No | Plot an 'X' over DNP footprint courtyards and strike out their refdes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PdfADestructive
Export the PCB layout as a PDF document, optionally selecting layers, page size and colour mode.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Optional array of layer names to include (default: all) | |
| pageSize | No | Page size | |
| outputPath | Yes | Path to save the PDF file | |
| blackAndWhite | No | Whether to export in black and white | |
| frameReference | No | Whether to include frame reference |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PosADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Board side (gerber format only supports front or back; default both) | |
| units | No | Output units; ascii or csv format only (default in) | |
| format | No | Output format (default ascii) | |
| smdOnly | No | Include only SMD footprints (ascii/csv only) | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| excludeDnp | No | Exclude all footprints with the Do Not Populate flag set | |
| outputPath | Yes | Output position file path | |
| excludeFpTh | No | Exclude all footprints with through-hole pads (ascii/csv only) | |
| bottomNegateX | No | Use negative X coordinates for bottom-layer footprints (ascii/csv only) | |
| gerberBoardEdge | No | Include board edge layer (Gerber only) | |
| useDrillFileOrigin | No | Use drill/place file origin (ascii/csv only) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FileADestructive
Export a component placement/position file through kicad-cli. This compact alias of export_pos exposes the common side, format, and unit options.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Which board side to include (default: both) | |
| units | No | Units to use (default: in) | |
| format | No | File format (default: ascii) | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| outputPath | Yes | Path to save the position file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BomADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Ordered comma list of fields to export (supports special substitutions) | |
| filter | No | Filter string to remove output lines | |
| labels | No | Ordered comma list of labels to apply to the exported fields | |
| preset | No | Named BOM preset from the schematic, e.g. 'Grouped By Value' | |
| groupBy | No | Fields to group references by when field values match | |
| sortAsc | No | Sort ascending ('true') or descending ('false') | |
| keepTabs | No | Keep tab characters from input fields | |
| sortField | No | Field name to sort by (default Reference) | |
| excludeDnp | No | Exclude symbols marked Do-Not-Populate | |
| outputPath | Yes | Output BOM file path | |
| formatPreset | No | Named BOM format preset from the schematic, e.g. 'CSV' | |
| refDelimiter | No | Character between individual references (default ',') | |
| schematicPath | Yes | Path to the .kicad_sch (required) | |
| fieldDelimiter | No | Separator between output fields/columns (default ',') | |
| keepLineBreaks | No | Keep line break characters from input fields | |
| stringDelimiter | No | Character to surround fields with (default '"') | |
| refRangeDelimiter | No | Character for reference ranges; blank disables ranges (default '-') | |
| includeExcludedFromBom | No | Include symbols marked 'Exclude from BOM' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DxfADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Comma list of page numbers to print (blank = all pages) | |
| theme | No | Color theme to use (default: schematic settings) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| outputDir | Yes | Output directory for the DXF files | |
| defaultFont | No | Default font name | |
| drawingSheet | No | Path to a drawing sheet override | |
| blackAndWhite | No | Black and white only | |
| schematicPath | Yes | Path to the .kicad_sch (required) | |
| excludeDrawingSheet | No | No drawing sheet |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PdfBDestructive
Export schematic to PDF format using kicad-cli.
| Name | Required | Description | Default |
|---|---|---|---|
| outputPath | Yes | Output PDF file path | |
| blackAndWhite | No | Export in black and white | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SvgBDestructive
Export schematic to SVG format using kicad-cli.
| Name | Required | Description | Default |
|---|---|---|---|
| outputPath | Yes | Output SVG file path | |
| blackAndWhite | No | Export in black and white | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 HpglADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Comma list of page numbers to print (blank = all pages) | |
| origin | No | Origin and scale: 0 bottom left, 1 centered, 2 page fit, 3 content fit | |
| penSize | No | Pen size in mm (default 0.5) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| outputDir | Yes | Output directory for the HPGL files | |
| defaultFont | No | Default font name | |
| drawingSheet | No | Path to a drawing sheet override | |
| schematicPath | Yes | Path to the .kicad_sch (required) | |
| excludeDrawingSheet | No | No drawing sheet |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PdfBDestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Comma list of page numbers to print (blank = all pages) | |
| theme | No | Color theme to use (default: schematic settings) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| outputPath | Yes | Output PDF file path | |
| defaultFont | No | Default font name | |
| drawingSheet | No | Path to a drawing sheet override | |
| blackAndWhite | No | Black and white only | |
| schematicPath | Yes | Path to the .kicad_sch (required) | |
| noBackgroundColor | No | Avoid setting a background color (regardless of theme) | |
| excludePdfMetadata | No | Do not generate PDF metadata from AUTHOR and SUBJECT variables | |
| excludeDrawingSheet | No | No drawing sheet | |
| excludePdfPropertyPopups | No | Do not generate property popups in PDF | |
| excludePdfHierarchicalLinks | No | Do not generate clickable links for hierarchical elements in PDF |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Comma list of page numbers to print (blank = all pages) | |
| theme | No | Color theme to use (default: schematic settings) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| outputDir | Yes | Output directory for the PostScript files | |
| defaultFont | No | Default font name | |
| drawingSheet | No | Path to a drawing sheet override | |
| blackAndWhite | No | Black and white only | |
| schematicPath | Yes | Path to the .kicad_sch (required) | |
| noBackgroundColor | No | Avoid setting a background color (regardless of theme) | |
| excludeDrawingSheet | No | No drawing sheet |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BomADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| outputPath | Yes | Output XML file path | |
| schematicPath | Yes | Path to the .kicad_sch (required) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SvgBDestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Comma list of page numbers to print (blank = all pages) | |
| theme | No | Color theme to use (default: schematic settings) | |
| defineVar | No | Project variable overrides as 'KEY=VALUE' strings | |
| outputDir | Yes | Output directory for the SVG files | |
| defaultFont | No | Default font name | |
| drawingSheet | No | Path to a drawing sheet override | |
| blackAndWhite | No | Black and white only | |
| schematicPath | Yes | Path to the .kicad_sch (required) | |
| noBackgroundColor | No | Avoid setting a background color (regardless of theme) | |
| excludeDrawingSheet | No | No drawing sheet |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SvgADestructive
Export the PCB layout as an SVG vector image, optionally selecting layers and colour mode.
| Name | Required | Description | Default |
|---|---|---|---|
| layers | No | Optional array of layer names to include (default: all) | |
| outputPath | Yes | Path to save the SVG file | |
| blackAndWhite | No | Whether to export in black and white | |
| includeComponents | No | Whether to include component outlines |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolADestructive
Extract a single symbol from a .kicad_sym library into a standalone .kicad_sym file.
| Name | Required | Description | Default |
|---|---|---|---|
| outputPath | Yes | Path for the output .kicad_sym file | |
| symbolName | Yes | Symbol to export | |
| libraryPath | Yes | Path to the source .kicad_sym file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 VrmlADestructive
Export the PCB as a VRML 3D model through kicad-cli. This compact alias of export_3d_cli exposes the VRML-specific options.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite the output file | |
| units | No | Output units | |
| boardPath | No | Path to the .kicad_pcb (default: current board) | |
| modelsDir | No | Directory in which to store component models | |
| outputPath | Yes | Path to save the VRML file | |
| modelsRelative | No | Use relative paths to modelsDir |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentARead-onlyIdempotent
Search for a PCB component by reference designator or value and return its position and properties.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Component value to search for | |
| reference | No | Reference designator to search for |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 WiresARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ElementsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tolerance | No | Distance threshold in mm for label proximity and wire collinearity checks. Symbol overlap uses bounding-box intersection. (default: 0.5) | |
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 NetlistARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Absolute path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 StateARead-onlyIdempotent
Return the active backend, realtime status, loaded project/board paths, and dirty state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ViewADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Output image width in pixels (default: 1600) | |
| format | No | Output format (default: png) | |
| height | No | Output image height in pixels (default: 1200) | |
| layers | No | Layer names to include, e.g. ["F.Cu","B.Cu","Edge.Cuts"]. Omit for all layers. | |
| pcbPath | No | Absolute path to the .kicad_pcb file. Falls back to the currently loaded board if omitted. | |
| responseMode | No | "inline" (default): image returned directly; "file": written to disk, filePath returned |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ExtentsARead-onlyIdempotent
Return the bounding box (min/max X and Y) of all objects on the current PCB board.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit of measurement for the result |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 InfoARead-onlyIdempotent
Retrieve general information about the current PCB board (dimensions, layer count, DRC status).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OriginARead-onlyIdempotent
Read back the auxiliary (drill/place) origin and grid origin of a .kicad_pcb in mm.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | Yes | Path to the .kicad_pcb file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ToolsARead-onlyIdempotent
Return all tools available in a specific category. Use list_tool_categories first to find valid category names.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category name from list_tool_categories |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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 GeometryARead-onlyIdempotent
Return separated footprint geometry bboxes: body, pads, courtyard, keepout, fab, silk and text.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | Optional list of component references | |
| reference | No | Optional single component reference |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ListARead-onlyIdempotent
Return a list of all components on the PCB, optionally filtered by layer or bounding box region.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit for coordinates (default: mm) | |
| layer | No | Filter by layer (e.g., 'F.Cu', 'B.Cu') | |
| boundingBox | No | Filter by bounding box region |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PadsARead-onlyIdempotent
Return all pads of a PCB component with their positions, net assignments and sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit for coordinates (default: mm) | |
| reference | Yes | Reference designator of the component (e.g., 'U1') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertiesARead-onlyIdempotent
Return all properties of a PCB component (position, rotation, layer, value, footprint).
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Reference designator of the component (e.g., 'R5') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 UrlARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| lcsc | Yes | LCSC part number, with or without "C" prefix (e.g. "C179739" or "179739") |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 RulesARead-onlyIdempotent
Return the current PCB design rules (clearance, track width, via sizes, courtyard settings).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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 ViolationsARead-onlyIdempotent
Return the list of current DRC violations on the PCB, optionally filtered by severity (error, warning).
| Name | Required | Description | Default |
|---|---|---|---|
| severity | No | Filter violations by severity |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 RegionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Left X coordinate of the region in mm | |
| x2 | Yes | Right X coordinate of the region in mm | |
| y1 | Yes | Top Y coordinate of the region in mm | |
| y2 | Yes | Bottom Y coordinate of the region in mm | |
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 InfoBRead-onlyIdempotent
Get detailed information about a specific footprint
| Name | Required | Description | Default |
|---|---|---|---|
| library_name | Yes | Name of the library containing the footprint | |
| footprint_name | Yes | Name of the footprint to get information about |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 StatsARead-onlyIdempotent
Get statistics about the local JLCPCB parts database
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PartARead-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").
| Name | Required | Description | Default |
|---|---|---|---|
| lcsc_number | Yes | LCSC part number (e.g., 'C25804', 'C2286') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ListARead-onlyIdempotent
Return the list of all layers defined in the current PCB board.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PointARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate in mm | |
| y | Yes | Y coordinate in mm | |
| schematicPath | Yes | Path to the schematic file (.kicad_sch) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConnectionsBRead-onlyIdempotent
Get all connections for a named net
| Name | Required | Description | Default |
|---|---|---|---|
| netName | Yes | Name of the net to query | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PadsARead-onlyIdempotent
Return every PCB pad attached to a net name or net code.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Net name | |
| unit | No | Unit for coordinates (default: mm) | |
| netCode | No | KiCad net code |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ListARead-onlyIdempotent
Get a list of all nets in the PCB with optional statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit for length measurements | |
| includeStats | No | Include statistics (track count, total length, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 PositionARead-onlyIdempotent
Return the exact XY position of a specific pad on a PCB component. Use this before routing to get accurate start/end coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| pad | Yes | Pad number or name (e.g., '1', 'A1') | |
| unit | No | Unit for coordinates (default: mm) | |
| reference | Yes | Component reference designator (e.g., 'U1') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PadsARead-onlyIdempotent
Return pads for one PCB component, selected refs, or all components, including XY, layer, size and net.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | Optional reference filter | |
| unit | No | Unit for coordinates (default: mm) | |
| reference | No | Optional component reference designator |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 InfoBRead-onlyIdempotent
Get information about the current KiCAD project
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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 RatsnestARead-onlyIdempotent
Estimate ratsnest/airwire segments and lengths from current pad positions grouped by net.
| Name | Required | Description | Default |
|---|---|---|---|
| nets | No | Optional net-name filter | |
| maxPadsPerNet | No | Skip nets above this pad count (default 128) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the 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.
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.
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.
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.
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.
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 PartARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Registry part id (from search_parts_registry) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Component reference designator (e.g. R1, U1) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LocationsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Component reference designator (e.g. U1, R1, J2) | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ViewARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Image width in pixels (default: 1200) | |
| format | No | Output format (default: png) | |
| height | No | Image height in pixels (default: 900) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 RegionARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Left X coordinate of the region in mm | |
| x2 | Yes | Right X coordinate of the region in mm | |
| y1 | Yes | Top Y coordinate of the region in mm | |
| y2 | Yes | Bottom Y coordinate of the region in mm | |
| width | No | Output image width in pixels (default: 800) | |
| format | No | Output image format (default: png) | |
| height | No | Output image height in pixels (default: 600) | |
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertiesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| sheetName | No | Only this sheet (by display name) | |
| sheetPath | No | Only this sheet (by file basename) | |
| schematicPath | Yes | Path to the parent .kicad_sch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 InfoARead-onlyIdempotent
Get detailed information about a specific symbol (global or project-scope when projectPath is supplied or a project has been opened).
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol specification (e.g., 'Device:R' or 'PCM_JLCPCB-MCUs:STM32F103C8T6') | |
| projectPath | No | Optional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path so project-scope libraries are searched. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConnectionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate of a wire endpoint in mm. Pair with y. | |
| y | No | Y coordinate of a wire endpoint in mm. Pair with x. | |
| pin | No | Pin number or name (e.g. '3', 'SDA'). Pair with reference. | |
| reference | No | Component reference (e.g. U1, R1). Pair with pin. | |
| schematicPath | Yes | Path to the schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PlaceADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | Yes | Absolute path to the .kicad_pcb file to re-place |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ModelADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | Rename the copied file (source extension kept if omitted) | |
| modelPath | Yes | Path to the source 3D model file to import | |
| overwrite | No | Overwrite an existing destination file (default false) | |
| libraryDir | No | Target *.3dshapes directory (absolute, or relative to the project). Default: <project>/<project>.3dshapes | |
| projectPath | Yes | Path to the .kicad_pro file or the project directory (used to locate the .3dshapes folder and compute ${KIPRJMOD}) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ProjectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| board_file | Yes | Absolute path to the Eagle .brd board file | |
| output_dir | No | Output directory for the KiCad project (defaults to a subdirectory next to the .brd file) | |
| project_name | No | KiCad project name (defaults to the .brd filename without extension) | |
| schematic_file | No | Absolute path to the Eagle .sch schematic file (auto-detected from .brd path if omitted) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PcbADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Input format hint (default 'auto'). Use 'auto' for binary Cadence Allegro .brd files — there is no 'allegro' literal in this enum. | |
| inputFile | Yes | Absolute path to the vendor PCB file to import | |
| outputFile | No | Destination .kicad_pcb path (defaults beside inputFile, same basename) | |
| reportFormat | No | Capture a structured import report from kicad-cli (default 'none') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SesADestructive
Import a Specctra SES (session) file into the current PCB. Use after running Freerouting externally.
| Name | Required | Description | Default |
|---|---|---|---|
| sesPath | Yes | Path to the .ses file to import | |
| boardPath | No | Path to .kicad_pcb file (default: current board) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_svg_logoImport Svg LogoADestructive
Imports an SVG file as filled graphic polygons onto a KiCAD PCB layer (default F.SilkS / front silkscreen). Curves are linearised automatically. Ideal for placing a company or project logo on the board.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X position of the logo top-left corner in mm | |
| y | Yes | Y position of the logo top-left corner in mm | |
| layer | No | PCB layer name, e.g. F.SilkS or B.SilkS (default: F.SilkS) | |
| width | Yes | Target width of the logo in mm (height is scaled to preserve aspect ratio) | |
| filled | No | Fill polygons with solid colour (default true) | |
| pcbPath | Yes | Path to the .kicad_pcb file | |
| svgPath | Yes | Path to the SVG logo file | |
| strokeWidth | No | Outline stroke width in mm (0 = no outline, default 0) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, signalling the tool modifies the board. The description adds valuable behavioral detail beyond annotations: it imports as 'filled graphic polygons' and notes that 'curves are linearised automatically'. This helps the agent understand the output format and processing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the main purpose in the first sentence and a brief use-case note in the second. Every sentence earns its place, and there is no redundant information or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool involves 8 parameters and an input/output schema, but the description provides a clear overview of its purpose, default behavior, and intended use case. The schema covers parameter details, and the output schema (mentioned in context) handles return values. The description lacks some context on prerequisites or side effects, but given the annotations and schema richness, it is sufficiently complete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents all eight parameters. The description does not add significant parameter-specific detail beyond what the schema already provides. It mentions the default layer (F.SilkS) and the auto-scaling height behavior, but these are also present in the schema descriptions, so the description adds little extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Imports an SVG file as filled graphic polygons onto a KiCAD PCB layer'. It specifies the resource (SVG file), target (KiCAD PCB layer), and default layer (F.SilkS). It also distinguishes itself from other import/graphics tools by focusing on placing a company/project logo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool: 'Ideal for placing a company or project logo on the board'. This gives clear context for its intended use case. However, it does not explicitly mention alternatives or state when not to use it, which is a minor gap given the many sibling tools for graphics and imports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_symbolImport SymbolADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | Rename the symbol on import | |
| overwrite | No | Overwrite if the symbol already exists in the target | |
| symbolName | Yes | Symbol to import | |
| sourceLibraryPath | Yes | Path to the source .kicad_sym file | |
| targetLibraryPath | Yes | Path to the target .kicad_sym (created if missing) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DirtyARead-onlyIdempotent
Return whether the MCP knows the loaded board has unsaved memory changes or external disk changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 UiBDestructive
Launch KiCAD UI, optionally with a project file
| Name | Required | Description | Default |
|---|---|---|---|
| autoLaunch | No | Whether to launch KiCAD if not running (default: true) | |
| projectPath | No | Optional path to .kicad_pcb file to open |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OffgridADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | Snap offenders in place (default false: report only) | |
| gridSize | No | Grid spacing in mm (default: 1.27 mm = 50 mil, the KiCad connection grid) | |
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 CosmeticADestructive
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).
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Report change counts without writing (default false) | |
| passes | No | Passes to run, in order (default: both) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LabelsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibrariesARead-onlyIdempotent
List available .pretty footprint libraries and their contents (first 20 footprints per library). Searches KiCAD standard install paths by default.
| Name | Required | Description | Default |
|---|---|---|---|
| searchPaths | No | Override default search paths. Each entry should be a directory that contains .pretty subdirs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GraphicsARead-onlyIdempotent
List PCB graphic/drawing items such as gr_line, gr_arc, gr_rect, gr_text and dimensions.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Optional layer filter, e.g. Edge.Cuts or F.SilkS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibrariesBRead-onlyIdempotent
List all available KiCAD footprint libraries
| Name | Required | Description | Default |
|---|---|---|---|
| search_paths | No | Optional additional search paths for libraries |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FootprintsARead-onlyIdempotent
List all footprints in a specific KiCAD library
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of footprints to list | |
| filter | No | Optional filter pattern for footprint names | |
| library_name | Yes | Name of the library to list footprints from |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolsARead-onlyIdempotent
List all symbols in a specific KiCAD symbol library (global or project-scope when projectPath is supplied or a project has been opened).
| Name | Required | Description | Default |
|---|---|---|---|
| library | Yes | Library name (e.g., 'Device', 'PCM_JLCPCB-MCUs') | |
| projectPath | No | Optional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path to resolve project-scope libraries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional filters | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LabelsARead-onlyIdempotent
List all net labels, global labels, and power flags in the schematic. Optionally filter by label name (netName) and/or label type (labelType).
| Name | Required | Description | Default |
|---|---|---|---|
| netName | No | Filter to labels whose name exactly matches this string (case-sensitive). Omit to return all labels. | |
| labelType | No | Filter by label type. 'net' = local label, 'global' = global label, 'power' = power symbol. Omit to return all types. | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 NetsARead-onlyIdempotent
List all nets in the schematic with their connections.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TextsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Case-insensitive substring filter — only return texts containing this string | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 WiresARead-onlyIdempotent
List all wires in the schematic with start/end coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibrariesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | No | Optional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path. Including this exposes project-scope sym-lib-table libraries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PinsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes | Symbol in 'Library:SymbolName' format (e.g., Device:R, Connector:Conn_01x04) | |
| schematicPath | No | Path to .kicad_sch — enables project-local sym-lib-table lookup |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibraryARead-onlyIdempotent
List all symbol names in a .kicad_sym library file.
| Name | Required | Description | Default |
|---|---|---|---|
| libraryPath | Yes | Path to the .kicad_sym file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 CategoriesARead-onlyIdempotent
List all available KiCAD tool categories with their descriptions and tool counts. Use this to discover which tools are available via the router.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| categories | Yes | |
| total_tools | Yes | |
| total_categories | Yes |
TDQS
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.
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.
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.
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.
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.
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 TraceADestructive
Modify an existing trace (change width, layer, or net).
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | New net name | |
| layer | No | New layer name | |
| width | No | New trace width in mm | |
| traceUuid | Yes | UUID of the trace to modify |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
Move a PCB component to a new position. Optionally update rotation or flip to a different copper layer.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Optional target layer (e.g., 'F.Cu', 'B.Cu') - flips component if needed | |
| position | Yes | New position coordinates and unit | |
| rotation | No | Optional new rotation in degrees | |
| reference | Yes | Reference designator of the component (e.g., 'R5') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TextADestructive
Move or update a footprint Reference/Value/user text field without moving the footprint.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | New X coordinate | |
| y | No | New Y coordinate | |
| unit | No | Coordinate unit | |
| field | Yes | Text field to move, e.g. reference or value | |
| layer | No | Optional destination layer | |
| visible | No | Optional visibility | |
| rotation | No | Optional text rotation in degrees | |
| reference | Yes | Component reference designator |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | New position in schematic mm coordinates | |
| reference | Yes | Reference designator (e.g., R1, U1) | |
| preserveWires | No | Stretch connected wire endpoints to follow the move (default true) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LabelADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| netName | Yes | Name of the net label to move | |
| labelType | No | Restrict search to a specific label type | |
| newPosition | Yes | Target position in mm | |
| schematicPath | Yes | Path to the .kicad_sch file | |
| currentPosition | No | Current position to disambiguate when multiple labels share the same name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BoardADestructive
Open a specific .kicad_pcb board file and refresh the MCP in-memory board state.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | Yes | Path to the .kicad_pcb file to open |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ProjectCDestructive
Open an existing KiCAD project
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Path to .kicad_pro or .kicad_pcb file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
Place a footprint component onto the PCB at the specified position. Optionally set reference, value, footprint, rotation and layer.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Optional layer (e.g., 'F.Cu', 'B.SilkS') | |
| value | No | Optional component value (e.g., '10k') | |
| position | Yes | Position coordinates and unit | |
| rotation | No | Optional rotation in degrees | |
| boardPath | No | Path to the .kicad_pcb file – required when using project-local footprint libraries | |
| footprint | No | Optional specific footprint name | |
| reference | No | Optional desired reference (e.g., 'R5') | |
| componentId | Yes | Identifier for the component to place (e.g., 'R_0603_10k') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ArrayADestructive
Place a rectangular grid array of identical components on the PCB with configurable row/column spacing.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | Number of rows | |
| value | No | Component value | |
| columns | Yes | Number of columns | |
| rotation | No | Rotation in degrees | |
| footprint | No | Footprint name | |
| rowSpacing | Yes | Spacing between rows | |
| componentId | Yes | Component identifier | |
| columnSpacing | Yes | Spacing between columns | |
| startPosition | Yes | Starting position | |
| startReference | No | Starting reference (e.g., 'R1') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TracesARead-onlyIdempotent
Query traces on the board with optional filters by net, layer, or bounding box.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Filter by net name | |
| unit | No | Unit for coordinates | |
| layer | No | Filter by layer name | |
| boundingBox | No | Filter by bounding box region |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ZonesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Filter by net name | |
| layer | No | Filter by layer name (matches zones that include this layer) | |
| boundingBox | No | Filter to zones whose bounding box overlaps this region |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ZonesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibraryADestructive
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | project = writes fp-lib-table next to the .kicad_pro file (default); global = writes to the user's global KiCAD config | |
| description | No | Optional description | |
| libraryName | No | Nickname for the library in KiCAD (default: directory name without .pretty) | |
| libraryPath | Yes | Full path to the .pretty directory to register | |
| projectPath | No | Path to the .kicad_pro file or its directory (required for scope=project when the library is not in the project folder) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibraryADestructive
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | project = writes sym-lib-table next to .kicad_pro; global = user config | |
| description | No | ||
| libraryName | No | Nickname (default: file name without extension) | |
| libraryPath | Yes | Full path to the .kicad_sym file | |
| projectPath | No | Path to .kicad_pro or its directory (for scope=project) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BoardADestructive
Reload the current or specified .kicad_pcb from disk, discarding stale in-memory board state.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | No | Optional .kicad_pcb path; defaults to current board |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SheetADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sheetName | No | Sheet display name to remove (matches the Sheetname/Sheet name property) | |
| subsheetPath | No | Sub-sheet file to remove (matched by basename against the Sheetfile property) | |
| schematicPath | Yes | Path to the parent .kicad_sch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertyADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Custom property name to remove (e.g. 'MPN', 'Distributor_PN', 'OldField') | |
| reference | Yes | Reference designator of the component (e.g. R1, U3) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | Yes | New symbol name | |
| oldName | Yes | Current symbol name | |
| libraryPath | Yes | Path to the .kicad_sym file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | .kicad_sym library or .kicad_sch schematic to repair | |
| dryRun | No | Report flat symbols without writing (default true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OutlineBDestructive
Replace the current Edge.Cuts board outline with a rectangle, rounded rectangle, circle or polygon.
| Name | Required | Description | Default |
|---|---|---|---|
| shape | Yes | ||
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 IdsADestructive
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).
| Name | Required | Description | Default |
|---|---|---|---|
| mapping | Yes | Map of old full lib_id to new full lib_id, e.g. {"eagle_import:C_100n": "Device:C"}. Values are used verbatim. | |
| schematicPath | Yes | Path to the .kicad_sch file | |
| sourceLibrary | No | Library prefix whose instances are candidates | eagle_import |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| newSymbol | Yes | New symbol in 'Library:Symbol' form (e.g., Device:D_Zener) | |
| reference | Yes | Reference of the component to replace (e.g., D1) | |
| newRotation | No | Override rotation in degrees (default: keep existing) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentADestructive
Rotate a PCB component to an absolute angle in degrees.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | Yes | Rotation angle in degrees (absolute, not relative) | |
| reference | Yes | Reference designator of the component (e.g., 'R5') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ComponentBDestructive
Rotate a placed symbol in the schematic.
| Name | Required | Description | Default |
|---|---|---|---|
| angle | Yes | Absolute 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). | |
| mirror | No | Optional mirror axis | |
| reference | Yes | Reference designator (e.g., R1, U1) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TraceADestructive
Route a copper arc trace defined by start/mid/end points. Uses true PCB arc primitives when available.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | Arc end position | |
| mid | Yes | A point on arc midpoint | |
| net | No | Net name | |
| layer | Yes | PCB layer | |
| start | Yes | Arc start position | |
| width | Yes | Trace width in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PairCDestructive
Route a differential pair between two sets of points.
| Name | Required | Description | Default |
|---|---|---|---|
| gap | Yes | Gap between traces in mm | |
| layer | Yes | PCB layer | |
| width | Yes | Trace width in mm | |
| negativeNet | Yes | Negative net name | |
| negativePad | Yes | Negative pad (component and pad number) | |
| positiveNet | Yes | Positive net name | |
| positivePad | Yes | Positive pad (component and pad number) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PadADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Net name override (default: auto-detected from pad) | |
| layer | No | PCB layer (default: F.Cu) | |
| toPad | Yes | Pad number on the target component (e.g. '15' or 15) | |
| toRef | Yes | Reference of the target component (e.g. 'U1') | |
| width | No | Trace width in mm (default: board default) | |
| fromPad | Yes | Pad number on the source component (e.g. '6' or 6) | |
| fromRef | Yes | Reference of the source component (e.g. 'U2') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TraceADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | End position | |
| net | Yes | Net name | |
| layer | Yes | PCB layer | |
| start | Yes | Start position | |
| width | Yes | Trace width in mm |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DrcADestructive
Run the KiCAD Design Rule Check (DRC) on the current PCB and return violations. Optionally save the report to a file.
| Name | Required | Description | Default |
|---|---|---|---|
| reportPath | No | Optional path to save the DRC report |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ErcARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 AsADestructive
Save the current PCB board to a new .kicad_pcb path.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Allow saving over external changes to the loaded file | |
| boardPath | Yes | Destination .kicad_pcb path | |
| overwrite | No | Replace the destination if it already exists | |
| forceExternalChanges | No | Explicit alias for force; takes precedence when both are provided |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BoardADestructive
Save the current PCB board. Refuses to overwrite external disk edits unless force=true.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Overwrite even if the board changed externally on disk | |
| boardPath | No | Optional destination .kicad_pcb path | |
| overwrite | No | Replace boardPath if it already exists and differs from the current board | |
| forceExternalChanges | No | Explicit alias for force |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ProjectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional new path to save to | |
| force | No | Overwrite the loaded board file even if its on-disk contents changed externally | |
| overwrite | No | Replace an existing destination when path points to a different file | |
| forceExternalChanges | No | Explicit alias for force; takes precedence when both are provided |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 FootprintsARead-onlyIdempotent
Search for footprints matching a pattern across all libraries
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| library | No | Optional specific library to search in | |
| search_term | Yes | Search term or pattern to match footprint names |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PartsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | No | Free-text search (e.g., '10k resistor 0603', 'ESP32', 'STM32F103') | |
| package | No | Filter by package type (e.g., '0603', 'SOT-23', 'QFN-32') | |
| category | No | Filter by category (e.g., 'Resistors', 'Capacitors', 'Microcontrollers') | |
| in_stock | No | Only show parts with available stock | |
| library_type | No | Filter by library type (Basic = free assembly at JLCPCB) | All |
| manufacturer | No | Filter by manufacturer name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 RegistryARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | Yes | Free-text search (e.g. 'STM32F103', 'USB-C receptacle', 'LM358') | |
| category | No | Optional category/family filter (e.g. 'Connectors', 'MCU') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SymbolsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | Yes | Search query (e.g., 'ESP32', 'STM32F103', 'C8734' for LCSC ID) | |
| library | No | Optional: filter to specific library name pattern (e.g., 'JLCPCB') | |
| projectPath | No | Optional: project directory or .kicad_pro/.kicad_pcb/.kicad_sch path so project-scope sym-lib-table libraries are searched too. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ToolsARead-onlyIdempotent
Search all available KiCAD tools by keyword. Returns matching tool names and their categories.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (e.g., 'gerber', 'zone', 'export', 'drc') |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| count | Yes | |
| query | Yes | |
| matches | Yes |
TDQS
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.
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.
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.
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.
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.
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 LayerADestructive
Set the currently active PCB layer by name (e.g. F.Cu, B.Cu).
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | Layer name to set as active |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 OriginADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Origin X coordinate | |
| y | Yes | Origin Y coordinate | |
| type | No | Which origin to set (default: aux) | |
| unit | No | Coordinate unit (default: mm) | |
| boardPath | Yes | Path to the .kicad_pcb file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 SizeADestructive
Set the PCB board dimensions (width and height) in the specified unit.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | Yes | Unit of measurement | |
| width | Yes | Board width | |
| height | Yes | Board height |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 RulesBDestructive
Configure PCB design rules: clearance, track width, via dimensions and courtyard requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| viaDrill | No | Default via drill size (mm) | |
| clearance | No | Minimum clearance between copper items (mm) | |
| trackWidth | No | Default track width (mm) | |
| minViaDrill | No | Minimum via drill size (mm) | |
| viaDiameter | No | Default via diameter (mm) | |
| microViaDrill | No | Default micro via drill size (mm) | |
| minTrackWidth | No | Minimum track width (mm) | |
| minViaDiameter | No | Minimum via diameter (mm) | |
| minHoleDiameter | No | Minimum hole diameter (mm) | |
| microViaDiameter | No | Default micro via diameter (mm) | |
| minMicroViaDrill | No | Minimum micro via drill size (mm) | |
| requireCourtyard | No | Whether to require courtyards for all footprints | |
| courtyardClearance | No | Minimum clearance between courtyards (mm) | |
| minMicroViaDiameter | No | Minimum micro via diameter (mm) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 TypeADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Placement type: 'smd' for surface-mount, 'through_hole' for PTH components, 'unspecified' to clear both bits (e.g. for board-only or mechanically-placed items) | |
| reference | Yes | Reference designator of the footprint (e.g. 'R1', 'U3') | |
| exclude_from_bom | No | When true, suppress this footprint from BoM exports. Omit to leave the current setting unchanged. | |
| not_in_schematic | No | When true, marks the footprint as board-only (no corresponding schematic symbol). Omit to leave the current setting unchanged. | |
| exclude_from_pos_files | No | When true, suppress this footprint from pick-and-place (.pos) exports. Omit to leave the current setting unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ConstraintsADestructive
Set per-layer design rule constraints (minimum track width, clearance and via dimensions).
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | Layer name (e.g., 'F.Cu') | |
| minViaDrill | No | Minimum via drill size for this layer (mm) | |
| minClearance | No | Minimum clearance for this layer (mm) | |
| minTrackWidth | No | Minimum track width for this layer (mm) | |
| minViaDiameter | No | Minimum via diameter for this layer (mm) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertyADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Label X position in mm (default: component X) | |
| y | No | Label Y position in mm (default: component Y) | |
| hide | No | Hide the property text on the schematic canvas. Defaults to true for newly-created custom properties. | |
| name | Yes | Property name (e.g. 'MPN', 'Manufacturer', 'DigiKey_PN', 'Voltage', 'Dielectric') | |
| angle | No | Label rotation in degrees (default: 0) | |
| value | Yes | Property value to write (use empty string to clear) | |
| justify | No | Text 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. | |
| fontSize | No | Font size in mm for the label (default: 1.27) | |
| reference | Yes | Reference designator of the component (e.g. R1, U3) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PositionADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | New X position in mm (absolute schematic coordinate) | |
| y | Yes | New Y position in mm (absolute schematic coordinate) | |
| angle | No | Text angle in degrees (default 0) | |
| visible | No | Whether the field is visible (default true) | |
| property | Yes | Which field to move | |
| reference | Yes | Component reference designator (e.g., R1, U2) | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PropertyADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Property name (e.g. 'IS.Cell') | |
| value | Yes | Property value | |
| sheetName | No | Sheet display name (matches the Sheetname/Sheet name property) | |
| sheetPath | No | Sub-sheet file (matched by basename against the Sheetfile property) | |
| schematicPath | Yes | Path to the parent .kicad_sch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 ProjectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| step | Yes | Step number or identifier, e.g. '1' or '2' | |
| label | Yes | Short label for this checkpoint, e.g. 'schematic_ok' or 'layout_ok' | |
| prompt | No | Full prompt text to save as PROMPT_step{step}_{timestamp}.md alongside the snapshot |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GridADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| elements | No | Element types to snap (default: ["wires", "junctions", "labels"]). "components" is opt-in — moving a component without re-routing wires creates new mismatches. | |
| gridSize | No | Grid 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) | |
| schematicPath | Yes | Path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 AlternativesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of alternatives to return | |
| lcsc_number | Yes | Reference LCSC part number to find alternatives for |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 PlacementADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| refs | No | References to move (default: every non-locked footprint on the board). | |
| align | No | Tidy 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. | |
| apply | No | If true, move + rotate components to the proposed positions. Default false (dry run — board untouched). | |
| bounds | No | SCOPED 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. | |
| locked | No | References to hold fixed as anchors (connectors, mounting-constrained, RF, edge parts). They still pull movable parts. KiCad-locked footprints are added automatically. | |
| rotate | No | Enable pin-facing rotation (default true). | |
| spread | No | Enable 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_mm | No | Snap proposed positions to this grid (default 0.5). | |
| margin_mm | No | Extra keepout enforced between courtyards (default 0.3). | |
| iterations | No | Force-directed relaxation passes (default 200). | |
| power_nets | No | Net-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_mm | No | Max center spacing (mm) for parts to be pulled onto the same row/column line during align (default 1.5). | |
| power_weight | No | Pull multiplier for power nets (default 3.0). | |
| board_outline | No | Optional board containment bbox override. Default: derived from Edge.Cuts. | |
| rotation_steps | No | Candidate orientations in degrees (default [0, 90, 180, 270]). | |
| decoupling_boost | No | Extra pull for 2-pin-passive <-> multi-pin-IC links so caps/feedback parts hug their IC (default 2.0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 DeclutterADestructive
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | If true, rewrite the label orientations. Default false (dry run — schematic untouched, proposals only). | |
| margin | No | Extra clearance in mm when testing label overlap (default 0.3). | |
| references | No | Limit which component bodies count as obstacles (default: every component on the sheet). | |
| schematicPath | Yes | Path to the .kicad_sch file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 BoardADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| boardPath | Yes | Absolute path to the .kicad_pcb board file | |
| schematicPath | Yes | Absolute path to the .kicad_sch schematic file |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 GraphicCDestructive
Update common properties of a PCB graphic/drawing item by UUID.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| text | No | ||
| unit | No | ||
| uuid | Yes | ||
| layer | No | ||
| start | No | ||
| width | No | ||
| center | No | ||
| position | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 LibraryADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | Optional: update only these symbol names (without Library: prefix) | |
| backupDir | No | Backup folder with matching .kicad_sch filenames (for repairMirrorFromBackup) | |
| libraryName | Yes | Symbol library nickname from sym-lib-table (e.g. Device, project_lib) | |
| projectsDir | No | Directory containing project subfolders with .kicad_sch files | |
| schematicPath | No | Single .kicad_sch file to update | |
| schematicPaths | No | Multiple .kicad_sch files | |
| repairMirrorFromBackup | No | Restore __m* mirror-cache lib_symbols blocks from backupDir first |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Verified KiCad footprints, symbols & 3D models for AI agents. No signup, CC-BY-4.0, quality-gated.
Search and review real KiCad and Altium PCB designs: schematics, BOMs, netlists, DRC/ERC.
Electronic component datasheets for AI agents — specs, pinouts, package data on demand.
Electronic component sourcing, BOM management, and PCB design workflows.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI tools to create, edit, and inspect KiCAD schematic files, including components, wires, labels, and sheets.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to design PCBs in KiCAD through natural language, with transactional preview-verify-commit workflow, undo/redo, and an engineering knowledge base.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.492MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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