Skip to main content
Glama

EasyGerber: AI PCB design, layout, and routing

Check PCB layout for blocking issues

check_board_layout
Idempotent

Checks a saved PCB layout at expectedRevision for manufacturing or layout review. Its geometry and applied electrical requirements must both be current. A missing or stale layout requires generate_layout and completion first; electrical_requirements_not_applied also requires regeneration before checking or manufacturing export. Reuses a current assessment or computes and saves one, which requires write access and normal compute capacity. If the board changes during the check, read get_board again. Returns hasBlockingIssues and actionable blockingIssues; no numeric score or deductions.

Input Schema

NameRequiredDescriptionDefault
boardRefYesPrivate board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy returned references unchanged. Keep it in this conversation or supported private execution state; never put it in logs or source files. A private board link may carry it in its fragment.
expectedRevisionYesLatest saved revision from create_board, update_board or get_board. Reuse it if no intervening change is known. A mismatch returns revision_conflict; read the board again before preparing a new operation.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / data / properties / validation / properties / blockingIssues / items / properties / refs / properties / keepouts
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / data / properties / validation / properties / blockingIssues / items / properties / refs / properties / zones
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. Changed6 schema fields changed
    • removedInput schema / properties / boardId
      Removed value: -{
      -  "description": "Saved board ID from list_boards, create_board, claim_guest_board, or an account board URL. Must be accessible to the current account or guest session.",
      -  "format": "uuid",
      -  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -  "type": "string"
      -}
    • addedInput schema / properties / boardRef
      Added value: +{
      +  "description": "Private board reference. For a new board generate 32 random bytes, encode as unpadded base64url, and prepend egbr1_. Keep this same value for creation retries and every later board operation. Copy returned references unchanged. Keep it in this conversation or supported private execution state; never put it in logs or source files. A private board link may carry it in its fragment.",
      +  "pattern": "^(?:egbr1_[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]|egba1_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\.[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048])$",
      +  "type": "string"
      +}
    • removedInput schema / properties / guestToken
      Removed value: -{
      -  "description": "Private continuation capability from create_board.guestAccess.guestToken or start_guest_session. Reuse it for this guest board. Never print it or save it in a repository.",
      -  "maxLength": 200,
      -  "minLength": 32,
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "boardId",
      -  "expectedRevision"
      -]New value: +[
      +  "expectedRevision",
      +  "boardRef"
      +]
    • addedOutput schema / properties / data / properties / boardRef
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / data / required
      Previous value: -[
      -  "boardRevision",
      -  "validation"
      -]New value: +[
      +  "boardRevision",
      +  "validation",
      +  "boardRef"
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / guestToken / description
      Previous value: -"Private guest-session capability returned by start_guest_session. Never print it or save it in a repository."New value: +"Private continuation capability from create_board.guestAccess.guestToken or start_guest_session. Reuse it for this guest board. Never print it or save it in a repository."
  4. Changed1 schema field changed
    • changedInput schema / properties / expectedRevision / description
      Previous value: -"Saved revision returned by get_board. A mismatch returns revision_conflict; read the board again before preparing a new operation."New value: +"Latest saved revision from create_board, update_board or get_board. Reuse it if no intervening change is known. A mismatch returns revision_conflict; read the board again before preparing a new operation."
  5. Changed2 schema fields changed
    • addedInput schema / properties / boardId / description
      Added value: +"Saved board ID from list_boards, create_board, claim_guest_board, or an account board URL. Must be accessible to the current account or guest session."
    • addedInput schema / properties / expectedRevision / description
      Added value: +"Saved revision returned by get_board. A mismatch returns revision_conflict; read the board again before preparing a new operation."
  6. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false with idempotentHint=true and destructiveHint=false; the description corroborates and enriches this by explaining that the tool reuses a current assessment or computes and saves one, and that this requires write access and normal compute capacity. It also discloses the return shape (hasBlockingIssues, actionable blockingIssues, no numeric score), though "normal compute capacity" stays vague and no latency/rate expectations are given.

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-loaded with the core action and then the prerequisites, with no filler sentences. It is dense — five clauses of preconditions and recovery steps — but each one carries actionable information rather than restating the schema.

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 two-parameter tool with full schema coverage, annotations, and an output schema, the description covers the remaining gaps: prerequisites, the caching/write-access model, and conflict recovery. An agent has everything needed to call it correctly and interpret failure modes.

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 coverage is 100%, so both parameters are already documented in detail, including the revision_conflict behavior. The description only ties the check to expectedRevision ("at expectedRevision") without adding format or constraint detail beyond the schema, so the baseline 3 applies.

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 specific verb and resource ("Checks a saved PCB layout") plus the scope of the check (manufacturing or layout review). It also names the sibling it is not — generate_layout handles the missing/stale case — so an agent can route between them without opening schemas.

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?

Explicit when-to-use and when-not-to-use: a missing or stale layout requires generate_layout and completion first, and electrical_requirements_not_applied requires regeneration before checking or export. It also gives a recovery path (read get_board again if the board changes during the check), leaving nothing to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.