Konnect

August 16, 2026 · View on GitHub

Canonical reference for every MCP tool exposed by Konnect. Generated from the Rust source (not from hand-maintained prose), so it reflects what the binary actually serves.

Source of truth

  • Toolset metadata + declared counts: crates/konnect-core/src/router/registry.rs (ALL_TOOLSETS)
  • Meta-tool definitions: crates/konnect-core/src/router/meta_tools.rs (meta_tool_descriptions())
  • Per-tool names + descriptions: crates/konnect-core/src/tools/<toolset>.rs (each tool!(…) in the tools() vec)

Overview

  • 19 toolsets organized into 10 categories
  • 202 registered tools + 6 always-visible meta-tools = 208 total
  • Discovery pattern: the server pre-loads only the starter kit (project, config) so baseline tools/list costs ~2K tokens instead of ~23K. The LLM reads list_toolboxes → calls load_toolset(name) to expose additional tools on demand; unload_toolset(name) prunes them. tools/list_changed is notified on every mutation. If the LLM calls a tool whose toolset isn't loaded, the error names the owning toolset so recovery is a single load_toolset hop. load_toolset also accepts an array of names to load several toolsets with a single tools/list refresh.
  • Observability: every tools/call is recorded — ring buffer of the last 100 calls + per-tool counters + JSONL at <konnect dir>/logs/calls.jsonl. The LLM self-diagnoses via get_recent_calls and server_stats.

Meta-tools (always visible)

Six tools, grouped into discovery/routing and observability.

Discovery / routing

ToolPurpose
list_toolboxesList all 19 toolsets with category, tool count, and whether each is currently loaded. The LLM's starting point.
load_toolsetLoad a toolset by name to expose its tools in tools/list. Returns the list of tools added.
unload_toolsetUnload a toolset to prune its tools from tools/list. Use when switching tasks to keep context small.
get_active_toolsetsReturn the currently loaded toolsets and how many tools each provides.

Observability

ToolPurpose
get_recent_callsLast N tool calls (newest first) — call_id, tool, toolset, duration, status (ok/error/not_found), error_kind. The LLM's debug log. Default limit 20, max 100.
server_statsUptime, total/error call counts, per-tool totals + errors, and the JSONL log path.

Project

project · 7 tools

Purpose: Create, open, save, snapshot KiCAD projects, and launch the live schematic viewer. Source: crates/konnect-core/src/tools/project.rs

ToolDescription
create_projectCreate a new KiCAD project at the given path. Creates the directory, a blank .kicad_pro, empty .kicad_sch, and blank .kicad_pcb; refuses to replace any existing project file.
open_projectCheck whether a KiCAD project is currently open in the running KiCAD UI. Returns the active project path and whether KiCAD IPC is available.
save_projectSave the currently open PCB board file via KiCAD IPC. Requires KiCAD to be running with IPC enabled.
get_project_infoRead project metadata from a .kicad_pro file. Returns name, schematic/PCB paths, last-modified times.
rename_projectRename the .kicad_pro/.kicad_sch/.kicad_pcb/.kicad_prl files and the internal references that carry the old name. Renaming the files alone makes KiCad treat the design as unannotated, losing every reference designator, because each symbol instance stores (project "name"). Supports dry_run.
snapshot_projectExport the schematic and PCB to PDF as a timestamped snapshot/checkpoint. Useful before major edits.
open_schematic_viewerLaunch the live schematic viewer (SVG with auto-refresh on file change). Use after placing components so the user can see changes in real time.

Schematic

sch_components · 19 tools

Purpose: Add, edit, move, rotate, and delete schematic symbols. Source: crates/konnect-core/src/tools/sch_components.rs

ToolDescription
create_schematicCreate a new blank .kicad_sch schematic file.
set_schematic_pageSet the sheet's paper size (A0–A5, A–E, US Letter/Legal/Ledger) and orientation. Returns the size in mm — content outside the frame still exports and still nets up, so a too-small page is a silent defect.
add_schematic_componentAdd a symbol from a KiCAD library to the schematic. Snaps to the 1.27mm grid.
delete_schematic_componentRemove a symbol instance from the schematic by its reference designator.
edit_schematic_componentUpdate fields (Reference, Value, Footprint, custom properties) of a symbol instance.
get_schematic_componentGet all properties, position, and pin locations for a symbol instance.
list_schematic_componentsList all symbol instances with positions, values, footprints, and pin locations.
move_schematic_componentMove a symbol to a new position. Does NOT adjust connected wires.
rotate_schematic_componentRotate a symbol by setting its absolute rotation angle (0/90/180/270).
move_connectedMove a symbol and stretch/shrink connected wire stubs to preserve connections.
move_regionMove all symbols within a bounding box by a given offset.
annotate_schematicRun kicad-cli to auto-assign reference designators (R?R1, U?U1, etc.).
get_schematic_pin_locationsGet exact (X,Y) coordinates of every pin on a symbol, accounting for rotation/mirroring, plus each pin's orientation_degrees (the direction leading away from the body, 0 = east) and length_mm.
batch_get_schematic_pin_locationsGet pin locations for multiple components in a single file read, with the same per-pin fields.
add_component_annotationAdd a custom property (annotation) to a symbol instance.
group_componentsAdd a group property to multiple components in the schematic.
replace_componentReplace a component's lib_id with a new library symbol (swap the component type).
update_symbols_from_libraryRe-embed placed symbols' definitions from their libraries, like KiCad's "Update Symbols from Library". Refuses a symbol whose pins moved or disappeared (wires attach at pin coordinates) unless allow_pin_moves is set.
reset_schematic_field_positionsMove each symbol's Reference and Value text back to its library anchor, through the symbol's rotation — KiCad's "Reset field text positions". Repairs sheets whose fields sit at a uniform offset.
get_schematic_viewRender the schematic to a PNG image (base64-encoded) via kicad-cli.

sch_wiring · 20 tools

Purpose: Wires, net labels, power symbols, junctions, no-connects, pin-to-pin connections. Source: crates/konnect-core/src/tools/sch_wiring.rs

ToolDescription
add_wireAdd a wire segment (H or V) between two points. T-junctions are auto-detected and junction dots inserted.
batch_add_wireAdd multiple wire segments in a single file read/write cycle.
delete_schematic_wireDelete a wire segment by UUID or by matching start/end coordinates, pruning the junction dots it leaves unjustified.
batch_delete_schematic_wireDelete multiple wire segments in a single file read/write cycle, pruning the junction dots they leave unjustified.
split_wire_at_pointSplit a wire at a given point, creating two segments and a junction.
add_schematic_net_labelAdd a net label (net_label, global_label, or hierarchical_label).
delete_schematic_net_labelDelete a net label by net name and position.
rotate_schematic_labelRotate a net label to a new angle and update its justify direction.
move_labels_by_offsetMove all labels matching a net name by a given X/Y offset.
batch_rotate_labelsRotate multiple labels by net name in a single file read/write cycle.
add_power_symbolAdd a power symbol (VCC, GND, etc.). Auto-numbers the internal #PWR reference to the lowest number free on the sheet.
add_no_connectAdd a no-connect flag (X marker) to an unconnected pin endpoint.
delete_no_connectRemove a no-connect flag at a given position.
batch_delete_no_connectDelete multiple no-connect flags in a single file read/write cycle.
batch_add_no_connectAdd multiple no-connect flags in one write. Marking one MCU's unused pins is routinely 15–20 flags.
add_junctionAdd a junction dot at a point where wires cross or T-intersect.
batch_add_junctionAdd multiple junction dots in a single file read/write cycle.
connect_to_netConnect a pin to a named net by adding a short wire stub + net label. Name the pin (reference + pin_number) or give its coordinates; the stub direction defaults to auto, pointing away from the symbol body.
connect_pinsConnect two component pins by reference+pin number. Looks up pin coordinates and routes a wire.
add_schematic_connectionConnect two schematic points directly with a wire (auto H+V routing). Use connect_pins if you have references instead of coordinates.

sch_bus · 4 tools

Purpose: Buses, bus entries, and fanning a group of pins out onto a bus. Source: crates/konnect-core/src/tools/sch_bus.rs

ToolDescription
add_busAdd a bus segment. Geometrically a wire; KiCad treats it as a bus, carrying the members named by the bus label (NAME[1..6] or {A B C}). Wires join it only through a bus entry.
batch_add_busAdd multiple bus segments in one file read/write cycle.
add_bus_entryAdd the 45° tick that connects a wire to a bus. Required — a wire and bus that merely touch are not connected. at is the wire-side end; dx/dy give the signed offset to the bus side.
connect_pins_to_busFan a set of pins onto a bus: wire stub + bus entry + member label per pin. Bus membership is by name, so the label is part of the connection, not decoration.

sch_analysis · 15 tools

Purpose: Net connectivity, pin queries, trace paths, overlap/orphan detection. Source: crates/konnect-core/src/tools/sch_analysis.rs

ToolDescription
list_schematic_wiresList all wire segments with start/end coordinates and UUIDs.
list_schematic_netsList all distinct net names from net labels, global labels, and power symbols.
list_schematic_labelsList all label instances (net/global/hierarchical) with positions, names, and types.
get_net_connectionsGet all pins and labels connected to a named net.
get_net_connectivityBuild the full connectivity graph for a net using union-find. Returns wires, labels, and T-junction locations.
get_pin_connectionsGet the net connected to a specific pin by tracing wires from the pin endpoint.
get_pin_net_nameReturn just the net name for a specific pin on a component.
get_component_netsGet all nets connected to every pin of a component.
get_net_componentsGet all components (and their pins) connected to a named net.
trace_from_pointTrace connectivity from any (X,Y) point — returns what is at that point and the net it belongs to.
find_orphan_itemsFind dangling wire ends, floating labels, and unconnected pin endpoints (0.05mm tolerance).
find_shorted_netsDetect accidentally merged nets — pairs of distinct net names sharing a wire path.
find_single_pin_netsFind nets with only one label/connection — often indicates a missing counterpart.
get_connected_itemsGet all wires, labels, and components connected to a given component by tracing each of its pins.
check_schematic_overlapsFind overlapping symbols or labels that may indicate placement errors.

sch_batch · 12 tools

Purpose: Bulk add, edit, delete, and move schematic elements in one call. Source: crates/konnect-core/src/tools/sch_batch.rs

ToolDescription
batch_connect_to_netConnect many pins to a named net by adding labels at each endpoint, oriented away from the symbol body. Single read → all labels inserted → single write.
batch_deleteDelete multiple schematic items (wires, labels, junctions, components) by UUID or reference — single file write.
bulk_move_schematic_componentsMove multiple components by a uniform dx/dy offset in a single atomic write.
batch_edit_schematic_componentsApply field updates (Value, Footprint, custom properties) to multiple components in a single atomic write.
batch_delete_schematic_componentsDelete multiple components by reference designator in a single atomic write.
connect_passthroughAdd a wire stub and matching net label at a point to route a signal through a region without drawing a full path. Direction defaults to auto.
add_schematic_textAdd a text annotation (non-net label) to the schematic at a given position.
get_schematic_layoutReturn a compact spatial summary of the schematic: component positions, bounding box, optionally wires and labels.
validate_wire_connectionsCheck all wire endpoints for floating ends not connected to a pin, label, or another wire.
validate_component_connectionsCheck that every non-passive pin has at least one wire or label connected. Reports unconnected pins.
batch_place_componentsPlace multiple symbols from KiCAD libraries in a single file read/write cycle. Pass explicit references -- there is no auto-numbering; an omitted reference becomes '?' like an eeschema-unannotated symbol, same as add_schematic_component.
batch_connect_pinsConnect multiple component pin pairs by reference and pin number, in a single file read/write cycle.

sch_export · 7 tools

Purpose: Export schematic to SVG/PDF/netlist, run ERC, and synchronize a live PCB. Source: crates/konnect-core/src/tools/sch_export.rs

ToolDescription
export_schematic_svgExport a schematic sheet to an SVG file using kicad-cli.
export_schematic_pdfExport a schematic sheet to a PDF file using kicad-cli.
generate_netlistGenerate a KiCAD netlist file from the schematic using kicad-cli.
export_netlist_summaryReturn a human-readable JSON netlist summary (components, nets, pin counts). Does not require kicad-cli.
run_ercRun the Electrical Rules Check via kicad-cli and return violations filtered by severity.
fix_connectivityScan for near-miss wire endpoints within snap_tolerance of a pin/label and snap them into place. Supports dry_run.
update_pcb_from_schematicPlan or atomically apply saved schematic hierarchy changes to the live KiCad PCB. Defaults to a non-mutating dry run; apply requires its exact plan revision. Preserves placement, routing, board-only footprints, and footprint artwork.

sch_hierarchy · 12 tools

Purpose: Hierarchical sheets: add/edit/move/delete/duplicate a sheet, hierarchy and page-numbering queries, import/add/edit/delete sheet pins, pin/label sync validation. Source: crates/konnect-core/src/tools/sch_hierarchy.rs

ToolDescription
add_hierarchical_sheetInsert a hierarchical sheet into a parent schematic, linking it to a child .kicad_sch file. Creates the child file if it doesn't exist, or links to an existing one (multi-instance reuse). Patches existing symbols' instance paths if the linked file already has components.
edit_sheetRename, resize, reposition, or repoint (Sheetfile) an existing sheet.
move_sheetReposition a sheet on the parent canvas without touching any other field.
delete_sheetRemove a sheet reference from the parent schematic. Does not delete the child file.
duplicate_sheetCopy an existing sheet and its child file under a new name/file, offset from the source, with an independent internal UUID.
get_sheet_hierarchyRecursively walk the sheet tree, returning nested JSON with each sheet's name/file/uuid/position/size/page/pins and its own children.
renumber_sheet_pagesWalk the whole sheet tree and reassign sequential page numbers in depth-first order, fixing gaps left by delete/duplicate.
import_sheet_pinsScan the child sheet's hierarchical_labels and auto-generate matching pins on the parent sheet block, skipping names that already have a pin — the primary way pins get created.
add_sheet_pinManually add a single pin to an existing sheet block.
edit_sheet_pinRename a pin, change its electrical type, or reposition it along the sheet border.
delete_sheet_pinRemove a single pin without touching the rest of the sheet.
validate_sheet_pinsRead-only. Walk the sheet tree and report hierarchical_labels with no matching parent pin, and pins with no matching child label.

PCB

pcb_board · 11 tools

Purpose: Board outline, layers, zones, mounting holes, board text, SVG logo import. Source: crates/konnect-core/src/tools/pcb_board.rs

ToolDescription
set_board_sizeSet the PCB board outline to a rectangle on the Edge.Cuts layer.
get_board_infoReturn metadata about the PCB: title, revision, company, paper size, layer_count, copper_layer_count, and net_count (counted from the tree, so KiCad 10 boards report real numbers instead of 0).
get_board_extentsReturn the bounding box of all objects on the board (IPC, falls back to file parse).
get_layer_listReturn all layers defined in the board: id, name, type, plus the optional user_name label and a copper flag.
add_layerAdd a new inner copper or technical layer to the board stack. Rejects a non-canonical layer name — KiCad refuses to open a board containing one. Use the canonical name and pass your own label as its user name.
set_active_layerSet the active layer recorded in the board file's setup section.
add_board_outlineAdd a rectangular board outline on the Edge.Cuts layer at specified coordinates.
add_mounting_holeAdd an NPTH mounting hole footprint at the specified position.
add_board_textAdd a silkscreen or fabrication text string to the board.
add_zoneAdd a copper fill zone polygon on a specified layer and net.
import_svg_logoImport an SVG file as filled silkscreen/copper artwork (curves flattened to polygons).

pcb_components · 15 tools

Purpose: Place, move, rotate, align, and duplicate PCB footprints. Source: crates/konnect-core/src/tools/pcb_components.rs

ToolDescription
place_componentPlace a footprint through live KiCAD IPC when reachable, or use a revision-aware file fallback when no KiCAD process can hold the board open. The fallback preserves complete footprint content and rejects duplicate references.
move_componentMove a placed footprint to a new X/Y position via KiCAD IPC.
rotate_componentSet the rotation angle of a placed footprint via KiCAD IPC.
delete_componentRemove a footprint from the board via KiCAD IPC.
edit_componentUpdate the value or other properties of a placed footprint via KiCAD IPC.
find_componentFind a footprint by reference designator and return its position.
list_board_footprint_graphicsList the graphic items inside a footprint placed on the board — silkscreen, fabrication, and courtyard artwork — with the UUID needed to edit one. Reports editable, plus outlines and holes for polygons. Requires KiCAD running with the board open.
edit_board_footprint_graphicReplace the vertices of a single-outline polygon inside a placed footprint, selected by UUID, without re-placing the part. Anything with multiple outlines or holes is refused by name rather than flattened. Requires KiCAD running with the board open.
get_component_padsReturn pad positions and net assignments for a footprint. A pad whose net node is present but unreadable reports null rather than an empty string, so "no net" stays distinguishable from "could not read it".
get_pad_positionReturn the schematic-space position of a specific pad number on a footprint.
get_component_listList all footprints on the board with positions, layers, and values.
place_component_arrayPlace multiple copies of a footprint in a grid or line array via KiCAD IPC.
align_componentsAlign multiple footprints along a common X or Y axis via KiCAD IPC.
duplicate_componentDuplicate an existing footprint at a new position via KiCAD IPC.
get_board_2d_viewRender the PCB as a 2D image using kicad-cli; returns base64 PNG.

pcb_routing · 12 tools

Purpose: Traces, vias, copper pours, net classes, differential pairs. Source: crates/konnect-core/src/tools/pcb_routing.rs

ToolDescription
add_netAdd a new net entry to the PCB file (S-expression insert, no IPC required). Pre-KiCad-10 boards only: KiCad 10 has no top-level net table, so this fails closed there and points at route_trace / add_via / add_copper_pour, which create a net by naming it on copper.
route_traceRoute a trace segment between two points on a copper layer via KiCAD IPC.
route_pad_to_padRoute a direct trace between two pads of named components (L-bend routing) via IPC.
add_viaAdd a through-hole via at a position and assign it to a net via IPC.
add_copper_pourAdd a copper fill zone polygon on a layer/net via S-expression insert.
delete_traceDelete a trace segment identified by its UUID via KiCAD IPC.
query_tracesList trace segments on the board, optionally filtered by net and/or layer.
get_nets_listReturn all nets defined on the PCB via KiCAD IPC.
modify_traceModify a trace segment by deleting and re-adding it with new parameters.
create_netclassCreate or update a netclass in the project's net_settings (the sibling .kicad_pro, where KiCad keeps netclasses since v7). Never touches the board file.
assign_net_to_classAssign a net to an existing netclass via a netclass_patterns entry in the .kicad_pro; reassigning moves the entry.
route_differential_pairRoute a differential pair (two parallel traces with a specified gap).

pcb_export · 13 tools

Purpose: Gerber, PDF, SVG, 3D model, BOM, pick-and-place, DRC, DXF/GenCAD/IPC-2581/ODB++. Source: crates/konnect-core/src/tools/pcb_export.rs

ToolDescription
export_gerberExport Gerber production files for all copper/mask layers using kicad-cli.
export_pdfExport the PCB layout to a PDF file using kicad-cli.
export_svgExport the PCB layout to an SVG file using kicad-cli.
export_3dExport the PCB as a 3D model (STEP or VRML) using kicad-cli.
export_bomGenerate a Bill of Materials (BOM) CSV from the schematic's component data.
export_netlistExport the PCB netlist in KiCAD or IPC-D-356 format.
export_position_fileGenerate a component placement (pick-and-place) position file for SMT assembly.
export_dxfExport the PCB to DXF, one file per layer, using kicad-cli. For mechanical CAD interchange.
export_gencadExport the PCB in GenCAD format using kicad-cli.
export_ipc2581Export the PCB in IPC-2581 format using kicad-cli — a unified fab/assembly/test data format.
export_odbExport the PCB in ODB++ format using kicad-cli — a unified fabrication data format.
refill_zonesRefill all copper pour zones using kicad-cli (zone-fill).
get_drc_violationsRun the Design Rule Check and return a list of violations.

Library

library · 17 tools

Purpose: Symbol libraries, footprint libraries, search and registration. Source: crates/konnect-core/src/tools/library.rs

ToolDescription
create_footprintCreate a new footprint (.kicad_mod) file from a pad layout description.
edit_footprint_padEdit or renumber the first or every matching pad in an existing .kicad_mod.
set_footprint_graphicsAtomically append, replace, or delete line, arc, rectangle, circle, and polygon primitives on one footprint layer. Replacement/deletion preserves unrelated source and rejects graphics referenced by a group.
set_footprint_metadataAtomically replace a footprint description, tags, or supported attributes while preserving unrelated source. Empty tags or attributes remove their block.
set_footprint_modelsAtomically append, replace, or delete one or more top-level 3D model blocks with optional offset, scale, and rotation transforms.
register_footprint_libraryRegister a local footprint library directory in the KiCAD global or project library table. Set replace_existing to update a stale URI in place while preserving entry metadata.
list_footprint_librariesList all registered footprint libraries (global and/or project).
create_symbolCreate a new KiCAD schematic symbol and append it to a .kicad_sym library.
delete_symbolDelete a symbol definition from a .kicad_sym library.
list_symbols_in_libraryList all symbol names defined in a .kicad_sym library file.
register_symbol_libraryRegister a .kicad_sym library file in the KiCAD global or project symbol table. Reports inserted/unchanged/updated; set replace_existing to update a stale URI in place while preserving entry metadata.
list_symbol_librariesList all registered symbol libraries (global and/or project).
search_symbolsSearch for symbols across all registered libraries by name or keyword.
list_library_footprintsList all footprints in a specific registered library (.pretty directory).
get_footprint_infoReturn detailed information about a footprint. Set include_graphics (and optionally graphics_layer) to inspect supported top-level primitives, geometry, stroke, fill, and item IDs.
search_footprintsSearch for footprints across all registered libraries by name or keyword.
get_symbol_infoReturn detailed information about a schematic symbol: pins, properties, description.

Integration

integration · 9 tools

Purpose: JLCPCB parts database, Freerouting autoroute, datasheet URLs. Source: crates/konnect-core/src/tools/integration.rs

ToolDescription
download_jlcpcb_databaseDownload or update the local JLCPCB parts database cache (SQLite).
search_jlcpcb_partsSearch the local JLCPCB database by keyword, value, or category.
get_jlcpcb_partRetrieve full details for a single JLCPCB part by LCSC part number.
suggest_jlcpcb_alternativesSuggest JLCPCB-stocked alternatives for a given component value and footprint.
get_jlcpcb_database_statsStatistics about the local JLCPCB cache: part count, last updated, file size.
enrich_datasheetsFetch and cache datasheet URLs for all components in a schematic (LCSC API).
get_datasheet_urlRetrieve the datasheet URL for a component by MPN or LCSC ID.
autorouteRun Freerouting autorouter: export DSN → autoroute → import SES result.
check_freeroutingVerify that the Freerouting JAR is available and return its version.

Verification

verification · 8 tools

Purpose: ERC, DRC, design rules, KiCAD UI control. Source: crates/konnect-core/src/tools/verification.rs

ToolDescription
run_drcRun the Design Rule Check on the PCB and return structured violation results.
set_design_rulesSet board-level design rules (clearance, trace width, via size) in the PCB file.
get_design_rulesReturn the current design rule constraints defined in the PCB file.
check_kicad_uiCheck whether the KiCAD GUI application is running and responsive.
launch_kicad_uiLaunch the KiCAD GUI application and optionally open a project file.
copy_routing_patternCopy a routing pattern (traces and vias) from one region of the board to another.
set_layer_constraintsSet per-layer design constraints (min trace width, clearance) in board setup.
check_clearanceCheck the physical clearance (distance) between two components on the PCB.

Configuration

config · 7 tools

Purpose: User preferences, project rules, design rules, fab constraints. Call load_user_config at session start. Source: crates/konnect-core/src/tools/config.rs

ToolDescription
load_user_configLoad the user's global Konnect preferences (manufacturers, fab constraints, default passives, design rules). Call at session start.
save_user_configUpdate a user preference using dot-notation, e.g. fab_constraints.fab_house.
load_project_configLoad project-specific config from <project_dir>/.konnect/project.json. Project overrides user.
save_project_configSave a project-specific rule or override (same dot-notation as save_user_config).
get_effective_configReturn the merged config (user defaults + project overrides). The config Claude should use for design decisions.
add_design_ruleAdd a natural-language design rule Claude should follow. Examples: "Always use 100nF X7R for MCU decoupling within 3mm of power pin".
list_design_rulesList all active design rules (user-level + project-level).

Design Review

design_review · 6 tools

Purpose: AI-powered design audits: decoupling, connections, power rails, DFM, BOM health. Source: crates/konnect-core/src/tools/design_review.rs

ToolDescription
audit_decouplingCheck that all ICs have appropriate decoupling caps. Finds power pins without nearby caps and flags wrong values.
audit_connectionsCheck for common connection mistakes: missing pull-ups on I2C/reset, missing series resistors on LEDs, floating inputs, shorted outputs.
audit_power_railsCheck power rail integrity: missing bulk capacitance, no test points, missing regulator output caps.
audit_manufacturingDFM checks for the configured fab house: component spacing, silkscreen overlap, via-in-pad, acid traps, board-outline issues.
run_design_reviewRun all available audit checks across every reachable schematic sheet and produce a consolidated report with status, coverage, and diagnostics. Returns INCOMPLETE rather than approval when coverage is partial or failed.
check_bom_healthAnalyze the BOM for supply-chain risks: parts with no MPN, lifecycle warnings, low stock, unavailable from preferred distributors.

Templates

templates · 4 tools

Purpose: Reference circuit library — USB-C, LDO, buck converter, STM32, I2C, LED — verified component values. Source: crates/konnect-core/src/tools/templates.rs

ToolDescription
search_templatesSearch the reference circuit template library. Returns matches for common subcircuits; templates have verified component values.
get_templateGet full details for a template: components, connections, design notes. Use the template ID from search_templates.
apply_templateInstantiate a template into the current schematic. Places all components and wires per the connection map; net_mappings re-binds template nets to project nets.
list_template_categoriesList all available template categories and the number of templates in each.

Built-in templates (loaded by load_all_templates in templates.rs): usb_c_5v_sink, ldo_3v3, stm32_minimal, i2c_pullups, led_indicator, buck_converter.


Manufacturing

manufacturing · 3 tools

Purpose: Design-to-fab pipeline: export Gerber+BOM+positions package, validate for fab house, estimate cost. Source: crates/konnect-core/src/tools/manufacturing.rs

ToolDescription
export_manufacturing_packageGenerate ALL files needed for PCB fab + assembly in one call: Gerbers, drill, fab-house BOM, pick-and-place. Targets JLCPCB, PCBWay, etc.
validate_for_manufacturingPre-flight check before ordering: verifies the design is ready for the target fab house (board outline, design rules, BOM completeness, assembly constraints).
estimate_costEstimate total manufacturing cost (PCB + components + assembly) with itemized breakdown.

Appendix: Structural observations

Is the structure intelligent?

Yes — the split holds up. A few observations worth tracking as the tool surface grows:

  1. Categories mirror the KiCAD editor boundaries — Schematic (sch_*), PCB (pcb_*), plus library/integration/verification/review/templates/manufacturing as cross-cutting concerns. A new tool's home is usually obvious.

  2. Batch tools are split across two places:

    • sch_batch holds top-level batch primitives (batch_connect_to_net, batch_delete, bulk_move_schematic_components, etc.) plus validation
    • sch_wiring / sch_components also contain batch_* tools (batch_add_wire, batch_delete_no_connect, batch_rotate_labels, batch_get_schematic_pin_locations, batch_delete_schematic_components, batch_edit_schematic_components) The split is defensible (tight-scope batches live with their domain; cross-domain batches live in sch_batch) but worth a one-paragraph convention note in DEV.md so future additions land consistently.
  3. Cross-toolset cleanups (historical notes):

    • search_footprints and get_symbol_info were originally in verification; moved to library where they belong semantically. Users who were loading verification for these will be auto-redirected by the smart "tool not loaded" error.
    • get_drc_violations (pcb_export) and run_drc (verification) run the same kicad-cli check. Their tool descriptions now cross-reference each other and steer the LLM toward run_drc for interactive use (cleaner summary with error/warning counts) and get_drc_violations for bundling into a build package.

Implementation notes

  • The tool!(name, description, input_schema, handler) macro lives in crates/konnect-core/src/tools/mod.rs and produces a ToolDef inserted into each toolset's tools() vec.
  • Dispatch: router::registry::tools_for(name) maps each toolset string to its tools::<mod>::tools() vec; handler.rs looks up tools/call in the currently-loaded toolsets. If the tool exists but its toolset isn't loaded, the error names the owning toolset for single-hop recovery (router::ToolRouter::find_toolset_for_tool).
  • Some schematic handlers are mid-migration from raw konnect-sexp to the typed konnect-schematic-editor model (Phase 2 Waves 1–4, see commits 1314ed2f92b3b1). Tool names and semantics are unchanged; only the internal implementation is in flux.

Regenerating this doc

The tool list is extracted mechanically from the tool!(...) invocations in crates/konnect-core/src/tools/*.rs. To regenerate after adding tools, re-run the same extraction and re-verify counts against registry.rs::ALL_TOOLSETS — the row count in each table here must equal each toolset's tool_count.