| get_schematic_summaryA | Get schematic page info and item counts. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_componentsA | List all placed components in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_labelsA | List all net labels in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_wiresB | List all wire segments in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_global_labelsA | List all global labels in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_hierarchical_labelsA | List all hierarchical labels in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_sheetsA | List all hierarchical sheets in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_junctionsA | List all junctions in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_no_connectsB | List all no-connect flags in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| list_schematic_bus_entriesA | List all bus entries in the schematic. Args:
schematic_path: Path to .kicad_sch file
|
| get_symbol_pinsA | Get pin info for a symbol in the schematic's lib_symbols. Args:
symbol_name: Symbol name (e.g. "LM7805", "C", "Fuse")
schematic_path: Path to .kicad_sch file
|
| get_pin_positionsA | Get absolute pin positions for a placed component (accounts for rotation/mirror). Args:
reference: Component reference (e.g. "U1", "R1")
schematic_path: Path to .kicad_sch file
|
| get_net_connectionsA | Find all component pins connected to a net label. Scans labels matching the text, traces wires from label positions,
and identifies component pins at wire endpoints.
Args:
label_text: Net name to search for (e.g. "VCC", "GND")
schematic_path: Path to .kicad_sch file
|
| place_componentA | Place a component in the schematic. Args:
lib_id: Library identifier (e.g. "Device:R", "Device:C", "MyLib:MyPart")
reference: Reference designator (e.g. "R1", "U1")
value: Component value (e.g. "10K", "100nF")
x: X position in schematic units (mm)
y: Y position in schematic units (mm)
rotation: Rotation angle in degrees (0, 90, 180, 270)
symbol_lib_path: Path to .kicad_sym file if using custom library
mirror: Mirror axis ("x", "y", or "" for none)
schematic_path: Path to .kicad_sch file
project_path: Path to .kicad_pro file (for correct hierarchy resolution in sub-sheets)
|
| remove_componentA | Remove a component by reference designator. Args:
reference: Reference designator to remove (e.g. "U2")
schematic_path: Path to .kicad_sch file
|
| remove_labelA | Remove net label(s) by text, optionally filtered by position. If x and y are provided, only removes labels matching both text AND
position (within 0.1mm tolerance). Otherwise removes ALL labels with
matching text.
Args:
text: Label text to match (e.g. "VCC", "PGND")
x: Optional X position filter
y: Optional Y position filter
schematic_path: Path to .kicad_sch file
|
| remove_wireA | Remove a wire segment by its endpoint coordinates. Matches wires with endpoints within 0.1mm tolerance (in either order).
Use list_schematic_wires to get wire coordinates first.
Args:
x1: Start X
y1: Start Y
x2: End X
y2: End Y
schematic_path: Path to .kicad_sch file
|
| remove_junctionB | Remove a junction at the given coordinates. Args:
x: X position
y: Y position
schematic_path: Path to .kicad_sch file
|
| add_wiresA | Add multiple wires at once. Each wire dict has keys: x1, y1, x2, y2. Args:
wires: List of wire defs [{x1, y1, x2, y2}, ...]
schematic_path: Path to .kicad_sch file
|
| add_labelA | Add a net label at a position. Args:
text: Net name (e.g. "VIN_PROT", "5V_REL")
x: X position
y: Y position
rotation: Degrees (0=right, 90=up, 180=left, 270=down)
schematic_path: Path to .kicad_sch file
|
| add_junctionsB | Add multiple junctions. Each point dict has keys: x, y. Args:
points: List of junction positions [{x, y}, ...]
schematic_path: Path to .kicad_sch file
|
| add_lib_symbolC | Load a symbol definition from a .kicad_sym library into the schematic. Args:
symbol_lib_path: Path to .kicad_sym file
symbol_name: Symbol name (e.g. "LM7805")
schematic_path: Path to .kicad_sch file
|
| move_componentA | Move a placed component to a new position. Args:
reference: Reference designator (e.g. "R1")
x: New X position
y: New Y position
rotation: New rotation in degrees (None = keep current)
schematic_path: Path to .kicad_sch file
|
| set_component_propertyB | Set any property on a placed component. Creates it if missing. Args:
reference: Component reference (e.g. "R1")
key: Property name (e.g. "MPN", "Tolerance", "Value")
value: Property value
schematic_path: Path to .kicad_sch file
|
| set_page_sizeA | Set the schematic page/sheet size. Args:
size: Standard name (A5, A4, A3, A2, A1, A0, A, B, C, D, E) or 'User' for custom
width: Custom width in mm (required when size='User')
height: Custom height in mm (required when size='User')
portrait: If True, swap width/height for portrait orientation
schematic_path: Path to .kicad_sch file
|
| add_global_labelA | Add a global net label (visible across all sheets). Args:
text: Net name (e.g. "VCC", "SDA")
x: X position
y: Y position
rotation: Degrees (0=right, 90=up, 180=left, 270=down)
shape: Label shape: input, output, bidirectional, tri_state, passive
schematic_path: Path to .kicad_sch file
|
| add_hierarchical_labelA | Add a hierarchical label to a sub-sheet schematic. Args:
text: Label name (must match parent sheet pin name)
shape: Direction — input, output, bidirectional, tri_state, passive
x: X position in mm
y: Y position in mm
rotation: Degrees (0, 90, 180, 270)
schematic_path: Path to .kicad_sch file
|
| remove_hierarchical_labelA | Remove a hierarchical label by name or UUID. Args:
text: Label text to match
schematic_path: Path to .kicad_sch file
uuid: Optional UUID for disambiguation when multiple labels share a name
|
| modify_hierarchical_labelA | Modify an existing hierarchical label. Args:
text: Current label text to find
schematic_path: Path to .kicad_sch file
new_text: New label text (empty = keep current)
new_shape: New shape/direction (empty = keep current)
new_x: New X position (None = keep current)
new_y: New Y position (None = keep current)
uuid: UUID for disambiguation
|
| add_power_symbolA | Place a power symbol (VCC, GND, +3V3, etc.). Uses place_component internally. Power symbols are regular symbols
from the 'power' library with isPower=True.
Automatically places a PWR_FLAG at the same position so the net
satisfies ERC (power pin driven).
Args:
lib_id: Library ID (e.g. "power:VCC", "power:GND")
reference: Reference (e.g. "#PWR01")
x: X position
y: Y position
rotation: Rotation in degrees
symbol_lib_path: Path to power symbol .kicad_sym if not in schematic
schematic_path: Path to .kicad_sch file
project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
|
| auto_place_decoupling_capA | Place a decoupling capacitor and wire it to power/ground nets. Places the cap, wires pin 1 (top) to power_net and pin 2 (bottom)
to ground_net via stub wires + labels.
Args:
lib_id: Cap symbol (e.g. "Device:C")
reference: Reference (e.g. "C5")
value: Cap value (e.g. "100nF")
x: X position
y: Y position
power_net: Label for pin 1 (e.g. "VCC", "+3V3")
ground_net: Label for pin 2 (e.g. "GND", "PGND")
rotation: Rotation in degrees (default 0)
symbol_lib_path: Path to .kicad_sym if using custom lib
schematic_path: Path to .kicad_sch file
project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
|
| add_textA | Add a text annotation to the schematic. Args:
text: Text content
x: X position
y: Y position
rotation: Rotation in degrees
schematic_path: Path to .kicad_sch file
|
| remove_textA | Remove text annotation(s) by content, optionally filtered by position. If x and y are provided, only removes texts matching both content AND
position (within 0.1mm tolerance). Otherwise removes ALL texts with
matching content.
Args:
text: Text content to match
x: Optional X position filter
y: Optional Y position filter
schematic_path: Path to .kicad_sch file
|
| wire_pins_to_netA | Wire multiple component pins to the same net label. Batch version of wire_pin_to_label. Single file load/save cycle.
Args:
pins: List of {"reference": "R1", "pin": "1"} dicts
label_text: Net label text (e.g. "GND", "VCC")
direction: Wire direction: "auto", "left", "right", "up", "down"
stub_length: Wire stub length in mm (default 2.54)
auto_pwr_flag: Auto-place PWR_FLAG when net has power_in but no power_out (default True)
schematic_path: Path to .kicad_sch file
|
| connect_pinsB | Connect two component pins with Manhattan (L-shaped) wire routing. Combines get_pin_positions + coordinate math + add_wires into one call.
Args:
ref1: First component reference (e.g. "U1")
pin1: First pin name or number
ref2: Second component reference (e.g. "C3")
pin2: Second pin name or number
schematic_path: Path to .kicad_sch file
|
| no_connect_pinA | Place a no-connect flag on a component pin. Resolves pin position and places a no-connect flag.
Args:
reference: Component reference (e.g. "U2")
pin_name: Pin name (e.g. "NC") or number (e.g. "3")
schematic_path: Path to .kicad_sch file
|
| list_pcb_footprintsB | List all footprints on the PCB. Args:
pcb_path: Path to .kicad_pcb file
|
| list_pcb_tracesA | List all trace segments and vias on the PCB. Args:
pcb_path: Path to .kicad_pcb file
|
| list_pcb_netsA | List all named nets on the PCB. Args:
pcb_path: Path to .kicad_pcb file
|
| list_pcb_zonesA | List all zones (copper and keepout) on the PCB. Args:
pcb_path: Path to .kicad_pcb file
|
| list_pcb_layersA | List all layers defined in the PCB stackup. Args:
pcb_path: Path to .kicad_pcb file
|
| list_pcb_graphic_itemsB | List all graphic items (lines, text, etc.) on the PCB. Args:
pcb_path: Path to .kicad_pcb file
|
| get_board_infoB | Get board summary: footprint count, trace count, net count, thickness. |
| get_footprint_padsA | Get pad info for a placed footprint on the PCB. Args:
reference: Footprint reference (e.g. "R1", "U1")
pcb_path: Path to .kicad_pcb file
|
| place_footprintA | Place a footprint on the PCB. Args:
reference: Reference designator (e.g. "R2")
value: Component value (e.g. "4.7K")
x: X position in mm
y: Y position in mm
rotation: Rotation in degrees
layer: Layer (F.Cu or B.Cu)
pcb_path: Path to .kicad_pcb file
|
| move_footprintA | Move a footprint to a new position. Args:
reference: Reference designator (e.g. "R1")
x: New X position
y: New Y position
rotation: New rotation (None = keep current)
layer: New layer (empty = keep current)
pcb_path: Path to .kicad_pcb file
|
| check_placementA | Check if placing/moving a footprint to (x, y) would violate constraints. Args:
reference: Footprint reference designator
x: Proposed X position
y: Proposed Y position
rotation: Proposed rotation in degrees
pcb_path: Path to .kicad_pcb file
|
| remove_footprintB | Remove a footprint by reference designator. Args:
reference: Reference designator (e.g. "R1")
pcb_path: Path to .kicad_pcb file
|
| add_traceB | Add a trace segment between two points. Args:
x1: Start X
y1: Start Y
x2: End X
y2: End Y
width: Trace width in mm
layer: Copper layer (e.g. "F.Cu", "B.Cu")
net: Net number
pcb_path: Path to .kicad_pcb file
|
| add_viaA | Add a via at a position. Args:
x: X position
y: Y position
size: Via pad size in mm
drill: Drill diameter in mm
net: Net number
layers: Via layers (default: ["F.Cu", "B.Cu"])
pcb_path: Path to .kicad_pcb file
|
| add_pcb_textB | Add text to the PCB (silkscreen, fab layer, etc.). Args:
text: Text content
x: X position
y: Y position
layer: Layer (e.g. "F.SilkS", "B.SilkS", "F.Fab")
rotation: Rotation in degrees
pcb_path: Path to .kicad_pcb file
|
| add_pcb_lineB | Add a graphic line to the PCB (edge cuts, silkscreen, etc.). Args:
x1: Start X
y1: Start Y
x2: End X
y2: End Y
layer: Layer (e.g. "Edge.Cuts", "F.SilkS")
width: Line width in mm
pcb_path: Path to .kicad_pcb file
|
| add_copper_zoneA | Create an unfilled copper zone. Call fill_zones afterward to compute fills. Args:
net_name: Name of the net to assign to this zone (e.g. "GND")
layer: Copper layer (e.g. "F.Cu", "B.Cu")
corners: List of {x, y} dicts defining the zone polygon (min 3)
clearance: Zone clearance in mm
min_thickness: Minimum copper thickness in mm
thermal_relief: Use thermal relief pads (True) or solid connection (False)
thermal_gap: Thermal relief gap in mm
thermal_bridge_width: Thermal relief bridge width in mm
priority: Zone fill priority (higher fills first)
pcb_path: Path to .kicad_pcb file
|
| add_keepout_zoneB | Create a keep-out zone that restricts placement of specified items. Args:
corners: List of {x, y} dicts defining the zone polygon (min 3)
layers: Layers to apply keep-out to (default: ["F.Cu", "B.Cu"])
no_tracks: Restrict tracks in this zone
no_vias: Restrict vias in this zone
no_pads: Restrict pads in this zone
no_copper_pour: Restrict copper pour in this zone
no_footprints: Restrict footprints in this zone
pcb_path: Path to .kicad_pcb file
|
| fill_zonesB | Fill all copper zones on the board using pcbnew's zone filler. Requires KiCad's pcbnew Python bindings to be installed.
Args:
pcb_path: Path to .kicad_pcb file
|
| set_trace_widthA | Change the width of existing traces matching the given filters.
At least one filter (net_name, layer, or bounding box) is required. Args:
width: New trace width in mm
net_name: Filter by net name
layer: Filter by layer name (e.g. "F.Cu", "B.Cu")
x_min: Left edge of bounding box filter (mm)
y_min: Top edge of bounding box filter (mm)
x_max: Right edge of bounding box filter (mm)
y_max: Bottom edge of bounding box filter (mm)
pcb_path: Path to .kicad_pcb file
|
| remove_tracesA | Remove trace segments matching the given filters. Does not remove vias.
At least one filter (net_name, layer, or bounding box) is required. Args:
net_name: Filter by net name
layer: Filter by layer name (e.g. "F.Cu", "B.Cu")
x_min: Left edge of bounding box filter (mm)
y_min: Top edge of bounding box filter (mm)
x_max: Right edge of bounding box filter (mm)
y_max: Bottom edge of bounding box filter (mm)
pcb_path: Path to .kicad_pcb file
|
| add_thermal_viasA | Add a grid of thermal vias under a footprint pad. Args:
reference: Footprint reference (e.g. "U1", "R1")
pad_number: Pad number to center vias on. If empty, auto-selects largest SMD pad.
rows: Number of rows in the via grid
cols: Number of columns in the via grid
spacing: Spacing between vias in mm
via_size: Via annular ring diameter in mm
via_drill: Via drill diameter in mm
net_name: Net to assign to vias. If None, auto-detect from pad.
pcb_path: Path to .kicad_pcb file
|
| set_net_classA | Create or update a net class with design rules and assign nets. Edits the KiCad project file (.kicad_pro) alongside the board to
define the net class and assign nets. Does NOT require pcbnew.
Args:
name: Net class name (e.g. "Power", "HighSpeed")
nets: List of net names to assign to this class
track_width: Track width in mm (None = use default)
clearance: Clearance in mm (None = use default)
via_size: Via diameter in mm (None = use default)
via_drill: Via drill in mm (None = use default)
pcb_path: Path to .kicad_pcb file
|
| remove_dangling_tracksA | Detect and remove trace segments with unconnected endpoints. Iteratively removes dangling segments until no more are found.
A segment is considered dangling if either endpoint does not connect
to a pad, via, or another trace endpoint.
Args:
pcb_path: Path to .kicad_pcb file
|
| autoroute_pcbA | Autoroute PCB traces using the Freerouting autorouter. Exports the board to Specctra DSN format, runs Freerouting for automated
trace routing, and imports the results into a new PCB file. The original
board is never modified.
Requires Java 17+ and KiCad's pcbnew Python bindings. On first run,
the Freerouting JAR is auto-downloaded (~20MB).
Args:
pcb_path: Path to .kicad_pcb file
max_passes: Maximum autorouter optimization passes
num_threads: Thread count for routing
timeout: Max seconds to wait for routing (default: 600)
output_dir: Directory for output files (default: same as PCB)
|
| get_footprint_boundsA | Get the board-coordinate bounding box of a placed footprint. Args:
reference: Footprint reference designator
pcb_path: Path to .kicad_pcb file
|
| validate_boardA | Validate all footprint placements against keep-out zones and board edge. Args:
pcb_path: Path to .kicad_pcb file
|
| list_lib_symbolsA | List all symbols in a .kicad_sym library file. Args:
symbol_lib_path: Path to .kicad_sym file
|
| get_symbol_infoA | Get detailed pin and property info for a symbol in a library. Args:
symbol_name: Symbol name (e.g. "LM7805")
symbol_lib_path: Path to .kicad_sym file
|
| add_symbolA | Add a new symbol definition to a .kicad_sym library. Creates a complete symbol with pins and body graphics. If the library
file does not exist it will be created.
Args:
name: Symbol name (e.g. "MP4572GQB-P", "TLV75733PDBVR")
pins: Pin definitions — list of dicts, each with keys:
number (str): pin number, e.g. "1"
name (str): pin name, e.g. "VIN" ("~" for unnamed)
type (str): electrical type — "input", "output", "bidirectional",
"passive", "power_in", "power_out", "tri_state",
"open_collector", "open_emitter", "unconnected", "free"
x (float): X position in mm (default 0)
y (float): Y position in mm (default 0)
rotation (float): angle 0/90/180/270 (default 0)
length (float): pin length in mm (default 2.54)
reference_prefix: Reference prefix e.g. "U", "R", "C" (default "U")
is_power: True for power symbols (default False)
pin_names_offset: Pin name label offset in mm (default 0.508)
in_bom: Include in BOM (default True)
on_board: Place on board (default True)
footprint: Default footprint e.g. "Package_SO:SOIC-8" (default "")
datasheet: Datasheet URL (default "~")
rectangles: Optional body rectangle(s) — list of dicts with keys:
x1, y1, x2, y2 (float): corner coordinates in mm
fill (str): "none", "background", or "outline" (default "background")
If omitted, a rectangle is auto-computed from pin positions.
symbol_lib_path: Path to .kicad_sym file
|
| list_lib_footprintsA | List all footprints in a .pretty library directory. Args:
pretty_dir: Path to .pretty directory containing .kicad_mod files
|
| get_footprint_infoA | Get pad and outline details for a footprint .kicad_mod file. Args:
footprint_path: Path to .kicad_mod file
|
| create_projectA | Create a KiCad 9 project (.kicad_pro + .kicad_prl + .kicad_sch). Args:
directory: Directory to create the project in (created if missing)
name: Project name (used for filenames)
|
| create_schematicB | Create a valid empty KiCad 9 schematic file. Args:
schematic_path: Path for the new .kicad_sch file
|
| create_symbol_libraryA | Create a valid empty KiCad 9 symbol library. Args:
symbol_lib_path: Path for the new .kicad_sym file
|
| create_sym_lib_tableA | Create a sym-lib-table file in the given directory. Each entry dict needs 'name' and 'uri' keys.
Overwrites existing sym-lib-table if present.
Args:
directory: Directory to write sym-lib-table in
entries: List of dicts with 'name' and 'uri' keys
|
| add_hierarchical_sheetA | Add a hierarchical sheet to a parent schematic with matching labels in the child. Creates the sheet block in the parent and corresponding hierarchical
labels in the child schematic. The child schematic must already exist
(create it with create_schematic first).
Args:
parent_schematic_path: Path to parent .kicad_sch
sheet_name: Display name for the sheet
sheet_file: Path to child .kicad_sch (must exist)
pins: List of dicts with 'name' (str) and 'direction' (str) keys.
Direction: input, output, bidirectional, tri_state, passive.
x: X position of sheet block (default 25.4)
y: Y position of sheet block (default 25.4)
project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
|
| remove_hierarchical_sheetA | Remove a hierarchical sheet block from a parent schematic. Identify the sheet by name, uuid, or both. If name matches multiple sheets,
returns an error with UUIDs for disambiguation.
Args:
parent_schematic_path: Path to parent .kicad_sch
name: Sheet name to match
uuid: Sheet UUID for unambiguous identification
delete_child_file: If True, delete the child .kicad_sch file
(unless still referenced by another sheet)
|
| modify_hierarchical_sheetA | Modify properties of an existing hierarchical sheet block. Args:
sheet_uuid: UUID of the sheet to modify (from list_schematic_sheets)
schematic_path: Path to parent .kicad_sch
sheet_name: New display name (empty = keep)
file_name: New file path (empty = keep)
width: New width in mm (None = keep)
height: New height in mm (None = keep)
|
| add_sheet_pinA | Add a pin to an existing hierarchical sheet block. Args:
sheet_uuid: UUID of the sheet
pin_name: Pin name (should match a hierarchical label in the child schematic)
connection_type: input, output, bidirectional, tri_state, passive
schematic_path: Path to parent .kicad_sch
side: Which sheet edge to place pin on (left or right)
|
| remove_sheet_pinA | Remove a pin from a hierarchical sheet block. Args:
sheet_uuid: UUID of the sheet
pin_name: Name of the pin to remove
schematic_path: Path to parent .kicad_sch
|
| annotate_schematicA | Auto-assign reference designators to unannotated components. Finds components with '?' in their reference (e.g. R?, U?) and assigns
sequential numbers, respecting existing references in the schematic
and across the hierarchy when project_path is provided.
Args:
schematic_path: Path to .kicad_sch file
project_path: Path to .kicad_pro file (scans hierarchy for existing refs)
|
| validate_hierarchyA | Validate hierarchical schematic for common issues. Checks for orphaned labels/pins, direction mismatches, duplicate
reference designators, unannotated components, and missing files.
Args:
schematic_path: Path to root .kicad_sch file
|
| is_root_schematicA | Check if a schematic is the root or a sub-sheet. Args:
schematic_path: Path to .kicad_sch file
|
| list_hierarchyA | List the full sheet hierarchy starting from a root schematic. Args:
schematic_path: Path to root .kicad_sch file
|
| get_sheet_infoA | Get detailed info about a hierarchical sheet including pin/label matching. Args:
sheet_uuid: UUID of the sheet
schematic_path: Path to parent .kicad_sch
|
| trace_hierarchical_netA | Trace a net across the hierarchy, following hierarchical pins and labels. Args:
net_name: Net/label name to trace
schematic_path: Path to root .kicad_sch file
|
| list_cross_sheet_netsA | List all nets that cross sheet boundaries (hierarchical pins and global labels). Args:
schematic_path: Path to root .kicad_sch file
|
| get_symbol_instancesA | List all symbol instances from a root schematic's symbolInstances table. Args:
schematic_path: Path to root .kicad_sch file
|
| move_hierarchical_sheetA | Move a hierarchical sheet block to a new position, including all pins. Args:
sheet_uuid: UUID of the sheet to move
new_x: New X position in mm
new_y: New Y position in mm
schematic_path: Path to parent .kicad_sch
|
| reorder_sheet_pagesC | Reorder hierarchical sheets by specifying the desired UUID order. Args:
page_order: List of sheet UUIDs in desired order
schematic_path: Path to root .kicad_sch file
|
| duplicate_sheetA | Duplicate a hierarchical sheet, copying the child file with new UUIDs. Args:
sheet_uuid: UUID of the sheet to duplicate
new_sheet_name: Display name for the new sheet
schematic_path: Path to parent .kicad_sch
project_path: Path to .kicad_pro (for hierarchy metadata)
new_file_name: Name for the copied file (auto-generated if empty)
|
| flatten_hierarchyA | Flatten a hierarchical schematic into a single sheet. Merges all child sheet content into one schematic with offset positions.
Creates a new file — does NOT modify the original hierarchy.
Args:
schematic_path: Path to root .kicad_sch file
output_path: Path for flattened output (defaults to *_flat.kicad_sch)
|