Skip to main content
Glama

si_synthesize_stackup_for_interfaces

Synthesize a PCB stackup that meets impedance requirements for specified interfaces. Get recommendations for layer count, dielectrics, copper weight, and net class settings.

Instructions

Synthesise a PCB stackup that meets the impedance requirements of the given interfaces.

Analyses each InterfaceSpec dict and recommends:

  • Layer count

  • Dielectric material

  • Copper weight per layer

  • Outer dielectric thickness for target impedance

  • Net class settings (impedance, clearance, diff-pair gap)

Args: interfaces: List of InterfaceSpec dicts (matching project_set_design_intent interface format). Each must have at least kind and optionally impedance_target_ohm, differential, diff_skew_max_ps. cost_tier: "standard" (FR4), "midloss" (FR4 mid/low-loss), "highspeed" (Rogers/Megtron). Overrides material selection. board_thickness_mm: Target board thickness in mm (1.0, 1.6, 2.0, 3.2).

Returns: Recommended stackup specification and net class table in human-readable markdown, ready to pass to pcb_set_stackup() and pcb_set_net_class().

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cost_tierNostandard
interfacesYes
board_thickness_mmNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It clearly states the tool 'recommends' a stackup rather than modifying anything, and notes that cost_tier 'Overrides material selection' — a behavioral nuance. It also defines the returns as 'human-readable markdown, ready to pass to pcb_set_stackup()', implying it is a read-only analysis. It does not explicitly say 'does not modify the design', but the language is indicative enough.

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 well-structured: a one-sentence summary, a bulleted list of outputs, a compact Args section, and a Returns section. Every line adds informative value with no fluff or redundancy. The front-loaded purpose sentence makes intent immediately clear.

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 complex synthesis tool, the description covers all necessary aspects: inputs (with parameter semantics), outputs (recommended stackup and net class table), and integration context (feed to pcb_set_stackup and pcb_set_net_class). Even though an output schema exists, the description still outlines the return format sufficiently. No critical information appears missing.

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 fully explain parameters. It does: 'interfaces' format is detailed (must have at least 'kind', optional impedance_target_ohm, differential, diff_skew_max_ps), cost_tier values are mapped to materials ('standard' = FR4, 'midloss' = FR4 mid/low-loss, 'highspeed' = Rogers/Megtron), and board_thickness_mm lists valid values (1.0, 1.6, 2.0, 3.2). This goes well beyond the bare schema.

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 clear, specific verb and resource: 'Synthesise a PCB stackup that meets the impedance requirements of the given interfaces.' It lists concrete outputs (layer count, dielectric material, copper weight, etc.), making its purpose unmistakable and differentiating it from sibling tools like si_calculate_trace_impedance or si_generate_stackup.

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?

The description provides clear context for when to use the tool: when you have InterfaceSpec dicts with impedance requirements and need a stackup recommendation. It also indicates the output is 'ready to pass to pcb_set_stackup() and pcb_set_net_class()', linking to downstream usage. However, it does not explicitly name alternatives or say when not to use it, so it lacks for a 5.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Valxyria/kicad-mcp-pro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server