EasyEDA Pro MCP
It bridges MCP clients to a live EasyEDA Pro session for diagnostics, schematic/PCB inspection, verification, navigation, exports, and explicitly confirmed mutations.
Check bridge health, live connection status, protocol compatibility, and active editor context.
Search for components and nets; list schematic components, pins, and snapshots.
Trace nets/components, find unconnected pins, validate schematic areas, and run structured connection assertions such as pin-on-net, path exists/absent, pull-up/down, and decoupling checks.
Navigate/highlight components or regions and zoom to the board outline.
Export BOM, netlist, Gerber, and PDF files.
Run mutating actions like save, importChanges, autoroute, and autolayout only when explicitly confirmed.
Provides live inspection and interaction with EasyEDA Pro schematic and PCB projects, enabling AI assistants to read components, nets, wires, and perform navigation and export actions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@EasyEDA Pro MCPRun easyeda_doctor and check the bridge health"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Key Features
Live schematic & PCB introspection — Give AI agents structured access to your open EasyEDA Pro project without screenshots or manual exports.
Circuit tracing & verification — Trace nets and component pins, find unconnected pins, and run programmatic assertions (pull-ups/downs, decoupling capacitors, USB-C
5.1kCC paths).Native PCB DRC rule management — Read active design rules, saved profiles, and net/region tables, preview changes safely, and apply confirmed rule updates with readback verification.
Editor navigation & fabrication exports — Focus components or regions directly in EasyEDA Pro and export BOM, Netlist, Gerber, and PDF files.
Local & read-first by default — Runs locally over
stdioandws://127.0.0.1:8765. Inspection is read-only; mutating actions require explicit human confirmation.
Related MCP server: easyeda-mcp
Requirements
Node.js
20or newerEasyEDA Pro
2.3.0or newerAn MCP-compatible AI client (Claude Code, Codex, Claude Desktop, Cursor, VS Code, Antigravity, Windsurf, etc.)
Getting Started
EasyEDA Pro MCP has two local parts: the EasyEDA Pro Extension (.eext) inside the editor and the MCP Server (@vlabsoftware/easyeda-pro-mcp) launched by your AI client.
1. Automatic Setup (Fastest — No Git Clone)
Run one command in your terminal:
npx -y @vlabsoftware/easyeda-pro-mcp setupThis automatically detects and configures installed AI clients (Claude Desktop, Cursor, VS Code, Antigravity, Windsurf, Claude Code, Codex) with platform-safe commands and exports easyeda_mcp_bridge.eext to your ~/Downloads folder (or current directory).
git clone https://github.com/VLab-Software/easyeda_mcp.git
cd easyeda_mcp
npm install
npm run setup:local
npm run setup:clients # Optional: points detected AI clients to this local buildThis builds dist/index.js, build/dist/easyeda_mcp_bridge.eext, and build/dist/easyeda-pro-mcp.mcpb.
2. Install the EasyEDA Pro Extension
In EasyEDA Pro, open Extensions Manager and import the exported
easyeda_mcp_bridge.eext(or downloadeasyeda_mcp_bridge.eextfrom Releases).Enable Allow interactive with external for EasyEDA MCP Bridge.
Open your schematic or PCB project (if needed, click MCP Bridge -> Reconnect in the top toolbar).
3. Or Add the MCP Server Manually / 1-Click
If you skipped npx -y @vlabsoftware/easyeda-pro-mcp setup, use a 1-click badge above or add the standard npx config below:
{
"mcpServers": {
"easyeda-pro": {
"command": "npx",
"args": ["-y", "@vlabsoftware/easyeda-pro-mcp"]
}
}
}Windows JSON note: In GUI clients on Windows, use
"command": "cmd", "args": ["/c", "npx", "-y", "@vlabsoftware/easyeda-pro-mcp"]sonpx.cmdspawns cleanly.
Run in your terminal:
claude mcp add --scope user easyeda-pro -- npx -y @vlabsoftware/easyeda-pro-mcpRun in your terminal:
codex mcp add easyeda-pro -- npx -y @vlabsoftware/easyeda-pro-mcp1-Click Bundle: Download
easyeda-pro-mcp.mcpband double-click it to install in Claude Desktop.Manual JSON: Or add the standard config above to
claude_desktop_config.json, then fully quit and reopen Claude Desktop:macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json(use"command": "cmd", "args": ["/c", "npx", "-y", "@vlabsoftware/easyeda-pro-mcp"])
Click Install in Cursor, or add the standard config above to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) and refresh servers in Cursor Settings -> MCP.
Click Install in VS Code, or add to .vscode/mcp.json (or Command Palette -> MCP: Open User Configuration) and open Copilot Chat (Agent mode):
{
"servers": {
"easyeda-pro": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@vlabsoftware/easyeda-pro-mcp"]
}
}
}Antigravity: Run
npx -y @vlabsoftware/easyeda-pro-mcp setup --client antigravity(or add the standard config to~/.gemini/config/mcp_config.json), then click Refresh in Additional Options (...) -> MCP Servers.Windsurf: Run
npx -y @vlabsoftware/easyeda-pro-mcp setup --client windsurf(or add the standard config to~/.codeium/windsurf/mcp_config.json), then refresh MCP servers in Cascade settings.
Your First Prompts
Verify that the bridge is connected and sees your open document:
Run easyeda_doctor and check whether the EasyEDA Pro bridge is healthy.Once connected, try real hardware engineering workflows:
Inspect the open schematic with easyeda_schematic_snapshot and list any unconnected pins.Verify USB1 with easyeda_verify_connections: check that CC1 and CC2 each have a 5.1k resistor to GND and VBUS is decoupled to GND.Read the active PCB design rules with easyeda_get_drc_rules and summarize track width, via size, and clearance limits.More examples: Practical Workflows
Available Tools (32)
Category | Tools |
Status & Context |
|
Schematic Inspection & Search |
|
Circuit Tracing & Verification |
|
PCB Layout & DRC Rules |
|
Navigation & Exports |
|
Confirmed Actions |
|
Full parameter schemas and examples: Tools Reference · DRC Rule Editing
Documentation
Guide | When to use |
Shortest path from zero to a working bridge | |
Detailed setup for Claude Code, Codex, Claude Desktop, Cursor, VS Code, Antigravity & others | |
Copy-pasteable prompts for schematic review, circuit assertions, DRC, and exports | |
Server/Extension version matrix and 3-step upgrade checklist | |
Common fixes and bridge error code reference | |
How the local WebSocket bridge and confirmation gates work | |
Version history and prebuilt |
npm run setup:local # Build MCP server, extension bundle, .eext, and .mcpb packages
npm run setup:clients # Point detected AI clients to this local checkout (--local)
npm test # Run Vitest unit suite
npm run typecheck # Typecheck MCP server
npm run typecheck:extension # Typecheck EasyEDA Pro extension
npm run test:smoke:drc # End-to-end stdio + WebSocket DRC smoke test
npm run docs:build # Build VitePress documentation siteSecurity, Disclaimer & License
Localhost & Live Session: Operates on the live project open in EasyEDA Pro over
127.0.0.1:8765(no offline.eproparsing or commercial/order automation). Do not expose the WebSocket port to untrusted networks — see SECURITY.md.Non-Affiliation: Independent open-source project. Not affiliated with, endorsed by, or sponsored by EasyEDA, JLCPCB, or Shenzhen Jia Chuang Ban Technology Co., Ltd. EasyEDA and EasyEDA Pro are trademarks of their respective owners.
Sponsorship & Support: If you find this project useful, consider supporting its development via GitHub Sponsors.
Contact & License: victor.freitas@vlabsoft.com · Released under the MIT License.
Available Tools
76 toolseasyeda_compare_devicesCompare two devices for pinout and footprint compatibilityARead-only
Compares two component devices (by UUID, LCSC code, or designator) evaluating pinout matching, footprint geometry, JLCPCB stock availability, and drop-in replacement feasibility.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| deviceA | Yes | First device UUID, LCSC part number (e.g. 'C1523'), or component designator (e.g. 'U1'). | |
| deviceB | Yes | Second device UUID, LCSC part number (e.g. 'C2040'), or component designator (e.g. 'U2'). | |
| timeoutMs | No | ||
| strictPinout | No | Strictly compare pin electrical types in addition to pin names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description contributes the evaluation scope and the three accepted identifier types. It does not describe the result shape, what happens when a device cannot be resolved, or why JLCPCB stock is queried despite openWorldHint=false — that last point is a mild tension worth noting but not a direct contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the verb and subject front-loaded and zero filler; every clause names a distinct evaluation dimension. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters including a nested target object and no output schema, the description does enough to convey what is compared and how devices are addressed. It stops short of hinting at the comparison result's structure (match/mismatch verdicts per dimension), which an agent would want since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the only real semantic layer the description adds is restating the UUID/LCSC/designator forms that deviceA and deviceB schemas already document. The nested 'target' object and 'timeoutMs' remain undocumented in both the schema and the description, so the gap is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Compares two component devices') and enumerates the evaluated dimensions (pinout matching, footprint geometry, JLCPCB stock, drop-in feasibility). This clearly separates it from siblings such as easyeda_get_device_details or easyeda_verify_pin_pad_mapping, though no sibling is named explicitly to confirm the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied through 'drop-in replacement feasibility' and the accepted identifier forms, which suggests comparing candidate parts. However, there is no explicit when-to-use, when-not-to-use, or pointer to an alternative (e.g., get_device_details for single-part inspection), so the agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_compare_schematic_pcbCompare schematic and PCBARead-only
Performs cross-domain discrepancy analysis between Schematic and PCB in EasyEDA Pro. Detects unplaced components, untracked PCB parts, footprint mismatches, pin/pad count discrepancies, unrouted nets, and overall synchronicity score.
| Name | Required | Description | Default |
|---|---|---|---|
| pcbTarget | No | Expected PCB document target | |
| timeoutMs | No | ||
| schematicTarget | No | Expected schematic document target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, non-destructive, and closed-world, so the safety profile is covered. The description adds useful analysis scope by listing the discrepancy categories and a synchronicity score, but it does not disclose operational behavior such as whether both targets must already be open or how the comparison is scoped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences, front-loaded with the cross-domain comparison purpose and followed by a compact list of detected discrepancies. Every phrase contributes to identifying the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description lists detected issue types plus a synchronicity score but does not explain the result structure or whether omitted targets default to active documents. For a three-parameter nested-target analysis tool, it covers purpose well but leaves important operational and return-value details thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: pcbTarget and schematicTarget already carry 'Expected PCB/schematic document target' descriptions, and timeoutMs is self-documented with default and bounds. The description reinforces the two-domain mapping with 'between Schematic and PCB' but adds no target-selection or timeout semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: cross-domain discrepancy analysis between Schematic and PCB in EasyEDA Pro. It then names concrete discrepancy types it detects, which clearly distinguishes it from single-domain siblings such as easyeda_run_drc or easyeda_run_schematic_erc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The cross-domain framing and issue list imply this is the tool for schematic-vs-PCB consistency checks, but it never explicitly says when to use it instead of easyeda_prepare_schematic_pcb_sync, easyeda_verify_connections, or single-domain validation tools. Usage is inferable rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_confirmed_actionConfirmed EasyEDA Pro actionADestructive
Runs a mutating EasyEDA Pro action after human approval. For editDrcRules pass params:{editId} and the exact prepared confirmation. Saving the PCB remains separate.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| params | No | ||
| timeoutMs | No | ||
| confirmation | Yes | DRC: exact CONFIRM editDrcRules <editId> after human review. Mutation: exact CONFIRM <domain>:<action> <mutationId>. Legacy actions require an explicit confirmation phrase. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description still adds real context: execution requires human approval, the confirmation must be the exact prepared phrase, and PCB saving is a distinct step. Timeout behavior and what the call returns are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the mutation-plus-approval gate front-loaded ahead of the per-action detail. The closing note that saving the PCB remains separate is terse to the point of ambiguity, given that 'save' is itself one of the enum values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent tool with 11 enum actions, a nested params object, and no output schema, the definition covers only the editDrcRules path. An agent still lacks guidance on obtaining the mutationId or confirmation for other actions, and on where results are retrieved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate, and it does so for one case: for editDrcRules it specifies params:{editId} and the exact confirmation. It leaves the 11-value action enum largely unexplained and says nothing about params for the other actions or about timeoutMs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: runs a mutating EasyEDA Pro action, gated on human approval. That distinguishes it from the read-only siblings, but it does not name how it relates to the many easyeda_prepare_* tools that presumably generate the confirmation, nor to easyeda_get_mutation_result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite of human approval and the editDrcRules special case are stated, which gives implied usage context. However, it never says explicitly that a prepare_* tool must run first, that get_mutation_result should be used afterward, or when to choose one action enum value over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_doctorEasyEDA Pro bridge diagnosticsARead-onlyIdempotent
Returns a structured diagnosis of the local MCP bridge, EasyEDA Pro extension connection state, protocol compatibility, active document context, and suggested next steps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds useful scope beyond that by naming the five things inspected and noting it returns 'suggested next steps', but it says nothing about failure modes (e.g. what is returned when the extension is not connected), latency, or how the structured result is shaped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the key noun phrase ('structured diagnosis') first and a compact enumeration of what is diagnosed. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description carries the burden of explaining what comes back, and the enumerated diagnostic surfaces plus 'suggested next steps' do most of that work. It stops short of describing the result structure or the expected remedy path, which would close the remaining gap for a troubleshooting entry point.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No misleading parameter language is present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it 'returns a structured diagnosis' and enumerates the diagnosed surfaces (local MCP bridge, EasyEDA Pro extension connection state, protocol compatibility, active document context, suggested next steps). An agent can tell this is a health-check tool, but the description never distinguishes it from overlapping siblings such as easyeda_live_status and easyeda_get_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is only implied by the diagnostic framing (call it when the bridge or extension state is in question). There is no explicit when-to-use, when-not-to-use, or 'prefer this over easyeda_live_status / easyeda_get_context' routing guidance, which matters given how many sibling tools report related state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_evaluate_spice_supportEvaluate SPICE simulation feasibility and readinessARead-only
Performs feasibility evaluation of analog SPICE simulation on the active schematic: audits component SPICE model availability, verifies Node 0 / GND reference, checks stimulus sources, and documents engine limits and platform boundaries.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| groundNet | No | Net name expected as ground datum (mapped to SPICE node 0). | GND |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, and the description is consistent with that safe-read profile. Beyond the annotations it adds real content: the four concrete checks performed and the note that it 'documents engine limits and platform boundaries', which tells the agent what evidence the evaluation surfaces. It stops short of describing failure modes or what the audit output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence whose clauses are a legitimate enumeration of the audit steps rather than filler. It is dense but every clause corresponds to a distinct check; slightly more structure (e.g. separating what is inspected from what is reported) would improve scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter, read-only audit with no output schema, the description explains what is inspected but not what the agent receives back — a pass/fail verdict, a per-component issue list, or free-text notes — nor what happens when checks fail. That omission matters because there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% — only groundNet is documented in the schema. The description partly compensates by stating it 'verifies Node 0 / GND reference', which explains why a groundNet exists, but the nested `target` object and `timeoutMs` receive no explanation anywhere. Baseline 3 for partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('feasibility evaluation of analog SPICE simulation') and resource ('the active schematic'), then enumerates the checks (model availability, Node 0/GND reference, stimulus sources, engine limits). An agent can distinguish this from easyeda_generate_spice_netlist by the audit wording, though it never names that sibling to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'feasibility evaluation... readiness' framing implies this is a pre-simulation gate, so usage is inferable. However, there is no explicit when-to-use/when-not-to-use statement and no routing to the sibling easyeda_generate_spice_netlist, which is the obvious next step once feasibility passes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_3d_modelExport PCB 3D mechanical CAD modelBRead-only
Exports 3D mechanical CAD geometry (STEP, OBJ, STL, WRL) of the board and mounted component bodies for MCAD integration, 3D printing, and thermal/clearance analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | 3D CAD geometry format (step, obj, stl, wrl). | step |
| quality | No | Tessellation/mesh export quality. | high |
| fileName | No | Optional output file name without extension. | |
| timeoutMs | No | ||
| includeCopper | No | Include copper layers in 3D geometry. | |
| destinationPath | No | Optional destination directory / target path. | |
| includeSilkscreen | No | Include silkscreen legends in 3D geometry. | |
| includeComponents3D | No | Include 3D component body models. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, non-open-world behavior, so the safety profile is covered. The description adds what geometry is included (board plus component bodies), but says nothing about the fact that a file is written to disk, what happens if destinationPath is omitted, or how timeoutMs affects the operation. No contradiction with the readOnlyHint since the board design itself is not mutated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the verb, the resource and the formats first, then the purpose clauses. Slightly dense with the parenthetical format list, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Eight optional parameters and no output schema mean the description must carry the return contract, and it does not: nothing says whether a file path, a job handle, or raw data comes back, nor where the file lands without destinationPath. For an export tool the agent cannot predict the result of the call from this definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 88%, so the schema already documents format, quality, fileName, destinationPath, includeCopper, includeSilkscreen and includeComponents3D; the description only restates the format list. The single undocumented parameter, timeoutMs, is not explained in the description either, so no real meaning is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb plus resource ('Exports 3D mechanical CAD geometry ... of the board and mounted component bodies') and enumerates the four output formats, so the agent can tell this apart from export_dxf, export_gerber, export_pdf and get_pcb_3d_view. It does not name a sibling explicitly as the alternative, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three intended uses are named (MCAD integration, 3D printing, thermal/clearance analysis), which implies when to reach for this tool. There is no guidance on when not to use it, no mention of the related 3D inspection/view siblings, and no prerequisites such as requiring an open PCB document.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_bomExport EasyEDA Pro BOMCRead-only
Exports a BOM from the active EasyEDA Pro project through the extension.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | auto | |
| format | No | csv | |
| fileName | No | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=false, so safety is covered. The description adds nothing about the notable side effect of this tool: it produces a file (where it is written, whether an existing file is overwritten, or what happens on timeout). Given idempotentHint=false, an agent would benefit from knowing why repeated calls may behave differently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with no filler, so it is concise and front-loaded. However, that brevity leaves the definition under-specified rather than efficient, since space that could carry parameter or output detail is unused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter export tool with no output schema and no documented parameters, the description should say where the export goes and what the result contains. It answers neither, so an agent cannot predict the outcome of a call beyond 'a BOM happens.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so all four parameters (scope, format, fileName, timeoutMs) are undocumented in both schema and description. The description does not explain what 'auto' scope resolves to, the output format tradeoffs, or the fileName/timeout behavior, leaving the agent to guess from bare enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Exports') plus resource ('BOM') and scopes it to the active EasyEDA Pro project. This clearly separates it from other exporters such as export_gerber, export_cpl, and export_netlist, though the description itself doesn't name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose a BOM export over the other export tools, nor on prerequisites (e.g., whether a project must be open or a schematic generated first). The agent must infer usage entirely from the title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_cplExport PCB Component Pick and Place (CPL)ARead-only
Exports the Pick and Place / Centroid (CPL) file from the active EasyEDA Pro PCB for SMT assembly (e.g. JLCPCB).
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Coordinate unit for component positions. | mm |
| format | No | File format for the pick and place report. | csv |
| fileName | No | Optional output file name without extension. | |
| timeoutMs | No | ||
| destinationPath | No | Optional destination directory / target path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds that the source is the currently active PCB document, but says nothing about where the file is written by default, whether an existing file is overwritten, or that the operation produces a local artifact despite the read-only hint — the kind of context that would matter for a file-producing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the artifact and source front-loaded and no filler. Nothing is repeated from the title or schema, and the parenthetical use case is compact rather than redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters and no output schema, the description should tell the agent what the call yields (a file path or status) and what happens when fileName/destinationPath are omitted. It identifies the source document context but leaves output handling and default write location unspecified, which is a notable gap for a file-export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, with unit and format already documented as enums with defaults, so the schema does the heavy lifting. The description adds no extra meaning about unit/format choices or the file-naming and destination behavior implied by fileName and destinationPath, leaving the undocumented timeoutMs entirely unexplained. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Exports the Pick and Place / Centroid (CPL) file from the active EasyEDA Pro PCB" gives a specific verb plus a clearly named artifact and its domain (SMT assembly, JLCPCB). It stops short of distinguishing itself from the adjacent export/report siblings such as easyeda_get_pcb_placement_report or easyeda_export_bom, so an agent must infer which output each produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause "for SMT assembly (e.g. JLCPCB)" implies the intended situation, which is real usage context. There is no explicit when-not guidance, no mention of prerequisites beyond an active PCB, and no pointer to the closest alternative (get_pcb_placement_report) for agents that only want to inspect placement data rather than export a file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_dxfExport 2D CAD DXF drawingBRead-only
Exports 2D CAD DXF drawings of PCB outlines, copper traces, drilling holes, or schematic drawings for mechanical enclosures, CNC routing, laser cutting, and AutoCAD integration.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | CAD drawing unit. | mm |
| scope | No | Export scope (pcb or schematic). | pcb |
| layers | No | Specific layers to include in DXF export. | |
| fileName | No | Optional output file name without extension. | |
| timeoutMs | No | ||
| dxfVersion | No | AutoCAD DXF format version. | 2004 |
| destinationPath | No | Optional destination directory / target path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, but the description leaves the key behavioral question unanswered: does this write a file to disk at destinationPath or return DXF content to the caller? Nothing is said about overwrite behavior, whether an existing file is replaced, or how timeoutMs (default 30s, max 120s) affects a long export. With idempotentHint=false on a file-producing operation, this gap is material rather than cosmetic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence: verb and artifact first, then content options, then use cases. No filler or repetition. The use-case tail is slightly marketing-flavored but still aids tool selection, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, zero-required export tool with no output schema, the description covers what is exported but omits what comes back (file path, DXF text, or status) and how scope values "auto"/"schematic" behave. It is adequate to pick the tool, but an agent still has to guess at the result contract before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents unit, scope, fileName, dxfVersion, and destinationPath. The description's mention of outlines, traces, and drilling holes gives a hint about plausible values for the otherwise loosely typed `layers` array (items just "string", no enum), but it adds no syntax or naming convention for those layer names. Baseline 3 is appropriate since the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact ("Exports 2D CAD DXF drawings") and enumerates what can be included (PCB outlines, copper traces, drilling holes, schematic drawings). That is much clearer than a bare name restatement, but it never distinguishes itself from sibling exporters like easyeda_export_gerber, easyeda_export_pdf, easyeda_export_image, or easyeda_export_3d_model, so the agent must infer the split from external knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The downstream use cases (mechanical enclosures, CNC routing, laser cutting, AutoCAD integration) implicitly tell the agent when DXF is the right format versus Gerber or PDF. However, no sibling is named, no exclusions are given (e.g. "not for fabrication output — use export_gerber"), and prerequisites such as an open document are unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_gerberExport EasyEDA Pro GerberCRead-only
Exports Gerber fabrication files from the active EasyEDA Pro PCB through the extension.
| Name | Required | Description | Default |
|---|---|---|---|
| fileName | No | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered and the description is not contradicting it — exporting does not mutate board data. The description adds the useful constraint that the target is the *active* PCB reached 'through the extension', but it does not say where files land, whether existing outputs are overwritten (consistent with idempotentHint=false), or what happens on timeout given the 120s cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a clear verb-resource-source structure and no filler. It is efficient, though the brevity comes at the cost of the parameter and prerequisite information noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% schema description coverage, the description is the only place to explain the two parameters and the return shape, and it explains neither. For an export tool whose result is a set of files, at minimum the output destination and the meaning of fileName should be stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry both parameters and does not: 'fileName' (naming/path of the output archive or files) and 'timeoutMs' (default 60000, max 120000) are never mentioned or explained. An agent gets no signal on what fileName should look like or how the timeout affects a multi-file fabrication export.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Exports Gerber fabrication files') and qualifies the source ('from the active EasyEDA Pro PCB'), which distinguishes it from the PDF/BOM/CPL/DXF export siblings. It stops short of explicitly naming which sibling to use for which deliverable, but the output format makes the split obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, no mention of prerequisites such as needing an active PCB document or completed DRC, and no pointer to alternatives like easyeda_export_pdf or easyeda_export_cpl. The only contextual cue is the word 'Gerber', leaving the agent to infer the lifecycle position of this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_imageExport schematic or PCB canvas imageBRead-only
Exports a high-resolution visual rendering or vector graphic (PNG, SVG, JPG) of the active schematic sheet or PCB layer stack with transparent background, resolution scaling, and layer visibility options.
| Name | Required | Description | Default |
|---|---|---|---|
| dpi | No | Resolution in dots-per-inch (raster formats). | |
| scope | No | Scope of document to export. | auto |
| theme | No | Visual theme for rendering. | default |
| format | No | Image format (png, svg, jpg). | png |
| layers | No | Specific PCB layers to include (e.g. ['TopLayer', 'TopSilkLayer']). | |
| fileName | No | Optional output file name without extension. | |
| timeoutMs | No | ||
| destinationPath | No | Optional destination directory / target path. | |
| transparentBackground | No | Whether to use transparent background. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, so safety is covered. The description adds useful rendering context (high resolution, vector vs raster, transparent background, layer visibility), but it omits the behaviorally important question of whether the output is written to a filesystem path or returned inline, which matters for a non-idempotent export.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first, followed by the capability modifiers. Every clause carries information and there is no filler, though the trailing list of options is somewhat dense and mirrors schema parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and no output schema, the description should explain what the call returns or where the artifact lands, and it does not — an agent cannot tell whether it gets a file path, a base64 payload, or a URL. It also does not mention timeoutMs or the default 300 dpi / png behavior, so material gaps remain for a fairly complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents dpi, format, layers, transparentBackground, and the rest. The description still adds meaning the schema does not: it clarifies that layer selection relates to the PCB layer stack, that scaling applies to raster output, and that vector output (SVG) is supported. The only untouched parameter is timeoutMs, so this is slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Exports a high-resolution visual rendering or vector graphic... of the active schematic sheet or PCB layer stack') and names the concrete output formats. It is clear what the tool produces, but it never distinguishes itself from siblings that also produce document output, such as easyeda_export_pdf, easyeda_render_document_view, or easyeda_schematic_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'active schematic sheet or PCB layer stack' implies the operating context, and the mention of PNG/SVG/JPG implicitly signals a raster/vector-image use case rather than a print/PDF one. However, there is no explicit when-to-use or when-not-to-use guidance and no routing to the competing export/render siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_netlistExport EasyEDA Pro netlistCRead-only
Exports a netlist from the active EasyEDA Pro schematic or PCB through the extension.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | auto | |
| fileName | No | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and non-idempotent behavior, so safety is covered. The description adds only that the operation goes 'through the extension'; it never says whether a file is written to disk, where it lands, whether an existing file of the same name is overwritten (notable given idempotentHint=false), or what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. Its brevity works against it only in that the space saved is not used for any of the missing behavioral or parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an export tool that takes three undocumented parameters, produces no output schema, and presumably writes a file, the description is far too thin. An agent cannot determine output destination, return value, or the effect of 'auto' scope from what is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description says nothing about scope, fileName or timeoutMs. Parameter names are largely self-explanatory, but the meaning of the 'auto' scope value and the interaction between fileName and the on-disk output are left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Exports') and resource ('a netlist') scoped to the active EasyEDA Pro schematic or PCB, so the operation is immediately identifiable. It does not, however, separate itself from nearby siblings such as easyeda_generate_spice_netlist or easyeda_export_bom, leaving the agent to infer that this is the plain connectivity netlist export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of prerequisites beyond 'the active ... schematic or PCB', and no routing to alternatives. The agent gets no help deciding between this and easyeda_generate_spice_netlist, nor any guidance on when 'auto' scope is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_pdfExport EasyEDA Pro PDFCRead-only
Exports a PDF from the active EasyEDA Pro document through the extension.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | auto | |
| fileName | No | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds only "through the extension", hinting at a required bridge but never confirming it. It does not say where the PDF is written, whether an existing file is overwritten, whether a UI dialog blocks the call, or why idempotentHint is false despite the read-only hint. For a long-running export with a tunable timeout, these omissions matter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean, front-loaded sentence with no filler, which is good structural economy. However, brevity here comes at the cost of under-specification rather than serving clarity, so it does not earn more than a mid score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotation coverage of side effects, and zero parameter documentation, the description is too thin for the tool's complexity. An agent cannot tell from this text what it will receive back (a file path? bytes?), whether the export is synchronous, or how scope and timeout interact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, so the description carries the full burden and delivers nothing: no explanation of what "auto" scope does, no statement of the fileName format or default naming, and no guidance on when to raise timeoutMs. The schema's enum and defaults provide mechanical structure, but the semantics of each argument remain undefined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition states a specific verb ("Exports") and resource ("a PDF") and names the source explicitly ("the active EasyEDA Pro document"), which distinguishes it from the many sibling tools that are also exports (gerber, image, dxf, bom, netlist). It stops short of naming which export sibling handles which case, but the PDF target is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to pick this over easyeda_export_image, easyeda_export_dxf or the other export siblings, and no prerequisites such as the extension needing to be connected. The scope enum (pcb/schematic/auto) is never explained in terms of which one to choose, leaving the selection of key arguments to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_export_project_archiveExport complete EasyEDA Pro project archiveARead-only
Exports the entire EasyEDA Pro project archive (epro, zip, json) containing all schematic sheets, PCB layout, layer configurations, netlists, and project metadata with integrity validation.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Archive bundle format (epro, zip, json). | epro |
| fileName | No | Optional output file name without extension. | |
| timeoutMs | No | ||
| includeHistory | No | Include revision and change history. | |
| destinationPath | No | Optional destination directory / target path. | |
| includeLibraries | No | Bundle custom library symbols and footprints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered. The description adds one real behavioral detail — 'with integrity validation' — but says nothing about where the archive is written, whether an existing file at destinationPath is overwritten, or what a validation failure looks like, which matters for a tool that produces output on disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action and resource, then layers the archive contents and integrity guarantee. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Six optional parameters, no output schema and no description of what is returned (a path, a blob, a status object), plus zero required parameters means an agent gets no signal about defaults or the result shape. With annotations carrying the safety story it is adequate, but the omission of return/output location leaves a real gap for an export tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents format, fileName, includeHistory, destinationPath and includeLibraries. The description only repeats the format values (epro, zip, json) that the enum already lists and adds no semantics for timeoutMs or the interaction between fileName and destinationPath; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (exports) and a precise resource (the entire EasyEDA Pro project archive) and enumerates its contents — schematic sheets, PCB layout, layer configs, netlists, metadata. That cleanly separates it from the artifact-specific export siblings such as export_gerber, export_pdf, export_bom and export_netlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'entire project archive' implies a full-project backup/transfer scenario, which is enough for an agent to prefer this over the single-artifact exporters, but there is no explicit when-to-use statement, no exclusion, and no named alternative. Guidance is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_find_componentFind EasyEDA Pro componentBRead-only
Finds a component by designator, name, value, footprint, or property in the active EasyEDA Pro project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Designator, value, name, footprint, or property text to search for. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds one useful scope fact — the search is confined to the active EasyEDA Pro project, not the library or other documents — but says nothing about match semantics (substring vs exact, case sensitivity), result truncation, or ordering, which matter for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource first and the matching criteria after; there is no padding or boilerplate. It is terse to the point of underspecification, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain what a match looks like and how `limit` truncates results — it does neither. Against annotations that already cover read-only safety and a simple three-parameter schema, it is adequate but leaves meaningful gaps for an agent that must decide how many results to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%: only `query` is documented in the schema, and the description's field list largely restates that same text. The `limit` and `timeoutMs` parameters are left undocumented in both places, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Finds a component") and enumerates the searchable attributes (designator, name, value, footprint, property), which is enough to distinguish it from easyeda_find_net or easyeda_get_component_pins. However, it never names easyeda_list_schematic_components or easyeda_navigate_component, so the boundary with the closest siblings must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance: nothing says to use this rather than easyeda_list_schematic_components (enumerate all) or easyeda_navigate_component (jump to a known one). Only the implicit framing "by designator, name, value..." hints that this is for text-driven lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_find_netFind EasyEDA Pro netCRead-only
Finds a net by name and returns available connections or metadata from the active project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Net name or partial net name to search for. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the description only needs to add context. It adds the 'active project' scoping, but leaves the notable idempotentHint=false unexplained, says nothing about result size, paging, or how limit/timeout affect behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is the right size for this tool. The trailing phrase "available connections or metadata" is hedged and could be made concrete without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing return values, and it does so only vaguely ("connections or metadata"). With two of three parameters undocumented anywhere, an agent cannot predict what it will get back or how to bound the query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33%: only 'query' is documented (as a full or partial net name). Neither the description nor the schema explains what 'limit' bounds (matching nets? returned connections?) or what 'timeoutMs' means for an editor RPC call, so the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Finds a net by name and returns available connections or metadata" states a specific verb (finds) and resource (net) plus a partial statement of the return. It is distinguishable from aggregation siblings such as easyeda_get_schematic_nets or easyeda_get_pcb_net_report, though it never names easyeda_trace_net, the closest-looking alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage context is the phrase "from the active project"; nothing says when to pick this over easyeda_trace_net, easyeda_highlight_net, or easyeda_get_schematic_nets. No prerequisites, no exclusions, and no statement about whether the project must have a document open.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_find_unconnected_pinsFind unconnected pinsBRead-only
Scans active schematic sheets for unconnected component pins, reporting potential schematic omissions or dangling inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Optional component designator filter. | |
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that scanning is scoped to 'active schematic sheets', which is useful, but it does not explain the result format, how the limit truncates findings, or why idempotentHint is false for a pure scan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence with the scanning action front-loaded and the diagnostic value trailing. No padding, though it compresses away details an agent would need.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters at 20% schema coverage, no output schema, and no annotations describing returns, the description should clarify what a 'report' contains and how paging/limits interact. It leaves the return shape and parameter behavior entirely unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%: only `query` is documented. The description says nothing about `limit`, `allPages` (which notably defaults to true and thus blurs the 'active sheets' claim), `timeoutMs`, or `includeRaw`, so it fails to compensate for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: scanning active schematic sheets for unconnected component pins. It is distinguishable from neighbors like easyeda_verify_connections or easyeda_run_schematic_erc, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase about 'reporting potential schematic omissions or dangling inputs' implies a schematic QA use case before ERC, but there is no explicit guidance on when to prefer this over easyeda_run_schematic_erc or easyeda_verify_connections, and no exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_generate_spice_netlistGenerate standard SPICE netlistARead-only
Generates a syntactically valid SPICE circuit netlist (.cir / .sp) with ground-to-0 normalization, primitive RLC elements, semiconductor models, and configurable analysis directives (.op, .tran, .ac, .dc) for simulation in ngspice, LTspice, or Xyce.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| fileName | No | Optional output file name without extension. | |
| groundNet | No | Net name to map to SPICE datum node 0. | GND |
| timeoutMs | No | ||
| analysisType | No | Simulation analysis type (.op, .tran, .ac, .dc). | op |
| analysisParams | No | Custom analysis directive arguments (e.g. '1u 10m' for .tran, or '10 1 1Meg' for .ac). | |
| destinationPath | No | Optional destination directory / target path. | |
| includeSubcircuits | No | Whether to include X subcircuit cards for ICs. | |
| includeDefaultModels | No | Include built-in generic diode and BJT .model cards. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower; the description does add behavioral detail about normalization, model-card inclusion, and supported analyses. However, it never says whether the netlist is returned inline or written to destinationPath/fileName, nor what happens on timeout, which is important given the non-idempotent hint on an ostensibly read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and resource then layers the capability list; dense but every clause carries information. Slightly unwieldy as one sentence, but no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With nine parameters including a nested target object and no output schema, the agent needs to know what the artifact is and what knobs affect it; the description names the file formats (.cir/.sp), the normalization rule, and the analysis directive families, which is sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 78%, so the baseline is 3. The description usefully ties 'ground-to-0 normalization' to groundNet and the listed directives to analysisType/analysisParams, but it says nothing about fileName, destinationPath, timeoutMs, includeSubcircuits/includeDefaultModels, or the nested target object beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Generates a syntactically valid SPICE circuit netlist') and enumerates the content of the output (ground normalization, RLC primitives, semiconductor models, analysis directives). It is clearly distinguishable from most siblings, though it never contrasts itself with the closely related easyeda_export_netlist or easyeda_evaluate_spice_support.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the target simulators (ngspice, LTspice, Xyce) and the listed analysis types hint at when the tool applies, but there is no explicit 'use this when…' statement, no exclusion versus easyeda_export_netlist, and no stated prerequisite (e.g. an active schematic document or populated target).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_board_outlineInspect PCB Board OutlineBRead-only
Inspects the board outline boundary, bounding box (minX, minY, maxX, maxY, width, height), perimeter, estimated area, loop closure status, and segments on the active PCB.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Expected active PCB target. | |
| timeoutMs | No | ||
| includeRaw | No | Include raw primitive payloads. | |
| includeSegments | No | Include individual segment coordinates and primitives. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value by naming the computed outputs (perimeter, area, loop closure status), which tells the agent this is an analysis call rather than a raw dump. It does not disclose units, behavior when no outline exists, or the meaning of a non-closed loop.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a clear verb and a parenthetical enumerating the bounding box fields; nothing is padded or repeated. The enumeration is long but each item carries information about the return payload, so it earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly takes on the burden of listing returned fields, and it does so thoroughly. However, for an inspection tool with a nested target object and four parameters, it omits units, failure modes (no outline present, wrong document type), and the implication of non-idempotent reads, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with includeRaw and includeSegments described in the schema and "Expected active PCB target" documented on the nested object, so the schema does most of the work. The description's mention of "segments" loosely signals the includeSegments toggle but adds no syntax or format detail, and target/timeoutMs receive no clarification. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ("Inspects") and resource ("board outline boundary" on the active PCB), and enumerates exactly what is reported: bounding box fields, perimeter, area, loop closure, segments. That is far more concrete than a tautology. It stops short of distinguishing itself from the sibling easyeda_prepare_board_outline, which the agent must infer is the mutation counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, no prerequisites, and no mention of the adjacent easyeda_prepare_board_outline tool that an agent would likely confuse this with. The only usage signal is the phrase "on the active PCB," which implies an active-document requirement but does not tell the agent when to pick this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_component_pinsGet schematic component pinsBRead-only
Returns all known pins for a schematic component, including pin number, pin name, position, and net when available.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Component designator or text query, such as U1, USB1, or regulator part number. | |
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No |
TDQS
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 adds the useful qualifier 'when available', warning that net data can be missing. It does not explain why a read is marked idempotentHint=false (results change as the design is edited) or how the allPages/includeRaw switches affect cost and output volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler that leads with the action and follows with the returned fields. It is efficient, though it spends its one sentence on return values while omitting higher-value guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 75% of parameters undocumented, the description carries most of the burden and delivers only the return-field list. An agent still cannot tell how to scope pages, what to expect on timeout or on ambiguous queries, or when this tool should replace a sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% - just 'query' is documented - yet the description mentions no parameters at all. The three undocumented switches (allPages, timeoutMs, includeRaw) carry meaningful behavioral implications (page scope, latency budget, payload bloat) that the description leaves entirely unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Returns all known pins for a schematic component') and enumerates the payload fields (pin number, name, position, net), which clearly separates it from PCB-side siblings like easyeda_get_pcb_pads and from aggregate siblings like easyeda_get_schematic_nets. It does not explicitly name an alternative, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent must infer that this is the drill-down step after easyeda_find_component or easyeda_list_schematic_components. There is no statement of when to prefer easyeda_trace_component, easyeda_find_unconnected_pins, or easyeda_verify_pin_pad_mapping instead, and no prerequisites or failure conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_contextGet EasyEDA Pro editor contextBRead-only
Summarizes active project, active document, selection, and editor context from the open EasyEDA Pro instance.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=false, so the safety profile is covered. The description adds the useful constraint that it reads from 'the open EasyEDA Pro instance' (implying a live editor must be connected), but says nothing about what happens when no instance is open or how large/volatile the payload is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler, repetition, or hedging. Every clause (project, document, selection, editor context) carries information about the return payload.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing return values; it names the four categories of context but not their structure, whether selection may be empty, or how they are nested. For a simple single-parameter read tool this is adequate but leaves the agent guessing about result shape and failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter timeoutMs has 0% schema description coverage and the description never mentions it, so its units, default behavior, and the 120000 ms ceiling are undocumented anywhere beyond the bare JSON Schema constraints. With low coverage the description is expected to compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Summarizes') and enumerates the concrete resources returned: active project, active document, selection, and editor context. It is clear what the tool does, but it never distinguishes itself from the overlapping sibling easyeda_get_selection, which a naive agent might pick instead for the selection portion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of prerequisites beyond 'the open EasyEDA Pro instance', and no routing to alternatives such as easyeda_live_status, easyeda_get_selection, or easyeda_list_documents. The agent must infer that this is an orientation/state-read tool called before other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_copper_zonesGet PCB copper zonesBRead-only
Lists and inspects copper zones (copper pours/areas) on the active PCB layout with net, layer, clearance, fillType, vertices, and bounding box.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Optional filter by net name (e.g. 'GND', 'VCC'). | |
| layer | No | Optional filter by layer name or layer ID (e.g. 1, 'TopLayer', 2, 'BottomLayer'). | |
| limit | No | Maximum number of copper zones to return. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. | |
| primitiveId | No | Optional filter by copper zone primitive ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that returned zones carry net, layer, clearance, fillType, vertices, and bounding box, but says nothing about limit/pagination behavior, what happens with an empty or inactive document, or raw-data inflation from includeRaw.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource and scope first and the returned attributes trailing as a compact list. Nothing is redundant with the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no output schema, the enumerated return fields plus the "active PCB layout" scope are largely sufficient to call it correctly. The gap is limited: the multi-field target object and the semantics of limit/timeout are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, so the schema already explains net, layer, limit, includeRaw, and primitiveId filters. The description adds no parameter-level meaning beyond the schema — notably nothing about the nested target object that selects which document is inspected — so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Lists and inspects copper zones (copper pours/areas) on the active PCB layout" gives a specific verb and resource, and the parenthetical synonym disambiguates it from adjacent concepts like keepouts or tracks. It never names a sibling tool explicitly, so it stops short of the top mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance: nothing tells the agent to pick this over easyeda_get_keepouts, easyeda_get_pcb_tracks, or easyeda_get_pcb_net_report. Read-only intent is only implied by "lists and inspects," and no prerequisites or document-state requirements are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_device_detailsGet device, symbol, and footprint detailsARead-only
Fetches complete device definition, schematic symbol pinout, PCB footprint pad geometry, and pin-to-pad correspondence mapping by device UUID, LCSC part code (e.g. C1523), or placed component designator (e.g. U1).
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| lcscCode | No | LCSC component code (e.g. 'C1523'). | |
| timeoutMs | No | ||
| designator | No | Placed component designator in active schematic/PCB (e.g. 'U1', 'R2'). | |
| deviceUuid | No | Library device UUID. | |
| includeRaw | No | Include raw underlying primitive data. | |
| includePinPadMap | No | Whether to include the pin-to-pad correspondence mapping. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the description is not carrying that burden. It adds the useful notion that a complete cross-domain payload (symbol + footprint + mapping) comes back in one call, but says nothing about behavior when the target is ambiguous, when a designator is not found, or why idempotentHint is false for a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and lookup keys come first and the payload enumeration follows. It is dense — the comma-separated payload list is harder to scan than a short structured breakdown would be — but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what is returned, which is the main compensating strength. But for a 7-parameter tool with a 10-field nested target object and zero required parameters, it leaves the contextual anchor (how the active tab/page/project is resolved) and the multi-key disambiguation behavior unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71% and the schema already documents lcscCode, designator, deviceUuid, includeRaw and includePinPadMap, so the description's restatement of the three keys adds little beyond examples. The nested target object (tabId, pageId, projectId, documentType, fingerprint, etc.) and timeoutMs receive no explanation in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetches) and precisely enumerates the returned resource set: device definition, schematic symbol pinout, PCB footprint pad geometry, and pin-to-pad mapping. It also names the three lookup keys, which lets an agent separate it from siblings like easyeda_get_component_pins or easyeda_verify_pin_pad_mapping without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The three accepted key types (device UUID, LCSC code, placed designator) imply when the tool is applicable, and the designator example hints it is used against the active schematic/PCB. However, there is no explicit when-to-use vs. when-to-use-a-sibling guidance and no statement about key precedence or exclusivity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_drc_edit_resultQuery a PCB design rule editARead-only
Query a retained DRC edit after execution or timeout. Never reapply an uncertain edit. Results live only in this extension instance.
| Name | Required | Description | Default |
|---|---|---|---|
| editId | Yes | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely new behavior: results are retained and exist only in this extension instance. However, it doesn't say how long results are retained, what error surfaces for an expired or unknown editId, or why idempotentHint is false for a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the action, the safety rule, and the retention constraint, in that order. No filler and the most important constraint (do not reapply) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only query tool with no output schema, the description covers purpose, the caution rule, and the ephemeral-retention caveat, which is the key operational risk. The remaining gap is the timeoutMs parameter and the shape of the returned result, but overall it is sufficient to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and neither of the two parameters is mentioned in the description. 'editId' is weakly inferable as the handle for the retained edit, but 'timeoutMs' (default 10000, max 120000) is entirely unexplained — the agent cannot tell whether it bounds the DRC wait or the query itself, or what happens on timeout.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: query a retained DRC edit result. The temporal qualifier 'after execution or timeout' tells the agent this is a post-hoc status read, distinguishing it from the mutation path. It never names easyeda_prepare_drc_edit or easyeda_get_mutation_result as related siblings, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Query a retained DRC edit after execution or timeout' plus 'Never reapply an uncertain edit' together give a clear when-to-use rule and an explicit prohibition. What's missing is an explicit alternative route (e.g. compare to easyeda_get_mutation_result) or the case where no editId is retained at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_drc_rulesRead native PCB design rulesCRead-only
Read native EasyEDA Pro PCB design rules for current or configured scopes. Does not mutate the board.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | current | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so 'Does not mutate the board' largely restates structured data. The description adds nothing about how the different scopes behave, whether results are cached/live, what idempotentHint=false means for repeated reads, or how timeoutMs affects the call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core purpose front-loaded and no filler. The second sentence is largely redundant against the annotations, costing a little efficiency but not clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, zero schema description coverage, and a five-value enum whose members are undocumented, the description is too thin for an agent to pick a scope confidently or understand what comes back. It covers the safety profile only because annotations already do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must carry the burden and does not. It gestures at 'current or configured scopes' but never explains netRules, netByNetRules, or regionRules, and timeoutMs is not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read native EasyEDA Pro PCB design rules', scoped to 'current or configured scopes'. This clearly separates it from easyeda_run_drc (which executes checks) and easyeda_prepare_drc_edit (which edits rules). However, it never names those siblings explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for current or configured scopes' implies a read-inspection use case, but there is no explicit when-to-use guidance, no prerequisites, and no statement about when to prefer easyeda_run_drc or the DRC edit tools instead. An agent must infer the workflow position from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_keepoutsGet PCB keepoutsBRead-only
Lists and inspects keepout areas on the active PCB layout with layer, keepoutType, vertices, and bounding box.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Optional filter by layer name or layer ID (e.g. 1, 'TopLayer', 2, 'BottomLayer', or 'AllLayers'). | |
| limit | No | Maximum number of keepouts to return. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. | |
| primitiveId | No | Optional filter by keepout primitive ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds return-field context (layer, keepoutType, vertices, bounding box), but it does not explain the odd idempotentHint=false on a pure read, nor does it mention truncation behavior tied to the default limit of 100. Useful but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the operation and scope arrive first. It is efficient, though the trailing field enumeration is the weakest part and would be better spent on distinguishing inputs from outputs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with annotations and a mostly documented schema this is adequate, but with no output schema the description should clarify what a keepout record actually contains and how limit/default truncation affects results. The nested target object and timeout semantics are also untouched anywhere in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is a middling 67%, and the description contributes essentially no parameter meaning beyond the schema. Worse, the field list "layer, keepoutType, vertices, and bounding box" reads as returned data, which could confuse an agent into thinking keepoutType or vertices are inputs. Filters like primitiveId, includeRaw and timeoutMs get no elaboration in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb pair ("Lists and inspects") and a specific resource ("keepout areas on the active PCB layout"), which is enough to separate it from sibling readers like easyeda_get_copper_zones. It does not, however, explicitly contrast itself with easyeda_prepare_copper_keepout, the mutation-side counterpart, so the read/write distinction is left to inference from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the phrase "on the active PCB layout," which implies a PCB document must be active, but there is no statement of when to reach for this tool versus easyeda_prepare_copper_keepout or easyeda_get_copper_zones. No exclusions, prerequisites, or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_mutation_resultGet Mutation ResultARead-onlyIdempotent
Queries the status, readback evidence, and verification of any prepared or applied mutation by mutationId. Safe and read-only; never automatically replays a mutation.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | ||
| mutationId | Yes | The mutationId returned during preparation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is largely given. The description does add real value with 'never automatically replays a mutation', clarifying that repeated polling has no side effects. It stays silent, though, on whether the call blocks or polls, what a pending mutation returns, and how timeoutMs affects behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and resource, followed by the safety caveat. No filler, and the most important scoping detail (by mutationId) arrives first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does tell the agent what comes back: status, readback evidence, and verification. Combined with annotations covering the safety profile, the only meaningful omission is the polling/timeout behavior, which matters for a status-query tool with a 120s maximum timeout.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: mutationId is documented in the schema as 'returned during preparation', and the description only restates that it keys the query. timeoutMs is entirely undocumented in both schema and description, leaving the agent to guess whether it enables long-polling or just bounds the call; given the mid-range coverage, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Queries') and a concrete resource set: status, readback evidence, and verification of a mutation, keyed by mutationId. It is distinguishable from the prepare_* siblings because it is a retrieval step rather than a mutation, though it never names a specific sibling it complements or replaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'any prepared or applied mutation' implies the tool is called after a preparation or application step, which is useful context. However, there is no explicit instruction such as 'call after easyeda_prepare_* or easyeda_confirmed_action', and no when-not guidance (e.g., what to do instead for DRC edit results, which has its own sibling).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_3d_inspectionInspect PCB 3D models and vertical clearanceBRead-only
Inspects 3D models, vertical board envelope (substrate thickness, top/bottom max heights, total enclosure clearance), missing STEP/OBJ models ranked by criticality, and 3D spatial interference collisions between components on the active PCB.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| timeoutMs | No | ||
| maxHeightMm | No | Maximum allowed vertical component height in mm for clearance check. | |
| checkInterference | No | Check 3D spatial bounding box collisions between components. | |
| enclosureHeightMm | No | Internal enclosure height available in mm to evaluate fit/tight/exceeded status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a non-destructive, local, read-only inspection, so the safety profile is covered. The description adds genuine value beyond that by disclosing the report contents - substrate thickness, top/bottom max heights, enclosure fit status, criticality-ranked missing models, and collision detection - which tells the agent what evidence it will get back. It does not mention performance cost or the need for models to exist, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first and the payloads listed in descending specificity; no filler or restated title. It is dense but every clause maps to a real output category, though the nested parenthetical list makes it slightly hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does name the main result categories, which is adequate for a read-only analysis tool. However, it omits the result shape, how fit/tight/exceeded statuses are reported, and what happens when interference checking is disabled, leaving gaps an agent would want closed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, with maxHeightMm, checkInterference and enclosureHeightMm already documented in the schema. The description reinforces the concepts ('vertical board envelope', 'total enclosure clearance', 'spatial interference collisions'), which helps map parameters to intent, but adds no format, units or default behaviour beyond what the schema states, and says nothing about target/timeoutMs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Inspects 3D models') and then enumerates the concrete artifacts produced: board envelope, missing STEP/OBJ models ranked by criticality, and spatial interference collisions. That distinguishes it reasonably well from easyeda_get_pcb_3d_view and easyeda_export_3d_model, though those siblings are never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. that 3D models must be assigned), and no mention of when to prefer this over easyeda_get_pcb_3d_view or easyeda_export_3d_model. The agent must infer the selection rule from the name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_3d_viewGet PCB 3D view and rendering statusBRead-only
Retrieves 3D camera angles, rendering layer visibility, STEP/OBJ 3D export support, and shortcuts to open the native 3D WebGL viewport.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| timeoutMs | No | ||
| viewAngle | No | Camera angle preset for 3D inspection. | isometric_ne |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description usefully enumerates what kinds of data come back (camera angles, layer visibility, export capability), which matters since there is no output schema, but it does not explain the idempotentHint=false signal or whether the viewport shortcuts mutate view state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, front-loading the returned data categories. The list structure is readable, though the mixed bag of items (view data plus export support plus shortcuts) slightly muddles what the tool primarily does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with a nested target object, no required parameters, and no output schema, the description covers return-value categories but omits how 'target' selects the document and what the 'shortcuts' actually are or do. Adequate but with clear gaps given the complex nested schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%: only viewAngle carries a schema description, while the entire nested 'target' object (tabId, pageId, projectId, documentId, fingerprint, etc.) and timeoutMs are undocumented. The description adds nothing about any parameter, so it fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Retrieves') and enumerates concrete resources: 3D camera angles, layer visibility, STEP/OBJ export support, and viewport shortcuts. However, it never distinguishes itself from close siblings like easyeda_get_pcb_3d_inspection or easyeda_export_3d_model, so an agent cannot tell from the description alone which one to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — no condition indicating whether this is for inspecting the live view versus exporting a model, and no reference to the similarly-named 3D inspection sibling. The agent must infer intent purely from the name overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_airwiresGet PCB airwires and ratsnest connectionsBRead-only
Inspects unrouted ratsnest airwire lines on the active PCB layout with endpoints, coordinates, lengths, and inference method/tolerances.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Optional filter by net name (e.g. 'GND', 'VCC'). | |
| limit | No | Maximum number of airwires to return. | |
| target | No | ||
| timeoutMs | No | ||
| padSnapTolerance | No | Pad snap tolerance in mm (default: 0.1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description usefully adds that results carry an inference method and tolerances and that scope is the active PCB layout, but says nothing about cost, performance, or how the limit truncates results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; resource scope comes first and returned fields follow. Nothing is wasted, though it is dense rather than structured into scannable clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five optional parameters with no output schema, and the description compensates by enumerating the returned fields (endpoints, coordinates, lengths, inference method/tolerances). Combined with annotations covering the safety profile, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so some parameters (net, limit, the nested target object, timeoutMs) are undocumented or only lightly described. The description only implicitly references padSnapTolerance via 'tolerances' and does not explain the net filter or limit semantics beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('inspects') and a specific resource ('unrouted ratsnest airwire lines on the active PCB layout'), and lists the returned fields, so it is clearly distinct from siblings such as easyeda_get_pcb_tracks or easyeda_get_copper_zones. It stops short of explicitly contrasting with easyeda_get_routing_status, the closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no sibling is named. An agent must infer on its own whether this or easyeda_get_routing_status / easyeda_prepare_pcb_routing is the right tool for diagnosing unrouted connections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_differential_pairsGet PCB differential pairsBRead-only
Lists differential pairs with positive and negative net assignments, target impedance, trace width, gap, actual routed track lengths, and skew tolerance compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional filter by specific differential pair name. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. | |
| toleranceMm | No | Length matching skew tolerance in mm (default: 0.15). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a non-destructive, closed-world read, so the safety profile needs no restating. Because there is no output schema, the sentence carries real weight by naming the returned fields (impedance, width, gap, actual lengths, skew compliance). It does not say whether results come from live editor state, whether unrouted/newly created pairs appear, or how toleranceMm changes the 'compliance' verdict beyond the schema default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, then a tight enumeration of returned fields with no filler or hedging. Every clause contributes information an agent cannot get from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, describing the payload is the key obligation and the description meets it. The remaining gap is the 'target' context object, which determines which document is read and goes unexplained in both schema and description. With zero required parameters and a stated default tolerance, an agent can otherwise call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so the schema does most of the work; the description adds the concept of skew-tolerance checking, which gives toleranceMm (and its 0.15 mm default) practical meaning. Against that, the nested 'target' object (project/page/document targeting), includeRaw, and timeoutMs get no explanation in the description, leaving roughly half the surface to be inferred from property names alone. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Lists differential pairs') and enumerates exactly what each entry carries: positive/negative net assignments, target impedance, trace width, gap, routed lengths, skew compliance. That is enough to distinguish it from neighbours like easyeda_get_pcb_length_groups or easyeda_get_pcb_net_report, but the description never names those siblings, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. The reader has to infer whether this is the right tool versus get_pcb_length_groups, get_pcb_net_classes, or get_pcb_tracks when checking impedance or length-matching problems. The only conditional language ('Optional filter by specific differential pair name') is about a parameter, not about choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_layersGet PCB Layer StackupBRead-only
Returns the layer stackup and configuration of the active EasyEDA Pro PCB, including signal/copper layers, mechanical layers, colors, and visibility.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful scope detail (what is included: copper layers, mechanical layers, colors, visibility) and the fact that it targets the *active* PCB, which is a behavioral constraint beyond the annotations. It does not describe return shape or any failure/timeout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource named first and the content enumeration following. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of saying what comes back, and it does list the categories returned. It is adequate for a simple read tool, though it could note the active-document requirement more explicitly as a precondition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter (timeoutMs) and schema coverage is 0%, but the parameter is a self-explanatory timeout with a default, maximum, and exclusive minimum already encoded in the schema. The description adds no meaning to it, but the omission is low-cost here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and resource ('layer stackup and configuration of the active EasyEDA Pro PCB') plus the enumerated contents. An agent can distinguish it from siblings like easyeda_get_board_outline or easyeda_get_copper_zones by the stackup framing, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no preconditions, and no mention of alternatives among the many PCB getter siblings. The agent must infer that this is the tool for layer/stackup questions rather than outline, net classes, or zones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_length_groupsGet PCB equal length groupsBRead-only
Lists equal length matching groups with member net lengths, reference length, max skew, and tolerance compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional filter by specific length group name. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. | |
| toleranceMm | No | Length matching tolerance in mm (default: 0.5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only, non-destructive, closed-world annotations already establish the safety profile, and "Lists" is consistent with them. The description adds useful reporting context (skew, reference length, tolerance compliance) but says nothing about how toleranceMm affects results or when includeRaw/timeoutMs matter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the result fields are packed efficiently. It is appropriately sized, though brevity comes at the cost of any operational guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query the description adequately sketches the returned data, which matters since there is no output schema. However, with a five-parameter schema containing an undocumented nested target object and no explanation of document targeting, an agent still lacks information needed to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%: name, includeRaw, and toleranceMm are documented in the schema, while the nested target object and timeoutMs are undocumented in both places. The description's mention of "tolerance compliance" loosely ties to toleranceMm but adds no syntax or default guidance beyond the schema, so it neither compensates for nor worsens the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Lists equal length matching groups" names a specific verb and resource, and the enumerated return fields (member net lengths, reference length, max skew, tolerance compliance) make the domain unambiguous. It is distinguishable from nearby siblings such as get_pcb_differential_pairs and get_pcb_net_report, though it never explicitly positions itself against them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention of alternatives for related length/matching analysis, and no stated prerequisite (e.g., that a PCB document must be open). The agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_net_classesGet PCB net classesBRead-only
Lists net classes and their member net assignments, routing rules (trace width, clearance, via size) on the active PCB.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional filter by specific net class name. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful content about what data is exposed (net assignments and routing rules), but says nothing about scoping, pagination, or the active-document targeting behavior implied by the nested target object.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence listing the verb, resource, and returned data with no filler. Slightly dense parenthetical but every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query with no output schema, the description should indicate the shape of returned net-class entries; it mentions categories of data but not structure or volume. Adequate but leaves gaps an agent would need to discover by calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%: 'name' and 'includeRaw' are documented in the schema, but the nested 'target' object (8 fields including documentType enum) and 'timeoutMs' carry no descriptions. The tool description adds no parameter meaning at all, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists net classes') plus what is included: member net assignments and routing rules (trace width, clearance, via size). It is fairly distinguishable from siblings like easyeda_get_pcb_net_report or easyeda_get_pcb_differential_pairs, though it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no exclusions, and no named alternatives among the many PCB-query siblings. 'On the active PCB' only weakly implies the operating context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_net_reportGet PCB net and routing completion reportBRead-only
Generates detailed physical metrics for nets on the active PCB (pad counts, track length, via count, copper zone coverage, and completion percentage).
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Optional filter by specific net name. | |
| limit | No | Maximum number of nets to return. | |
| status | No | Filter nets by routing status. | |
| target | No | ||
| category | No | Filter nets by electrical category. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description contributes the useful constraint that it operates on the 'active PCB', but it says nothing about why idempotentHint is false or whether results reflect a captured snapshot versus live board state, which matters for a reporting tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource stated before the metric enumeration, and no filler wording. The parenthetical metric list is long but each item is informative rather than redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter read tool with a nested target object and no output schema, the description usefully enumerates the returned metrics, which partly substitutes for the missing output schema. However it omits filtering behavior, result-size limits, and target/page scoping requirements, leaving real gaps for an agent invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so roughly a third of parameters (the nested target object and timeoutMs) are undocumented anywhere. The description mentions no input parameters at all, leaving the meaningful filter levers (net name, status, category) and the limit/pagination behavior to be discovered only from the schema, adding no semantic value over the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generates detailed physical metrics for nets on the active PCB') and enumerates the exact metrics produced (pad counts, track length, via count, zone coverage, completion percentage). This clearly distinguishes it from raw-entity siblings like easyeda_get_pcb_tracks or easyeda_get_pcb_vias, which return primitives rather than per-net aggregates, though it does not name the nearby easyeda_get_routing_status alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named. The agent must infer from the metric list that this is for per-net routing completeness audits, but nothing tells it whether to prefer this over easyeda_get_routing_status, easyeda_get_pcb_airwires, or easyeda_run_drc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_padsGet PCB pads and pin connectionsBRead-only
Inspects PCB pads (both component footprint pins and free pads) with net connections, layers, drill sizes, shapes, and coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Filter pads by assigned net name (e.g. 'GND', 'VCC'). | |
| layer | No | Filter pads by layer or multi-layer through-hole. | all |
| limit | No | ||
| target | No | Expected active PCB target. | |
| component | No | Filter pads by parent component designator (e.g. 'U1') or primitive ID. | |
| padNumber | No | Filter pads by specific pin/pad number (e.g. '1', 'A1'). | |
| timeoutMs | No | ||
| includeRaw | No | ||
| includeComponentPads | No | Include pads belonging to footprint components. | |
| includeStandalonePads | No | Include standalone / free canvas pads. |
TDQS
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 usefully adds that each pad carries net connection, layer, drill size, shape, and coordinates. It says nothing about result volume, default truncation at limit=200 (max 1000), timeout behavior, or whether the response is paginated, which matters for a board-wide dump.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a clarifying parenthetical - no filler or repetition. It is efficient, though the space saved is spent on return fields rather than the filtering behavior an agent needs to invoke it well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, nested-target, read-only query tool with no output schema, the description gives an adequate picture of the returned pad fields. It leaves out filtering semantics, pagination/limit behavior, target resolution, and any differentiation from similar PCB/schematic query tools, which is enough gap to keep it at minimum-viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 70%, and the description adds nothing about any parameter - it never mentions net, layer, component, or padNumber filtering, nor the includeComponentPads/includeStandalonePads toggles. Three parameters (limit, timeoutMs, includeRaw) are undocumented in both schema and description, so the description does not compensate for the coverage gap; baseline 3 is appropriate, not higher.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspects') with a concrete resource ('PCB pads') and clarifies scope by naming both component footprint pins and free/standalone pads. It does not name any sibling tool, so the agent must infer the boundary versus easyeda_list_pcb_components, easyeda_get_component_pins, or easyeda_get_pcb_vias on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, no exclusions, and no mention of the alternative pad/pin tools in the sibling set. The sentence describes what is returned rather than when an agent should reach for this tool instead of list_pcb_components or get_component_pins.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_placement_reportGet PCB component placement and collision reportBRead-only
Generates a comprehensive component placement report including density, bounding boxes, layer distribution, and collision/clearance warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| timeoutMs | No | ||
| collisionTolerance | No | Clearance margin in mm to flag tight spacing or collision warnings (default: 0.2). | |
| boardMarginTolerance | No | Tolerance in mm beyond board outline before considering component unplaced (default: 1.0). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; notably idempotentHint=false is declared but the description never explains why repeated calls might differ (e.g., a snapshot of live editor state). The enumeration of report sections adds useful output context but no cost, latency, or document-state caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, naming the deliverable first and then its sections. Nothing is wasted, though the sentence is purely descriptive and could have spent some of its length on usage or eligibility context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, a nested target object, and no output schema, the description should carry more weight on what the returned report contains and how the target scopes it. Listing the report sections partially compensates, but the meaning of target, the effect of timeoutMs, and the report's shape/interpreting of warnings remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: collisionTolerance and boardMarginTolerance are documented in the schema itself, while the nested target object and timeoutMs are not. The description's mention of "collision/clearance warnings" loosely connects to the tolerance parameters but adds no unit, default, or behavior detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Generates") and resource ("component placement report") and enumerates the report's contents: density, bounding boxes, layer distribution, and collision/clearance warnings. It does not, however, differentiate itself from siblings that also surface clearance problems, such as easyeda_run_drc or easyeda_get_pcb_3d_inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing says whether to run this before or after easyeda_run_drc, whether it complements easyeda_list_pcb_components, or what prerequisites (an open PCB document, a populated target) are needed. The agent must infer usage entirely from the tool name and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_tracksGet PCB tracksBRead-only
Lists and inspects copper tracks and traces on the active PCB layout with net, layer, geometry coordinates, width, and calculated length.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Optional filter by net name (e.g. 'GND', 'VCC'). | |
| layer | No | Optional filter by layer name or layer ID (e.g. 1, 'TopLayer', 2, 'BottomLayer'). | |
| limit | No | Maximum number of tracks to return. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. | |
| primitiveId | No | Optional filter by track primitive ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description does add value by naming the returned attributes (net, layer, geometry coordinates, width, calculated length), which matters since there is no output schema. It omits the limit default of 100 / cap of 500 and any truncation behavior, which is the main gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler: the resource and scope come first, followed by the fields inspected. Slightly list-like but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, zero-required read tool with a nested target object and no output schema, the description covers purpose and returned fields but leaves filter interplay, default paging and truncation unstated. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, with net, layer, limit, includeRaw and primitiveId all documented in the schema itself, so baseline 3 applies. The description adds nothing about parameters, and the two undocumented fields (target and timeoutMs) receive no explanation here either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Concrete verb plus resource: 'Lists and inspects copper tracks and traces on the active PCB layout.' That cleanly separates it from nearby PCB readers such as easyeda_get_pcb_vias, easyeda_get_pcb_pads and easyeda_get_copper_zones, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage cue is 'on the active PCB layout', which implies a PCB context but says nothing about when to pick this over easyeda_get_routing_status, easyeda_get_pcb_net_report or easyeda_trace_net. No when-not conditions, no mention of how the net/layer filters should be used for targeted inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_pcb_viasGet PCB viasBRead-only
Lists and inspects vias on the active PCB layout with net, center coordinates (x, y in mm), outer diameter, hole/drill diameter, and layers.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Optional filter by net name (e.g. 'GND', 'VCC'). | |
| limit | No | Maximum number of vias to return. | |
| target | No | ||
| timeoutMs | No | ||
| includeRaw | No | Include raw underlying primitive data. | |
| primitiveId | No | Optional filter by via primitive ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful context by naming the returned fields (coordinates in mm, outer/hole diameter, layers), which matters because there is no output schema. It omits pagination/limit behavior and what happens with the target object, so it is only moderately informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the phrasing blurs the line between returned fields and input filters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter read tool with a nested target object and no output schema, the description covers the resource and the return fields but leaves the target/scoping object and limit semantics unexplained. Adequate, but with clear gaps an agent would have to resolve from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the baseline is 3. The description's field list reads as returned properties rather than explaining the net or primitiveId filters, and it says nothing about the nested target object or includeRaw, so it does not compensate for the undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (lists/inspects) and a specific resource (vias on the active PCB layout), which clearly separates it from siblings like easyeda_get_pcb_pads and easyeda_get_pcb_tracks. It does not explicitly name a sibling it is not, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus related tools such as easyeda_get_pcb_tracks, easyeda_get_routing_status, or easyeda_get_pcb_net_report. It also doesn't mention that filters are optional or when inspecting a single via by primitiveId is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_routing_statusGet PCB Routing StatusBRead-only
Analyzes the PCB routing status, total nets, completion percentage, unrouted net connections (ratsnest), and optional net lengths.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No | ||
| includeNetLengths | No | Include calculated track length for each net. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds real value by stating what the tool reports back (net count, completion %, ratsnest, optional lengths) in the absence of an output schema; it stops short of mentioning prerequisites (an open PCB document) or that a timeout parameter governs execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; each listed item is distinct information. The parenthetical "(ratsnest)" is slightly redundant jargon, but overall the sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only status/report tool with no output schema and zero required parameters, the description gives a usable inventory of returned metrics. It omits preconditions (active PCB document), the meaning of the timeout budget, and any hint of result shape, which is thin but acceptable given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: includeNetLengths is already documented in the schema, and the description's "optional net lengths" merely echoes it. The other parameter, timeoutMs (default 30000, max 120000), is undocumented in both places, so the description does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("Analyzes") and a specific resource (PCB routing status), then enumerates the concrete outputs: total nets, completion percentage, unrouted connections (ratsnest), and optional net lengths. It does not distinguish this from near-neighbors such as easyeda_get_pcb_airwires or easyeda_get_pcb_net_report, so it is clear but not sibling-differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. An agent reading a board checklist could guess this is a progress/summary tool, but nothing in the description tells it whether to prefer this over easyeda_get_pcb_airwires, easyeda_get_pcb_net_report, or easyeda_run_drc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_schematic_netsGet Schematic Native NetsARead-only
Queries native schematic nets from EasyEDA Pro per-sheet or project-wide. Distinguishes native net connectivity from geometric inferences.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | No | Filter by schematic sheet/page ID. | |
| target | No | Expected active schematic target. | |
| allPages | No | Query across all schematic sheets. | |
| pageIndex | No | Filter by schematic sheet/page index. | |
| timeoutMs | No | ||
| includeRaw | No | Include raw EasyEDA net data in the result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful semantic context by clarifying that these are native EasyEDA schematic nets rather than inferred geometric connectivity. It does not disclose whether results are paginated, what form the net data takes, or how timeout/raw-data behavior works.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is two compact sentences with no filler, and the tool's purpose and scope are front-loaded. Every phrase contributes to identifying the resource and the key distinction from geometric inference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter query tool with a nested target object and no output schema, the description covers purpose and scope but leaves the target object semantics and result shape unexplained. The annotations adequately cover safety, but the absence of return-value information and limited parameter detail leaves some gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so most parameters are already documented. The description reinforces per-sheet versus project-wide querying, which maps to pageId/allPages, but adds no detail about the nested target object, timeoutMs, or includeRaw beyond the schema. Baseline 3 is appropriate when the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: queries native schematic nets from EasyEDA Pro, with per-sheet or project-wide scope. It also distinguishes the result from geometric inferences, which helps separate it from connectivity derived from layout geometry. It does not name a specific sibling such as easyeda_find_net or easyeda_trace_net, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'per-sheet or project-wide' implies the main scoping choice, and 'native net connectivity' versus 'geometric inferences' hints at when this tool is preferable. However, there is no explicit instruction naming alternatives like easyeda_find_net or easyeda_trace_net, nor any stated exclusions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_schematic_ports_busesGet schematic ports and busesBRead-only
Inspects net ports (hierarchical/global sheet connectors), multi-bit buses, and bus entry taps in the active schematic with connection validation and signal range diagnostics.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Expected active schematic target to guard against document drift | |
| timeoutMs | No | ||
| includeRaw | No | Whether to include raw primitive records from the editor | |
| includeBuses | No | Whether to include multi-bit buses | |
| includePorts | No | Whether to include net ports | |
| includeBusEntries | No | Whether to include bus entry taps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it performs connection validation and signal range diagnostics, meaning the call does analysis rather than a plain dump. It does not say how validation failures or range violations are surfaced, which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the inspected resource types front-loaded before the active-schematic scope and the diagnostic capabilities. Nothing is wasted, though the parenthetical about hierarchical/global connectors slightly interrupts the front-loading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, a nested target object and no output schema, the description should say more about what comes back, e.g. whether ports are grouped by sheet, how connection validation results are shaped, and how bus width mismatches are reported. The target/document-drift guard is only explained in the schema, so overall the definition is adequate but leaves the return contract undisclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents target, timeoutMs, includeRaw, includeBuses, includePorts and includeBusEntries. The description's mention of ports, buses and bus entry taps loosely maps to three include flags but adds no semantics about defaults or when to disable them, so it is a baseline-3 case with the schema doing the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Inspects') and enumerates three concrete resources (net ports, hierarchical/global sheet connectors, multi-bit buses, bus entry taps) scoped to the active schematic. This makes it distinguishable from nearby siblings such as easyeda_get_schematic_nets and easyeda_find_net, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative. An agent must infer from 'in the active schematic' alone that this is a read of connection primitives rather than a netlist-level query, and has no signal about whether to prefer easyeda_get_schematic_nets or easyeda_trace_net instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_get_selectionGet current canvas selectionBRead-only
Returns components, pins, or primitives currently selected by the user on the active schematic or PCB canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, closed-world and crucially idempotentHint=false; the description's 'currently selected by the user' explains why results vary between calls, which adds some context. However, it never says what happens when nothing is selected, whether the selection must be in the foreground document, or why a timeout exists — gaps the annotations cannot fill.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One information-dense sentence with no filler, and the key discriminator (user-selected objects) is front-loaded. It is efficient, though its compression is partly what leaves the behavioral questions unanswered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does carry responsibility for shape and does name the three possible kinds of returned objects (components, pins, primitives). It is still incomplete for a tool whose result depends on live UI state: empty-selection behavior and the timeout semantics are the main omissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter, timeoutMs (default 10000, max 120000), is entirely unmentioned. Its presence suggests the call may wait or poll for a user to make a selection, which is a materially different behavior from an instantaneous read, and the description gives no help in interpreting it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and a precisely scoped resource: the objects 'currently selected by the user on the active schematic or PCB canvas'. That user-selection scope distinguishes it from the many sibling listing tools (easyeda_list_schematic_components, easyeda_get_pcb_tracks, easyeda_list_documents), though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for resolving 'the thing the user just selected'. There is no explicit when-to-use statement, no guidance on when to prefer a canvas snapshot or context call instead, and no note on what to do if the selection is empty or spans multiple documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_highlight_netHighlight or clear PCB netBRead-only
Visually highlights a specified net on the EasyEDA Pro PCB canvas, or clears all highlighted nets.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Net name to highlight (e.g., 'GND', 'VCC_5V'). | |
| clear | No | When true, unhighlights all nets. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description usefully confirms the effect is confined to canvas display rather than persistent board data. However, it leaves out meaningful behavioral questions: does highlighting a new net replace the previous highlight or accumulate, is the highlight transient, and does the operation fail on an unknown net name (relevant given idempotentHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the two modes are stated efficiently. Slightly terse for the behavioral ambiguity it leaves, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, annotation-covered, non-destructive tool with no output schema, the essentials are present, but the agent is left unsure about highlight accumulation vs replacement, handling of unknown net names, and the interaction between net and clear. These gaps are small but relevant to correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: the net and clear parameters are already documented in the schema, and the description only restates them ("specified net", "clears all highlighted nets"). timeoutMs is undocumented in both places, so the description adds little beyond the schema and does not specify whether net is ignored when clear=true.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Visually highlights a specified net on the EasyEDA Pro PCB canvas" names a specific verb (highlight), resource (net), and scope (PCB canvas), plus the inverse mode "clears all highlighted nets." The visual/UI nature implicitly separates it from data-reading siblings like easyeda_find_net or easyeda_get_pcb_net_report, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the two modes but gives no when-to-use guidance, no prerequisites (e.g., whether an open PCB document is required), and no alternatives such as navigating to a net versus highlighting it. An agent must infer the calling context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_list_documentsList EasyEDA Pro DocumentsBRead-onlyIdempotent
Lists all documents belonging to the current EasyEDA Pro project and open editor tabs, detailing document identity, type, open/active status, and tab layout.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered without description help. The description adds useful context by specifying what the listing includes (open/active status and tab layout, not just project documents), but says nothing about ordering, pagination, or what happens when no project is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence that puts the resource scope first and the returned details second, with no filler. Slightly dense packing of four returned attributes into one clause keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with no output schema, the description usefully enumerates the fields an agent will receive, which compensates for the missing return-value documentation. The remaining gap is the undocumented timeout parameter and any statement of behavior when no project/tabs exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single parameter timeoutMs (with default 30000 and max 120000) is not mentioned at all in the description. Even though the parameter is optional and low-risk, the description does nothing to explain its units, default behavior, or what a timeout implies for this call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb plus resource ('Lists all documents belonging to the current EasyEDA Pro project and open editor tabs') and enumerates the returned fields (identity, type, open/active status, tab layout). It is clear what the tool does, but it never contrasts itself with siblings such as easyeda_open_document or easyeda_get_context, which an agent could confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The scope phrase 'current project and open editor tabs' only implies the situation in which it applies, leaving the agent to infer whether to call this before easyeda_open_document or instead of easyeda_get_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_list_pcb_componentsList PCB componentsCRead-only
Lists normalized PCB components with designator, footprint, placement layer, coordinates, and rotation angle.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Filter components by placement layer. | all |
| limit | No | ||
| query | No | Optional text filter against component designator, footprint, or value. | |
| target | No | Expected active PCB target. | |
| timeoutMs | No | ||
| includeRaw | No | ||
| includePads | No | Include normalized pad details for each component. | |
| includeProperties | No | Include custom properties and attributes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds that results are 'normalized' and lists the returned fields, which is meaningful since no output schema exists. It does not disclose the default/capped result count (limit 100, max 500) or any pagination behavior, which matters for a non-idempotent list call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource and returned fields front-loaded and no filler. It is arguably too terse for an 8-parameter tool with a nested target object, but nothing in the sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, 8 parameters including a nested target object, and a broad sibling set, the description covers only the return-field list. It omits the active-document targeting requirement, result limiting, and the optional pad/property expansions, leaving an agent to infer targeting and pagination from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 63%: layer, query, includePads and includeProperties are documented in the schema, while limit, timeoutMs, includeRaw and the nested target object are not. The description adds nothing about any parameter—no mention of layer filtering, text query, pad/property expansion, or that target identifies the expected active tab/page. It enumerates output fields rather than explaining inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists normalized PCB components') and enumerates exactly which attributes come back (designator, footprint, layer, coordinates, rotation). It is clear what the tool does, but it never distinguishes itself from the similarly-named easyeda_list_schematic_components or from easyeda_get_pcb_pads, so sibling differentiation is left to the PCB/schematic wording.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no mention that the tool operates on the active PCB document, and no routing to alternatives such as easyeda_get_pcb_pads for pad-level detail or easyeda_find_component for lookup. The 'pcb' in the name implies context but the description provides none.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_list_schematic_componentsList schematic componentsCRead-only
Lists normalized schematic components with designator, value/name, footprint, position, and key properties.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Optional text filter against component fields. | |
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds that components are 'normalized' and which fields are present, which is useful context, but it says nothing about pagination, truncation, or the cost of a full enumeration despite limit/allPages parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every clause carries information. It is efficient, though its brevity is partly the source of the missing parameter and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters, no output schema, and only 20% schema description coverage, the definition leaves the agent guessing about pagination defaults (allPages=true), the meaning of includeRaw, and how limit interacts with full listing. For a list tool with this many knobs, more explanation is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%: just the 'query' parameter is documented, while limit, allPages, timeoutMs, and includeRaw have no descriptions in either the schema or the tool description. The description's field list refers to return values, not inputs, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Lists normalized schematic components') and enumerates the returned fields (designator, value/name, footprint, position, key properties), so an agent knows exactly what comes back. It does not explicitly contrast itself with easyeda_list_pcb_components or easyeda_find_component, so sibling differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this listing tool versus easyeda_find_component, easyeda_schematic_snapshot, or easyeda_get_schematic_nets. No prerequisites, no exclusions, and no guidance on whether this is a full-enumeration tool or a filtered lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_live_statusEasyEDA Pro live statusARead-onlyIdempotent
Checks whether the EasyEDA Pro extension is connected and reports active document/capability information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is fully covered. The description adds that the call reports active document and 'capability information', but the latter is left undefined, and nothing is said about latency, failure modes when the extension is disconnected, or whether it errors versus returning a negative status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The only weakness is the vague noun phrase 'capability information', which does little work but costs few tokens.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of conveying what comes back, and 'active document/capability information' is only a gesture at the return payload. For a zero-parameter status probe this is close to adequate, but an agent still cannot predict the response shape or how a disconnected extension is reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. The description correctly implies a parameterless probe and does not invent inputs, so nothing more is needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb-and-resource pair: it checks extension connectivity and reports active document/capability information. This is clearly distinct from data-query siblings like easyeda_get_context or easyeda_get_selection, though it never names an alternative such as easyeda_doctor, which likely overlaps in diagnostic intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The implied usage — verifying the extension is connected before relying on other EasyEDA tools — is reasonably obvious from the phrasing, but there is no explicit when-to-use statement, no precondition guidance, and no indication of when easyeda_doctor or easyeda_get_context would be preferred instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_open_documentOpen EasyEDA Pro DocumentAIdempotent
Opens a document or activates an open tab in EasyEDA Pro, shifting input focus and canvas viewport. Provides readback confirmation and reports focus transition.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Tab ID to activate if already open | |
| target | No | Expected target document identity | |
| activate | No | Whether to bring focus and activate the tab | |
| timeoutMs | No | ||
| documentId | No | Document UUID to open | |
| splitScreenId | No | Optional split screen ID to open document into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable side-effect context beyond that: it changes input focus and the canvas viewport, and it returns readback confirmation of the focus transition. It does not say what happens when the expected target identity mismatches, which is the main remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the action front-loaded and no filler. The second sentence ('Provides readback confirmation and reports focus transition') is slightly redundant with the first's viewport/focus statement, but it is not wasteful enough to hurt.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with a nested identity object and no output schema, the description covers the action and its visible side effects but not the interaction between parameters or the mismatch/failure behavior. An agent still has to infer whether to pass documentId, tabId, or a full target object.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents tabId, documentId, activate, timeoutMs and splitScreenId, which sets a baseline of 3. The description adds nothing about the parameters and notably does not explain the nested 'target' object, how it differs from top-level documentId/tabId, or how identity matching is used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete verb and resource ('Opens a document or activates an open tab in EasyEDA Pro') and covers both modes of the operation, so the agent can distinguish it from list/navigation siblings. It stops short of naming a specific sibling (e.g., easyeda_list_documents as the source of a documentId) that would remove remaining ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'opens a document or activates an open tab', which suggests the two situations the tool covers. However, there is no explicit guidance on when to prefer this over easyeda_render_document_view or easyeda_navigate_component, and no mention of prerequisites such as first resolving a documentId via easyeda_list_documents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_board_outlinePrepare Board Outline MutationARead-only
Prepares creation, rectangular/polygonal sizing, clearing, or segment modification of the board outline on the active PCB. Returns a mutationId and exact confirmation phrase required for execution via easyeda_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Origin X coordinate in mm (for set_rectangle / create). | |
| y | No | Origin Y coordinate in mm (for set_rectangle / create). | |
| endX | No | New end X coordinate in mm (for modify_segment). | |
| endY | No | New end Y coordinate in mm (for modify_segment). | |
| width | No | Board width in mm (for set_rectangle / create). | |
| action | No | Board outline mutation action to perform. | set_rectangle |
| height | No | Board height in mm (for set_rectangle / create). | |
| points | No | Array of vertex coordinates in mm for polygonal outline (for set_polygon). | |
| startX | No | New start X coordinate in mm (for modify_segment). | |
| startY | No | New start Y coordinate in mm (for modify_segment). | |
| target | No | Expected active PCB target. | |
| lineWidth | No | Outline track line width in mm (default: 0.2). | |
| timeoutMs | No | ||
| primitiveId | No | Target segment primitive ID (for modify_segment). | |
| clearExisting | No | Whether to delete existing board outline primitives before creating new ones. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, which could mislead an agent into thinking this writes to the PCB; the description usefully corrects that by making clear this only stages a mutation and that execution happens elsewhere, so it adds real value beyond the annotations. However, it does not warn that clearExisting defaults to true (i.e., the staged action will delete existing outline primitives) or that idempotentHint=false means repeated prepares produce new mutationIds. With annotations already carrying the safety profile, a 3 fits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operation and resource, then the required follow-up call. No filler, though the phrase 'Prepares creation, rectangular/polygonal sizing, clearing, or segment modification' is slightly clunky compared to just naming the actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, nested-target, prepare-style tool with no output schema, the description still tells the agent what comes back (mutationId and confirmation phrase) and where to take it, which is the critical missing piece. Gaps remain around target validation and the destructive effect of clearExisting=true, but the schema covers most parameter detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 93%, so the schema already documents every parameter's meaning and per-action applicability. The description only loosely maps operation names to the action enum and adds nothing about the target object, timeouts, or how primitiveId selects a segment. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (Prepares) and resource (board outline on the active PCB) and enumerates the operation families matching the action enum (rectangular/polygonal sizing, clearing, segment modification). It never names the read-side sibling easyeda_get_board_outline, so the differentiation from that tool is left implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives the essential workflow rule: the returned mutationId plus exact confirmation phrase must be passed to easyeda_confirmed_action for execution. It does not state when to choose this over a read-only outline inspection or when not to use it (e.g., if the board is locked or a target is missing).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_copper_keepoutPrepare PCB copper zone or keepout mutationARead-only
Prepares creating, modifying, deleting, or recalculating/rebuilding copper zones and keepouts on the active PCB canvas with safety preview and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Shortcut start X coordinate in mm for rectangular area. | |
| y | No | Shortcut start Y coordinate in mm for rectangular area. | |
| net | No | Net name for copper zone creation (e.g. 'GND', 'VCC'). | |
| layer | No | Placement layer (default: 1 / TopLayer). | |
| width | No | Shortcut width in mm for rectangular area. | |
| action | Yes | Action: 'create', 'modify', 'delete', or 'rebuild' (rebuild applies to copperZone). | |
| entity | Yes | Entity type to mutate: 'copperZone' or 'keepout'. | |
| height | No | Shortcut height in mm for rectangular area. | |
| points | No | Array of boundary vertices ({ x, y } in mm). Minimum 3 vertices. | |
| target | No | Expected active PCB target. | |
| zoneId | No | Primitive ID of copper zone to modify, delete, or rebuild. | |
| fillType | No | Fill style for copper zones: 'solid', 'grid', or 'none'. | |
| clearance | No | Clearance spacing in mm (for copper zones). | |
| keepoutId | No | Primitive ID of keepout to modify or delete. | |
| timeoutMs | No | ||
| properties | No | Property modifications dictionary (for modify action). | |
| keepoutType | No | Keepout restriction type: 'all', 'track', 'via', 'copper', etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true and destructiveHint=false, so the safety bar is lower, yet the description still adds real value by explaining why: the tool only stages a preview and generates a confirmation phrase, and 'Does not modify the PCB until confirmed' resolves the apparent tension between a delete/rebuild capability and a read-only hint. It stops short of describing what the preview contains or where the phrase is submitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the scope and ending with the key safety constraint. The first sentence is dense but every clause carries information; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter mutation tool with a nested target object and no output schema, the description leaves important gaps: the mechanics of the two-phase confirm flow, what the preview returns, and how parameters map to actions are all unstated. It is minimally adequate but not complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 94%, so 16 of 17 parameters are already documented in the schema, giving a baseline of 3. The description adds no parameter-level meaning at all, notably omitting which parameters are required per action/entity combination (e.g. zoneId for modify/delete vs points/x/y/width/height for create).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (prepares) plus the exact resources (copper zones and keepouts) and enumerates the four staged actions (create, modify, delete, rebuild) on the active PCB canvas. That is enough to distinguish it from read-only siblings like easyeda_get_copper_zones and easyeda_get_keepouts, though it never names the tool that actually commits the change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'with safety preview and exact confirmation phrase' hints at a two-phase flow, but the description never states that the agent must follow up with easyeda_confirmed_action, nor when to prefer this over easyeda_get_copper_zones / easyeda_get_keepouts for inspection. No explicit when-not or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_drc_editPrepare a PCB design rule editBRead-only
Prepare an explicit, reviewable edit for native EasyEDA Pro PCB design rules. Returns target identity, baseline snapshot, editId and the exact required confirmation string.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | ||
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description usefully confirms this is a non-mutating staging step that returns a target identity, baseline snapshot, editId and confirmation string — exactly the context an agent needs to know nothing is applied yet. It omits how long the editId remains valid, whether the baseline is captured server-side, and what happens on a stale edit, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the purpose front-loaded and the return contract stated second; every phrase carries weight. It is arguably too terse for a schema this complex, but there is no filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return-value expectations are adequately covered in prose despite no output schema, and the non-mutating nature is clear. However, for a tool with a five-branch union input and zero schema descriptions, the definition leaves the most complex part of the contract — the rule payloads and the confirm workflow — unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the operation parameter is a five-variant oneOf (createConfiguration, updateCurrentConfiguration, replaceNetRules, replaceNetByNetRules, replaceRegionRules) whose 'config' and 'rules' payloads are untyped free-form objects. The description explains none of these variants, nor what shape config/rules must take, nor what timeoutMs affects, leaving the agent to guess at the core input contract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a precise verb+resource pair ('Prepare ... edit for native EasyEDA Pro PCB design rules') and the 'prepare' framing plus the returned editId/confirmation string clearly distinguish it from read-only siblings like easyeda_get_drc_rules or easyeda_get_drc_edit_result. It does not explicitly name an alternative tool, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of a 'required confirmation string' hints at a two-step prepare-then-confirm workflow, but the description never states when to choose this over easyeda_get_drc_rules, nor does it name the follow-up tool (easyeda_confirmed_action) that consumes the editId. The agent must infer the sequence from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_pcb_componentPrepare PCB Component TransformARead-only
Prepares a component transformation on the PCB (move, rotate, flip, or delete) with preview, scope, expected coordinates, and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Absolute X target coordinate in mm (for move) | |
| y | No | Absolute Y target coordinate in mm (for move) | |
| dx | No | Relative X delta offset in mm (for move) | |
| dy | No | Relative Y delta offset in mm (for move) | |
| layer | No | Explicit target layer/side for flip | |
| action | Yes | PCB component transform action to perform | |
| target | No | Expected active PCB target | |
| rotation | No | Absolute rotation angle in degrees (for rotate) | |
| component | Yes | Target component designator (e.g. 'U1', 'R3') or primitive ID | |
| dRotation | No | Relative rotation angle increment in degrees (for rotate) | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with that, explaining why: nothing is written until an exact confirmation phrase is supplied. It adds real context beyond the annotations by describing what the preview returns (scope, expected coordinates) and that a confirmation phrase is required, though it doesn't say what happens if the expected target/coordinates no longer match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action set front-loaded and the safety caveat second; nothing is redundant. The mid-sentence list of preview contents is slightly dense but each item is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters, a nested target object, and no output schema, the description does well to describe the preview payload, but it leaves the target object (project/page/fingerprint) and timeoutMs unexplained and doesn't describe the failure mode when the live board doesn't match the expected target. Adequate but with clear gaps for a mutation-adjacent tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 91%, so the schema already documents absolute x/y versus relative dx/dy, rotation versus dRotation, layer for flip, and the component designator format. The description only alludes to "expected coordinates" and adds no meaning beyond the schema, which is the expected baseline here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: prepares a PCB component transformation with the four concrete actions (move, rotate, flip, delete) enumerated. It is clearly distinct from siblings like easyeda_navigate_component or easyeda_prepare_pcb_layout by the resource it operates on, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Does not modify the PCB until confirmed" implies the two-phase prepare-then-confirm workflow, but the tool never names the confirming sibling (easyeda_confirmed_action) or says when to use this instead of easyeda_navigate_component or easyeda_find_component for locating a part. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_pcb_external_importPrepare PCB external layout or routing importARead-only
Validates and stages external layout or routing files (Specctra SES, EasyEDA router JSON, EasyEDA layout JSON, DXF) with geometry validation, safety preview, and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | External format to parse and import. | |
| target | No | Expected active PCB target. | |
| content | No | Inline text or JSON content of the external file. | |
| filePath | No | Absolute or relative path to local external file to import. | |
| timeoutMs | No | ||
| defaultNet | No | Default net name for imported routing traces. | |
| dryRunOnly | No | If true, validates and parses geometry without staging a mutation. | |
| netMapping | No | Dictionary mapping external net names to project net names. | |
| targetLayer | No | Default or target PCB layer for imported geometries (default: 1 for Top, 10 for BoardOutline/DXF). | |
| layerMapping | No | Dictionary mapping external layer identifiers to EasyEDA layer IDs/names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with them by clarifying that no PCB change occurs until an exact confirmation phrase is supplied. It adds real value with 'geometry validation, safety preview, and exact confirmation phrase', though it doesn't say where that phrase comes from or what the preview contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the operation and the format list front-loaded and the safety caveat placed last where it matters. The phrase 'exact confirmation phrase' is slightly underspecified for the space it occupies, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, nested-object, mutation-staging tool with no output schema, the description leaves the confirmation mechanics and the expected return (preview summary, token, validation errors) unexplained. It is adequate to identify the tool but not to drive the full stage-confirm sequence without opening the schema and a sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 90%, so the schema already explains format, content, filePath, dryRunOnly, netMapping, and layerMapping. The description only echoes the format enum and adds no guidance on the nested target object, timeoutMs, or how layerMapping interacts with targetLayer, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('validates and stages') and resource ('external layout or routing files') and enumerates the four supported formats (Specctra SES, router JSON, layout JSON, DXF). It implicitly distinguishes itself from the native-layout siblings (easyeda_prepare_pcb_layout, easyeda_prepare_pcb_routing) by the 'external' framing, but never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives implied usage context ('Does not modify the PCB until confirmed') that suggests a two-step stage-then-confirm flow, and the presence of easyeda_confirmed_action alongside hints at that. However, it never states when to choose this over prepare_pcb_layout or prepare_pcb_routing, nor when to prefer a dry run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_pcb_layoutPrepare PCB Auto-layoutARead-only
Prepares native component auto-placement/auto-layout on the active PCB canvas within the board outline with safety preview and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Layout operation to perform. | autolayout |
| target | No | Expected active PCB target. | |
| timeoutMs | No | ||
| components | No | Explicit array of component designators to arrange (e.g. ['U1', 'R1']). If omitted, arranges all unlocked components. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description usefully explains why: nothing is modified until an exact confirmation phrase is supplied, with a safety preview step. This adds real procedural context (preview-then-confirm workflow, board-outline scoping) beyond the annotations without contradicting them, since the prepare step itself is non-mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action first and the non-mutation guarantee second. No filler, and the most decision-relevant fact (nothing changes until confirmed) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter prepare tool with no output schema, the description covers what it does, where (active PCB, board outline), and the safety contract. It could be stronger by naming easyeda_confirmed_action as the follow-up step or noting that a preview/result must be retrieved, but nothing essential for invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the components parameter is already documented in the schema, including the 'unlocked components' default. The description adds the board-outline constraint but says nothing about target validation, components selection, or timeoutMs, so it does not materially extend parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Prepares native component auto-placement/auto-layout on the active PCB canvas within the board outline" gives a specific verb (auto-place/auto-layout) and resource (PCB components within the outline), which separates it from placement-adjacent siblings like easyeda_prepare_pcb_component and easyeda_prepare_pcb_routing. It stops short of naming any sibling explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the tool for bulk component arrangement but the description never says when to choose it over easyeda_prepare_pcb_component (single component) or easyeda_get_pcb_placement_report (inspection). No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_pcb_net_constraintPrepare PCB net constraint mutationARead-only
Prepares creating, modifying, or deleting net classes, differential pairs, or equal length groups with safety preview, API capability check, and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the net class, differential pair, or length group. | |
| nets | No | Member net names (for netClass or lengthGroup). | |
| action | Yes | Action: 'create', 'modify', or 'delete'. | |
| entity | Yes | Entity type to mutate: 'netClass', 'differentialPair', or 'lengthGroup'. | |
| target | No | Expected active PCB target. | |
| clearance | No | Isolation clearance in mm (for netClass). | |
| timeoutMs | No | ||
| properties | No | Property modifications dictionary (for modify action). | |
| traceWidth | No | Trace width in mm. | |
| negativeNet | No | Negative net name for differential pair. | |
| positiveNet | No | Positive net name for differential pair. | |
| toleranceMm | No | Length matching skew tolerance in mm. | |
| viaDiameter | No | Via outer diameter in mm (for netClass). | |
| targetLengthMm | No | Target length in mm for length group. | |
| differentialGap | No | Differential pair spacing/gap in mm. | |
| targetImpedance | No | Target differential impedance in Ohms (e.g. 90, 100). | |
| viaHoleDiameter | No | Via drill hole diameter in mm (for netClass). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes meaningfully beyond the annotations by disclosing a safety preview, an API capability check, and an exact confirmation phrase requirement — a workflow shape that readOnlyHint=true alone would not convey. It stops short of describing what the preview payload contains or what happens if the capability check fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the primary capability front-loaded and the non-destructiveness caveat as the closer. No redundant restatement of the title or schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter tool with a nested target object and no output schema, the description leaves notable gaps: it does not explain the returned preview/phrase structure or which parameter subsets apply to netClass versus differentialPair versus lengthGroup. Adequate to identify the tool, but not fully sufficient for correct invocation without reading the schema closely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 94%, so nearly every parameter (clearance, positiveNet/negativeNet, targetLengthMm, differentialGap, etc.) is already documented in the schema, including which entity type each applies to. The description adds no conditional guidance about which parameters are required for which action/entity combination, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Prepares creating, modifying, or deleting') and names all three target resources that map exactly to the entity enum (net classes, differential pairs, equal length groups). This clearly separates it from read-only siblings such as easyeda_get_pcb_net_classes and from the mutation-executing easyeda_confirmed_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'Does not modify the PCB until confirmed' tells the agent this is a pre-step, but it never names the follow-up tool (easyeda_confirmed_action / easyeda_get_mutation_result) or says when to pick this over easyeda_prepare_pcb_track_via or easyeda_prepare_drc_edit. An agent must infer the two-phase workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_pcb_routingPrepare PCB Auto-routing or UnroutingARead-only
Prepares native auto-routing or destructive unrouting of tracks/vias on the active PCB canvas with explicit nets scope, safety preview, and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| nets | No | Explicit array of net names to target (e.g. ['GND', 'VCC']). If omitted, targets all nets. | |
| action | Yes | Routing operation: autoroute to route traces, or unroute to destructively clear tracks/vias. | |
| target | No | Expected active PCB target. | |
| timeoutMs | No | ||
| ignoreNets | No | Array of net names to exclude from autorouting. | |
| keepExistingRoutes | No | Whether to preserve existing tracks during autorouting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavior: there is a safety preview, an 'exact confirmation phrase' is required, and nothing is mutated until confirmation — this explains why readOnlyHint=true can coexist with a routing operation. It also flags that 'unroute' is destructive, which is context the destructiveHint=false annotation alone would hide. It does not say what the preview contains or how the confirmation phrase is obtained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the operation and followed by scope, safety behavior, and the non-mutation guarantee. Every clause carries information; nothing is redundant with the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation-preparation tool with a nested target object and no output schema, the definition omits what the preview/response looks like and how the confirmation phrase is produced or passed on. It covers risk and scope well but leaves the agent unsure how to finish the flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema already documents nets, ignoreNets, action and keepExistingRoutes. The description adds only the notion of 'explicit nets scope', with no guidance on the target object, timeout, or how ignoreNets interacts with nets. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Prepares') plus the resource ('auto-routing or destructive unrouting of tracks/vias') and its scope ('active PCB canvas with explicit nets scope'), so an agent can tell it apart from read-only siblings like easyeda_get_routing_status or easyeda_get_pcb_tracks. It does not explicitly distinguish itself from adjacent prepare tools such as easyeda_prepare_pcb_layout or easyeda_prepare_pcb_track_via, which keeps it below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Does not modify the PCB until confirmed' implies a two-step prepare-then-confirm workflow, but the description never names the follow-up tool (easyeda_confirmed_action / easyeda_get_mutation_result) nor states prerequisites such as inspecting routing status first. Usage is implied rather than instructed, and there are no when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_pcb_track_viaPrepare PCB track or via mutationARead-only
Prepares creating, modifying, or destructively deleting copper tracks and vias on the active PCB canvas with safety preview and exact confirmation phrase. Does not modify the PCB until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Center X coordinate in mm (for via creation). | |
| y | No | Center Y coordinate in mm (for via creation). | |
| net | No | Net name for created track or via (e.g. 'GND', 'VCC'). | |
| endX | No | End X coordinate in mm (for track creation). | |
| endY | No | End Y coordinate in mm (for track creation). | |
| layer | No | Placement layer for created track (default: 1 / TopLayer). | |
| viaId | No | Primitive ID of via to modify or delete. | |
| action | Yes | Action: 'create', 'modify', or 'delete'. | |
| entity | Yes | Entity type to mutate: 'track' or 'via'. | |
| startX | No | Start X coordinate in mm (for track creation). | |
| startY | No | Start Y coordinate in mm (for track creation). | |
| target | No | Expected active PCB target. | |
| trackId | No | Primitive ID of track to modify or delete. | |
| diameter | No | Via outer diameter in mm (default: 0.6). | |
| lineWidth | No | Track line width in mm (default: 0.254). | |
| timeoutMs | No | ||
| properties | No | Property modifications dictionary (for track/via modification). | |
| holeDiameter | No | Via drill hole diameter in mm (default: 0.3). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses the key behavioral trait: this is a non-mutating staging step that requires an exact confirmation phrase, which reconciles with readOnlyHint=true despite the word 'destructively'. It does not cover what happens on target fingerprint mismatch, whether previews expire, or permission requirements, but it adds real context the structured hints do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the operation scope front-loaded and the non-mutation guarantee placed second as the critical safety qualifier. Nothing is repeated from the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter, nested-target, destructive-capable tool with no output schema, the description covers the essential things an agent cannot get from the schema: that this stages rather than executes and that confirmation is required. It stops short of explaining the confirmation handoff or what the preview returns, which would fully close the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 94%, so per-property meaning (coordinates, viaId/trackId, lineWidth, properties, target fingerprint) is already handled by the schema. The description adds only the entity/action permutation framing ('tracks and vias' for create/modify/delete) and no format or constraint detail beyond it, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Prepares creating, modifying, or destructively deleting copper tracks and vias') plus the target surface ('on the active PCB canvas'), so it is immediately distinguishable from read-only siblings like easyeda_get_pcb_tracks or easyeda_get_pcb_vias. An agent knows this is a mutation-preparation tool scoped to tracks and vias, not routing, layout, or net-constraint work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Prepares ... with safety preview and exact confirmation phrase' and 'Does not modify the PCB until confirmed', which signals a two-phase write flow. However, the description never names the follow-up tool (easyeda_confirmed_action / easyeda_get_mutation_result) or states when to prefer this over the read-side siblings or easyeda_prepare_pcb_routing. The agent must infer the confirmation handoff from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_schematic_busPrepare Schematic Bus MutationARead-only
Prepares a create, modify, or delete operation on schematic multi-bit buses or diagonal bus entries with syntax parsing, coordinate validation, preview, and exact confirmation phrase. Does not write until confirmed via easyeda_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Net name for tapped signal (e.g. 'DATA0') | |
| endX | No | End X for bus entry tap | |
| endY | No | End Y for bus entry tap | |
| name | No | Bus name with syntax, e.g. 'DATA[0..7]' or 'ADDR[15:0]' | |
| busId | No | Target bus primitive ID for modify, delete, or attaching bus entry | |
| color | No | Bus color string | |
| action | Yes | Bus or bus entry action to perform | |
| startX | No | Start X for bus entry tap | |
| startY | No | Start Y for bus entry tap | |
| target | No | Expected active schematic target | |
| wireId | No | Primitive ID of wire connected by bus entry | |
| entryId | No | Target bus entry primitive ID for delete | |
| rotation | No | Rotation angle for bus entry | |
| lineWidth | No | Bus stroke width | |
| timeoutMs | No | ||
| coordinates | No | Flat array of coordinates [x1, y1, x2, y2, ...] for bus polyline (min 4 numbers / 2 points) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations by disclosing the two-phase prepare/confirm model, that syntax parsing and coordinate validation happen at prepare time, and that a preview plus an exact confirmation phrase are produced. This resolves an apparent tension with readOnlyHint=true (the tool itself stages rather than writes) and notes the destructive actions only land after confirmation. It stops short of saying what happens on validation failure or whether the preview expires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the operation scope front-loaded and the confirmation constraint second. Nothing repeats the title mechanically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, nested-object staging tool with no output schema, the description supplies the critical missing piece: that it returns a preview and requires an exact confirmation phrase via easyeda_confirmed_action. It does not describe error behavior or preview lifetime, which is a minor residual gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 94%, so parameters are already well documented (bus name syntax, busId scoping, coordinate array format, target object). The description's mention of "syntax parsing, coordinate validation" adds only generic framing rather than per-parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ("Prepares") plus the exact resources ("schematic multi-bit buses or diagonal bus entries") and enumerates the operation set (create, modify, delete). An agent can distinguish this from easyeda_prepare_schematic_wire or easyeda_prepare_schematic_port purely from the resource nouns, without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the workflow condition: nothing is written until confirmed via easyeda_confirmed_action, which routes the agent to the correct follow-up sibling. It does not explicitly say when to prefer this over the wire/port prepare tools, but the resource scoping implies it clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_schematic_componentPrepare Schematic Component MutationARead-only
Prepares a create, move, update, or delete operation on a schematic component with full preview, ID/designator resolution, and exact confirmation phrase. Does not modify the schematic until confirmed via easyeda_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate for placement or absolute move | |
| y | No | Y coordinate for placement or absolute move | |
| dx | No | Relative delta X for move | |
| dy | No | Relative delta Y for move | |
| value | No | Component value (e.g. '10k', '100nF') | |
| action | Yes | Component mutation action to perform | |
| device | No | Device name, LCSC code, or device query to create (e.g. '10k 0603', 'C1523', 'ESP32') | |
| mirror | No | Mirror state | |
| target | No | Expected active schematic target to guard against drift | |
| rotation | No | Rotation angle in degrees (0, 90, 180, 270) | |
| component | No | Primitive ID or designator (e.g. 'R1', 'U2') for move, update, or delete | |
| footprint | No | Footprint package name (e.g. '0603', 'SOIC-8') | |
| timeoutMs | No | ||
| addIntoBom | No | Whether to include in BOM | |
| addIntoPcb | No | Whether to forward to PCB | |
| designator | No | Designator to assign or update (e.g. 'R10') | |
| properties | No | Key-value properties to update (designator, value, footprint, rotation, mirror, etc.) | |
| subPartName | No | Sub-part name for multi-part components |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this by stating no modification occurs before confirmation — an important clarification for a tool that prepares delete operations. However, it doesn't disclose what the preview/token looks like, whether tokens expire or are invalidated by a subsequent prepare, or what happens if the target guard mismatches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and operation set, followed by the safety guarantee and the required confirmation tool. No filler and nothing redundant against the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter mutation-preparation tool with no output schema, the description covers the safety contract and the handoff to easyeda_confirmed_action. It is slightly thin on what the caller receives from the preview (confirmation phrase format, target fingerprint handling), which the agent needs to complete the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 94% schema description coverage, the schema already documents nearly every parameter, so the baseline applies. The description adds one useful semantic claim — 'ID/designator resolution' — signaling that the component parameter accepts either form, but otherwise contributes little parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Prepares'), the resource ('schematic component'), and enumerates the covered operations (create, move, update, delete). This cleanly distinguishes it from easyeda_prepare_pcb_component and the other prepare_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the follow-up step: nothing is modified until confirmed via easyeda_confirmed_action, which tells the agent this is the first half of a two-call workflow. It does not say when to use this versus read-only siblings like easyeda_get_selection or easyeda_find_component for locating the target first, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_schematic_pcb_syncPrepare Schematic-PCB SynchronizationARead-only
Prepares a synchronization or board creation mutation between Schematic and PCB in EasyEDA Pro ('syncToPcb', 'syncToSchematic', 'createPcbFromSchematic') with cross-domain discrepancy preview and exact confirmation phrase. Does not write until confirmed via easyeda_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Board outline width in mm (default: 100) | |
| action | Yes | Synchronization or board creation action to perform | |
| height | No | Board outline height in mm (default: 80) | |
| boardName | No | Name for newly created PCB document (for createPcbFromSchematic) | |
| pcbTarget | No | Expected PCB document target | |
| timeoutMs | No | ||
| layerCount | No | Copper layer count for created PCB board (default: 2) | |
| schematicTarget | No | Expected schematic document target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuine value beyond the annotations: it explains that despite being a mutation-preparation tool, nothing is written until confirmed via easyeda_confirmed_action, which reconciles the readOnlyHint=true annotation that would otherwise look suspicious. It also discloses that a confirmation phrase is required and that discrepancies are previewed. It stops short of describing what the preview contains or what happens if the confirmation phrase does not match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that packs purpose, the three action names, the preview behavior, and the confirmation gate with no filler. It is dense and somewhat compressed, but every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should carry more of the return-value burden, yet it only gestures at a 'cross-domain discrepancy preview' without saying what that preview reports. For an 8-parameter, mutation-adjacent tool with nested target objects and freshness fields, the gap around target/fingerprint semantics and confirmation failure is a real omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (88%), so width, height, layerCount, boardName, and the action enum are already documented in the schema and the baseline is 3. The description adds no per-parameter meaning and notably does not explain the schematicTarget/pcbTarget nested objects, whose capturedAt and fingerprint fields imply staleness validation the description never mentions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Prepares a synchronization or board creation mutation between Schematic and PCB') and enumerates the exact action enum values, so the agent knows precisely which operations route here. It distinguishes itself from the follow-up tool easyeda_confirmed_action, but does not differentiate from the sibling easyeda_compare_schematic_pcb, which also produces cross-domain discrepancy information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear workflow context: this is the prepare half of a two-step flow that only writes after easyeda_confirmed_action, which tells the agent when to use it in sequence. It lacks explicit exclusions (e.g., 'if you only want a read-only comparison without intent to mutate, use easyeda_compare_schematic_pcb instead') and says nothing about failure or mismatch handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_schematic_portPrepare Schematic Port MutationARead-only
Prepares a create, modify, or delete operation on a schematic net port (hierarchical/sheet connector) with preview, validation, and exact confirmation phrase. Does not write until confirmed via easyeda_confirmed_action.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate for port placement | |
| y | No | Y coordinate for port placement | |
| name | No | Net name for the port (e.g. 'TXD', 'CLK') | |
| color | No | Port color string | |
| action | Yes | Port action to perform | |
| portId | No | Target port primitiveId for modify or delete | |
| target | No | Expected active schematic target | |
| portType | No | Port direction / type | |
| rotation | No | Rotation angle in degrees (0, 90, 180, 270) | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only say readOnlyHint=true and destructiveHint=false; the description adds the crucial context that this call stages a mutation, produces a preview plus validation, and emits an exact confirmation phrase that must be echoed to easyeda_confirmed_action. That reconciles the seemingly odd readOnlyHint on a create/modify/delete tool and prevents the agent from assuming the change already happened. It leaves idempotentHint=false unexplained (whether repeated calls stack duplicate previews) and says nothing about how long a prepared action stays valid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the operation and resource, then the non-obvious staging/confirmation constraint. Every clause carries information an agent needs; nothing is redundant with the title or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with a nested target object and no output schema, the description never indicates what the preview/validation result contains, where the exact confirmation phrase comes from, or what happens on validation failure. It is adequate to identify and invoke the tool but leaves the agent guessing about the result and the confirmation handshake details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 90% schema description coverage, the schema already documents the action enum, portId, portType, rotation, coordinates, and the nested target object, so the baseline applies. The description adds no parameter-level meaning beyond the schema — for example, that portId is required for modify/delete but ignored for create, or which fields the validation checks against target.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (prepares) and precise resource (schematic net port / hierarchical sheet connector) and enumerates the three operations it stages (create, modify, delete). The resource noun alone distinguishes it from siblings such as easyeda_prepare_schematic_wire, _bus, and _component, so no schema look-up is needed to tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the follow-up path: nothing is written until confirmed via easyeda_confirmed_action, which tells the agent this is a staging step rather than a standalone mutation. It does not, however, say when to choose this over the sibling prepare_* tools, nor whether a preview can be discarded or must be confirmed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_prepare_schematic_wirePrepare Schematic Wire MutationARead-only
Prepares a wire creation, modification, deletion, or net label placement operation in EasyEDA Pro with preview, coordinate validation, affected connections check, and exact confirmation phrase. Does not write until confirmed.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate for net label | |
| y | No | Y coordinate for net label | |
| net | No | Net name for wire or net label | |
| kind | No | Kind of net label (label or power/ground flag) | |
| color | No | Wire color string | |
| action | Yes | Wire mutation action to perform | |
| target | No | Expected active schematic target | |
| wireId | No | Target wire ID for modify or delete | |
| flagType | No | Flag type for net flag (Power, Ground, NetPort) | |
| rotation | No | Rotation angle for net label or flag | |
| lineWidth | No | Wire line width | |
| timeoutMs | No | ||
| coordinates | No | Flat array of polyline coordinates [x1, y1, x2, y2, ...] (minimum 2 points) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context beyond the annotations: it performs preview, coordinate validation, an affected-connections check, and returns an exact confirmation phrase, and it explicitly states no write occurs until confirmation. readOnlyHint=true is consistent with that two-phase claim since this call itself does not mutate. It stops short of explaining how long a prepared preview stays valid or what identifies it later, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence plus a short safety clause, with the operation scope front-loaded and the non-writing guarantee immediately after. Every clause earns its place and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, nested-object, two-phase mutation tool with no output schema, the description conveys the essential workflow, the safety guarantee, and the confirmation-phrase output. What is missing is the handoff to the confirm and result tools and any note on per-action parameter requirements, which matters given four distinct action modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 92%, so the schema already documents nearly all 13 parameters, including the nested target object and the action enum. The description adds no parameter-level meaning, such as which fields are required for which action (e.g. wireId for modify/delete, coordinates for createWire, net plus x/y for addNetLabel). With the high coverage baseline, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Prepares') plus the exact resource ('schematic wire') and enumerates the four supported mutations: create, modify, delete, and net label placement. That level of specificity distinguishes it from sibling prepare tools such as easyeda_prepare_schematic_component, easyeda_prepare_schematic_port, and easyeda_prepare_schematic_bus without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Does not write until confirmed' correctly signals this is a mandatory pre-step before any real mutation, which implies when to use it. However, it never names the confirmation tool (easyeda_confirmed_action) or the result-retrieval tool (easyeda_get_mutation_result) that the workflow clearly requires, and it gives no when-not guidance, leaving the agent to infer the next step from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_render_document_viewRender EasyEDA Pro Document ViewBRead-only
Captures the visible canvas rendering viewport image in EasyEDA Pro (via DMT_EditorControl). Explicitly documents viewport limits and asserts target match.
| Name | Required | Description | Default |
|---|---|---|---|
| tabId | No | Target tab ID if capturing a specific open tab | |
| format | No | Image encoding format | data_url |
| target | No | Expected document target to guard against capturing wrong canvas | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered for free. The description does add real behavior beyond that: it documents viewport limits and that the target object is asserted to guard against capturing the wrong canvas, which tells the agent the call can fail on mismatch. It still omits what happens on timeout or render-not-ready, which matters for a 30s-default capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and resource. The second sentence is somewhat meta ("explicitly documents viewport limits") rather than stating the limits themselves, but nothing is bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should say more about what comes back or how failure surfaces, and the "viewport limits" it advertises are never actually stated. For a capture tool with a nested target guard and a timeout, this leaves the agent guessing about error modes and payload size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, including a clear description on the nested target object ("Expected document target to guard against capturing wrong canvas") and on format and tabId, so the schema carries most of the load. The description adds no parameter-level detail such as which target fields are actually checked for the assertion or how timeoutMs interacts with rendering.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (captures) and resource (the visible canvas rendering viewport image) in EasyEDA Pro, plus the underlying mechanism (DMT_EditorControl). It is clearly narrower than a full-document export, though it never names the overlapping siblings (easyeda_export_image, easyeda_schematic_snapshot) it needs to be told apart from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "visible canvas rendering viewport" implicitly signals use when the current on-screen view is what matters, as opposed to exporting a whole document. However, there is no explicit when-to-use statement, no exclusions, and no pointer to easyeda_export_image or easyeda_schematic_snapshot, which is the main routing decision an agent faces here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_run_drcRun PCB Design Rule Check (DRC)ARead-only
Executes the native EasyEDA Pro PCB Design Rule Check (DRC) on the active board and reports detailed violations, categorized counts, evidence, document target, and execution comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| rule | No | Optional rule name or code filter (e.g. Clearance, ShortCircuit, UnroutedNet). | |
| limit | No | Maximum number of detailed violation records to return. | |
| strict | No | Enforce strict design rule checking. | |
| target | No | Expected document target to assert execution on the intended PCB document. | |
| severity | No | Filter reported violations by severity level ('all', 'error', or 'warning'). | |
| timeoutMs | No | ||
| compareWithEditor | No | Compare execution results against editor-side DRC error state if available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the lower bar applies. The description does add useful behavioral detail beyond them by enumerating what the run produces — detailed violations, categorized counts, evidence, document target, and execution comparison — which matters because no output schema exists. It omits pass/fail semantics, how the target assertion is enforced, and timeout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first and the output inventory trailing. The trailing list is dense but every item describes a real return field, so nothing is filler. Slightly long in the enumerative tail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven optional parameters, a nested target object, and no output schema, the description compensates by describing the shape of the result. The remaining gap is operational: strict mode, timeoutMs, and target-assertion failure behavior are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents rule, limit, strict, severity, target, and compareWithEditor. The description only echoes 'document target' and 'execution comparison' at a high level and adds no syntax, defaults, or filtering semantics beyond that. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Executes') and resource ('native EasyEDA Pro PCB Design Rule Check') scoped to 'the active board', which implicitly separates it from easyeda_run_schematic_erc and easyeda_get_drc_rules. It stops short of naming those siblings explicitly, so an agent must infer the boundary rather than read it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the tool name and the mention of an active PCB board; there is no statement of when to run DRC versus fetching rules (easyeda_get_drc_rules) or the DRC edit workflows. No prerequisites, exclusions, or failure conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_run_schematic_ercRun Schematic Electrical Rules Check (ERC)BRead-only
Executes native EasyEDA Pro schematic Electrical Rules Check (ERC) on the active document, reporting rule violations, unconnected pins, and design errors.
| Name | Required | Description | Default |
|---|---|---|---|
| strict | No | Enforce strict electrical rule checking. | |
| target | No | Expected active schematic target. | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds value by saying it uses the native EasyEDA Pro engine and enumerates what it reports (rule violations, unconnected pins, design errors), but says nothing about whether the run blocks, how long results take (despite a 120s timeout cap), or whether findings are persisted to a report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the essential scope ('schematic', 'active document', 'reports violations') comes first. It is efficient but leaves unused room that could have carried usage or parameter guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey return values; it does so only loosely by listing categories of findings, without describing shape, severity levels, or counts. For a read-only analysis tool with a nested target object and timeout, this is adequate but leaves real gaps around result format and target-staleness behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 67%, and the description explains none of the three parameters — no explanation of what 'strict' changes in rule severity, what the nested 'target' fingerprint/capturedAt fields are for (staleness validation), or what timeoutMs governs. 'On the active document' loosely gestures at 'target' but adds no operational meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Executes native EasyEDA Pro schematic Electrical Rules Check (ERC) on the active document.' The word 'schematic' implicitly separates it from easyeda_run_drc for PCBs, but it does not explicitly name that sibling or easyeda_find_unconnected_pins/easyeda_verify_connections, which overlap with the 'unconnected pins' output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the pre-fabrication schematic check, and 'on the active document' hints at a precondition. There is no explicit when-to-use, when-not-to-use, or guidance about when to prefer easyeda_verify_connections or easyeda_find_unconnected_pins instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_schematic_snapshotGet EasyEDA Pro schematic snapshotARead-only
Returns components, pins, nets, wires, labels and provenance. Single-page reads attempt native Protel2 netlist membership and explicitly report geometric fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| allPages | No | Collect all schematic pages when EasyEDA Pro exposes them. | |
| timeoutMs | No | ||
| includeRaw | No | Include compact raw EasyEDA API data for fallback reasoning. Defaults to false to minimize token consumption. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and destructive=false, so safety is covered. The description earns credit by disclosing that single-page reads attempt native Protel2 netlist membership and explicitly report a geometric fallback — a real fidelity caveat an agent needs when interpreting results, though it says nothing about cost or size of the returned payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the return payload then the fallback caveat; no filler. It could be strengthened by naming the alternative tools, but nothing present is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, no-output-schema read tool that returns a broad composite object, enumerating the top-level return fields plus the provenance/fallback caveat gives an agent enough to interpret results. Remaining gaps (payload size, timeout behavior, multi-page semantics) are minor relative to its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (allPages and includeRaw are documented in the schema; timeoutMs is not). The description adds no per-parameter meaning, so with substantial schema documentation the baseline of 3 is appropriate — the one undocumented parameter stays unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and enumerates the concrete resources returned (components, pins, nets, wires, labels, provenance), so the agent knows this is an aggregate snapshot read. It does not, however, name or contrast with the narrower siblings like easyeda_list_schematic_components, easyeda_get_schematic_nets, or easyeda_trace_net, which overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no sibling is mentioned by name despite many overlapping read tools (easyeda_get_schematic_nets, easyeda_list_schematic_components). The only usage-ish signal is the single-page netlist attempt note, which is behavioral rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_search_librarySearch component libraryCRead-only
Searches the EasyEDA / LCSC component catalog by keyword, LCSC part number (e.g. C1523), or manufacturer part number.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Keyword, part number, or LCSC part code (e.g., 'C1523', 'ESP32', '0402 10k'). | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds nothing behavioral beyond that: no mention that results are limited/paginated, no note that the lookup goes to an external catalog (which the timeoutMs parameter hints at), and no indication of what a result contains. For a network-backed search with no output schema, this leaves real gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler or redundant preamble; the verb and searchable identifier types come first. It is arguably too terse for the tool's scope, but nothing in it wastes the reader's time.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three parameters, no output schema, and 33% schema coverage, the definition should at minimum explain the limit/timeout parameters and what a returned catalog entry looks like (part number, stock, package, price). None of that is present, so an agent can call it but cannot predict the response shape or tune result size meaningfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33%: only 'query' is documented, and the description's restatement (keyword, LCSC part number, manufacturer part number) largely duplicates the schema's own text while omitting the manufacturer-PN form the schema lacks. Neither 'limit' (default 20, max 100) nor 'timeoutMs' (default 30s, max 120s) is explained, so the description fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Searches the EasyEDA / LCSC component catalog") and enumerates the three accepted identifier types, which separates it in spirit from schematic-side siblings like easyeda_find_component or easyeda_list_schematic_components. It does not explicitly name those siblings, so the catalog-vs-schematic distinction must be inferred from the word 'catalog'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: search the part catalog when you need a component by keyword or part number. There is no explicit statement of when to prefer this over easyeda_find_component, easyeda_get_device_details, or easyeda_compare_devices, and no note that a search should precede part selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_trace_componentTrace EasyEDA Pro component connectionsBRead-only
Traces component pins, connected nets, adjacent components, and confidence ratings for schematic debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Component designator or search query to trace (e.g. U1, R1, C3). | |
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No |
TDQS
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 usefully discloses what the response contains (pins, nets, adjacent components, confidence ratings), which matters because there is no output schema. It says nothing about scope/behavior of allPages, timeout handling, or the oddly non-idempotent hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the resource list front-loaded and zero filler. It is appropriately sized, though the enumerated list could have been paired with a scoping clause without adding much length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema, the description covers the return contents reasonably well but leaves three parameters entirely unexplained and offers no routing guidance among very similar siblings. It is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% — only 'query' is documented. The description adds no meaning for allPages, timeoutMs, or includeRaw, all of which are undocumented in both schema and description. With low coverage the description should compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Traces') and enumerates the resources returned: component pins, connected nets, adjacent components, and confidence ratings. This clearly identifies a component-centric connectivity trace. However, it never distinguishes itself from the closely related siblings easyeda_trace_net and easyeda_get_component_pins, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for schematic debugging' is the only context given, which is a general theme rather than a when-to-use rule. There is no guidance on when to pick this over easyeda_trace_net (net-centric) or easyeda_get_component_pins (pins only), and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_trace_netTrace EasyEDA Pro netCRead-only
Traces net topology, connected pins, wire primitive counts, and connectivity evidence across schematic sheets.
| Name | Required | Description | Default |
|---|---|---|---|
| net | Yes | Net name to trace (e.g. GND, VCC, +3V3, NET_1). | |
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, non-destructive, closed-world read operation, so the description's job is to add context, and it does add useful output content (topology, pin counts, evidence). However, it says nothing about cost, the non-idempotent hint, or why a pure read is flagged non-idempotent, and no output schema exists to fill that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that lists the returned artifacts with zero filler. It is efficient, though its brevity is part of why the usage and parameter gaps exist.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, only one documented, no output schema, and no annotation elaboration, the definition leaves three parameters and the non-idempotency behavior unexplained. For a traversal tool that may be expensive across many sheets, that is a meaningful shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%: just `net` is documented, while `allPages`, `timeoutMs`, and `includeRaw` have no schema descriptions at all. The description does not compensate — "across schematic sheets" hints at `allPages` but nothing explains the timeout or raw-inclusion flags, which materially change behavior and payload size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ("Traces") with a concrete resource (net) and enumerates the outputs: topology, connected pins, wire primitive counts, and connectivity evidence. An agent can tell this is a deep net inspection rather than a simple lookup, but it never distinguishes itself from close siblings like easyeda_find_net, easyeda_get_schematic_nets, or easyeda_highlight_net.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no sibling is named, despite a crowded set of net-related tools (find_net, get_schematic_nets, highlight_net, trace_component). The phrase "across schematic sheets" only loosely implies scope; an agent must infer the choice on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_validate_schematic_areaValidate schematic areaBRead-only
Evaluates essential circuit patterns around a focus component or region, including power, ground, decoupling, pull-ups, and floating pin rules.
| Name | Required | Description | Default |
|---|---|---|---|
| maxHops | No | ||
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No | ||
| focusComponent | Yes | Center component designator (e.g. U1, ESP32, STM32). | |
| expectedPowerNets | No | Allowed power net names (defaults to common VCC/VDD nets). | |
| expectedGroundNets | No | Allowed ground net names (defaults to GND/VSS nets). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description's burden is reduced and it contributes the rule categories inspected. It does not explain that validation operates on live schematic state across pages, gives no hint that results may be non-repeatable (idempotentHint=false is otherwise unexplained), and says nothing about the shape or severity of findings returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the verb and the rule inventory with no filler. The only blemish is the "or region" clause, which implies a spatial scope the schema does not support (focusComponent is a component designator).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter validation tool with no output schema and only 43% schema coverage, the description is too thin — an agent cannot tell how deep the traversal goes, whether all pages are scanned, how long it may run, or what a failure looks like. The listed rule families are helpful but do not close the gap on the four unexplained parameters or on return semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%: focusComponent, expectedPowerNets, and expectedGroundNets are documented in the schema, while maxHops, allPages, timeoutMs, and includeRaw are undocumented in both places. The description does not compensate at all — it never mentions traversal depth, page scope, timeouts, or raw-inclusion output, all of which materially change what gets validated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object ("Evaluates essential circuit patterns around a focus component") and enumerates the rule families checked (power, ground, decoupling, pull-ups, floating pins), so an agent knows exactly what class of check this is. It does not distinguish itself from overlapping siblings such as easyeda_run_schematic_erc, easyeda_verify_connections, or easyeda_find_unconnected_pins, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the purpose: an agent can infer it should be called for a local rule audit around one component, but there is no explicit when-to-use, no prerequisites, and no statement of when ERC or verify_connections would be the better choice. In a tool set with three near-neighbour validation tools, that omission forces the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_verify_connectionsVerify schematic connectionsBRead-only
Runs generic read-only connection assertions against the active schematic, including pin/net checks and passive paths through resistors, capacitors, inductors, diodes, or LEDs.
| Name | Required | Description | Default |
|---|---|---|---|
| checks | Yes | Structured connection assertions to verify against the active schematic. | |
| maxHops | No | ||
| allPages | No | ||
| timeoutMs | No | ||
| includeRaw | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'read-only' wording is largely redundant. It adds useful scope by saying assertions run against the active schematic and can traverse passive paths through common component types, but it does not explain failure behavior, result semantics, batching limits, or timeout behavior despite having no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It compactly conveys the core action and the passive-path scope without unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with five parameters, a nested oneOf schema containing seven check variants, and no output schema. A single sentence does not provide enough information about assertion type semantics, result shape, or the supporting parameters an agent may need to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, so the description must carry more of the parameter meaning. It mentions pin/net checks and passive component kinds, but omits the seven assertion types, including same_node, pull_to_net, and decoupled_to_net, as well as maxHops, allPages, timeoutMs, and includeRaw.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, 'Runs ... assertions,' and resource, 'the active schematic,' and clarifies scope with pin/net checks and passive paths. It is clear what the tool does, but it does not explicitly differentiate itself from siblings such as easyeda_trace_net, easyeda_find_unconnected_pins, or easyeda_run_schematic_erc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no named alternatives. An agent can infer that this tool verifies connection assertions, but cannot tell from the description when to choose it over tracing a net, finding unconnected pins, or running ERC.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_verify_pin_pad_mappingVerify symbol pin to footprint pad correspondenceBRead-only
Validates 1-to-1 correspondence between schematic symbol pins and PCB footprint pads across all components on active canvas or for a specific component. Identifies unmapped pins, unmapped pads, and potential netlist connectivity breaks.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| timeoutMs | No | ||
| designator | No | Optional component designator to inspect (e.g. 'U1'). If omitted, verifies all components on active canvas. | |
| deviceUuid | No | Optional library device UUID to verify. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds genuine value by naming what is detected (unmapped pins, unmapped pads, netlist breaks), but it says nothing about the reporting behavior implied by idempotentHint=false or about how results are returned, so the extra context is moderate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core validation action and followed by the concrete diagnostics produced. No filler, though the second sentence could be folded in for tighter structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a nested target object among four parameters, the description does the minimum: it names the checks performed. It omits output shape, how failures vs passes are reported, and what the timeout and target object mean, so an agent can select the tool but not fully predict its response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: designator and deviceUuid are documented in the schema itself, so the description's scope note ('active canvas or for a specific component') largely repeats them. The opaque nested target object and timeoutMs are undocumented in both places, and the description does not explain their role, so it does not fully compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Validates 1-to-1 correspondence between schematic symbol pins and PCB footprint pads', with scoping to the active canvas or a specific component. It is clear what the tool does, but it never names close siblings such as easyeda_compare_schematic_pcb, easyeda_verify_connections, or easyeda_find_unconnected_pins, even though its stated outputs (unmapped pins, connectivity breaks) overlap those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it — when you want to check pin/pad mapping integrity — and the schema's designator parameter's description explains scope widening to all components. But there is no explicit when-not guidance and no routing to the overlapping verification siblings, leaving the agent to infer which verification tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
easyeda_zoom_boardZoom EasyEDA Pro board outlineBRead-only
Zooms the active PCB editor to the board outline.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the tool operates on the 'active' editor and only reframes the viewport rather than changing data, which is useful context. It omits what happens if no PCB document is active and does not note that the viewport change is a UI side effect not reflected in the idempotentHint=false declaration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the verb and target lead. It is efficient, though terse enough that it borders on under-specification for a tool that has a prerequisite and an undocumented parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple viewport action with annotations covering safety and no output schema needed, the core intent is conveyed. However, the missing prerequisite (active PCB document), the undocumented timeout parameter, and the lack of routing to sibling navigation tools leave real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter timeoutMs has 0% schema description coverage, and the description says nothing about it — no default, no units, no guidance on when to raise it. With low coverage the description was expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('Zooms') and an explicit target ('the board outline') in a specific context ('the active PCB editor'), so the action is unambiguous. It does not distinguish itself from nearby viewport tools like easyeda_navigate_region or easyeda_navigate_component, which is the only thing keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, no precondition (an active PCB document must be open), and no mention of the alternative navigation tools that could achieve a similar result. Usage is only inferable from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
76 tool updates
v1.4.1- Added
easyeda_compare_devices - Added
easyeda_compare_schematic_pcb - Changed
easyeda_confirmed_action3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / action / enumPrevious value: -[ - "save", - "importChanges", - "autoroute", - "autolayout", - "editDrcRules" -]New value: +[ + "save", + "importChanges", + "autoroute", + "autolayout", + "nativeAutoRoute", + "nativeAutoLayout", + "unroute", + "importAutoRouteFile", + "importAutoLayoutFile", + "editDrcRules", + "mutation" +] - changed
Input schema / properties / confirmation / descriptionPrevious value: -"DRC: exact CONFIRM editDrcRules <editId> after human review. Legacy actions require an explicit confirmation phrase."New value: +"DRC: exact CONFIRM editDrcRules <editId> after human review. Mutation: exact CONFIRM <domain>:<action> <mutationId>. Legacy actions require an explicit confirmation phrase."
- Changed
easyeda_doctor1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_evaluate_spice_support - Added
easyeda_export_3d_model - Changed
easyeda_export_bom1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_export_cpl2 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / destinationPathAdded value: +{ + "description": "Optional destination directory / target path.", + "minLength": 1, + "type": "string" +}
- Added
easyeda_export_dxf - Changed
easyeda_export_gerber1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_export_image - Changed
easyeda_export_netlist1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_export_pdf1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_export_project_archive - Changed
easyeda_find_component1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_find_net1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_find_unconnected_pins4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / includePowerPinsRemoved value: -{ - "default": true, - "description": "When false, suppress pins whose names look like power pins.", - "type": "boolean" -} - changed
Input schema / properties / includeRaw / defaultPrevious value: -trueNew value: +false - added
Input schema / properties / queryAdded value: +{ + "description": "Optional component designator filter.", + "minLength": 1, + "type": "string" +}
- Added
easyeda_generate_spice_netlist - Added
easyeda_get_board_outline - Changed
easyeda_get_component_pins1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_get_context1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_get_copper_zones - Added
easyeda_get_device_details - Changed
easyeda_get_drc_edit_result1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_get_drc_rules1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_get_keepouts - Added
easyeda_get_mutation_result - Added
easyeda_get_pcb_3d_inspection - Added
easyeda_get_pcb_3d_view - Added
easyeda_get_pcb_airwires - Added
easyeda_get_pcb_differential_pairs - Changed
easyeda_get_pcb_layers1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_get_pcb_length_groups - Added
easyeda_get_pcb_net_classes - Added
easyeda_get_pcb_net_report - Added
easyeda_get_pcb_pads - Added
easyeda_get_pcb_placement_report - Added
easyeda_get_pcb_tracks - Added
easyeda_get_pcb_vias - Changed
easyeda_get_routing_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_get_schematic_nets - Added
easyeda_get_schematic_ports_buses - Changed
easyeda_get_selection1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_highlight_net1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_list_documents - Changed
easyeda_list_pcb_components4 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / includePadsAdded value: +{ + "description": "Include normalized pad details for each component.", + "type": "boolean" +} - added
Input schema / properties / includePropertiesAdded value: +{ + "description": "Include custom properties and attributes.", + "type": "boolean" +} - added
Input schema / properties / targetAdded value: +{ + "description": "Expected active PCB target.", + "properties": { + "capturedAt": { + "type": "string" + }, + "documentId": { + "type": "string" + }, + "documentName": { + "type": "string" + }, + "documentType": { + "enum": [ + "schematic", + "pcb", + "symbol", + "footprint", + "unknown" + ], + "type": "string" + }, + "fingerprint": { + "type": "string" + }, + "pageId": { + "type": "string" + }, + "pageIndex": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "tabId": { + "type": "string" + } + }, + "type": "object" +}
- Changed
easyeda_list_schematic_components1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_live_status1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_navigate_component1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_navigate_region1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_open_document - Added
easyeda_prepare_board_outline - Added
easyeda_prepare_copper_keepout - Changed
easyeda_prepare_drc_edit1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_prepare_pcb_component - Added
easyeda_prepare_pcb_external_import - Added
easyeda_prepare_pcb_layout - Added
easyeda_prepare_pcb_net_constraint - Added
easyeda_prepare_pcb_routing - Added
easyeda_prepare_pcb_track_via - Added
easyeda_prepare_schematic_bus - Added
easyeda_prepare_schematic_component - Added
easyeda_prepare_schematic_pcb_sync - Added
easyeda_prepare_schematic_port - Added
easyeda_prepare_schematic_wire - Added
easyeda_render_document_view - Changed
easyeda_run_drc6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / compareWithEditorAdded value: +{ + "description": "Compare execution results against editor-side DRC error state if available.", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Maximum number of detailed violation records to return.", + "exclusiveMinimum": 0, + "maximum": 500, + "type": "integer" +} - added
Input schema / properties / ruleAdded value: +{ + "description": "Optional rule name or code filter (e.g. Clearance, ShortCircuit, UnroutedNet).", + "minLength": 1, + "type": "string" +} - added
Input schema / properties / severityAdded value: +{ + "description": "Filter reported violations by severity level ('all', 'error', or 'warning').", + "enum": [ + "all", + "error", + "warning" + ], + "type": "string" +} - added
Input schema / properties / targetAdded value: +{ + "description": "Expected document target to assert execution on the intended PCB document.", + "properties": { + "capturedAt": { + "type": "string" + }, + "documentId": { + "type": "string" + }, + "documentName": { + "type": "string" + }, + "documentType": { + "enum": [ + "schematic", + "pcb", + "symbol", + "footprint", + "unknown" + ], + "type": "string" + }, + "fingerprint": { + "type": "string" + }, + "pageId": { + "type": "string" + }, + "pageIndex": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "projectId": { + "type": "string" + }, + "projectName": { + "type": "string" + }, + "tabId": { + "type": "string" + } + }, + "type": "object" +}
- Added
easyeda_run_schematic_erc - Changed
easyeda_schematic_snapshot3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / includeRaw / defaultPrevious value: -trueNew value: +false - changed
Input schema / properties / includeRaw / descriptionPrevious value: -"Include compact raw EasyEDA API data for fallback reasoning."New value: +"Include compact raw EasyEDA API data for fallback reasoning. Defaults to false to minimize token consumption."
- Changed
easyeda_search_library1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Changed
easyeda_trace_component3 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / includeRaw / defaultPrevious value: -trueNew value: +false - changed
Input schema / properties / query / descriptionPrevious value: -"Component designator or text query, such as U1 or USB1."New value: +"Component designator or search query to trace (e.g. U1, R1, C3)."
- Changed
easyeda_trace_net5 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / includeRaw / defaultPrevious value: -trueNew value: +false - added
Input schema / properties / netAdded value: +{ + "description": "Net name to trace (e.g. GND, VCC, +3V3, NET_1).", + "minLength": 1, + "type": "string" +} - removed
Input schema / properties / queryRemoved value: -{ - "description": "Net name or partial net name, such as GND, VCC_5V, or SDA.", - "minLength": 1, - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[ + "net" +]
- Changed
easyeda_validate_schematic_area9 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / componentsRemoved value: -{ - "description": "Optional component designators or queries to focus on.", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / expectedGroundNetsAdded value: +{ + "description": "Allowed ground net names (defaults to GND/VSS nets).", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / expectedPowerNetsAdded value: +{ + "description": "Allowed power net names (defaults to common VCC/VDD nets).", + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / focusComponentAdded value: +{ + "description": "Center component designator (e.g. U1, ESP32, STM32).", + "minLength": 1, + "type": "string" +} - removed
Input schema / properties / includeGlobalChecksRemoved value: -{ - "default": true, - "type": "boolean" -} - added
Input schema / properties / maxHopsAdded value: +{ + "default": 4, + "exclusiveMinimum": 0, + "maximum": 20, + "type": "integer" +} - removed
Input schema / properties / netsRemoved value: -{ - "description": "Optional net names or queries to focus on.", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" -} - added
Input schema / requiredAdded value: +[ + "focusComponent" +]
- Changed
easyeda_verify_connections1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
- Added
easyeda_verify_pin_pad_mapping - Changed
easyeda_zoom_board1 field changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
13 tool updates
v1.3.1- Changed
easyeda_confirmed_action2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "save", - "importChanges", - "autoroute", - "autolayout" -]New value: +[ + "save", + "importChanges", + "autoroute", + "autolayout", + "editDrcRules" +] - changed
Input schema / properties / confirmation / descriptionPrevious value: -"Must include an explicit confirmation phrase such as 'confirma salvar'."New value: +"DRC: exact CONFIRM editDrcRules <editId> after human review. Legacy actions require an explicit confirmation phrase."
- Added
easyeda_export_cpl - Added
easyeda_get_drc_edit_result - Added
easyeda_get_drc_rules - Added
easyeda_get_pcb_layers - Added
easyeda_get_routing_status - Added
easyeda_get_selection - Added
easyeda_highlight_net - Added
easyeda_list_pcb_components - Added
easyeda_prepare_drc_edit - Added
easyeda_run_drc - Added
easyeda_search_library - Changed
easyeda_verify_connections2 fields changed- removed
Input schema / properties / checks / items / anyOfRemoved value: -[ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "id": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "pin_connected", - "type": "string" - } - }, - "required": [ - "type", - "component" - ], - "type": "object" - }, - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "id": { - "minLength": 1, - "type": "string" - }, - "net": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "pin_on_net", - "type": "string" - } - }, - "required": [ - "type", - "component", - "net" - ], - "type": "object" - }, - { - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "left": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "right": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "type": { - "const": "same_node", - "type": "string" - } - }, - "required": [ - "type", - "left", - "right" - ], - "type": "object" - }, - { - "properties": { - "from": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "id": { - "minLength": 1, - "type": "string" - }, - "maxHops": { - "exclusiveMinimum": 0, - "maximum": 20, - "type": "integer" - }, - "through": { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "kind": { - "enum": [ - "resistor", - "capacitor", - "inductor", - "diode", - "led", - "passive" - ], - "type": "string" - }, - "value": { - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "to": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "type": { - "const": "path_exists", - "type": "string" - } - }, - "required": [ - "type", - "from", - "to" - ], - "type": "object" - }, - { - "properties": { - "from": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "id": { - "minLength": 1, - "type": "string" - }, - "maxHops": { - "exclusiveMinimum": 0, - "maximum": 20, - "type": "integer" - }, - "through": { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "kind": { - "enum": [ - "resistor", - "capacitor", - "inductor", - "diode", - "led", - "passive" - ], - "type": "string" - }, - "value": { - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "to": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "type": { - "const": "path_absent", - "type": "string" - } - }, - "required": [ - "type", - "from", - "to" - ], - "type": "object" - }, - { - "properties": { - "id": { - "minLength": 1, - "type": "string" - }, - "maxHops": { - "exclusiveMinimum": 0, - "maximum": 20, - "type": "integer" - }, - "net": { - "minLength": 1, - "type": "string" - }, - "signal": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "through": { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "kind": { - "enum": [ - "resistor", - "capacitor", - "inductor", - "diode", - "led", - "passive" - ], - "type": "string" - }, - "value": { - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "type": { - "const": "pull_to_net", - "type": "string" - } - }, - "required": [ - "type", - "signal", - "net", - "through" - ], - "type": "object" - }, - { - "properties": { - "capacitorValue": { - "minLength": 1, - "type": "string" - }, - "id": { - "minLength": 1, - "type": "string" - }, - "maxHops": { - "exclusiveMinimum": 0, - "maximum": 20, - "type": "integer" - }, - "power": { - "anyOf": [ - { - "properties": { - "component": { - "minLength": 1, - "type": "string" - }, - "pin": { - "minLength": 1, - "type": "string" - }, - "pinName": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "component" - ], - "type": "object" - }, - { - "properties": { - "net": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "net" - ], - "type": "object" - } - ] - }, - "referenceNet": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "decoupled_to_net", - "type": "string" - } - }, - "required": [ - "type", - "power", - "referenceNet" - ], - "type": "object" - } -] - added
Input schema / properties / checks / items / oneOfAdded value: +[ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "pin_connected", + "type": "string" + } + }, + "required": [ + "type", + "component" + ], + "type": "object" + }, + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "net": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "pin_on_net", + "type": "string" + } + }, + "required": [ + "type", + "component", + "net" + ], + "type": "object" + }, + { + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "left": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "right": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "type": { + "const": "same_node", + "type": "string" + } + }, + "required": [ + "type", + "left", + "right" + ], + "type": "object" + }, + { + "properties": { + "from": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "id": { + "minLength": 1, + "type": "string" + }, + "maxHops": { + "exclusiveMinimum": 0, + "maximum": 20, + "type": "integer" + }, + "through": { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "resistor", + "capacitor", + "inductor", + "diode", + "led", + "passive" + ], + "type": "string" + }, + "value": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "to": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "type": { + "const": "path_exists", + "type": "string" + } + }, + "required": [ + "type", + "from", + "to" + ], + "type": "object" + }, + { + "properties": { + "from": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "id": { + "minLength": 1, + "type": "string" + }, + "maxHops": { + "exclusiveMinimum": 0, + "maximum": 20, + "type": "integer" + }, + "through": { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "resistor", + "capacitor", + "inductor", + "diode", + "led", + "passive" + ], + "type": "string" + }, + "value": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "to": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "type": { + "const": "path_absent", + "type": "string" + } + }, + "required": [ + "type", + "from", + "to" + ], + "type": "object" + }, + { + "properties": { + "id": { + "minLength": 1, + "type": "string" + }, + "maxHops": { + "exclusiveMinimum": 0, + "maximum": 20, + "type": "integer" + }, + "net": { + "minLength": 1, + "type": "string" + }, + "signal": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "through": { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "kind": { + "enum": [ + "resistor", + "capacitor", + "inductor", + "diode", + "led", + "passive" + ], + "type": "string" + }, + "value": { + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "type": { + "const": "pull_to_net", + "type": "string" + } + }, + "required": [ + "type", + "signal", + "net", + "through" + ], + "type": "object" + }, + { + "properties": { + "capacitorValue": { + "minLength": 1, + "type": "string" + }, + "id": { + "minLength": 1, + "type": "string" + }, + "maxHops": { + "exclusiveMinimum": 0, + "maximum": 20, + "type": "integer" + }, + "power": { + "anyOf": [ + { + "properties": { + "component": { + "minLength": 1, + "type": "string" + }, + "pin": { + "minLength": 1, + "type": "string" + }, + "pinName": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "component" + ], + "type": "object" + }, + { + "properties": { + "net": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "net" + ], + "type": "object" + } + ] + }, + "referenceNet": { + "minLength": 1, + "type": "string" + }, + "type": { + "const": "decoupled_to_net", + "type": "string" + } + }, + "required": [ + "type", + "power", + "referenceNet" + ], + "type": "object" + } +]
21 tool updates
v1.0.2- First observed
easyeda_confirmed_action - First observed
easyeda_doctor - First observed
easyeda_export_bom - First observed
easyeda_export_gerber - First observed
easyeda_export_netlist - First observed
easyeda_export_pdf - First observed
easyeda_find_component - First observed
easyeda_find_net - First observed
easyeda_find_unconnected_pins - First observed
easyeda_get_component_pins - First observed
easyeda_get_context - First observed
easyeda_list_schematic_components - First observed
easyeda_live_status - First observed
easyeda_navigate_component - First observed
easyeda_navigate_region - First observed
easyeda_schematic_snapshot - First observed
easyeda_trace_component - First observed
easyeda_trace_net - First observed
easyeda_validate_schematic_area - First observed
easyeda_verify_connections - First observed
easyeda_zoom_board
TDQS
Scored across 76 tools
Most tools have descriptive names and clear domain/action boundaries, but the 76-tool surface creates real overlap among status/context tools (doctor/live_status/get_context), schematic net queries (find_net/get_schematic_nets/trace_net/schematic_snapshot), and PCB analysis tools (routing_status/get_pcb_net_report/get_pcb_airwires). An agent can usually distinguish them, but several read-only diagnostics require careful selection.
Nearly all tools use the easyeda_ prefix and snake_case with clear verb-first patterns such as get_*, list_*, prepare_*, export_*, and run_*. A few exceptions (easyeda_doctor, easyeda_live_status, easyeda_schematic_snapshot, easyeda_confirmed_action) break the verb_noun pattern but remain readable.
76 tools is far beyond a well-scoped MCP surface and includes many granular read-only, export, and prepare tools. Even for a broad EDA domain, this count creates a large selection burden and should be consolidated or grouped.
The surface covers schematic capture, PCB layout, DRC/ERC, library lookup, BOM/CPL/Gerber/netlist/3D exports, SPICE netlist generation, and mutation confirmation workflows. Remaining gaps are minor, such as no direct SPICE simulation execution and no obvious project save/versioning, but the core EDA lifecycle is well covered.
Maintenance
Related MCP Connectors
Project management shared by people and AI agents, with persistent project state through MCP.
Connect AI clients to your Dactic work context through a hosted MCP service.
Share one project context across ChatGPT, Claude, Telegram and any MCP client.
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables MCP clients to control EasyEDA Pro for schematic and PCB design through natural language, bridging the EasyEDA API without external AI or API keys.49MIT
- AlicenseNot gradedqualityDmaintenanceEnables MCP clients like Claude Code to control a running EasyEDA Pro instance for PCB design automation, including DRC checks, project management, and script execution via a bridge server.12 npmMIT
- FlicenseBqualityCmaintenanceConnects Jia Li Chuang EDA / EasyEDA Pro schematics to MCP clients, enabling AI-driven schematic editing, reading, and analysis.19-
- AlicenseNot gradedqualityDmaintenanceLocal Model Context Protocol server that exposes EasyEDA Pro design capabilities as MCP tools, enabling project inspection, schematic editing, PCB design, validation, and manufacturing exports through natural language.MIT