| get_schematic_summaryA | Get schematic page info and item counts. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_componentsA | List all placed components in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_labelsA | List all net labels in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_wiresA | List all wire segments in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_global_labelsA | List all global labels in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_hierarchical_labelsA | List all hierarchical labels in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_sheetsA | List all hierarchical sheets in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_junctionsA | List all junctions in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_no_connectsA | List all no-connect flags in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_schematic_bus_entriesA | List all bus entries in the schematic. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| place_componentA | Place a schematic symbol: resistor, capacitor, inductor, diode, LED,
transistor, crystal, switch, connector, or an IC such as a microcontroller
or regulator chip. Any lib_id in a library works. 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.
Optional; omit to use the configured default.
mirror: Mirror axis ("x", "y", or "" for none)
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
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. Optional; omit to use the configured default.
|
| remove_labelA | Remove net label(s) or global 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. To move a global label, remove it and re-add with
add_global_label (which takes shape and rotation).
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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| remove_junctionA | Remove a junction at the given coordinates. Args:
x: X position
y: Y position
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| add_wiresB | 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| add_lib_symbolC | Load a symbol definition from a .kicad_sym library into the schematic. Args:
symbol_lib_path: Path to .kicad_sym file. Optional; omit to use the configured default.
symbol_name: Symbol name (e.g. "LM7805")
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| set_component_propertyA | Set any property on a placed component, or rename it. Creates the
property if it is missing. Reference, Value and Footprint are mirrored into the symbol's own
instances and into the root symbol_instances table, so setting
key="Reference" is how a component is renamed and both views stay in
step. The root table needs the .kicad_pro to resolve the hierarchy
path; a loose .kicad_sch with no project beside it keeps the symbol
correct and leaves that table alone.
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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| remove_hierarchical_labelA | Remove a hierarchical label by name or UUID. Args:
text: Label text to match
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
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. Optional; omit to use the configured default.
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.
Optional; omit to use the configured default.
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
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.
Optional; omit to use the configured default.
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
|
| add_textB | 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| wire_pins_to_netA | Wire multiple component pins to the same net label. Wires each pin with a short stub and a shared net label, one file write.
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. Optional; omit to use the configured default.
|
| connect_pinsA | 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. Optional; omit to use the configured default.
|
| no_connect_pinA | Place a no-connect flag on a component pin. Resolves pin position and places a no-connect flag. Idempotent:
calling again for a pin that already has one is a no-op.
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. Optional; omit to use the configured default.
|
| remove_no_connectA | Remove no-connect flag(s) from a component pin. Removes every no-connect at the pin's position, so stacked
duplicates from repeated no_connect_pin calls clear in one go.
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. Optional; omit to use the configured default.
|
| list_unconnected_pinsA | List unconnected pins by running ERC and filtering results. Requires kicad-cli. Auto-redirects to root schematic for sub-sheets
to avoid false positives from hierarchical label context.
Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
output_dir: Directory for ERC report file. Optional; omit to use the configured default.
project_path: Path to .kicad_pro file for explicit root resolution
|
| run_ercA | Run Electrical Rules Check (ERC) on a schematic. Auto-redirects to root schematic for sub-sheets to avoid false
positives from missing hierarchical context.
Returns JSON report with violations.
Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
output_dir: Directory for report file (default: same as schematic).
Optional; omit to use the configured default.
project_path: Path to .kicad_pro file for explicit root resolution
|
| export_schematicA | Export schematic to PDF, SVG, or DXF format. pdf and dxf produce one file, so path names it and size_bytes is filled.
svg produces one file per sheet, so path names the directory. files and
count are filled either way.
Args:
format: Output format - "pdf", "svg", or "dxf"
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
output_dir: Directory for output files. Optional; omit to use the configured default.
|
| export_netlistA | Export a schematic netlist. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
output_dir: Output directory. Optional; omit to use the configured default.
format: Netlist format. spice and spicemodel produce simulator input.
|
| export_bomA | Export Bill of Materials (BOM) as CSV. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
output_dir: Output directory. Optional; omit to use the configured default.
|
| list_pcb_footprintsA | List all footprints on the PCB. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| list_pcb_tracesA | List all trace segments and vias on the PCB. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| list_pcb_netsA | List all named nets on the PCB. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| list_pcb_zonesA | List all zones (copper and keepout) on the PCB. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| list_pcb_layersA | List all layers defined in the PCB stackup: copper, silkscreen,
soldermask, solder paste, courtyard, fabrication, and the board outline. Which of those a given board actually defines is up to the board. Call
this before any tool that takes a layer name, since the valid set is
per-board and renamed layers are common.
Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| list_pcb_graphic_itemsA | List all graphic items (lines, text, etc.) on the PCB. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| get_board_infoA | Get board summary: footprint count, trace count, net count, thickness. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| place_footprintA | Place a footprint on the PCB. Name a library and a footprint to place the real thing: its pads, silkscreen,
courtyard and 3D model are copied from the library file exactly as KiCad
would place them. Without them you get a marker carrying only the reference
and value, which has NO PADS and so cannot be routed or checked; that is the
older behaviour and it is kept for callers that only want a placeholder.
Use list_lib_footprints to see what a library holds.
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)
library: Footprint library nickname (e.g. "Resistor_SMD"), or a path to a
.pretty directory. Optional; omit for a pad-less marker.
footprint: Footprint name within that library (e.g. "R_0805_2012Metric").
Required when library is given.
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| 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. Naming the other side flips the footprint: every pad,
graphic and text layer mirrors with it, the local geometry mirrors,
and text gains a mirrored justification, which is what KiCad's own
flip does. A footprint carrying a construct whose flip has not been
measured here is refused rather than half-transformed.
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| check_placementA | Check if placing/moving a footprint to (x, y) would violate constraints. Both checks are on the footprint's origin point, not its courtyard, so a
footprint whose body overlaps a keep-out while its origin does not still
reports ok. That is also why there is no rotation parameter: rotating about
the origin cannot move the origin, so an angle could not change either
answer.
Args:
reference: Footprint reference designator
x: Proposed X position
y: Proposed Y position
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| remove_footprintA | Remove a footprint by reference designator. Args:
reference: Reference designator (e.g. "R1")
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| add_traceA | 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| add_pcb_textA | 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. Optional; omit to use the configured default.
|
| add_pcb_lineA | 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. Optional; omit to use the configured default.
|
| add_copper_zoneA | Create an unfilled copper zone: a ground plane, power plane, or any
filled copper pour. Call fill_zones afterward to compute the 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. Optional; omit to use the configured default.
|
| add_keepout_zoneA | 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. Optional; omit to use the configured default.
|
| fill_zonesA | Fill all copper zones on the board using pcbnew's zone filler. pcbnew computes the fill; this server writes it. The board is handed to
pcbnew read-only and the computed polygons come back as data, so the file
that reaches the disk is the original with its zones' fills replaced and
every other byte untouched. Nothing else about it changes: not its format
version, not its layer names, not the constructs pcbnew does not model.
Requires KiCad's pcbnew Python bindings to be installed.
Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| update_pcb_from_schematicA | Update the PCB from the schematic (headless Tools -> Update PCB from Schematic). Exports the schematic's netlist, loads the assigned footprints from
libraries, and binds every pad to its net. Creates the .kicad_pcb if
it does not exist; new footprints land in a grid cluster. Existing
footprints are matched by reference and keep their position; a
changed footprint assignment swaps the footprint in place. Stale
board footprints are reported, and removed only with delete_stale
(locked ones are never removed). Zones are NOT refilled: run
fill_zones afterward. Net names arrive exactly as KiCad's F8
produces them (local labels sheet-prefixed, e.g. "/SIG"); read them
with list_pcb_nets.
Requires kicad-cli. It no longer needs KiCad's pcbnew Python bindings.
Every byte this writes goes through the server's byte-preserving write, so
a board's format stamp does not move and the parts of it this tool did not
touch arrive unchanged.
Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
pcb_path: Path to .kicad_pcb file (created if missing).
Optional; omit to use the configured default.
delete_stale: Remove unlocked board footprints absent from the schematic
project_path: Path to .kicad_pro for explicit root resolution (sub-sheets)
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| run_drcA | Run Design Rules Check (DRC) on a PCB. Returns structured report with violations.
Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
output_dir: Directory for report file (default: same as PCB).
Optional; omit to use the configured default.
|
| export_pcbA | Export PCB to PDF, SVG, or DXF format. Args:
format: Output format - "pdf", "svg", or "dxf"
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
output_dir: Directory for output files. Optional; omit to use the configured default.
layers: Optional list of layer names to include (required for DXF)
output_units: DXF output units - "in" or "mm" (DXF only)
exclude_refdes: Exclude reference designators (DXF only)
exclude_value: Exclude component values (DXF only)
use_contours: Use board outline contours (DXF only)
include_border_title: Include border and title block (DXF only)
|
| export_gerbersA | Export Gerber files for manufacturing. When layers contains exactly one layer, exports a single Gerber file: path
names it, and size_bytes and layer are filled. Otherwise exports all layers
(or the specified subset) plus optional drill files, and path names the
output directory. files and count are filled either way.
Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
output_dir: Output directory for gerber files. Optional; omit to use the configured default.
include_drill: Also export drill files (default: True, ignored in single-layer mode)
layers: Optional list of layer names. Single layer = single file output.
|
| export_3dA | Export PCB 3D model or render 3D view to image. `render` fills width, height and side; the mesh formats leave them unset.
Args:
format: Output format - "step", "stl", "glb", or "render" (PNG image)
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
output_dir: Output directory. Optional; omit to use the configured default.
width: Image width in pixels (render only)
height: Image height in pixels (render only)
side: View side: top, bottom, left, right, front, back (render only)
quality: Render quality: basic, high (render only)
|
| export_positionsA | Export component position file (pick and place). Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
output_dir: Output directory. Optional; omit to use the configured default.
|
| export_ipc2581C | Export PCB in IPC-2581 format for manufacturing data exchange. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
output: Output file path
precision: Numeric precision (default: 3)
compress: Compress output file
version: IPC-2581 version (default: "C")
units: Output units - "mm" or "in"
|
| 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, whose major version
has to match the board's format era. On first run, the Freerouting JAR is
auto-downloaded (~20MB).
Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
max_passes: Maximum autorouter optimization passes
num_threads: Thread count for routing. Defaults to 1 because
freerouting prints "Multi-threaded route optimization is broken
and it is known to generate clearance violations" on every run.
Raise it only if you are willing to DRC the result carefully.
timeout: Max seconds to wait for routing (default: 600)
output_dir: Directory for output files (default: same as PCB).
Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| validate_boardA | Validate all footprint placements against keep-out zones and board edge. Args:
pcb_path: Path to .kicad_pcb file. Optional; omit to use the configured default.
|
| list_lib_symbolsA | List all symbols in a .kicad_sym library file. Args:
symbol_lib_path: Path to .kicad_sym file. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| export_symbol_svgA | Export symbol library to SVG images. Args:
symbol_lib_path: Path to .kicad_sym file. Optional; omit to use the configured default.
output_dir: Output directory. Optional; omit to use the configured default.
|
| upgrade_symbol_libA | Upgrade a symbol library to current KiCad format. KiCad performs the migration, as it should, but it performs it on a copy:
the result lands through the server's atomic write, so your library is
replaced whole or not at all and can never be left truncated. A backup is
still taken beside it at ``<name>.kicad_sym.bak``, and the result names it,
because that is the undo for an upgrade that SUCCEEDED and is not something
an atomic write can offer. There is exactly one, and every run overwrites it.
Args:
symbol_lib_path: Path to .kicad_sym file. Optional; omit to use the configured default.
|
| list_lib_footprintsA | List all footprints in a .pretty library directory. Args:
pretty_dir: Path to .pretty directory containing .kicad_mod files
|
| get_footprint_infoB | Get pad and outline details for a footprint .kicad_mod file. Args:
footprint_path: Path to .kicad_mod file. Optional; omit to use the configured default.
|
| export_footprint_svgB | Export footprint to SVG. Args:
footprint_path: Path to a .kicad_mod file, or a .pretty library directory.
Optional; omit to use the configured default.
output_dir: Output directory. Optional; omit to use the configured default.
|
| upgrade_footprint_libA | Upgrade a footprint library to current KiCad format. Rewrites every footprint in the library, so this takes the library
directory. kicad-cli has no per-footprint option here, and a single
.kicad_mod path is rejected.
KiCad performs the migration, as it should, but it performs it on a copy and
each result lands through the server's atomic write, so no footprint file can
be left truncated. Only files whose content actually changed are written, so
an upgrade that touches three footprints leaves the rest of the library
alone. The whole library is still copied to ``<name>.pretty.bak`` first and
the result names it, because that is the undo for an upgrade that SUCCEEDED.
There is exactly one, and every run overwrites it.
Each file is atomic; the library as a whole is not a transaction. An upgrade
interrupted midway leaves some footprints migrated and some not, and no file
damaged. Version control is still the better answer for a library you care
about.
Args:
footprint_path: Path to a .pretty library directory.
Optional; omit to use the configured default.
|
| 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.
Optional; omit to use the configured default.
|
| create_symbol_libraryA | Create a valid empty KiCad 9 symbol library. Args:
symbol_lib_path: Path for the new .kicad_sym file.
Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
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. Optional; omit to use the configured default.
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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
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. Optional; omit to use the configured default.
|
| is_root_schematicA | Check if a schematic is the root or a sub-sheet. Args:
schematic_path: Path to .kicad_sch file. Optional; omit to use the configured default.
|
| list_hierarchyA | List the full sheet hierarchy starting from a root schematic. Args:
schematic_path: Path to root .kicad_sch file. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| get_symbol_instancesA | List all symbol instances from a root schematic's symbolInstances table. Args:
schematic_path: Path to root .kicad_sch file. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
|
| reorder_sheet_pagesA | 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. Optional; omit to use the configured default.
|
| 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. Optional; omit to use the configured default.
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. Optional; omit to use the configured default.
output_path: Path for flattened output (defaults to *_flat.kicad_sch)
|
| export_hierarchical_netlistA | Export a netlist from the root schematic, including hierarchy info. Runs kicad-cli to generate a netlist and returns parsed component/net data
with sheet path information for each component.
Args:
schematic_path: Path to root .kicad_sch file. Optional; omit to use the configured default.
output_dir: Directory for netlist output (defaults to schematic directory).
Optional; omit to use the configured default.
|
| run_jobsetA | Run a KiCad jobset file. Args:
jobset_path: Path to .kicad_jobset file
|
| get_versionA | Get KiCad version information including build details and library versions. |