Skip to main content
Glama

Manage symbol footprint links

manage_schlib_footprints
Destructive

List, add, or remove PCB footprint links for a symbol in an Altium .SchLib. Resolve footprints via a .PcbLib path or link by name, with automatic timestamped backups before changes.

Instructions

Manage the footprint links (PCB models) of one symbol in a .SchLib: list them, add one, or remove one. A link names a .PcbLib footprint; add refuses a name already linked and remove refuses one that is not (names match without regard to case), and neither touches the .PcbLib itself. Give library_path on add when Altium should resolve and preview the footprint from a specific library; omit it to link by name only. Every change backs the library up to a timestamped .bak beside it (the five newest are kept) before saving. Use manage_schlib_parameters for parameters such as Value, get_component or read_schlib to see the links together with the rest of the symbol, and update_component to rewrite a symbol wholesale.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filepathYesPath to the Altium SchLib file
operationYesOperation to perform: list (all footprints), add (new footprint link), remove (delete footprint link)
descriptionNoFootprint description (optional for add). Keep to 256 characters if the library will be imported into an Altium 365 workspace — that importer refuses longer ones; a longer description is written and reported as a validation warning.
library_pathNoOptional (add): absolute path to the .PcbLib containing the footprint, written as ModelDatafile0 so Altium can resolve and preview the model. Omit to link by name only (requires the library to be installed/in the project, else 'footprint not found').
component_nameYesName of the symbol to manage footprints for
footprint_nameNoFootprint name (required for add, remove)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

The description substantially expands on the annotations. It discloses mutation and destructive behavior in concrete terms: add/remove change the library, every change creates a timestamped .bak, and only the five newest backups are kept. It also explains edge-case behavior such as case-insensitive name matching, refusal of duplicate/missing links, and the fact that the .PcbLib itself is never modified.

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?

The description is a single dense paragraph with every sentence earning its place. It front-loads the core operation, then covers validation rules, backup behavior, the library_path nuance, and sibling routing in a natural order. No filler or repetition.

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 mutating tool with 6 parameters, no output schema, and a destructive annotation, the description covers everything needed to call it correctly: operations, required/optional parameters, failure modes, side effects, backup behavior, and alternatives. An agent has enough context to select and invoke this tool safely without additional investigation.

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 100%, so the schema already documents every parameter. The description still adds meaningful semantics beyond the schema: add refuses already-linked names, remove refuses unlinked names, matching is case-insensitive, and library_path is tied to writing ModelDatafile0 and Altium resolution. This goes beyond a baseline 3, though the schema remains the primary source for basic parameter definitions.

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 opens with a specific verb and resource: 'Manage the footprint links (PCB models) of one symbol in a .SchLib' and immediately enumerates the supported operations (list, add, remove). It also distinguishes itself from related tools by naming manage_schlib_parameters, get_component/read_schlib, and update_component, so an agent can tell exactly what this tool does and does not do.

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?

Usage guidance is explicit: it states when to pass library_path versus omit it, and it names concrete alternatives for related tasks ('Use manage_schlib_parameters for parameters such as Value', 'get_component or read_schlib to see the links together with the rest of the symbol', 'update_component to rewrite a symbol wholesale'). This leaves little to inference.

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