Skip to main content
Glama

Koppar

Anneal a dense placement

anneal_place

Dense placement by simulated annealing: wirelength inside the outline with courtyard gaps, edge connectors held on their edge, fixed and locked parts held, keepout rectangles kept clear (routing corridors), and a per-pad price for the bottom side (flip_cost, mm of wirelength; each bottom-side pad whose net has top-side pins costs a via). Starts from the current positions unless from_scratch. Slower than auto_place (a minute per 600k iterations) and much denser. Check overlapping_pairs and run_drc afterwards.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
t0NoStart temperature (default 15). ~0.5 keeps the current placement and only tidies it (refine, or squeeze into a smaller outline).
edgeNoConnector ref to the edge it sits on, optionally @overhang_mm of its body past the edge (default 0.5).
haloNoRouting room per ref, mm (a number all round, or footprint-local [left, top, right, bottom]).
refsNoThe footprints that may move (default: every unlocked one).
seedNo
fixedNo
shoveNoLegaliser: a part may take a spot held only by movable parts under this fraction of its area (default 0.3, 0 off).
gap_mmNo
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 free parts (0.254 = 10 mil, the designer habit); default off.
keepoutsNoRectangles no part may cover, e.g. a bus corridor.
bottom_okNoFootprint-id substrings allowed on the bottom side (e.g. "0402").
design_idYesThe design id returned by import_kicad_project or list_designs.
flip_costNo
rotationsNo
bottom_anyNoAny SMD-only part may go to the back (priced by flip_cost); LEDs, switches, displays and test points stay on top unless bottom_exclude says otherwise.
ic_halo_mmNoRoom kept around ICs with 48+ pads (default 1.5).
iterationsNo
net_weightNo
refit_fromNoOutline the current placement was drawn in; it is scaled affinely into the new outline before annealing (with t0 ~0.5: shrink a placement that closed).
split_costNoPrice (mm of wirelength) of an SMD net with pads on both sides, i.e. a via.
from_scratchNo
hole_room_mmNoRoom kept around mounting holes on both sides for the screw head and standoff (default 1).
bottom_excludeNoRegex of refs or footprint ids that stay on top regardless.
overlap_weightNoOverlap price per mm2 at the end of the anneal (default 400; 4000 halves what a dense draw leaves).
connector_room_mmNoRoom kept on the board side of every edge connector (default 2.5).
connector_flank_mmNoRoom kept on the flanks of every edge connector (default 1.0).
bottom_max_height_mmNoTallest part allowed on the back (3D-model height, default 1.0): the assembly box grows by the tallest back-side part.

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?

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false) by disclosing what is held fixed (edge connectors, fixed/locked parts), what is preserved (keepouts, courtyard gaps), the bottom-side via cost model, and that placement starts from current positions unless from_scratch. It stops short of saying whether the prior placement is recoverable or how the result is persisted.

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?

Front-loads purpose and constraints, then the comparison to auto_place, then the follow-up actions — a sensible order for a 28-parameter tool. The opening paragraph is long and clause-heavy, but nearly every clause carries information an agent needs.

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 28-param mutation tool with nested objects and no output schema, the description covers the optimization behavior, the async job model (status "running", follow up via get_board_job), and the validation steps to run afterward. Return-value detail is thin, though the wait_s parameter partially covers it.

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?

With 71% schema coverage the schema already carries most parameter meaning, but the description adds real semantics: flip_cost as mm-of-wirelength per bottom-side pad whose net has top-side pins, the coupling of keepouts to routing corridors, and the t0/refine interplay. Several params (seed, rotations, net_weight, split_cost) still get no prose explanation.

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 (dense placement) and method (simulated annealing) with the optimization objective (wirelength inside the outline) spelled out. It explicitly contrasts with the sibling auto_place ("slower... and much denser"), so an agent can distinguish the two without opening either schema.

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?

Names the alternative (auto_place) and the tradeoff that selects this tool (denser but slower, with a concrete runtime figure), and says to follow up with overlapping_pairs and run_drc. It gives no explicit "when not to use" guidance or prerequisite statement beyond the schema-level design_id note.

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