--- title: "Tool Reference" description: "Complete list of all mckicad MCP tools organized by module" --- Every tool returns a dict with at least `success: bool`. On failure, an `error: str` field is included. On success, relevant data fields are added. ## Project tools `tools/project.py` -- Project discovery and management. | Tool | Description | |------|-------------| | `list_projects` | Find and list all KiCad projects in configured search paths | | `get_project_structure` | Get the file structure and metadata of a KiCad project | | `open_project` | Open a KiCad project in the KiCad application | ## Schematic tools `tools/schematic.py` -- Create and edit schematics via kicad-sch-api. | Tool | Description | |------|-------------| | `create_schematic` | Create a new empty KiCad schematic file | | `add_component` | Add a component to a schematic from a symbol library | | `search_components` | Search KiCad symbol libraries for components matching a query | | `add_wire` | Add a wire segment between two coordinate points | | `connect_pins` | Add a wire between two component pins by reference and pin number | | `add_label` | Add a local or global net label to a schematic | | `add_hierarchical_sheet` | Add a hierarchical sheet reference to a schematic | | `list_components` | List components in a schematic, or look up a single component | | `get_schematic_info` | Get a compact overview of a schematic (stats and validation summary) | | `get_component_detail` | Get full details for a single component: properties, footprint, pins, position | | `get_schematic_hierarchy` | Get the hierarchical sheet tree of a schematic | ## Schematic editing tools `tools/schematic_edit.py` -- Modify and remove schematic elements. | Tool | Description | |------|-------------| | `modify_component` | Move, rotate, or change the value/footprint of an existing component | | `remove_component` | Remove a component by its reference designator | | `remove_wire` | Remove a wire segment by its UUID | | `remove_label` | Remove a net label (local or global) by its UUID | | `set_title_block` | Set title block fields (title, author, date, revision, company) | | `add_text_annotation` | Add a text annotation to a schematic at specified coordinates | | `add_no_connect` | Add a no-connect flag at specified coordinates | | `backup_schematic` | Create a timestamped backup of a schematic file | | `remove_wires_by_criteria` | Remove wire segments matching coordinate or bounding-box criteria | ## Schematic pattern tools `tools/schematic_patterns.py` -- Place common circuit building blocks. | Tool | Description | |------|-------------| | `place_decoupling_bank_pattern` | Place a bank of decoupling capacitors with power and ground connections | | `place_pull_resistor_pattern` | Place a pull-up or pull-down resistor connected to a signal pin | | `place_crystal_pattern` | Place a crystal oscillator with load capacitors | ## Batch tools `tools/batch.py` -- Atomic multi-operation schematic modifications. | Tool | Description | |------|-------------| | `apply_batch` | Apply a batch of schematic modifications from a JSON file (components, power symbols, wires, labels, no-connects) | See [Batch Operations](/reference/batch/) for the full JSON schema. ## Power symbol tools `tools/power_symbols.py` -- Add power symbols to schematics. | Tool | Description | |------|-------------| | `add_power_symbol` | Add a power symbol (GND, VCC, +3V3, etc.) connected to a component pin | ## Autowire tools `tools/autowire.py` -- Automated wiring strategy selection. | Tool | Description | |------|-------------| | `autowire_schematic` | Analyze unconnected nets and automatically wire them using optimal strategies | See [Autowiring guide](/guides/autowire/) for details on the decision tree. ## Schematic analysis tools `tools/schematic_analysis.py` -- Connectivity analysis, ERC, and netlist operations. | Tool | Description | |------|-------------| | `run_schematic_erc` | Run Electrical Rules Check on a schematic via kicad-cli | | `analyze_connectivity` | Analyze the net connectivity graph of a schematic | | `check_pin_connection` | Check whether a specific pin is connected and to what | | `verify_pins_connected` | Verify that two specific pins share the same net | | `get_component_pins` | List all pins for a specific component | | `export_netlist` | Export a netlist from a schematic using kicad-cli | | `export_schematic_pdf` | Export a schematic to PDF with options for B&W and background | | `audit_wiring` | Audit all wiring connections for a component | | `verify_connectivity` | Compare actual wiring against an expected net-to-pin mapping | | `validate_schematic` | Run a comprehensive health check (ERC + connectivity + optional baseline) | ## Netlist tools `tools/netlist.py` -- External netlist import and conversion. | Tool | Description | |------|-------------| | `import_netlist` | Import an external netlist (KiCad, OrcadPCB2, Allegro) and convert to batch JSON | ## Analysis tools `tools/analysis.py` -- Project validation and live board analysis. | Tool | Description | |------|-------------| | `validate_project` | Validate a KiCad project's structure and essential files | | `analyze_board_real_time` | Live board analysis via KiCad IPC (requires running KiCad) | | `get_component_details` | Retrieve component details from a live KiCad board via IPC | ## BOM tools `tools/bom.py` -- Bill of Materials analysis and export. | Tool | Description | |------|-------------| | `analyze_bom` | Analyze the BOM for a KiCad project | | `export_bom` | Export a BOM CSV from a schematic using kicad-cli | ## DRC tools `tools/drc.py` -- Design Rule Check and manufacturing constraints. | Tool | Description | |------|-------------| | `run_drc_check` | Run a DRC check on a PCB using kicad-cli | | `create_drc_rule_set` | Generate a technology-specific DRC rule set | | `export_kicad_drc_rules` | Export DRC rules in KiCad-compatible text format | | `get_manufacturing_constraints` | Get manufacturing constraints for a PCB technology | ## Export tools `tools/export.py` -- Manufacturing file generation. | Tool | Description | |------|-------------| | `generate_pcb_svg` | Generate an SVG render of a PCB layout | | `export_gerbers` | Export Gerber manufacturing files | | `export_drill` | Export drill files | | `export_pdf` | Export a PDF from a PCB or schematic | ## Routing tools `tools/routing.py` -- FreeRouting autorouter integration. | Tool | Description | |------|-------------| | `check_routing_capability` | Check whether automated PCB routing is available | | `route_pcb_automatically` | Automatically route a PCB using FreeRouting | | `analyze_routing_quality` | Analyze current PCB routing for quality and potential issues | ## PCB tools (IPC) `tools/pcb.py` -- Live PCB manipulation via KiCad IPC API. | Tool | Description | |------|-------------| | `move_component` | Move a component on the PCB to new coordinates | | `rotate_component` | Rotate a component on the PCB | | `get_board_statistics` | Retrieve high-level board statistics from a live KiCad instance | | `check_connectivity` | Check the routing connectivity status of the PCB | | `refill_zones` | Refill all copper zones on the PCB |