Skip to main content
Glama

pcb_normalize_vias

Normalize free vias to their Routing Via rule's preferred diameter and hole, or to explicit sizes, with net/size filters and dry-run preview.

Instructions

Set free vias to their Routing Via rule's sizes, or to given ones.

Without size_mils/hole_mils, each via takes its dominant Routing Via rule's preferred diameter and hole. A rule in template mode ("Templates Used To Check Via") is refused for its vias: its size fields are not what it checks, and reading them once set nearly every via on a board to a pad no larger than its hole. Use pcb_apply_via_template for a template rule. Any target without an annular ring is refused. Refused vias are left as they were.

Args: size_mils, hole_mils: An explicit diameter and hole, together. net: Only vias on this net. from_size_mils, from_hole_mils: Only vias at this size now (within 0.05 mil), e.g. to fix one group. dry_run: Report what would change and change nothing.

Returns: changed, unchanged, failed (did not read back), the refusal counts, and before/after: vias counted by "diameter/hole" in mils. success is false when any via was refused or failed.

Input Schema

NameRequiredDescriptionDefault
netNo
dry_runNo
hole_milsNo
size_milsNo
from_hole_milsNo
from_size_milsNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.1

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does it well: it discloses refusal conditions (missing annular ring, template-mode rule), that refused vias are left untouched, that some vias may fail to read back, and that success is false when anything is refused or failed. It omits only things like undo/reversibility and permission requirements.

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 behavior statement is front-loaded and the Args/Returns blocks are well structured, but the prose is dense and slightly novelistic ('reading them once set nearly every via on a board...'), which costs a little tightness. Still, no sentence is filler.

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

Completeness5/5

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

For a six-parameter mutation with zero annotation and zero schema-description coverage, the description supplies defaults, refusal logic, tolerance, and failure semantics. An output schema exists, so the extra Returns detail is a bonus rather than a necessity.

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

Parameters5/5

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

Schema coverage is 0%, so the description must supply all parameter meaning, and it does: size_mils/hole_mils must be supplied together, from_size_mils/from_hole_mils match 'within 0.05 mil', net restricts scope, and dry_run reports without changing. Every one of the six parameters is given semantics beyond its title.

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 first sentence names a specific verb ('Set') and object ('free vias') and states both modes of operation (rule-derived sizes or explicit sizes). It explicitly separates itself from the sibling pcb_apply_via_template, so an agent can route between them 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 Guidelines5/5

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

It spells out the default path (no size/hole args → dominant Routing Via rule), names the alternative tool and the exact condition that selects it (a rule in template mode), and gives a concrete use case for the from_* filters ('to fix one group'). Exclusions and alternatives are explicit rather than inferred.

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

Deploy Server

Other Tools