Skip to main content
Glama

Read a board's schematic

read_schematic
Read-only

Use when the user asks how a public board is wired, what a component (e.g. U1) connects to, or which pins are on a net (e.g. GND), in that design. Returns the board's latest geometry-free connectivity. No focus returns a bounded overview (components + a net index); ref returns one component and the nets it connects to with the other pins on those nets; net returns the pins on that net. These are in-design connections, not an authoritative manufacturer pinout, and a very large design may be truncated (the response flags this). Net names are the SCHEMATIC's (a hierarchical net is '/CC2', a KiCad auto-name is 'Net-(U1-Pad3)'); PCB-style and leaf spellings are resolved when unambiguous, and a miss lists the nearest names, so list nets first when unsure rather than guessing. Prefer a focused ref or net over repeated overviews. Use get_bom for purchasing and read_file for raw source. If nets are still computing, continue with the components shown and try again shortly rather than inferring connectivity.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "board": "<board>"
    },
    "name": "read_schematic"
  }
}

Input Schema

NameRequiredDescriptionDefault
netNoOptional. One net name (e.g. GND, USB_DP): returns the pins on it. Prefer this for 'what is on net X'. Provide at most one of ref or net.
refNoOptional. One reference designator (e.g. U1, J2): returns it plus the nets it connects to and the other pins on those nets. Prefer this over a full overview for a wiring or pin question. Provide at most one of ref or net.
boardYesA board: handle/slug or a boardrepo.com URL. Use search_boards for public boards or list_my_boards for personal and authorised organisation boards. Do not invent references.
versionNoWhich saved version to read: a version number (3 or "v3"), a versionId from list_board_versions, "latest", or a release tag such as "rev-A". Omit for the latest version. Results echo the version they read; pass its id back to stay on it.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / version
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    {
      +      "maxLength": 64,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  ],
      +  "description": "Which saved version to read: a version number (3 or \"v3\"), a versionId from list_board_versions, \"latest\", or a release tag such as \"rev-A\". Omit for the latest version. Results echo the version they read; pass its id back to stay on it."
      +}
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "componentCount": {
      +        "type": "integer"
      +      },
      +      "found": {
      +        "type": "boolean"
      +      },
      +      "matchStatus": {
      +        "enum": [
      +          "not_found",
      +          "unknown"
      +        ],
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "netCount": {
      +        "type": "integer"
      +      },
      +      "netsAvailable": {
      +        "type": "boolean"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "requestedNet": {
      +        "type": "string"
      +      },
      +      "requestedRef": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "type": "string"
      +      },
      +      "truncated": {
      +        "type": "boolean"
      +      },
      +      "url": {
      +        "type": "string"
      +      },
      +      "version": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "type": "string"
      +          },
      +          "latest": {
      +            "type": "boolean"
      +          },
      +          "number": {
      +            "type": "integer"
      +          },
      +          "tags": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "number",
      +          "latest",
      +          "tags"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "found"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "appError": {
      +        "type": "string"
      +      },
      +      "bytesNeeded": {
      +        "type": "integer"
      +      },
      +      "cause": {
      +        "type": "string"
      +      },
      +      "currentHead": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "currentPolicyHash": {
      +        "type": "string"
      +      },
      +      "docsUrl": {
      +        "type": "string"
      +      },
      +      "fix": {
      +        "type": "string"
      +      },
      +      "freeBytes": {
      +        "type": "integer"
      +      },
      +      "issues": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "message": {
      +              "type": "string"
      +            },
      +            "path": {
      +              "type": "string"
      +            },
      +            "received": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "path",
      +            "message"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "operationId": {
      +        "type": "string"
      +      },
      +      "projectsLeft": {
      +        "type": "integer"
      +      },
      +      "reason": {
      +        "type": "string"
      +      },
      +      "resetsAt": {
      +        "type": "string"
      +      },
      +      "retryAfterMs": {
      +        "type": "integer"
      +      },
      +      "retryable": {
      +        "type": "boolean"
      +      },
      +      "sourceSaved": {
      +        "type": "boolean"
      +      },
      +      "storedResultAvailable": {
      +        "type": "boolean"
      +      },
      +      "suggestions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "board": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "board",
      +            "name",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "uploadLinks": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "bytes": {
      +              "type": "integer"
      +            },
      +            "expiresAt": {
      +              "type": "string"
      +            },
      +            "headers": {
      +              "type": "object"
      +            },
      +            "method": {
      +              "const": "PUT"
      +            },
      +            "path": {
      +              "type": "string"
      +            },
      +            "sha256": {
      +              "type": "string"
      +            },
      +            "uploadUrl": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "path",
      +            "bytes",
      +            "sha256",
      +            "uploadUrl",
      +            "method",
      +            "headers",
      +            "expiresAt"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "url": {
      +        "type": "string"
      +      },
      +      "visibility": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "reason",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties
      Removed value: -{
      -  "componentCount": {
      -    "type": "integer"
      -  },
      -  "found": {
      -    "type": "boolean"
      -  },
      -  "matchStatus": {
      -    "enum": [
      -      "not_found",
      -      "unknown"
      -    ],
      -    "type": "string"
      -  },
      -  "message": {
      -    "type": "string"
      -  },
      -  "netCount": {
      -    "type": "integer"
      -  },
      -  "netsAvailable": {
      -    "type": "boolean"
      -  },
      -  "note": {
      -    "type": "string"
      -  },
      -  "requestedNet": {
      -    "type": "string"
      -  },
      -  "requestedRef": {
      -    "type": "string"
      -  },
      -  "source": {
      -    "type": "string"
      -  },
      -  "truncated": {
      -    "type": "boolean"
      -  },
      -  "url": {
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "found"
      -]
  2. Changed1 schema field changed
    • changedInput schema / properties / board / description
      Previous value: -"A public board: handle/slug (e.g. alice/keezyboost40) or a boardrepo.com URL. Discover it with search_boards; do not invent one."New value: +"A board: handle/slug or a boardrepo.com URL. Use search_boards for public boards or list_my_boards for personal and authorised organisation boards. Do not invent references."
  3. First observed

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description still adds real behavioral context beyond them: results are in-design connections rather than an authoritative manufacturer pinout, very large designs may be truncated with a response flag, and unresolved net names return nearest-name suggestions. With annotations carrying the safety profile, this is solid supplementary disclosure rather than load-bearing, so a 3.

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 trigger conditions are front-loaded and the dense sentences carry real information rather than filler. Some material is redundant with the schema (the ref/net/overview preference is stated twice, once in prose and once in each parameter description), which costs a point but not more.

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 read tool with four parameters, a full output schema, and read-only annotations, the description covers everything an agent needs: trigger conditions, mode semantics, net naming conventions with examples ('/CC2', 'Net-(U1-Pad3)'), truncation, and the computing-state fallback. Nothing material is missing.

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 description coverage is 100%, so every parameter is already documented in the schema, which sets the baseline at 3. The description does add mode-level meaning the schema lacks — no focus yields a bounded overview, ref yields one component plus nets and co-pins, net yields the pin list — plus net-name resolution behavior. That is a genuine increment over the schema but not a dramatic one, so 3 is appropriate.

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 concrete verb+resource pairing ('how a public board is wired', 'which pins are on a net') and immediately delimits scope with 'Returns the board's latest geometry-free connectivity', which separates it from read_pcb. It also names the sibling tools it is not (get_bom for purchasing, read_file for raw source), so an agent can route without opening any 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 gives explicit trigger questions, explicit mode selection ('Prefer a focused ref or net over repeated overviews'), explicit alternatives with conditions ('Use get_bom for purchasing and read_file for raw source'), and an ordering rule ('list nets first when unsure rather than guessing'). It also covers a degraded state: if nets are computing, continue with components and retry rather than inferring.

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.