Skip to main content
Glama

sch_fix

Move symbol fields and local labels out of collisions in KiCad without affecting symbols, pins, wires, or connectivity. Dry-run by default; write mode edits only if the netlist remains unchanged.

Instructions

Move symbol fields (reference, value) and local labels out of collisions. Never touches symbols, pins, wires or connectivity. Dry run by default. With write=true it edits the files, checks the kicad-cli netlist is unchanged and restores the files if not. KiCad must be closed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sheetNoPage: name path (/Power/), sheet or instance name (HighSideSwitch12V_PumpMain) or file name
writeNo
labelsNo
projectYesPath to .kicad_pro, root .kicad_sch or the project directory
horizontalNoAlso make vertical reference/value text horizontal

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so exceptionally well. It discloses the dry-run default, the write-then-verify-and-restore workflow, the hard safety constraint (never touches symbols/pins/wires/connectivity), and the external precondition that KiCad must be closed.

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?

Four dense sentences, each carrying essential information: the operation, the safety boundary, the dry-run/write semantics, and the external precondition. There is no fluff, and the most important action is front-loaded.

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?

The description is largely complete given the schema already covers sheet, project, and horizontal parameters. The main gap is the absence of any statement about what output is produced during a dry run, but this is minor alongside the strong behavioral coverage.

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 60%, so the description needs to add partial value, and it does. The 'dry run by default' statement clarifies the write parameter's default behavior, and 'local labels' maps directly to the labels parameter. It does not explicitly cover sheet or horizontal, but those already have schema descriptions.

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 description clearly states a specific action and resource: 'Move symbol fields (reference, value) and local labels out of collisions.' It also adds a differentiating scope clause ('Never touches symbols, pins, wires or connectivity'), which helps distinguish this fix tool from sibling analysis/rendering tools.

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

Usage Guidelines3/5

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

Context is implied: use this when symbol fields or local labels collide, and it is safe for a dry run by default. However, there is no explicit statement of when to prefer this over siblings like sch_lint or sch_free_space, and no when-not-to-use guidance beyond the structural exclusion.

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