Skip to main content
Glama

Finish the open nets

finish_board

Close what the router left open the way a designer does: for each open net the diagnosis names the copper boxing it in; that copper is ripped (never a poured net), the open nets are routed FIRST into the space, then the ripped nets go back around them; up to rounds rounds, each kept only if KiCad counts fewer unconnected items. Use it after route_board leaves a handful of nets open (route_board's default pipeline already runs three rounds; this adds more, or follows a single route); repair_board never moves the blockers.

Input Schema

NameRequiredDescriptionDefault
roundsNoRip-and-reroute rounds (default 3).
wait_sNoSeconds to wait for the job (default 55). A job still running comes back with status "running": follow it with get_board_job. A job is allowed the time its budget asks for (time_budget_s, total_budget_s, rounds), and survives a server restart (the op starts over from its snapshot; route_board's pipeline goes on from its last finished stage).
reach_mmNoRadius cleared of tracks and vias around a pad with no way out (default 1.5).
design_idYesThe design id returned by import_kicad_project or list_designs.
class_viasNoRoute with the Default class's via instead of the board's smallest legal one.
ml_optionsNo
vias_in_padsNo'allow': vias may sit in pin pads (the board must be ordered with filled and capped vias).
time_budget_sNoRouter budget per routing call (default 120).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / properties / router
      Removed value: -{
      -  "enum": [
      -    "ml",
      -    "ts"
      -  ],
      -  "type": "string"
      -}
  2. Changed1 schema field changed
    • changedInput schema / properties / wait_s / description
      Previous value: -"Seconds to wait for the job (default 55). A job still running comes back with status \"running\": follow it with get_board_job. A job is allowed the time its budget asks for (time_budget_s, total_budget_s, rounds), and survives a server restart (the op starts over from its snapshot)."New value: +"Seconds to wait for the job (default 55). A job still running comes back with status \"running\": follow it with get_board_job. A job is allowed the time its budget asks for (time_budget_s, total_budget_s, rounds), and survives a server restart (the op starts over from its snapshot; route_board's pipeline goes on from its last finished stage)."
  3. Changed1 schema field changed
    • changedInput schema / properties / wait_s / description
      Previous value: -"Seconds to wait for the job (default 55). A job still running comes back with status \"running\": follow it with get_board_job."New value: +"Seconds to wait for the job (default 55). A job still running comes back with status \"running\": follow it with get_board_job. A job is allowed the time its budget asks for (time_budget_s, total_budget_s, rounds), and survives a server restart (the op starts over from its snapshot)."
  4. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses the mutation model: blocking copper is ripped (never a poured net), open nets are routed first, then ripped nets are rerouted around them. It also explains the quality gate—each round is kept only if KiCad counts fewer unconnected items—which is key behavioral context for a routing mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action, constraints, and usage guidance are front-loaded and information-dense. The semicolon-heavy single sentence and phrases like 'the way a designer does' make it slightly denser than necessary, but there is little true filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex routing mutation with eight parameters and no output schema, the description covers the essential process, preconditions, alternatives, and iteration behavior. It leaves return/status handling mostly to the wait_s schema text and get_board_job, and does not explain ml_options, so it is strong but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high at 88%, so most parameter meaning is already supplied by the schema. The description adds useful semantics for `rounds`, including its relationship to route_board's default pipeline and the acceptance rule applied to each round, though it adds little for the remaining parameters such as wait_s, reach_mm, class_vias, vias_in_pads, or ml_options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action—closing open nets left by routing—and explains the rip-and-reroute approach. It explicitly contrasts with repair_board, which never moves blockers, so an agent can distinguish it from route_board and related siblings without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the exact triggering condition: use after route_board leaves a handful of nets open, noting route_board's default pipeline already runs three rounds. It also explains that this tool adds more rounds or follows a single route, and that repair_board is not the right alternative for moving blockers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources