Skip to main content
Glama
sheares

easyeda-mcp-fix

by sheares

pcb_get_all_primitives

Read-onlyIdempotent

Retrieve all PCB primitives of a given type—components, tracks, vias, pads, pours, or regions—with optional net, layer, and lock filters to inspect or export board data.

Instructions

Get all primitives of a specific type on the PCB, with optional filters. Filters by type: component(layer), track/polyline/arc(net,layer), via(net), pad(layer,net), pour/fill(layer,net), region(layer). Component fields: primitiveId, designator, name, layer, x, y, rotation, primitiveLock, addIntoBom. Track fields: primitiveId, net, layer, startX, startY, endX, endY, lineWidth. Via fields: primitiveId, net, x, y, holeDiameter, diameter, viaType. Pad fields: primitiveId, net, layer, padNumber, x, y.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
netNoFilter by net name
typeYesPrimitive type to query
layerNoFilter by layer (e.g. "TopLayer", "BottomLayer")
limitNoTruncate result array to at most N items
fieldsNoProject results to only these top-level keys. Response includes _availableFields showing all keys. IMPORTANT: Always specify fields when you know what you need — without it, responses include every property and can be extremely large (100KB+), wasting context.
filterNoKeep items matching all conditions (AND). Exact: {key: value}, prefix glob: {key: "R*"}, OR: {key: ["a","b"]}
documentYesTarget document UUID — auto-switches to this document before executing. Get UUIDs from list_instances or editor_get_open_tabs.
instance_idNoTarget EasyEDA instance ID (8-char hex). Required when multiple instances are connected. Omit when only one instance is connected (auto-selected). Use list_instances to see connected instances.
primitiveLockNoFilter by lock status (true=locked only, false=unlocked only)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.6.5

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive, and closed-world traits, so the safety profile is set. The description adds return-shape context absent any output schema by enumerating the fields returned for component, track, via, and pad primitives, which is genuine value. It stops short of covering polyline/arc/pour/fill/region fields and says nothing about ordering or result size.

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-loads the one-line purpose before expanding into the type/filter matrix and field lists. The dense field enumeration is justified by the absence of an output schema, though listing fields for only some primitive types leaves the block slightly lopsided rather than wasteful.

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?

For a 9-param query tool with no output schema but full annotation coverage, the description supplies the filter-by-type semantics and partial return-field detail an agent needs. Remaining gaps (fields for the non-enumerated primitive types, pagination/truncation behavior) are modest against what the schema and annotations already provide.

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% (baseline 3), but the description goes beyond the schema by mapping which filters are meaningful per primitive type (component→layer, track→net/layer, via→net, etc.), adding real selection guidance. The per-type field lists further clarify what 'fields' projection can target.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('all primitives of a specific type on the PCB') with the scoping qualifier that it is type-driven with optional filters. This implicitly distinguishes it from point-based (pcb_get_primitive_at_point), region-based (pcb_get_primitives_in_region), id-based, and net-based siblings, but it never names an alternative to make the routing explicit.

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?

Usage is implied via the type/filter mapping (e.g., via filters by net, pad by layer/net), which helps the agent pick the right call. However, there is no explicit when-to-use/when-not guidance and no mention of the sibling query tools it competes with, so selection still requires inference.

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

Deploy Server

Other Tools