Skip to main content
Glama

Auto-place footprints

auto_place

Pack footprints inside the board outline with Koppar's heuristic placer (ratsnest-driven, courtyard-legal). By default every unlocked footprint moves and locked ones stay; refs names exactly which move (all others stay). Constraints: fixed (exact origin positions), side, keepouts (rectangles), groups, near (ref within maxMm of an anchor), edge (ref to "left|right|top|bottom"). Coarse by design: refine the result with place_footprints.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
edgeNo
nearNo
refsNoThe footprints that may move.
sideNo
fixedNo
shoveNoLegaliser: a part may take a spot held only by movable parts under this fraction of its area (default 0.3, 0 off).
groupsNo
placerNo"ml": the learned placer service (dense, two-sided when two_sided, honours keepouts); the packer when it is unavailable.
refineNo"anneal": refine the placement by simulated annealing from this seed (wirelength-driven, same edge/fixed/keepouts, holes held) — the ML placer's structure with the annealer's tightness.
wait_sNoSeconds to wait for the job (default 55). A job still running comes back with status "running": follow it with get_board_job.
grid_mmNoPlacement grid for the refine step (0.254 = 10 mil); default off.
keepoutsNo
bottom_okNoRefine: footprint-id substrings allowed on the back instead of bottom_any.
design_idYesThe design id returned by import_kicad_project or list_designs.
flip_costNoAnnealing price per bottom-side pad whose net has top pins (default 3).
two_sidedNoSmall two-pad passives go to the back side.
bottom_anyNoRefine: any SMD-only part may go to the back, priced by flip_cost (default with two_sided); LEDs, switches, displays and test points stay on top.
ic_halo_mmNoRefine: room kept around ICs with 48+ pads (default 1.5; 16+ pads and fine pitch get two thirds).
iterationsNoAnnealing iterations for refine (default 600000).
split_costNoRefine: price (mm of wirelength) of an SMD net with pads on both sides, i.e. a via.
hole_room_mmNoRefine: room kept around mounting holes, both sides (default 1).
bottom_excludeNoRefine: regex of refs or footprint ids that stay on top.
overlap_weightNoOverlap price per mm2 at the end of the anneal (default 400; 4000 halves what a dense draw leaves).
connector_room_mmNoRefine: room kept on the board side of every edge connector (default 2.5).
connector_flank_mmNoRefine: room kept on the flanks of every edge connector (default 1.0); sets the pitch of connectors sharing an edge.
bottom_max_height_mmNoRefine: tallest part allowed on the back (3D-model height, default 1.0).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare this is a mutating but non-destructive operation; the description goes further by disclosing the default movement policy, which is the key behavioral risk an agent needs to know before invoking it. It stops short of describing job/wait semantics or what a completed placement looks like.

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?

Three sentences, front-loaded with purpose and then constraint semantics; the constraint list is dense but every clause maps to real parameters. No filler, though the packed middle sentence is heavy to parse.

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 26-parameter placement tool with no output schema, the description covers intent, default behavior, and the main constraint families, which is enough to call it correctly. The placer/refine tuning surface and the job/status flow are documented only in the schema, leaving minor gaps.

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 77%, so a baseline of 3 applies, and the description adds real conceptual framing by grouping and glossing six parameters (fixed = exact origin positions, near = ref within maxMm of an anchor, edge = ref to left/right/top/bottom, keepouts, side, groups). The remaining 20 refined-annealing parameters are left entirely to the schema.

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?

States a specific verb and resource ('pack footprints inside the board outline') and names the mechanism ('Koppar's heuristic placer, ratsnest-driven, courtyard-legal'). It also differentiates itself from the sibling placers by declaring itself 'coarse by design' and routing refinement to place_footprints.

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

Usage Guidelines4/5

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

Gives explicit default behavior (every unlocked footprint moves, locked ones stay) and the condition under which 'refs' overrides that default. It names one follow-up tool (place_footprints), but offers no when-not guidance nor mentions the sibling anneal_place or the in-tool placer/refine alternatives.

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