Skip to main content
Glama

confirm_pour_step

Destructive

Run a plane pour on a scratch copy, grade the candidate, and write a new board revision only when accepted—source stays untouched.

Instructions

Run the plane router on a scratch copy of the board, grade its candidate, and only if accepted write a NEW board revision with the zone (plus any vias/tracks the plane script added); the source is untouched. The revision_token is single use.

baseline: the dict from pin_rule_baseline, REQUIRED (this step never pins silently; an empty baseline is refused as incomplete). Input preparation (propose_input_preparation) must have run first: a board with copper-layer text is refused.

What status poured proves: the candidate was graded by verify_board's gate, the zone is filled (measured in a kicad-cli refilled copy; the file on disk holds the outline only) and no pad was found isolated by the checks listed in the result. It does NOT prove the board is connected or complete: each pad in pads carries connectivity: proven|unproven (unproven pads, e.g. waiting for a via, and every open signal remain). Only verify_board certifies a board.

Cost per confirm: about 12 gate runs (kicad-cli DRC) plus connectivity runs, capped at 40 in total; expect minutes, not seconds. Over the cap a pad is never accepted unproven.

In the result, pcb_path is the new revision (same as output_pcb) and source_pcb is the board you passed in; both gates are stale until verify_board runs on the revision.

Input Schema

NameRequiredDescriptionDefault
parityYes
baselineYes
pcb_pathYes
parity_reasonNo
revision_tokenYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the annotations: it discloses the scratch-copy semantics (source untouched), the single-use token, the cost profile (~12 gate runs, capped at 40, minutes not seconds), and precisely what `poured` does and does not prove (no pad proven isolated, but connectivity may still be `unproven`). It also warns that both gates are stale until verify_board runs — behavior an agent could not infer from destructiveHint alone.

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 the action and scratch-copy semantics, then layers preconditions separately from the meaning of `poured`. Dense but almost every clause is load-bearing; it runs slightly long, though the detail is justified for a destructive, minutes-long operation.

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?

With no output schema, the description compensates by explaining pcb_path vs source_pcb and the pads connectivity field, plus the stale-gate caveat — all things an agent needs to act on the result. The one real hole is the unexplained `parity`/`parity_reason` parameters, which the description never addresses.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning. It explains baseline (dict from pin_rule_baseline, required), revision_token (single use), and pcb_path (the board passed in), but `parity` (enum required/not_applicable) and `parity_reason` are never mentioned, leaving two of five parameters undefined anywhere.

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 concrete verb chain (run router on a scratch copy, grade candidate, conditionally write a NEW revision) and the resource (board revision with the poured zone). It also explicitly bounds the scope against siblings by noting the source is untouched and that only verify_board certifies a board, so an agent can distinguish it from propose_pour_step and verify_board.

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?

Gives explicit preconditions (baseline from pin_rule_baseline is required, propose_input_preparation must have run, copper-layer text is refused) and when-not conditions (empty baseline refused, single-use token, over the run cap a pad is never accepted unproven). It also names the alternative that actually certifies a board: verify_board.

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