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*"
ParameterTypeDescription
sectionstring"blocks", "nets", "container"
filterstringOptional 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"
ParameterTypeDescription
output_formatstring"summary" (default), "detailed", "by_type"
include_warningsbooleanDefault 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]
ParameterTypeDescription
applybooleanfalse (default) returns diff only; true commits
apply_indicesarraySubset 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="..."
ActionPurpose
getReturns rules + net_classes + libraries + sub-project list
setPartial mutation. Pass any subset of rules, net_classes, libraries
create_containerCreate a new multi-board container at container_pro_path
add_sub_projectRegister an existing .kicad_pro as a sub-project
remove_sub_projectUnregister 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="..."
ParameterTypeDescription
actionstring"list" (default), "create", "set_active", "get_active", "assign_component"
namestringName for new board (create)
uuidstringBoard UUID (set_active)
refstringComponent reference (assign_component)
board_uuidstringTarget board UUID (assign_component)
targetobjectSub-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"
ParameterTypeDescription
actionstring"list" (default), "link", "unlink", "validate"
board1_uuid / board2_uuidstringBoards to connect (link)
pad1_id / pad2_idstringPads to connect (link)
connection_idstringConnection to remove (unlink)
targetobjectSub-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"
ParameterTypeDescription
actionstring"create", "list", "add_instance", "generate_tabs", "add_rails", "add_tooling", "export"
namestringPanel name (create)
boardsarrayBoards to include (create)
layoutstringLayout strategy, default "grid"
spacing_mmnumberBoard spacing, default 3.0
tab_typestring"mousebite" (default), "v-groove", "solid"
tab_width_mm / tab_spacing_mmnumberTab geometry
add_railsbooleanDefault true
rail_width_mmnumberDefault 5.0
add_tooling_holes / add_fiducialsbooleanDefault true
panel_idstringFor operations on existing panel
output_dirstringFor 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": "..."}