Multi-Board Tools
The agent has 10 tools for multi-board projects: 7 for the multi-board schematic (MBS) and 3 for cross-board PCB work.
These tools require a multi-board container project. Use check_status to confirm is_multi_board_container == true before calling them.
Multi-Board Schematic (MBS)
The MBS file (.kicad_mbs) sits at the top of a multi-board project and defines how sub-board PCBs interconnect via cross-board nets. The MBSCH editor must be open for these tools to work.
mbs_get_summary
High-level overview of the MBS: container metadata, sub-projects, module blocks, and counts.
mbs_get_summary
mbs_inspect
Full detail for a specific section of the MBS.
mbs_inspect section="blocks"
mbs_inspect section="nets" filter="GND*"
| Parameter | Type | Description |
|---|---|---|
section | string | "blocks", "nets", "container" |
filter | string | Optional glob. Matches mbs_reference/component_ref for blocks, net name for nets |
mbs_run_erc
Run Electrical Rules Check on the multi-board schematic. Surfaces standard schematic ERC plus cross-board checks (unwired module pins, single-endpoint cross-board nets, pin-type mismatches at boundaries, GND↔5V short detection).
mbs_run_erc output_format="summary"
| Parameter | Type | Description |
|---|---|---|
output_format | string | "summary" (default), "detailed", "by_type" |
include_warnings | boolean | Default true |
mbs_refresh
Re-scan every sub-project's connector pins and apply the diff to the MBS canvas.
Always preview first. Default apply=false returns the proposed changes without mutating the MBS. Show the diff to the user, get approval, then call again with apply=true.
# Preview
mbs_refresh
# Apply all
mbs_refresh apply=true
# Apply specific changes by index
mbs_refresh apply=true apply_indices=[0, 2, 5]
| Parameter | Type | Description |
|---|---|---|
apply | boolean | false (default) returns diff only; true commits |
apply_indices | array | Subset of indices from the preview's proposed_changes |
mbs_setup
Read or mutate the multi-board container project: rules, net classes, libraries, and sub-project membership.
# Read full container state
mbs_setup action="get"
# Set DRC rules
mbs_setup action="set" rules={"min_power_pins": [{"net_name": "+5V", "min_pins": 4}]}
# Add a sub-project
mbs_setup action="add_sub_project" container_pro_path="..." sub_pro_path="..."
| Action | Purpose |
|---|---|
get | Returns rules + net_classes + libraries + sub-project list |
set | Partial mutation. Pass any subset of rules, net_classes, libraries |
create_container | Create a new multi-board container at container_pro_path |
add_sub_project | Register an existing .kicad_pro as a sub-project |
remove_sub_project | Unregister by sub_project_uuid or sub_pro_path |
The net_classes and libraries payloads mirror the Multi-Board Net Classes and Multi-Board Libraries Python APIs. See those pages for the field shapes.
mbs_save
Save the .kicad_mbs to disk. Required after MBS edits. The save also re-extracts cross-board nets from topology and writes them into the container .kicad_pro. Call this before mbs_sync_to_pcb so the latest nets are available.
mbs_save
mbs_sync_to_pcb
Push cross-board net definitions to each sub-project PCB. For every cross-board net endpoint, locates the matching connector pad on the sub-project's PCB and writes the cross-board net name to it. Equivalent to the MBSCH "Sync to PCB" toolbar button.
mbs_sync_to_pcb
Reports sub_projects_touched, endpoints_applied, endpoints_missing, nets_renamed, plus a conflicts list when sub-projects disagree on the local name (alphabetically-first wins).
Multi-Board PCB
These tools manage cross-board PCB work: board navigation, cross-board pad connections, and manufacturing panels. They require a multi-board container project and accept an optional target parameter to specify which sub-project the call applies to.
pcb_boards
List and switch between boards in a multi-board project. Also assigns components to boards.
# List all boards
pcb_boards action="list"
# Switch the active board
pcb_boards action="set_active" uuid="..."
# Get current active board
pcb_boards action="get_active"
# Assign a component to a board
pcb_boards action="assign_component" ref="U3" board_uuid="..."
| Parameter | Type | Description |
|---|---|---|
action | string | "list" (default), "create", "set_active", "get_active", "assign_component" |
name | string | Name for new board (create) |
uuid | string | Board UUID (set_active) |
ref | string | Component reference (assign_component) |
board_uuid | string | Target board UUID (assign_component) |
target | object | Sub-project specifier (see The target parameter) |
pcb_cross_board
Manage cross-board pad connections.
# List all cross-board connections
pcb_cross_board action="list"
# Link two pads on different boards
pcb_cross_board action="link" \
board1_uuid="..." pad1_id="..." \
board2_uuid="..." pad2_id="..."
# Validate cross-board DRC
pcb_cross_board action="validate"
| Parameter | Type | Description |
|---|---|---|
action | string | "list" (default), "link", "unlink", "validate" |
board1_uuid / board2_uuid | string | Boards to connect (link) |
pad1_id / pad2_id | string | Pads to connect (link) |
connection_id | string | Connection to remove (unlink) |
target | object | Sub-project specifier |
pcb_panel
Create and manage manufacturing panels: multiple board instances with tabs (mousebite / V-groove / solid), rails, tooling holes, and fiducials.
pcb_panel action="create" name="Panel_v1" \
boards=[{"board_uuid": "...", "count": 4}] \
layout="grid"
| Parameter | Type | Description |
|---|---|---|
action | string | "create", "list", "add_instance", "generate_tabs", "add_rails", "add_tooling", "export" |
name | string | Panel name (create) |
boards | array | Boards to include (create) |
layout | string | Layout strategy, default "grid" |
spacing_mm | number | Board spacing, default 3.0 |
tab_type | string | "mousebite" (default), "v-groove", "solid" |
tab_width_mm / tab_spacing_mm | number | Tab geometry |
add_rails | boolean | Default true |
rail_width_mm | number | Default 5.0 |
add_tooling_holes / add_fiducials | boolean | Default true |
panel_id | string | For operations on existing panel |
output_dir | string | For export action |
The target Parameter
The multi-board PCB tools accept an optional target object to disambiguate when multiple sub-project PCBs are open. Use the sub_projects[] array from check_status to find UUIDs and paths.
pcb_boards action="list" target={"sub_project_uuid": "..."}