Skip to main content
Glama

propose_board_rules

Read-onlyIdempotent

Preview changes to a KiCad board's design rules—clearances, track widths, via sizes, and net classes—before writing anything; returns a revision token and lists every change or incoherence.

Instructions

Dry run of setting the board's design rules (minimum clearance, track width, via diameter, via annular width, through-hole diameter, and named net classes with their nets) in the project's .kicad_pro; lists every value that would change, every loosening and every incoherence; writes nothing and returns a revision_token. Lengths are mm. A key absent from the project counts as KiCad's built-in default, never as unset. netclasses: [{name, clearance?, track_width?, via_diameter?, via_drill?, priority?, nets?: [exact net names]}]. allow_loosen: lowering a rule is refused unless this is true; set only after a human has read the listed items; never set it to get past a refusal on your own. allow_incoherent: a class value below a board minimum is refused unless this is true; set only after a human has read the listed items; never set it to get past a refusal on your own. Order for a project: import_from_schematic -> board_outline -> board_rules -> input_preparation -> silkscreen_minimums -> pin_rule_baseline -> pour step -> routing. Every confirm writes a NEW board revision beside the source (the source is untouched) and returns it as output_pcb (also pcb_path; the board you passed in is source_pcb): continue from that path. Both gates are stale until verify_board runs; only verify_board certifies.

Input Schema

NameRequiredDescriptionDefault
pcb_pathYes
netclassesNo
output_dirNo
allow_loosenNo
via_diameterNo
min_clearanceNo
min_track_widthNo
allow_incoherentNo
min_via_annular_widthNo
min_through_hole_diameterNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description corroborates ("writes nothing and returns a revision_token"), then adds real behavioral context: absent keys fall back to KiCad built-in defaults, loosening and incoherent class values are refused unless the gate flags are set, lengths are mm. The paragraph about confirms writing a new board revision and returning output_pcb describes other tools rather than this one, which adds pipeline context but risks blurring this tool's read-only nature.

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

Conciseness5/5

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

Dense but front-loaded: the dry-run behavior and return value come first, then parameter semantics, then gates, then workflow ordering. Parenthetical enumerations replace whole sentences and nothing is repeated.

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 10-parameter, no-output-schema, zero-coverage tool this is a strong description — it explains what is reported (every value that would change, every loosening, every incoherence) and what is returned (revision_token). Remaining gaps are output_dir and the exact shape of the reported change list.

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 0% schema description coverage the description carries the load and does much of it: units (mm), default-vs-unset semantics for missing keys, the full netclasses entry shape with per-class fields, and the human-approval gating for allow_loosen/allow_incoherent. It leaves pcb_path vs source_pcb, output_dir, and the distinction between via_diameter and min_via_annular_width unaddressed.

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 ("Dry run of setting the board's design rules ... in the project's .kicad_pro") and immediately enumerates the rule families covered. The "dry run" framing cleanly separates it from the sibling confirm_board_rules, so an agent can choose 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?

Gives explicit when-to conditions (preview before confirming, gate flags only after a human reads the listed items, sequencing relative to verify_board and the surrounding pipeline). It never names confirm_board_rules as the follow-up action explicitly, relying on the sibling name and "Dry run" to imply the pairing.

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