Skip to content

MCP Tools Reference

This page details all available Model Context Protocol (MCP) tools exposed by easyeda-mcp-pro. These tools are profile-gated. Set the TOOL_PROFILE environment variable to enable them.

Summary of Tools

Tool NameProfileRiskDescription
easyeda_api_callfullhighControlled call to a documented EasyEDA class method by path, for example SCH_PrimitiveWire.getAll. This is not raw JavaScript execution.
easyeda_api_inventorycorelowInspect the live EasyEDA extension runtime and list available documented API classes, runtime paths, and methods.
easyeda_board_dimensionscorelowGet the PCB board outline dimensions, shape, and mounting hole information.
easyeda_board_featurescorelowGet counts of board features. zones counts copper Pour boundaries only; native Fill and Region primitives are reported separately as fills and regions.
easyeda_board_layerscorelowList all layers in the PCB design including signal, power, plane, and mechanical layers.
easyeda_board_stackupcorelowGet the PCB layer stackup including thickness, material, and dielectric constants.
easyeda_bom_exportcorelowExport the bill of materials to a file on disk in the specified format.
easyeda_bom_generatecorelowGenerate a bill of materials for the project with grouping and formatting options.
easyeda_bom_quality_reportcoremediumGenerate a BOM quality report that identifies unavailable, single-source, missing-MPN, missing-footprint, and low-stock items across configured suppliers.
easyeda_bom_sourcingcoremediumRetrieve pricing and availability information for all parts in the project BOM from specified suppliers.
easyeda_bom_validatecoremediumValidate the project BOM against LCSC inventory to identify missing, obsolete, or alternate parts.
easyeda_bridge_probe_methodsdevmediumQuery the EasyEDA Pro bridge for available API methods. Requires bridge connection. (dev/pro only)
easyeda_bridge_statuscorelowCheck EasyEDA Pro bridge connection status, version, and capabilities.
easyeda_canvas_capturecorelowCapture the visible EasyEDA schematic/PCB canvas as PNG. Captures the given tab or last-focused tab. Oversized PNGs are downsampled without cropping and report original/final dimensions.
easyeda_canvas_capture_regioncorelowZoom to a rectangular document/canvas region and capture it as PNG. This moves the visible viewport. Oversized PNGs are downsampled without cropping, preserving the complete requested region.
easyeda_canvas_locatecorelowZoom the EasyEDA canvas to a coordinate/scale (document/canvas coordinates), returning the resulting viewport rectangle. Useful to frame a location before calling easyeda_canvas_capture, or standalone to navigate the user's view to a point of interest.
easyeda_catalog_listprolowList devices cached by easyeda_catalog_verify_device, with their validation status and provenance. Optionally filter by status (resolved/partial/unresolved). This is a local cache only — never redistributed.
easyeda_catalog_verify_devicepromediumResolve an LCSC part number into a catalog device entry (keyless LCSC metadata plus an EasyEDA symbol/footprint reference, if already known locally), validate it, and write it to the local device cache (confirmWrite required). Does NOT verify pin/pad geometry — see docs/catalog-ingestion.md.
easyeda_component_probedevlowInspect live schematic component objects, including available methods and state getter values, to validate EasyEDA runtime mappings.
easyeda_design_rules_lookupcorelowLook up generic engineering reference guidance: IPC-2221 trace-width/current-capacity, clearance bands, protocol routing data (USB/RS-485/I2C/SPI/UART/Ethernet), decoupling recipes and bulk capacitance sizing, and a static DFM checklist. Every result cites a source and caveat: these are estimates, not certified values.
easyeda_drc_runcoremediumRun EasyEDA Pro's native PCB DRC and refresh its visible DRC panel. Requires a PCB document to be focused; otherwise returns an indeterminate not_available result with an actionable focus error. Returns coarse severity counts; per-violation detail stays in EasyEDA Pro.
easyeda_erc_runcoremediumRun native schematic ERC and supplement aggregate counts with inferred_floating_pins. Requires a focused schematic. Explicit focused is supported; page/all_pages fail closed on EasyEDA Pro 3.2.149. Native counts remain authoritative; unavailable focus returns not_available.
easyeda_export_gerberscoremediumExport PCB design to Gerber files for PCB fabrication.
easyeda_export_netlistprolowExport the schematic netlist in a specified EDA tool format (PADS, Allegro, or Altium).
easyeda_export_pdfprolowExport the schematic and/or board layout to PDF.
easyeda_export_pick_placeprolowExport pick-and-place (centroid) file for PCB assembly. Contains component reference, position, rotation, and layer.
easyeda_get_capabilitiescorelowReturn server capabilities, including available profiles, enabled feature flags, and supported operations.
easyeda_get_feature_flagscorelowReturn current feature flag values.
easyeda_get_server_configcorelowReturn safe (redacted) server configuration. Secrets are never exposed.
easyeda_get_tool_profilescorelowList available tool profiles and their descriptions.
easyeda_health_checkcorelowReturn server health status in one call: runtime version, active profile, bridge state, EasyEDA version, keyless sourcing state, and starter catalog size. Intended as the single actionable status check after first connecting the bridge extension.
easyeda_jlcpcb_quote_workflowpromediumPrepare a non-binding JLCPCB quote workflow snapshot with explicit human-review gates and audit evidence. This tool never places orders or performs paid operations.
easyeda_live_smoke_reportdevlowRun a read-only live smoke report against the connected EasyEDA bridge and return status, API inventory, components, wires, and schematic nets in one response.
easyeda_live_write_regressiondevmediumExercise real schematic (and optionally PCB) write paths against the bridge — place, connect, wire, delete — reporting pass/fail per step, then clean up its own scratch primitives. Needs a test device from schematic_search_device and the matching tab focused.
easyeda_observability_reportcorelowReturn latency budgets, runtime metrics, cache/vendor timing snapshot, and storage retention policy for performance diagnostics.
easyeda_pcb_add_silkscreen_linefullmediumDraw a non-electrical line on the PCB (e.g. Top/Bottom Silkscreen) for section dividers or board art — reuses the same PCB_PrimitiveLine primitive as add_track but with an empty net name, so it never appears in the netlist or ratsnest.
easyeda_pcb_add_textfullmediumPlace a text primitive on a PCB layer (typically Top/Bottom Silkscreen) — reference labels, section titles, assembly notes. Signature recovered from PCB_PrimitiveString: fontFamily must be a name the runtime's font list actually contains — "NotoSansMonoCJKsc-Regular" (the default) is live-verified to work.
easyeda_pcb_add_trackfullhighDraw a copper track/trace on the PCB board. A multi-point path is written as one line segment per consecutive point pair (all sharing netName, so they form one electrical track — same coordinate/name merge model as schematic wires).
easyeda_pcb_add_viafullhighPlace a via to connect different copper layers on the PCB board. outerDiameter/holeSize are passed through to the native API unconverted (same native unit as x/y) — their real-world scale was not independently verified against a known physical dimension, so confirm the resulting via size visually before trusting it.
easyeda_pcb_add_zonefullhighPCB copper-zone creation is unavailable because the verified EasyEDA Pro runtime requires a complete native argument contract that this integration has not yet recovered. This tool fails closed and does not call the bridge.
easyeda_pcb_autorouteprohighDrive EasyEDA Pro's native autorouter (PCB_Document.autoRouting, a @beta API) after a pre-flight constraint check, then run DRC and a constraint report before reporting success. Never reports success without that evidence attached (confirmWrite required).
easyeda_pcb_componentscorelowList components placed on the active PCB layout: primitiveId, designator, footprint identity, position/rotation/layer. Requires a focused PCB tab in EasyEDA Pro — returns an empty list (not an error) if none is active.
easyeda_pcb_constraint_checkcorelowRun PCB constraint validation against the board design. Checks board outline, layer stackup, net classes, clearance rules, keepout areas, placement zones, mounting holes, fiducials, and manufacturing constraints.
easyeda_pcb_constraint_reportcorelowGenerate a human-readable report explaining which PCB constraints were applied and which require manual review.
easyeda_pcb_delete_componentfullhighDelete components, tracks, vias, or other PCB primitives by ID. Checks each id against every deletable PCB class instead of assuming component, since PCB_PrimitiveComponent.delete() reports success for ids it does not own without deleting them.
easyeda_pcb_export_route_contextprolowExport the board as a Specctra DSN file (PCB_ManufactureData.getDsnFile) — an open, vendor-neutral format supported by external autorouters such as FreeRouting. Re-import the routed result through EasyEDA Pro's own SES/DSN import, not through this server.
easyeda_pcb_fillscorelowList native PCB Fill primitives separately from copper pours/zones, including net/layer, fill mode, line width, lock state, and a bounded normalized polygon representation. Netless fills are returned explicitly with netless=true. Read-only; no Fill mutation is exposed.
easyeda_pcb_floorplanfullhighTranslate CircuitIR physical constraints (keepouts, top/bottom side, connector-edge, thermal spacing) into a component group placement plan, then optionally apply it. CircuitIR devices carry no physical dimensions, so widths/heights must be supplied per device (confirmWrite required).
easyeda_pcb_modify_componentfullhighPreview or apply a PCB component transform for top/bottom side, native X/Y coordinates in mils, and rotation in degrees. Apply requires confirmation, captures a transaction snapshot, verifies fresh native read-back, and restores on mismatch. EasyEDA Pro has no independent component mirror field.
easyeda_pcb_place_componentfullhighDirect PCB component creation is unavailable because the verified EasyEDA runtime does not complete PCB_PrimitiveComponent.create(). This tool fails closed. Place the part in the schematic, sync to PCB, confirm the native dialog, then reposition it with easyeda_pcb_modify_component.
easyeda_pcb_place_component_groupfullhighCreate a high-level, constraint-checked placement plan for a group of components and optionally apply it after explicit confirmation.
easyeda_pcb_production_reviewcoremediumRun fabrication, assembly, and testability production review rules for PCB handoff. Reports severity-ranked DFM/DFA/DFT findings with actionable remediation before Gerber export or manufacturing submission.
easyeda_pcb_regionscorelowList native PCB Region primitives separately from copper pours/zones, including layer, region rule types/name, line width, lock state, and a bounded normalized polygon representation. Read-only; no Region mutation is exposed.
easyeda_pcb_route_path_planfullhighCreate a high-level, constraint-checked route path plan for one net and optionally apply it after explicit confirmation.
easyeda_pcb_trackscorelowList copper track segments on the active PCB layout: primitiveId, net, layer, start/end coordinates, width. A multi-point track drawn by add_track appears as several consecutive segments sharing one net. Returns an empty list (not an error) if no PCB tab is focused.
easyeda_pcb_viascorelowList vias on the active PCB layout: primitiveId, net, position, hole/outer diameter (native unit, same scale as x/y — not independently verified against a known physical dimension). Requires a focused PCB tab — returns an empty list (not an error) if none is active.
easyeda_post_write_qacoremediumRun and classify post-write schematic QA after generated edits. Combines native DRC/ERC results with policy-aware classification so duplicate net names, free networks, and unconnected pins are reported as pass/fail/inconclusive instead of raw warning counts.
easyeda_power_tree_analyzecoremediumAnalyze supply sources, regulators, loads, protection, bulk capacitance, current budget, dropout, and regulator thermal risk. Returns machine-readable issues and a human-readable summary.
easyeda_production_qa_artifactsprolowGenerate testpoint checklist, assembly notes, bring-up plan, production QA checklist, and machine-readable QA manifest for board handoff.
easyeda_project_begin_transactioncorelowOpen an in-memory, document-scoped transaction for snapshot-backed schematic writes. Only tools passed transactionId participate; standalone schematic writes are not auto-captured. Only one active transaction is allowed per document. Beginning a transaction does not modify EasyEDA.
easyeda_project_commit_transactioncoremediumFinalize a transaction after its writes and validation gates succeed. Commit removes rollback eligibility and releases the document transaction lock.
easyeda_project_get_transaction_statuscorelowRead transaction state, validation results, operation hashes, and rollback status without exposing captured primitive snapshots.
easyeda_project_rollback_transactioncoremediumControlled write: restore applied schematic primitive snapshots in reverse order, verify each restored hash, and report partial rollback explicitly instead of hiding inconsistencies.
easyeda_project_savecoremediumExplicitly save the current EasyEDA Pro project. This ensures all netlist changes, net flags, pin connections, and other mutations are persisted to the project file. Save is never implicit — the caller must explicitly request it. Requires confirmWrite.
easyeda_project_validate_transactioncorelowRun transaction consistency gates before commit: bridge availability, pending/failed operation checks, optional expected operation count, and optional requirement for at least one applied write.
easyeda_rule_check_summarycorelowGet a summary of all design and electrical rule check results for the project.
easyeda_run_self_testcorelowRun internal self-test to verify server integrity, config, and bridge connectivity.
easyeda_schematic_add_circlecoremediumDraw a circle on the schematic sheet — decorative marker or custom symbol element. Cosmetic only, no electrical meaning. fillColor "none" leaves it unfilled.
easyeda_schematic_add_polygoncoremediumDraw a closed polygon on the schematic sheet from 3+ vertices — custom decorative shapes, callout arrows, or block diagram elements. Cosmetic only, no electrical meaning.
easyeda_schematic_add_rectanglecoremediumDraw a rectangle on the schematic sheet — section dividers/grouping boxes for organizing a busy schematic into labeled functional blocks (pair with add_text for the title). Cosmetic only. x/y is the top-left corner; fillColor "none" leaves it unfilled.
easyeda_schematic_add_textcoremediumPlace free-standing text on the schematic sheet (section headers, notes, block labels) — cosmetic/organizational, not a net label. color must be a hex string and fontName a real font (e.g. "Arial") — untyped placeholders create nothing despite returning ok.
easyeda_schematic_add_wirecoremediumAdd a wire connecting schematic coordinates/pins — real native connectivity. Same netName connects pins globally: separate stubs sharing one name merge into one net (no label needed). NET_COLLISION guards touched points against a foreign net's wire, pin, or flag/port — not mid-segment crossings.
easyeda_schematic_audit_imported_designcorelowRead the live schematic without modifying it, build a canonical model, and report imported net aliases, duplicate or missing references, unresolved metadata expressions, missing values/footprints, and ambiguous BOM classification. Includes a preview only; it never renames nets or changes components.
easyeda_schematic_batch_writecorehighApply up to 200 validated schematic create, modify, pin no-connect, and delete operations in one snapshot-backed transaction. Any failure rolls the whole transaction back. Delete is limited to safely recreatable drawing primitives.
easyeda_schematic_capture_full_pageprolowFrame and capture the complete schematic sheet with a sheet-to-image transform. Oversized PNGs are downsampled without cropping; transforms use final image dimensions. Guessed geometry is opt-in.
easyeda_schematic_check_collisionscorelowScan every component's real pin coordinates and report any (x,y) shared by two or more components — a silent-short risk the native NET_COLLISION guard misses for never-wired pins. Run after manual placement outside easyeda_workflow_* tools (which reconcile this automatically).
easyeda_schematic_check_placementprolowValidate a candidate placement (rendered bounds, clearances, conflicts, deterministic alternatives) or -- when x/y are omitted -- search for a safe region of the given size, against real title-block/page-border/existing-primitive constraints. Read-only, no writes.
easyeda_schematic_component_pinscorelowGet exact pin primitive IDs, numbers, names, coordinates, native no-connect state, and pinType for a schematic component by its primitive ID. pinType is EasyEDA's own symbol-library field and is unreliably authored (often "Undefined" even on real ICs) — treat it as a weak hint, not ground truth.
easyeda_schematic_componentscorelowList schematic components with IDs, references, values, footprints, placement, and project-instance device IDs. Omitted scope preserves legacy all-pages; focused/all_pages are supported, pageUuid is not. Project-instance device IDs are not valid place_component deviceItem values; use schematic_search_device.
easyeda_schematic_connect_pin_to_netcoremediumCreate real EasyEDA connectivity for a pin: draws a short wire stub from its exact coordinate, tagged with netName. Same-netName wires merge globally, so this joins the pin to everything else on that net — visible to ERC, ratsnest, and autorouting.
easyeda_schematic_connect_pins_by_netcoremediumBulk variant of connect_pin_to_net: draws a real wire stub from each pin, tagged with netName, so all listed pins (and anything else already on that net) merge into one net. Visible to ERC, ratsnest, and autorouting. A pin that fails (e.g. collision) is reported in failures rather than aborting the batch.
easyeda_schematic_connectivity_fingerprintprolowCompute a deterministic connectivity fingerprint (pin/net membership, wire endpoints, labels/ports, no-connects) from the live schematic. Pass the hash as beforeFingerprint/afterFingerprint to easyeda_schematic_layout_qa to prove a cosmetic move left connectivity unchanged.
easyeda_schematic_create_net_flagcoremediumCreate a named net flag/label. With identification (Power/Ground/AnalogGround/ProtectGround) it places a power-flag symbol binding to a coincident pin (use for VCC/GND). Without it, a generic net label — cosmetic only; connect pins with add_wire stubs sharing one netName.
easyeda_schematic_create_net_portcoremediumPlace a hierarchical net port (off-sheet connector) on the schematic. Net ports create named connections that span multiple schematic sheets, appearing as real SCH_Net entries in the netlist.
easyeda_schematic_delete_primitivecoremediumDelete components, wires, or other drawing objects by primitive UUID. Pass projectId + transactionId for rollback-backed deletion of safely recreatable drawing primitives; unsupported transactional delete kinds fail before mutation. Without transactionId the write is standalone.
easyeda_schematic_layout_autofixprolowDetect title-block overlap, page-boundary overflow, and component-overlap violations from real rendered bounds, and propose cosmetic-only moves that resolve them. Read-only preview only (requiresConfirmWrite=true, no writes) -- confirmWrite apply with connectivity-fingerprint rollback is tracked separately (#273).
easyeda_schematic_layout_autofix_applyprohighApply the layout-autofix cosmetic moves in a snapshot-backed transaction, re-verifying a connectivity fingerprint after every write batch. Any unintended electrical change or write failure rolls the transaction back and is reported, never thrown. dryRun:true previews only.
easyeda_schematic_layout_qaprolowRun a normalized post-write QA pass combining runtime DRC/ERC, expected component/pin topology, rendered primitive bounds, title-block and page constraints, wiring/grouping checks, and connectivity fingerprints, with optional full-page visual evidence. Critical geometry or connectivity findings always block commit.
easyeda_schematic_modify_primitivecoremediumSafely modify a schematic primitive while preserving omitted fields. With transactionId and projectId, capture before/after snapshots and automatically restore the prior state if the write or post-write read fails. Component moves keep connected wires attached.
easyeda_schematic_net_detailcorelowGet full details for a specific net in the current schematic context including connected pins and components. Explicit focused scope is supported; page/all_pages scopes fail closed on EasyEDA Pro 3.2.149.
easyeda_schematic_netscorelowList nets from the current schematic context. Explicit focused scope is supported; page/all_pages scopes fail closed on EasyEDA Pro 3.2.149.
easyeda_schematic_place_componentcoremediumPlace a searched library device on the active schematic. Use deviceItem from schematic_search_device; project-local identities from schematic_components are invalid. On timeout inspect reconciled/unconfirmed before retrying. projectId + transactionId enables rollback; without transactionId the write is standalone.
easyeda_schematic_plan_layoutprolowDeterministically plan functional-block placement (reserved rectangles, support space, grid-aligned coordinates, occupancy map, A3 fallback, score) from real sheet/primitive geometry -- no writes. Caller supplies roles/blockId/parentId; other primitives read as occupied regions, never overwritten.
easyeda_schematic_plan_safe_regioncorelowCompute a safe schematic drawing region before placing components. Uses live sheet info when available, assumes EasyEDA bottom-left coordinates, reserves the default lower-right title-block keep-out, and returns an anchor/bounds plan that avoids title-block overlap.
easyeda_schematic_preview_imported_normalizationcorelowRead the live schematic and produce a deterministic, read-only normalization plan with a stable plan ID, model hash, proposed net-name/reference/metadata operations, validation gates, warnings, and blockers. This tool never writes to EasyEDA.
easyeda_schematic_primitive_boundsprolowRead real rendered (sheet-space, rotation-aware) component bounding boxes from the live bridge, batched in one call. Origin is not a collision bound -- use combinedBounds for overlap/page/title-block checks. Reference/value text is not independently addressable here and reports not_available.
easyeda_schematic_search_devicecorelowSearch for schematic symbols/devices in the EasyEDA library by keywords. Full results carry the library's complete metadata object per device; pass minimal:true to get back only uuid/libraryUuid/name/pin_count/symbol_type when that is all you need.
easyeda_schematic_set_pin_no_connectcoremediumSet or clear EasyEDA Pro's native No Connect marker on one exact component pin. This changes the component pin noConnected state; it does not create a net, label, power flag, or short-circuit flag. The bridge rejects missing/ambiguous pins and verifies the native readback after the write.
easyeda_schematic_set_title_blockcoremediumUpdate schematic title block text fields (Company, Version, Drawn, Reviewed, Page Size). Only these 5 are exposed — writing Symbol/Border/Device/etc once corrupted a real title block; those are read-only natively and must be fixed via the EasyEDA Pro UI.
easyeda_schematic_sheet_infocorelowReturn read-only schematic sheet metadata. Supports focused, pageUuid/page, and all_pages page-list reads without changing EasyEDA focus; aggregate geometry is never invented.
easyeda_schematic_sync_to_pcbcoremediumRequest a schematic-to-PCB sync (SCH_Document.importChanges). CAUTION (live-verified): opens a confirmation dialog in EasyEDA Pro's UI a HUMAN must approve — success here only means the request was sent, not that components appeared. Ask the user to approve the dialog, then verify with pcb_components.
easyeda_schematic_validate_netlistcorelowValidate inferred nets/floating pins and cross-check native ERC. Only native noConnected=true excludes a pin; unavailable/malformed state stays visible. valid requires clean inference and zero native errors. Explicit focused is supported; page/all_pages fail closed on EasyEDA Pro 3.2.149.
easyeda_schematic_verify_writecorelowRead back schematic state after an agent-authored write. Returns component-count delta evidence and optional netlist validation so agents can confirm a placement or connection before continuing.
easyeda_schematic_wirescorelowList wire segments with primitiveId, coordinates, net, color, and style; paginate past 50 with offset. Explicit focused is supported; page/all_pages fail closed on EasyEDA Pro 3.2.149. primitiveId is required by delete_primitive/modify_primitive.
easyeda_semantic_erc_autocorelowExtract nets/devices/pins from the LIVE schematic and run semantic ERC — no hand-authored netlist needed. Net/pin electrical types are INFERRED from naming conventions, not verified — treat findings as a first-pass signal, not a substitute for semantic_erc_validate.
easyeda_semantic_erc_validatecoremediumRun semantic electrical-rule validation over a netlist with pin electrical types to detect output contention, floating inputs, power conflicts, missing power pins, missing decoupling, and voltage-domain mismatches.
easyeda_simulate_operating_pointprolowTranslate a typed circuit description into a SPICE deck and run an offline ngspice operating-point (.op) simulation, optionally checking rail node voltages against a spec. Read-only, local-only. Reports a capability gap rather than failing when ngspice is absent.
easyeda_simulate_transientprolowTranslate a typed circuit description into a SPICE deck and run an offline ngspice transient (.tran) simulation, optionally checking the final rail voltage against a spec. Read-only, local-only. Reports a capability gap rather than failing when ngspice is absent.
easyeda_wire_probedevlowInspect live schematic wire objects, including line coordinates, net names, methods, and state getter values, to validate EasyEDA runtime mappings.
easyeda_workflow_connector_breakoutpromediumPlace a connector, wire each declared pin to its net, and create a net port for each net so the breakout is accessible off-sheet — all as a single atomic transaction (confirmWrite required).
easyeda_workflow_decouple_icpromediumPlace one decoupling capacitor per declared IC power pin and wire each to the pin's net and ground, in a single atomic transaction. Cites design-rules decoupling guidance (rule-of-thumb, not datasheet-specific) alongside the plan (confirmWrite required).
easyeda_workflow_layout_sectionpromediumCompute and create a section rectangle + title sized from the real pin extents of the given already-placed components (or replace an existing rectangle/title pair). Reports overlap with other rectangles and page-size overflow as warnings; never resizes the page.
easyeda_workflow_led_blinkerpromediumCreate a deterministic LED blinker workflow: a switch, current-limiting resistor, and indicator LED. Uses safe sheet-region planning, left-to-right layout, generic wire stubs, and optional post-write QA. Caller supplies resolved device items (confirmWrite required); simplest circuit for validating the MCP pipeline.
easyeda_workflow_ne555_astablepromediumCreate a deterministic NE555 astable LED flasher workflow using safe sheet-region planning, component-level layout offsets, explicit pin-to-net connectivity, and optional post-write QA. Caller supplies already-resolved EasyEDA device items; this tool does not guess catalog parts (confirmWrite required).
easyeda_workflow_place_blockpromediumPlace a group of components, wire their pin-to-net connections (new and/or pre-existing components), and create net ports for block-external nets — all as a single atomic transaction with rollback on partial failure (confirmWrite required).
easyeda_workflow_power_railpromediumPlace a regulator and its supporting passives and wire them to input/output/ground nets in a single atomic transaction, instead of one primitive call per component. Caller supplies already-resolved device items and pin connections; this tool does not select parts (confirmWrite required).
easyeda_workflow_rp2040_servo_modulepromediumPlan or apply an RP2040 servo-module scaffold: 56 BOM parts in seven visible rollback-backed sections with deterministic titles and completeness diagnostics. Exact pin-to-net wiring stays intentionally absent until later block netlists supply it (confirmWrite required).

easyeda_api_call

Profile: full | Risk Level: high

Controlled call to a documented EasyEDA class method by path, for example SCH_PrimitiveWire.getAll. This is not raw JavaScript execution.

Input Parameters

ParameterTypeRequiredDescription
pathstringYes
argsany[]Yes
confirmWritebooleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  ok: boolean;
  path: string;
  resolvedPath: string(optional);
  result: any(optional);
  error: string(optional);
  requires_confirmation: boolean(optional);
}

easyeda_api_inventory

Profile: core | Risk Level: low

Inspect the live EasyEDA extension runtime and list available documented API classes, runtime paths, and methods.

Input Parameters

ParameterTypeRequiredDescription
filterstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  classes: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_board_dimensions

Profile: core | Risk Level: low

Get the PCB board outline dimensions, shape, and mounting hole information.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  width_mm: number(optional);
  height_mm: number(optional);
  shape: string(optional);
  mounting_hole_count: number;
  area_mm2: number(optional);
  has_outline: boolean;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_board_features

Profile: core | Risk Level: low

Get counts of board features. zones counts copper Pour boundaries only; native Fill and Region primitives are reported separately as fills and regions.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  vias: number;
  tracks: number;
  zones: number;
  fills: number;
  regions: number;
  pads: number;
  components: number(optional);
  not_available: boolean(optional);
}

easyeda_board_layers

Profile: core | Risk Level: low

List all layers in the PCB design including signal, power, plane, and mechanical layers.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  layers: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_board_stackup

Profile: core | Risk Level: low

Get the PCB layer stackup including thickness, material, and dielectric constants.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  total_layers: number;
  board_thickness_mm: number (optional);
  layers: object[];
  data_source: 'physical_stackup' | 'copper_layer_count_only' (optional);
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_bom_export

Profile: core | Risk Level: low

Export the bill of materials to a file on disk in the specified format.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
format'csv' | 'json' | 'xlsx'Yes
filePathstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  format: string;
  file_path: string;
  exported: boolean;
  entry_count: number(optional);
  not_available: boolean(optional);
}

easyeda_bom_generate

Profile: core | Risk Level: low

Generate a bill of materials for the project with grouping and formatting options.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
format'csv' | 'json' | 'xlsx'Yes
groupBy'value' | 'lcsc' | 'footprint'Yes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  format: string;
  group_by: string;
  entries: object[];
  total_entries: number;
  not_available: boolean (optional);
}

easyeda_bom_quality_report

Profile: core | Risk Level: medium

Generate a BOM quality report that identifies unavailable, single-source, missing-MPN, missing-footprint, and low-stock items across configured suppliers.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
low_stock_thresholdnumber (optional)No
require_mpnboolean (optional)No
require_footprintboolean (optional)No
stale_vendor_data_secondsnumber (optional)No
minimum_quality_scorenumber (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  bom_id: string;
  generated_at: string;
  total_entries: number;
  summary: object;
  entries: object[];
  has_supplier_errors: boolean;
  not_available: boolean (optional);
}

easyeda_bom_sourcing

Profile: core | Risk Level: medium

Retrieve pricing and availability information for all parts in the project BOM from specified suppliers.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
suppliersstring[] (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  parts: object[];
  total_parts: number;
  keyless_sourcing_enabled: boolean (optional);
  not_available: boolean (optional);
}

easyeda_bom_validate

Profile: core | Risk Level: medium

Validate the project BOM against LCSC inventory to identify missing, obsolete, or alternate parts.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  total_parts: number;
  missing_lcsc: string[];
  invalid_lcsc: string[];
  obsolete: string[];
  valid_count: number;
  validated: boolean;
  not_available: boolean (optional);
}

easyeda_bridge_probe_methods

Profile: dev | Risk Level: medium

Query the EasyEDA Pro bridge for available API methods. Requires bridge connection. (dev/pro only)

Input Parameters

ParameterTypeRequiredDescription
filterstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  methods: object[];
  total: number;
  source: 'loader_status' | 'server_registry' (optional);
  dispatcher_build_id: string (optional);
}

easyeda_bridge_status

Profile: core | Risk Level: low

Check EasyEDA Pro bridge connection status, version, and capabilities.

Input Parameters

No parameters required.

Output Format

Returns a JSON object matching the schema:

ts
{
  connected: boolean;
  bridge_version: string (optional);
  easyeda_version: string (optional);
  capabilities: string[] (optional);
  dev_mode: boolean (optional);
  last_heartbeat_ms: number (optional);
  uptime_ms: number (optional);
  status_error: string (optional);
  blocked_by_other_instance: boolean (optional);
  owner_pid: number (optional);
  owner_port: number (optional);
  diagnostics: object (optional);
}

easyeda_canvas_capture

Profile: core | Risk Level: low

Capture the visible EasyEDA schematic/PCB canvas as PNG. Captures the given tab or last-focused tab. Oversized PNGs are downsampled without cropping and report original/final dimensions.

Input Parameters

ParameterTypeRequiredDescription
tabIdstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  captured: boolean;
  mime_type: string(optional);
  file_name: string(optional);
  byte_length: number(optional);
  image_base64: string(optional);
  original_image_dimensions: object(optional);
  image_dimensions: object(optional);
  downsampled: boolean(optional);
  payload_budget_bytes: number(optional);
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_canvas_capture_region

Profile: core | Risk Level: low

Zoom to a rectangular document/canvas region and capture it as PNG. This moves the visible viewport. Oversized PNGs are downsampled without cropping, preserving the complete requested region.

Input Parameters

ParameterTypeRequiredDescription
leftnumberYesFirst horizontal edge in document/canvas coordinates.
rightnumberYesSecond horizontal edge; either edge order is accepted.
topnumberYesFirst vertical edge in document/canvas coordinates.
bottomnumberYesSecond vertical edge; either edge order is accepted.
tabIdstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  captured: boolean;
  mime_type: string(optional);
  file_name: string(optional);
  byte_length: number(optional);
  image_base64: string(optional);
  original_image_dimensions: object(optional);
  image_dimensions: object(optional);
  downsampled: boolean(optional);
  payload_budget_bytes: number(optional);
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_canvas_locate

Profile: core | Risk Level: low

Zoom the EasyEDA canvas to a coordinate/scale (document/canvas coordinates), returning the resulting viewport rectangle. Useful to frame a location before calling easyeda_canvas_capture, or standalone to navigate the user's view to a point of interest.

Input Parameters

ParameterTypeRequiredDescription
xnumber (optional)No
ynumber (optional)No
scaleRationumber (optional)No
tabIdstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  located: boolean;
  left: number(optional);
  right: number(optional);
  top: number(optional);
  bottom: number(optional);
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_catalog_list

Profile: pro | Risk Level: low

List devices cached by easyeda_catalog_verify_device, with their validation status and provenance. Optionally filter by status (resolved/partial/unresolved). This is a local cache only — never redistributed.

Input Parameters

ParameterTypeRequiredDescription
status'resolved' | 'partial' | 'unresolved' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  devices: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_catalog_verify_device

Profile: pro | Risk Level: medium

Resolve an LCSC part number into a catalog device entry (keyless LCSC metadata plus an EasyEDA symbol/footprint reference, if already known locally), validate it, and write it to the local device cache (confirmWrite required). Does NOT verify pin/pad geometry — see docs/catalog-ingestion.md.

Input Parameters

ParameterTypeRequiredDescription
lcscIdstringYes
confirmWritebooleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  lcsc_id: string;
  status: 'resolved' | 'partial' | 'unresolved';
  valid: boolean;
  errors: object[];
  warnings: object[];
  provenance: object;
  entry: object;
  cached: boolean;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_component_probe

Profile: dev | Risk Level: low

Inspect live schematic component objects, including available methods and state getter values, to validate EasyEDA runtime mappings.

Input Parameters

ParameterTypeRequiredDescription
limitnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  total: number;
  samples: any[];
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_design_rules_lookup

Profile: core | Risk Level: low

Look up generic engineering reference guidance: IPC-2221 trace-width/current-capacity, clearance bands, protocol routing data (USB/RS-485/I2C/SPI/UART/Ethernet), decoupling recipes and bulk capacitance sizing, and a static DFM checklist. Every result cites a source and caveat: these are estimates, not certified values.

Input Parameters

ParameterTypeRequiredDescription
topic'trace-width' | 'max-current' | 'clearance' | 'protocol-routing' | 'decoupling' | 'bulk-capacitance' | 'dfm-checklist'YesReference topic to look up.
currentAnumber (optional)NoRequired when topic is trace-width. Load current in amperes.
traceWidthMilsnumber (optional)NoRequired when topic is max-current. Trace width in mils.
temperatureRiseCnumber (optional)NoRequired for trace-width and max-current. Allowed temperature rise in °C.
layer'external' | 'internal' (optional)NoRequired for trace-width and max-current. Conductor layer location.
copperWeightOznumber (optional)NoRequired for trace-width and max-current. Copper weight in oz/ft².
voltageVnumber (optional)NoRequired when topic is clearance. Working voltage in volts.
location'external' | 'internal' (optional)NoRequired when topic is clearance. Clearance location.
protocol'usb2' | 'usb3' | 'rs485' | 'i2c' | 'spi' | 'uart' | 'ethernet-10-100' | 'ethernet-1000' (optional)NoOptional protocol filter when topic is protocol-routing.
category'digital-logic' | 'mcu' | 'analog' | 'rf' | 'crystal-oscillator' | 'power-regulator' | 'clearance' | 'drilling' | 'copper' | 'solder-mask' | 'silkscreen' | 'panelization' | 'assembly' (optional)NoOptional category filter for decoupling or dfm-checklist.
loadAnumber (optional)NoRequired when topic is bulk-capacitance. Load current in amperes.
minBulkCapacitanceUfPerAnumber (optional)NoOptional minimum bulk capacitance per ampere in µF/A.
minBulkCapacitanceUfnumber (optional)NoOptional absolute minimum bulk capacitance in µF.
idstring (optional)NoOptional DFM checklist item id.

Output Format

Returns a JSON object matching the schema:

ts
{
  topic: string;
  traceWidth: object (optional);
  maxCurrent: object (optional);
  clearance: object (optional);
  protocolRouting: object (optional);
  protocolRoutingList: object[] (optional);
  decoupling: object (optional);
  decouplingList: object[] (optional);
  bulkCapacitance: object (optional);
  dfmChecklist: object[] (optional);
  dfmChecklistItem: object (optional);
  error: string (optional);
}

easyeda_drc_run

Profile: core | Risk Level: medium

Run EasyEDA Pro's native PCB DRC and refresh its visible DRC panel. Requires a PCB document to be focused; otherwise returns an indeterminate not_available result with an actionable focus error. Returns coarse severity counts; per-violation detail stays in EasyEDA Pro.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
rulesstring[] (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  violations: object[];
  total_violations: number;
  error_count: number;
  warning_count: number;
  passed: boolean | null;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_erc_run

Profile: core | Risk Level: medium

Run native schematic ERC and supplement aggregate counts with inferred_floating_pins. Requires a focused schematic. Explicit focused is supported; page/all_pages fail closed on EasyEDA Pro 3.2.149. Native counts remain authoritative; unavailable focus returns not_available.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
checksstring[] (optional)No
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  violations: object[];
  total_violations: number;
  error_count: number;
  warning_count: number;
  passed: boolean | null;
  inferred_floating_pins: object[] (optional);
  detail_source: 'inferred_partial' | 'native_aggregate_only' (optional);
  read_scope: object (optional);
  not_available: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  error: string (optional);
}

easyeda_export_gerbers

Profile: core | Risk Level: medium

Export PCB design to Gerber files for PCB fabrication.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
filePathstring (optional)No
drillFormat'excellon' | 'millimeter' | 'inch' (optional)No
excludeLayerstring[] (optional)No
ledPanelboolean (optional)No
productionReviewobject (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  artifact_path: string(optional);
  byte_length: number(optional);
  file_count: number(optional);
  exported: boolean;
  blocked_by_production_review: boolean(optional);
  production_review: object(optional);
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_export_netlist

Profile: pro | Risk Level: low

Export the schematic netlist in a specified EDA tool format (PADS, Allegro, or Altium).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
format'pads' | 'allegro' | 'altium'Yes
filePathstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  format: string;
  file_path: string(optional);
  byte_length: number(optional);
  net_count: number(optional);
  exported: boolean;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_export_pdf

Profile: pro | Risk Level: low

Export the schematic and/or board layout to PDF.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
scope'schematic' | 'board' | 'both'Yes
orientation'portrait' | 'landscape'Yes
filePathstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  scope: string;
  orientation: string;
  file_path: string(optional);
  byte_length: number(optional);
  pages: number(optional);
  exported: boolean;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_export_pick_place

Profile: pro | Risk Level: low

Export pick-and-place (centroid) file for PCB assembly. Contains component reference, position, rotation, and layer.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
format'csv' | 'txt'Yes
filePathstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  format: string;
  file_path: string(optional);
  byte_length: number(optional);
  component_count: number(optional);
  exported: boolean;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_get_capabilities

Profile: core | Risk Level: low

Return server capabilities, including available profiles, enabled feature flags, and supported operations.

Input Parameters

No parameters required.

Output Format

Returns a JSON object matching the schema:

ts
{
  server_name: string;
  server_version: string;
  protocol_version: string;
  profiles: object[];
  current_profile: string;
  feature_flags: Record<string, boolean>;
  feature_maturity: Record<string, object>;
  transports: string[];
}

easyeda_get_feature_flags

Profile: core | Risk Level: low

Return current feature flag values.

Input Parameters

No parameters required.

Output Format

Returns a JSON object matching the schema:

ts
{
  flags: Record<string, boolean>;
  maturity: Record<string, object>;
}

easyeda_get_server_config

Profile: core | Risk Level: low

Return safe (redacted) server configuration. Secrets are never exposed.

Input Parameters

ParameterTypeRequiredDescription
include_flagsbooleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  node_env: string;
  log_level: string;
  profile: string;
  transport: string;
  bridge_host: string;
  bridge_port: number;
  mcp_protocol_version: string;
  flags: Record<string, boolean>(optional);
  feature_maturity: Record<string, object>;
}

easyeda_get_tool_profiles

Profile: core | Risk Level: low

List available tool profiles and their descriptions.

Input Parameters

No parameters required.

Output Format

Returns a JSON object matching the schema:

ts
{
  current: string;
  profiles: object[];
}

easyeda_health_check

Profile: core | Risk Level: low

Return server health status in one call: runtime version, active profile, bridge state, EasyEDA version, keyless sourcing state, and starter catalog size. Intended as the single actionable status check after first connecting the bridge extension.

Input Parameters

No parameters required.

Output Format

Returns a JSON object matching the schema:

ts
{
  status: 'ok' | 'degraded' | 'unavailable';
  version: string;
  node_version: string;
  profile: string;
  transport: string;
  bridge_connected: boolean;
  easyeda_version: string(optional);
  extension_version: string(optional);
  extension_version_mismatch: boolean;
  registry_mismatch: boolean;
  keyless_sourcing_enabled: boolean;
  catalog_device_count: number;
  blocked_by_other_instance: boolean(optional);
  owner_pid: number(optional);
  owner_port: number(optional);
  status_error: string(optional);
  ups: number;
}

easyeda_jlcpcb_quote_workflow

Profile: pro | Risk Level: medium

Prepare a non-binding JLCPCB quote workflow snapshot with explicit human-review gates and audit evidence. This tool never places orders or performs paid operations.

Input Parameters

ParameterTypeRequiredDescription
provider'jlcpcb' | 'custom'Yes
action'estimate' | 'verify_quote' | 'place_order'Yes
projectIdstring (optional)No
boardobjectYes
quoteobject (optional)No
confirmationobject (optional)No
vendorTermsReviewedboolean (optional)No
productionFilesReadyboolean (optional)No
exportManifestVerifiedboolean (optional)No
productionReviewPassedboolean (optional)No
allowedPaidOperationsboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  provider: string;
  action: string;
  project_id: string;
  status: string;
  allowed: boolean;
  quote: object;
  risk: object;
  issues: object[];
  audit: object;
  summary: string;
  unsupported_operations: string[];
}

easyeda_live_smoke_report

Profile: dev | Risk Level: low

Run a read-only live smoke report against the connected EasyEDA bridge and return status, API inventory, components, wires, and schematic nets in one response.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
limitnumberYes
includeRawbooleanYes
timeoutMsnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  ok: boolean;
  project_id: string;
  generated_at: string;
  checks: object[];
  summary: object;
  raw: object (optional);
}

easyeda_live_write_regression

Profile: dev | Risk Level: medium

Exercise real schematic (and optionally PCB) write paths against the bridge — place, connect, wire, delete — reporting pass/fail per step, then clean up its own scratch primitives. Needs a test device from schematic_search_device and the matching tab focused.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
testDeviceItemobjectYes
scope'schematic' | 'pcb' | 'both'Yes
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  ok: boolean;
  project_id: string;
  scope: string;
  steps: object[];
  cleanup_performed: boolean;
}

easyeda_observability_report

Profile: core | Risk Level: low

Return latency budgets, runtime metrics, cache/vendor timing snapshot, and storage retention policy for performance diagnostics.

Input Parameters

ParameterTypeRequiredDescription
includeRecentEventsbooleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  generated_at: string;
  server_version: string;
  budgets: object[];
  metrics: object;
  retention: object;
  timeout_policy: object;
}

easyeda_pcb_add_silkscreen_line

Profile: full | Risk Level: medium

Draw a non-electrical line on the PCB (e.g. Top/Bottom Silkscreen) for section dividers or board art — reuses the same PCB_PrimitiveLine primitive as add_track but with an empty net name, so it never appears in the netlist or ratsnest.

Input Parameters

ParameterTypeRequiredDescription
layernumberYesLayer id, e.g. 3 = Top Silkscreen, 4 = Bottom Silkscreen
startXnumberYes
startYnumberYes
endXnumberYes
endYnumberYes
lineWidthnumber (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  primitiveId: string(optional);
  error: string(optional);
}

easyeda_pcb_add_text

Profile: full | Risk Level: medium

Place a text primitive on a PCB layer (typically Top/Bottom Silkscreen) — reference labels, section titles, assembly notes. Signature recovered from PCB_PrimitiveString: fontFamily must be a name the runtime's font list actually contains — "NotoSansMonoCJKsc-Regular" (the default) is live-verified to work.

Input Parameters

ParameterTypeRequiredDescription
layernumberYesLayer id, e.g. 3 = Top Silkscreen, 4 = Bottom Silkscreen
xnumberYes
ynumberYes
textstringYes
fontFamilystring (optional)No
fontSizenumber (optional)No
lineWidthnumber (optional)No
alignModenumber (optional)No
rotationnumber (optional)No
reverseboolean (optional)No
expansionnumber (optional)No
mirrorboolean (optional)No
lockedboolean (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  primitiveId: string(optional);
  error: string(optional);
}

easyeda_pcb_add_track

Profile: full | Risk Level: high

Draw a copper track/trace on the PCB board. A multi-point path is written as one line segment per consecutive point pair (all sharing netName, so they form one electrical track — same coordinate/name merge model as schematic wires).

Input Parameters

ParameterTypeRequiredDescription
pointsobject[]Yes
layernumberYes
widthnumberYes
netNamestring (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  primitiveId: string (optional);
  primitiveIds: string[] (optional);
  error: string (optional);
}

easyeda_pcb_add_via

Profile: full | Risk Level: high

Place a via to connect different copper layers on the PCB board. outerDiameter/holeSize are passed through to the native API unconverted (same native unit as x/y) — their real-world scale was not independently verified against a known physical dimension, so confirm the resulting via size visually before trusting it.

Input Parameters

ParameterTypeRequiredDescription
xnumberYes
ynumberYes
outerDiameternumberYes
holeSizenumberYes
netNamestring (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  primitiveId: string(optional);
  error: string(optional);
}

easyeda_pcb_add_zone

Profile: full | Risk Level: high

PCB copper-zone creation is unavailable because the verified EasyEDA Pro runtime requires a complete native argument contract that this integration has not yet recovered. This tool fails closed and does not call the bridge.

Input Parameters

ParameterTypeRequiredDescription
pointsobject[]Yes
layernumberYes
netNamestring (optional)No
clearancenumber (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  not_available: boolean(optional);
  error: string(optional);
  remediation: string(optional);
}

easyeda_pcb_autoroute

Profile: pro | Risk Level: high

Drive EasyEDA Pro's native autorouter (PCB_Document.autoRouting, a @beta API) after a pre-flight constraint check, then run DRC and a constraint report before reporting success. Never reports success without that evidence attached (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
routingNets'selected' | 'selectedComponents' | string[] (optional)No
cornerStyle'45' | '90' (optional)No
existingPrimitiveMode'keep' | 'remove' (optional)No
optimization'completion' | 'faster' (optional)No
layersnumber[] (optional)No
ignoreNetsstring[] (optional)No
boardDataobject (optional)No
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  overall_verdict: 'success' | 'partial' | 'blocked' | 'failed';
  blocked_by_preflight: boolean;
  preflight: object(optional);
  autoroute_result: object(optional);
  post_route_drc: object(optional);
  post_route_constraint_report: object(optional);
  summary: string;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_pcb_components

Profile: core | Risk Level: low

List components placed on the active PCB layout: primitiveId, designator, footprint identity, position/rotation/layer. Requires a focused PCB tab in EasyEDA Pro — returns an empty list (not an error) if none is active.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
limitnumberYes
offsetnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  components: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_pcb_constraint_check

Profile: core | Risk Level: low

Run PCB constraint validation against the board design. Checks board outline, layer stackup, net classes, clearance rules, keepout areas, placement zones, mounting holes, fiducials, and manufacturing constraints.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
boardDataobject (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  valid: boolean;
  errors: object[];
  warnings: object[];
  summary: object;
  not_available: boolean (optional);
}

easyeda_pcb_constraint_report

Profile: core | Risk Level: low

Generate a human-readable report explaining which PCB constraints were applied and which require manual review.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
boardDataobject (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  verdict: string;
  checked: object[];
  manualReviewRequired: object[];
  not_available: boolean (optional);
}

easyeda_pcb_delete_component

Profile: full | Risk Level: high

Delete components, tracks, vias, or other PCB primitives by ID. Checks each id against every deletable PCB class instead of assuming component, since PCB_PrimitiveComponent.delete() reports success for ids it does not own without deleting them.

Input Parameters

ParameterTypeRequiredDescription
primitiveIdsstring[]Yes
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  deletedCount: number (optional);
  deleted: string[] (optional);
  notFound: string[] (optional);
  error: string (optional);
}

easyeda_pcb_export_route_context

Profile: pro | Risk Level: low

Export the board as a Specctra DSN file (PCB_ManufactureData.getDsnFile) — an open, vendor-neutral format supported by external autorouters such as FreeRouting. Re-import the routed result through EasyEDA Pro's own SES/DSN import, not through this server.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
filePathstring (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  artifact_path: string(optional);
  byte_length: number(optional);
  exported: boolean;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_pcb_fills

Profile: core | Risk Level: low

List native PCB Fill primitives separately from copper pours/zones, including net/layer, fill mode, line width, lock state, and a bounded normalized polygon representation. Netless fills are returned explicitly with netless=true. Read-only; no Fill mutation is exposed.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
limitnumberYes
offsetnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  fills: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_pcb_floorplan

Profile: full | Risk Level: high

Translate CircuitIR physical constraints (keepouts, top/bottom side, connector-edge, thermal spacing) into a component group placement plan, then optionally apply it. CircuitIR devices carry no physical dimensions, so widths/heights must be supplied per device (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
circuitIRanyYes
devicesobject[]Yes
projectIdstring (optional)No
mode'preview' | 'apply'Yes
boardobjectYes
anchorobjectYes
columnsnumber (optional)No
spacingMmnumber (optional)No
minSpacingMmnumber (optional)No
topLayernumber (optional)No
bottomLayernumber (optional)No
connectorEdge'top' | 'bottom' | 'left' | 'right' (optional)No
connectorEdgeMarginMmnumber (optional)No
thermalSpacingBoostMmnumber (optional)No
thermalDissipationThresholdWattsnumber (optional)No
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  floorplan_notes: string[];
  summary: string;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_pcb_modify_component

Profile: full | Risk Level: high

Preview or apply a PCB component transform for top/bottom side, native X/Y coordinates in mils, and rotation in degrees. Apply requires confirmation, captures a transaction snapshot, verifies fresh native read-back, and restores on mismatch. EasyEDA Pro has no independent component mirror field.

Input Parameters

ParameterTypeRequiredDescription
primitiveIdstringYes
mode'preview' | 'apply'Yes
side'top' | 'bottom' (optional)No
xMilnumber (optional)NoAbsolute native PCB X coordinate in mils.
yMilnumber (optional)NoAbsolute native PCB Y coordinate in mils.
rotationDegnumber (optional)NoComponent rotation in degrees; normalized modulo 360.
confirmWrite'true' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  primitive_id: string;
  mode: 'preview' | 'apply';
  applied: boolean;
  no_op: boolean;
  mirror_supported: 'false';
  before: object (optional);
  planned: object (optional);
  after: object (optional);
  restored: object (optional);
  changes: object[] (optional);
  transaction_id: string (optional);
  transaction_state: 'active' | 'validated' | 'committed' | 'rolled-back' | 'failed' (optional);
  rolled_back: boolean (optional);
  error: string (optional);
}

easyeda_pcb_place_component

Profile: full | Risk Level: high

Direct PCB component creation is unavailable because the verified EasyEDA runtime does not complete PCB_PrimitiveComponent.create(). This tool fails closed. Place the part in the schematic, sync to PCB, confirm the native dialog, then reposition it with easyeda_pcb_modify_component.

Input Parameters

ParameterTypeRequiredDescription
footprintstringYes
xnumberYes
ynumberYes
rotationnumberYes
layernumberYes
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  not_available: boolean(optional);
  error: string(optional);
  remediation: string(optional);
}

easyeda_pcb_place_component_group

Profile: full | Risk Level: high

Create a high-level, constraint-checked placement plan for a group of components and optionally apply it after explicit confirmation.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
mode'preview' | 'apply'Yes
boardobjectYes
anchorobjectYes
columnsnumber (optional)No
spacingMmnumber (optional)No
layer'1' | '2'Yes
minSpacingMmnumber (optional)No
componentsobject[]Yes
keepoutsobject[] (optional)No
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  error: string (optional);
}

easyeda_pcb_production_review

Profile: core | Risk Level: medium

Run fabrication, assembly, and testability production review rules for PCB handoff. Reports severity-ranked DFM/DFA/DFT findings with actionable remediation before Gerber export or manufacturing submission.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
boardDataobject (optional)No
gateMode'warn' | 'block' | 'off'Yes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  passed: boolean;
  blocked: boolean;
  gate_mode: string;
  severity_counts: object;
  errors: object[];
  warnings: object[];
  summary: object;
  not_available: boolean (optional);
}

easyeda_pcb_regions

Profile: core | Risk Level: low

List native PCB Region primitives separately from copper pours/zones, including layer, region rule types/name, line width, lock state, and a bounded normalized polygon representation. Read-only; no Region mutation is exposed.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
limitnumberYes
offsetnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  regions: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_pcb_route_path_plan

Profile: full | Risk Level: high

Create a high-level, constraint-checked route path plan for one net and optionally apply it after explicit confirmation.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
mode'preview' | 'apply'Yes
boardobject (optional)No
netNamestringYes
layernumberYes
widthMmnumberYes
waypointsobject[]Yes
keepoutsobject[] (optional)No
maxLengthMmnumber (optional)No
minWidthMmnumber (optional)No
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  net_name: string;
  layer: number;
  width_mm: number;
  path_length_mm: number;
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  error: string (optional);
}

easyeda_pcb_tracks

Profile: core | Risk Level: low

List copper track segments on the active PCB layout: primitiveId, net, layer, start/end coordinates, width. A multi-point track drawn by add_track appears as several consecutive segments sharing one net. Returns an empty list (not an error) if no PCB tab is focused.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
limitnumberYes
offsetnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  tracks: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_pcb_vias

Profile: core | Risk Level: low

List vias on the active PCB layout: primitiveId, net, position, hole/outer diameter (native unit, same scale as x/y — not independently verified against a known physical dimension). Requires a focused PCB tab — returns an empty list (not an error) if none is active.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
limitnumberYes
offsetnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  vias: object[];
  total: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_post_write_qa

Profile: core | Risk Level: medium

Run and classify post-write schematic QA after generated edits. Combines native DRC/ERC results with policy-aware classification so duplicate net names, free networks, and unconnected pins are reported as pass/fail/inconclusive instead of raw warning counts.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
policy'circuit' | 'diagnostic-fixture'Yes
useNativeChecksbooleanYes
manualDrcMessagesstring[] (optional)NoOptional user-copied EasyEDA DRC log lines for classification when native details are unavailable
manualErcMessagesstring[] (optional)NoOptional user-copied EasyEDA ERC log lines for classification when native details are unavailable
drcobject (optional)NoOptional explicit DRC result override for tests or log ingestion
ercobject (optional)NoOptional explicit ERC result override for tests or log ingestion

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  status: 'pass' | 'fail' | 'inconclusive';
  passed: boolean;
  policy: 'circuit' | 'diagnostic-fixture';
  issue_count: number;
  fatal_count: number;
  warning_count: number;
  inconclusive_count: number;
  categories: Record<string, number>;
  issues: object[];
  summary: string;
  detail_source: 'native' | 'manual' | 'override' | 'mixed' (optional);
}

easyeda_power_tree_analyze

Profile: core | Risk Level: medium

Analyze supply sources, regulators, loads, protection, bulk capacitance, current budget, dropout, and regulator thermal risk. Returns machine-readable issues and a human-readable summary.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
railsobject[]Yes
sourcesobject[] (optional)No
regulatorsobject[] (optional)No
loadsobject[] (optional)No
protectionsobject[] (optional)No
capacitorsobject[] (optional)No
limitsobject (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  passed: boolean;
  rails: object[];
  regulators: object[];
  issues: object[];
  summary: object;
}

easyeda_production_qa_artifacts

Profile: pro | Risk Level: low

Generate testpoint checklist, assembly notes, bring-up plan, production QA checklist, and machine-readable QA manifest for board handoff.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
projectNamestring (optional)No
revisionstring (optional)No
criticalNetsobject[] (optional)No
componentsobject[] (optional)No
requiresProgrammingboolean (optional)No
programmingInterfacesstring[] (optional)No
hasProgrammingAccessboolean (optional)No
hasBatteryboolean (optional)No
requiresFunctionalTestboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  project_name: string (optional);
  revision: string (optional);
  passed: boolean;
  issues: object[];
  checklist: object[];
  artifacts: object[];
  summary: object;
}

easyeda_project_begin_transaction

Profile: core | Risk Level: low

Open an in-memory, document-scoped transaction for snapshot-backed schematic writes. Only tools passed transactionId participate; standalone schematic writes are not auto-captured. Only one active transaction is allowed per document. Beginning a transaction does not modify EasyEDA.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
labelstring (optional)No
maxOperationsnumberYes
ttlSecondsnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  transaction: object (optional);
  restored_operation_ids: string[] (optional);
  failed_operation_ids: string[] (optional);
  error_code: string (optional);
  error: string (optional);
  details: Record<string, any> (optional);
}

easyeda_project_commit_transaction

Profile: core | Risk Level: medium

Finalize a transaction after its writes and validation gates succeed. Commit removes rollback eligibility and releases the document transaction lock.

Input Parameters

ParameterTypeRequiredDescription
transactionIdstringYes
confirmWrite'true'Yes

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  transaction: object (optional);
  restored_operation_ids: string[] (optional);
  failed_operation_ids: string[] (optional);
  error_code: string (optional);
  error: string (optional);
  details: Record<string, any> (optional);
}

easyeda_project_get_transaction_status

Profile: core | Risk Level: low

Read transaction state, validation results, operation hashes, and rollback status without exposing captured primitive snapshots.

Input Parameters

ParameterTypeRequiredDescription
transactionIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  transaction: object (optional);
  restored_operation_ids: string[] (optional);
  failed_operation_ids: string[] (optional);
  error_code: string (optional);
  error: string (optional);
  details: Record<string, any> (optional);
}

easyeda_project_rollback_transaction

Profile: core | Risk Level: medium

Controlled write: restore applied schematic primitive snapshots in reverse order, verify each restored hash, and report partial rollback explicitly instead of hiding inconsistencies.

Input Parameters

ParameterTypeRequiredDescription
transactionIdstringYes
confirmWrite'true'Yes

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  transaction: object (optional);
  restored_operation_ids: string[] (optional);
  failed_operation_ids: string[] (optional);
  error_code: string (optional);
  error: string (optional);
  details: Record<string, any> (optional);
}

easyeda_project_save

Profile: core | Risk Level: medium

Explicitly save the current EasyEDA Pro project. This ensures all netlist changes, net flags, pin connections, and other mutations are persisted to the project file. Save is never implicit — the caller must explicitly request it. Requires confirmWrite.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID to save
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  saved_at: string(optional);
  error: string(optional);
}

easyeda_project_validate_transaction

Profile: core | Risk Level: low

Run transaction consistency gates before commit: bridge availability, pending/failed operation checks, optional expected operation count, and optional requirement for at least one applied write.

Input Parameters

ParameterTypeRequiredDescription
transactionIdstringYes
expectedOperationCountnumber (optional)No
requireAppliedOperationsbooleanYes
requireBridgeConnectedbooleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  transaction: object (optional);
  restored_operation_ids: string[] (optional);
  failed_operation_ids: string[] (optional);
  error_code: string (optional);
  error: string (optional);
  details: Record<string, any> (optional);
}

easyeda_rule_check_summary

Profile: core | Risk Level: low

Get a summary of all design and electrical rule check results for the project.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  drc: object;
  erc: object;
  overall_passed: boolean | null;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_run_self_test

Profile: core | Risk Level: low

Run internal self-test to verify server integrity, config, and bridge connectivity.

Input Parameters

No parameters required.

Output Format

Returns a JSON object matching the schema:

ts
{
  passed: boolean;
  checks: object[];
}

easyeda_schematic_add_circle

Profile: core | Risk Level: medium

Draw a circle on the schematic sheet — decorative marker or custom symbol element. Cosmetic only, no electrical meaning. fillColor "none" leaves it unfilled.

Input Parameters

ParameterTypeRequiredDescription
centerXnumberYes
centerYnumberYes
radiusnumberYes
colorstring (optional)No
fillColorstring (optional)NoFill color, hex string, or "none" for unfilled
lineWidthnumber (optional)No
lineTypenumber (optional)No
fillStylestring (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  circle: any(optional);
  error: string(optional);
}

easyeda_schematic_add_polygon

Profile: core | Risk Level: medium

Draw a closed polygon on the schematic sheet from 3+ vertices — custom decorative shapes, callout arrows, or block diagram elements. Cosmetic only, no electrical meaning.

Input Parameters

ParameterTypeRequiredDescription
pointsobject[]Yes
colorstring (optional)No
fillColorstring (optional)NoFill color, hex string, or "none" for unfilled
lineWidthnumber (optional)No
lineTypenumber (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  polygon: any(optional);
  error: string(optional);
}

easyeda_schematic_add_rectangle

Profile: core | Risk Level: medium

Draw a rectangle on the schematic sheet — section dividers/grouping boxes for organizing a busy schematic into labeled functional blocks (pair with add_text for the title). Cosmetic only. x/y is the top-left corner; fillColor "none" leaves it unfilled.

Input Parameters

ParameterTypeRequiredDescription
xnumberYesTop-left X coordinate
ynumberYesTop-left Y coordinate
widthnumberYes
heightnumberYes
cornerRadiusnumber (optional)No
rotationnumber (optional)No
colorstring (optional)NoBorder/line color, hex string (e.g. "#FF0000")
fillColorstring (optional)NoFill color, hex string, or "none" for unfilled
lineWidthnumber (optional)No
lineTypenumber (optional)No
fillStylestring (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  rectangle: any(optional);
  error: string(optional);
}

easyeda_schematic_add_text

Profile: core | Risk Level: medium

Place free-standing text on the schematic sheet (section headers, notes, block labels) — cosmetic/organizational, not a net label. color must be a hex string and fontName a real font (e.g. "Arial") — untyped placeholders create nothing despite returning ok.

Input Parameters

ParameterTypeRequiredDescription
xnumberYes
ynumberYes
contentstringYes
rotationnumber (optional)No
colorstring (optional)No
fontNamestring (optional)No
fontSizenumber (optional)No
boldboolean (optional)No
italicboolean (optional)No
underlineboolean (optional)No
alignModenumber (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  text: any(optional);
  error: string(optional);
}

easyeda_schematic_add_wire

Profile: core | Risk Level: medium

Add a wire connecting schematic coordinates/pins — real native connectivity. Same netName connects pins globally: separate stubs sharing one name merge into one net (no label needed). NET_COLLISION guards touched points against a foreign net's wire, pin, or flag/port — not mid-segment crossings.

Input Parameters

ParameterTypeRequiredDescription
pointsobject[]Yes
netNamestring (optional)No
colorstring (optional)No
lineWidthnumber (optional)No
lineTypestring (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  wire: any(optional);
  error: string(optional);
}

easyeda_schematic_audit_imported_design

Profile: core | Risk Level: low

Read the live schematic without modifying it, build a canonical model, and report imported net aliases, duplicate or missing references, unresolved metadata expressions, missing values/footprints, and ambiguous BOM classification. Includes a preview only; it never renames nets or changes components.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID to audit
includeInfobooleanYesInclude informational imported-alias and power-flag findings
componentLimitnumberYesMaximum number of component records to read from the live bridge

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  audit_schema_version: 'imported-design-audit/v1';
  status: 'clean' | 'review' | 'blocked';
  read_only: 'true';
  safe_to_normalize: boolean;
  source: object;
  model_summary: object;
  summary: object;
  findings: object[];
  normalization_preview: object;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_schematic_batch_write

Profile: core | Risk Level: high

Apply up to 200 validated schematic create, modify, pin no-connect, and delete operations in one snapshot-backed transaction. Any failure rolls the whole transaction back. Delete is limited to safely recreatable drawing primitives.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
transactionIdstring (optional)No
operationsobject | object | object | object | object | object | object | object | object | object | object[]Yes
atomic'true'Yes
dryRunbooleanYes
confirmWrite'true'Yes

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  atomic: 'true';
  dry_run: boolean;
  internally_managed_transaction: boolean;
  transaction_id: string (optional);
  transaction_state: 'active' | 'validating' | 'validated' | 'committed' | 'rolling-back' | 'rolled-back' | 'failed' | 'expired' (optional);
  committed: boolean;
  rolled_back: boolean;
  results: object[];
  error_code: string (optional);
  error: string (optional);
  rollback_error: string (optional);
}

easyeda_schematic_capture_full_page

Profile: pro | Risk Level: low

Frame and capture the complete schematic sheet with a sheet-to-image transform. Oversized PNGs are downsampled without cropping; transforms use final image dimensions. Guessed geometry is opt-in.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
tabIdstring (optional)No
paddingnumberYes
allowInferredA4booleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  captured: boolean;
  mime_type: string (optional);
  file_name: string (optional);
  byte_length: number (optional);
  image_base64: string (optional);
  original_image_dimensions: object (optional);
  image_dimensions: object (optional);
  downsampled: boolean (optional);
  payload_budget_bytes: number (optional);
  not_available: boolean (optional);
  error: string (optional);
  project_id: string;
  sheet: object (optional);
  viewport: object (optional);
  sheet_to_image_transform: object (optional);
  selection_overlays_removed: boolean (optional);
  deterministic_viewport: boolean;
  warnings: string[];
}

easyeda_schematic_check_collisions

Profile: core | Risk Level: low

Scan every component's real pin coordinates and report any (x,y) shared by two or more components — a silent-short risk the native NET_COLLISION guard misses for never-wired pins. Run after manual placement outside easyeda_workflow_* tools (which reconcile this automatically).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  collisions: object[];
  collision_count: number;
  scan_complete: boolean;
  scan_diagnostics: object (optional);
  success: boolean;
  error: string (optional);
}

easyeda_schematic_check_placement

Profile: pro | Risk Level: low

Validate a candidate placement (rendered bounds, clearances, conflicts, deterministic alternatives) or -- when x/y are omitted -- search for a safe region of the given size, against real title-block/page-border/existing-primitive constraints. Read-only, no writes.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
candidateobjectYes
reservedRegionsobject[] (optional)No
minimumClearancenumber (optional)No
excludePrimitiveIdsstring[] (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  mode: 'check-placement' | 'select-safe-region';
  accepted: boolean (optional);
  proposed: object (optional);
  combinedBounds: object (optional);
  clearances: object[] (optional);
  conflicts: object[] (optional);
  suggestedAlternatives: object[] (optional);
  failure: object (optional);
  feasible: boolean (optional);
  preference: string (optional);
  candidate: object (optional);
  check: object (optional);
  rationale: string[] (optional);
}

easyeda_schematic_component_pins

Profile: core | Risk Level: low

Get exact pin primitive IDs, numbers, names, coordinates, native no-connect state, and pinType for a schematic component by its primitive ID. pinType is EasyEDA's own symbol-library field and is unreliably authored (often "Undefined" even on real ICs) — treat it as a weak hint, not ground truth.

Input Parameters

ParameterTypeRequiredDescription
primitiveIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  primitiveId: string;
  pins: object[];
  success: boolean;
  error: string (optional);
}

easyeda_schematic_components

Profile: core | Risk Level: low

List schematic components with IDs, references, values, footprints, placement, and project-instance device IDs. Omitted scope preserves legacy all-pages; focused/all_pages are supported, pageUuid is not. Project-instance device IDs are not valid place_component deviceItem values; use schematic_search_device.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
limitnumberYes
offsetnumberYes
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  components: object[];
  total: number;
  read_consistency: object (optional);
  read_scope: object (optional);
  not_available: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  error: string (optional);
}

easyeda_schematic_connect_pin_to_net

Profile: core | Risk Level: medium

Create real EasyEDA connectivity for a pin: draws a short wire stub from its exact coordinate, tagged with netName. Same-netName wires merge globally, so this joins the pin to everything else on that net — visible to ERC, ratsnest, and autorouting.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
primitiveIdstringYesThe primitive ID of the component
pinNumberstringYesThe pin number or pin name on the component (e.g. "1", "VCC", "GND")
netNamestringYesThe net name to connect the pin to (e.g. VCC, GND, DATA0)
stubLengthnumber (optional)NoLength of the wire stub drawn outward from the pin. Defaults to 10.
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  real: boolean(optional);
  created_primitive_id: string(optional);
  endpoint: object(optional);
  connection: object(optional);
  error: string(optional);
}

easyeda_schematic_connect_pins_by_net

Profile: core | Risk Level: medium

Bulk variant of connect_pin_to_net: draws a real wire stub from each pin, tagged with netName, so all listed pins (and anything else already on that net) merge into one net. Visible to ERC, ratsnest, and autorouting. A pin that fails (e.g. collision) is reported in failures rather than aborting the batch.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
netNamestringYesThe net name to assign pins to
pinsobject[]YesList of component pins to connect to the net
stubLengthnumber (optional)NoLength of the wire stub drawn outward from each pin. Defaults to 10.
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  real: boolean (optional);
  created_primitive_ids: string[] (optional);
  failures: object[] (optional);
  connections: object[] (optional);
  count: number;
  error: string (optional);
}

easyeda_schematic_connectivity_fingerprint

Profile: pro | Risk Level: low

Compute a deterministic connectivity fingerprint (pin/net membership, wire endpoints, labels/ports, no-connects) from the live schematic. Pass the hash as beforeFingerprint/afterFingerprint to easyeda_schematic_layout_qa to prove a cosmetic move left connectivity unchanged.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  projectId: string;
  schemaVersion: '1';
  hash: string;
  modelHash: string;
  componentCount: number;
  netCount: number;
  normalized: object;
  diagnosticCount: number;
}

easyeda_schematic_create_net_flag

Profile: core | Risk Level: medium

Create a named net flag/label. With identification (Power/Ground/AnalogGround/ProtectGround) it places a power-flag symbol binding to a coincident pin (use for VCC/GND). Without it, a generic net label — cosmetic only; connect pins with add_wire stubs sharing one netName.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
netNamestringYesThe net name to assign (e.g. VCC, GND, TEST_NET)
xnumberYesX coordinate on the schematic canvas
ynumberYesY coordinate on the schematic canvas
rotationnumber (optional)NoRotation in degrees (0, 90, 180, 270)
identification'Power' | 'Ground' | 'AnalogGround' | 'ProtectGround' (optional)NoPower-flag identification. When set, places an EasyEDA power/ground flag symbol of this type. When omitted, places a generic named net label instead.
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  netFlag: object(optional);
  error: string(optional);
}

easyeda_schematic_create_net_port

Profile: core | Risk Level: medium

Place a hierarchical net port (off-sheet connector) on the schematic. Net ports create named connections that span multiple schematic sheets, appearing as real SCH_Net entries in the netlist.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
netNamestringYesThe net name for the port (e.g. VCC, GND, DATA_BUS)
xnumberYesX coordinate on the schematic canvas
ynumberYesY coordinate on the schematic canvas
portType'input' | 'output' | 'bidirectional' | 'triState' | 'passive' (optional)NoElectrical type of the port
rotationnumber (optional)NoRotation in degrees (0, 90, 180, 270)
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  netPort: object(optional);
  error: string(optional);
}

easyeda_schematic_delete_primitive

Profile: core | Risk Level: medium

Delete components, wires, or other drawing objects by primitive UUID. Pass projectId + transactionId for rollback-backed deletion of safely recreatable drawing primitives; unsupported transactional delete kinds fail before mutation. Without transactionId the write is standalone.

Input Parameters

ParameterTypeRequiredDescription
primitiveIdsstring[]Yes
projectIdstring (optional)NoRequired when transactionId is supplied; must match the transaction document.
transactionIdstring (optional)NoOptional snapshot-backed project transaction ID.
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  transaction: object(optional);
  error_code: string(optional);
  error: string(optional);
  details: Record<string, any>(optional);
}

easyeda_schematic_layout_autofix

Profile: pro | Risk Level: low

Detect title-block overlap, page-boundary overflow, and component-overlap violations from real rendered bounds, and propose cosmetic-only moves that resolve them. Read-only preview only (requiresConfirmWrite=true, no writes) -- confirmWrite apply with connectivity-fingerprint rollback is tracked separately (#273).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
allowlistobject (optional)No
hardKeepoutsobject[] (optional)No
reservedRegionsobject[] (optional)No
minimumClearancenumber (optional)No
maxMovesnumber (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  projectId: string;
  mode: 'preview';
  requiresConfirmWrite: 'true';
  violations: object[];
  moves: object[];
  report: object;
  allowlist: object;
  primitiveCount: number;
  unavailablePrimitiveIds: string[];
}

easyeda_schematic_layout_autofix_apply

Profile: pro | Risk Level: high

Apply the layout-autofix cosmetic moves in a snapshot-backed transaction, re-verifying a connectivity fingerprint after every write batch. Any unintended electrical change or write failure rolls the transaction back and is reported, never thrown. dryRun:true previews only.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
allowlistobject (optional)No
hardKeepoutsobject[] (optional)No
reservedRegionsobject[] (optional)No
minimumClearancenumber (optional)No
maxMovesnumber (optional)No
batchSizenumber (optional)No
dryRunbooleanYes
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  projectId: string;
  dryRun: boolean;
  mode: 'preview';
  requiresConfirmWrite: 'true';
  violations: object[];
  moves: object[];
  allowlist: object;
  primitiveCount: number;
  unavailablePrimitiveIds: string[];
  applied: boolean;
  batchesVerified: number;
  actualStateReadAfterFailure: boolean;
  beforeFingerprintHash: string (optional);
  afterFingerprintHash: string (optional);
  connectivityDiff: object (optional);
  report: object;
  transactionId: string (optional);
  transactionState: 'active' | 'validating' | 'validated' | 'committed' | 'rolling-back' | 'rolled-back' | 'failed' | 'expired' (optional);
  errorCode: string (optional);
  error: string (optional);
}

easyeda_schematic_layout_qa

Profile: pro | Risk Level: low

Run a normalized post-write QA pass combining runtime DRC/ERC, expected component/pin topology, rendered primitive bounds, title-block and page constraints, wiring/grouping checks, and connectivity fingerprints, with optional full-page visual evidence. Critical geometry or connectivity findings always block commit.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
expectedComponentRefsstring[] (optional)No
expectedNetNamesstring[] (optional)No
expectedPinMappingsobject[] (optional)No
relationshipsobject[] (optional)No
connectivityobject (optional)No
thresholdsobject (optional)No
visualFindingsobject[] (optional)No
runVisualCapturebooleanYes

Output Format

Returns a JSON object matching the schema:

ts
{
  projectId: string;
  status: 'pass' | 'fail' | 'inconclusive';
  passed: boolean;
  commitBlocked: boolean;
  issues: object[];
  issueCounts: object;
  scores: object;
  evidence: object;
  summary: object;
}

easyeda_schematic_modify_primitive

Profile: core | Risk Level: medium

Safely modify a schematic primitive while preserving omitted fields. With transactionId and projectId, capture before/after snapshots and automatically restore the prior state if the write or post-write read fails. Component moves keep connected wires attached.

Input Parameters

ParameterTypeRequiredDescription
primitiveIdstringYes
propertyRecord<string, any>Yes
projectIdstring (optional)NoRequired when transactionId is supplied; must match the transaction document.
transactionIdstring (optional)NoOptional snapshot-backed project transaction ID.
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  result: any(optional);
  transaction: object(optional);
  error_code: string(optional);
  error: string(optional);
  details: Record<string, any>(optional);
}

easyeda_schematic_net_detail

Profile: core | Risk Level: low

Get full details for a specific net in the current schematic context including connected pins and components. Explicit focused scope is supported; page/all_pages scopes fail closed on EasyEDA Pro 3.2.149.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
netNamestringYes
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  net_name: string;
  node_count: number;
  nodes: object[];
  read_scope: object (optional);
  not_available: boolean (optional);
  timed_out: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  timeout_stage: string (optional);
  timeout_component: string (optional);
  error: string (optional);
}

easyeda_schematic_nets

Profile: core | Risk Level: low

List nets from the current schematic context. Explicit focused scope is supported; page/all_pages scopes fail closed on EasyEDA Pro 3.2.149.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  nets: object[];
  total: number;
  read_consistency: object (optional);
  read_scope: object (optional);
  not_available: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  error: string (optional);
}

easyeda_schematic_place_component

Profile: core | Risk Level: medium

Place a searched library device on the active schematic. Use deviceItem from schematic_search_device; project-local identities from schematic_components are invalid. On timeout inspect reconciled/unconfirmed before retrying. projectId + transactionId enables rollback; without transactionId the write is standalone.

Input Parameters

ParameterTypeRequiredDescription
deviceItemobjectYes
xnumberYes
ynumberYes
subPartNamestring (optional)No
rotationnumber (optional)No
mirrorboolean (optional)No
addIntoBomboolean (optional)No
addIntoPcbboolean (optional)No
dryRunboolean (optional)No
verifyAfterWriteboolean (optional)No
checkPlacementCollisionboolean (optional)No
collisionRadiusnumber (optional)No
projectIdstring (optional)NoRequired when transactionId is supplied; must match the transaction document.
transactionIdstring (optional)NoOptional snapshot-backed project transaction ID.
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  component: any(optional);
  dry_run: boolean(optional);
  placement_guard: any(optional);
  verification: any(optional);
  reconciled: boolean(optional);
  unconfirmed: boolean(optional);
  transaction: object(optional);
  warning: string(optional);
  error_code: string(optional);
  error: string(optional);
  details: Record<string, any>(optional);
}

easyeda_schematic_plan_layout

Profile: pro | Risk Level: low

Deterministically plan functional-block placement (reserved rectangles, support space, grid-aligned coordinates, occupancy map, A3 fallback, score) from real sheet/primitive geometry -- no writes. Caller supplies roles/blockId/parentId; other primitives read as occupied regions, never overwritten.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
componentsobject[]Yes
allowA3FallbackbooleanYes
hardKeepoutsobject[] (optional)No
constraintsobject (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  feasible: boolean;
  deterministic: 'true';
  layoutHash: string;
  selectedSheet: object;
  blockReservations: object[];
  supportReservations: object[];
  placements: object[];
  placementOrder: string[];
  occupancyMap: object[];
  conflicts: object[];
  pageSuitability: object;
  score: object;
}

easyeda_schematic_plan_safe_region

Profile: core | Risk Level: low

Compute a safe schematic drawing region before placing components. Uses live sheet info when available, assumes EasyEDA bottom-left coordinates, reserves the default lower-right title-block keep-out, and returns an anchor/bounds plan that avoids title-block overlap.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
contentWidthnumberYesEstimated width of the planned circuit block in EasyEDA coordinates
contentHeightnumberYesEstimated height of the planned circuit block in EasyEDA coordinates
preferredRegion'upper-left' | 'upper-center' | 'upper-right' | 'center-left' | 'center' | 'center-right' | 'lower-left' | 'lower-center' | 'lower-right'Yes
marginnumber (optional)No
titleBlockKeepoutobject (optional)NoOptional explicit title-block keep-out rectangle when the sheet template is known

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string (optional);
  blocked: boolean;
  preferred_region: string;
  sheet: object;
  usable_bounds: object;
  requested_bounds: object;
  bounds: object;
  anchor: object;
  keepouts: object[];
  warnings: string[];
  issues: object[];
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_schematic_preview_imported_normalization

Profile: core | Risk Level: low

Read the live schematic and produce a deterministic, read-only normalization plan with a stable plan ID, model hash, proposed net-name/reference/metadata operations, validation gates, warnings, and blockers. This tool never writes to EasyEDA.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID to preview
componentLimitnumberYes
normalizeNetNamesbooleanYes
annotateReferencesbooleanYes
resolveMetadataExpressionsbooleanYes
componentOverridesobject[]Yes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  source: object;
  plan: object;
  not_available: boolean(optional);
  error: string(optional);
}

easyeda_schematic_primitive_bounds

Profile: pro | Risk Level: low

Read real rendered (sheet-space, rotation-aware) component bounding boxes from the live bridge, batched in one call. Origin is not a collision bound -- use combinedBounds for overlap/page/title-block checks. Reference/value text is not independently addressable here and reports not_available.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
primitiveIdsstring[] (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  items: object[];
  availableCount: number;
  notAvailableCount: number;
  units: string;
  coordinateOrigins: object[];
}

easyeda_schematic_search_device

Profile: core | Risk Level: low

Search for schematic symbols/devices in the EasyEDA library by keywords. Full results carry the library's complete metadata object per device; pass minimal:true to get back only uuid/libraryUuid/name/pin_count/symbol_type when that is all you need.

Input Parameters

ParameterTypeRequiredDescription
keystringYesSearch keyword(s), matched against device name/description in the library
libraryUuidstring (optional)No
classificationstring | string[] (optional)No
symbolTypestring (optional)No
itemsOfPagenumberYes
pagenumberYes
minimalboolean (optional)NoWhen true, return only uuid/libraryUuid/name/pin_count/symbol_type per device instead of the full library metadata object — use this when the goal is just picking a deviceItem for place_component, to avoid paying for fields you will not read.

Output Format

Returns a JSON object matching the schema:

ts
{
  devices: object[];
  total: number;
  provider_tier: 'local_library' (optional);
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_schematic_set_pin_no_connect

Profile: core | Risk Level: medium

Set or clear EasyEDA Pro's native No Connect marker on one exact component pin. This changes the component pin noConnected state; it does not create a net, label, power flag, or short-circuit flag. The bridge rejects missing/ambiguous pins and verifies the native readback after the write.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
primitiveIdstringYesThe component primitive ID
pinNumberstringYesThe exact component pin number
noConnectedbooleanYestrue places the native No Connect marker; false removes it
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  component_primitive_id: string;
  pin_primitive_id: string(optional);
  pin_number: string;
  previous_no_connected: boolean(optional);
  no_connected: boolean(optional);
  changed: boolean(optional);
  verified: boolean(optional);
  error_code: string(optional);
  error: string(optional);
}

easyeda_schematic_set_title_block

Profile: core | Risk Level: medium

Update schematic title block text fields (Company, Version, Drawn, Reviewed, Page Size). Only these 5 are exposed — writing Symbol/Border/Device/etc once corrupted a real title block; those are read-only natively and must be fixed via the EasyEDA Pro UI.

Input Parameters

ParameterTypeRequiredDescription
fieldsRecord<string, object>YesMap of title block field name to the sub-fields to change, e.g. { "Company": { "value": "ACME", "showValue": true } }
showTitleBlockboolean (optional)NoShow/hide the whole title block
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  error: string(optional);
}

easyeda_schematic_sheet_info

Profile: core | Risk Level: low

Return read-only schematic sheet metadata. Supports focused, pageUuid/page, and all_pages page-list reads without changing EasyEDA focus; aggregate geometry is never invented.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string (optional);
  sheet: any (optional);
  pages: any[] (optional);
  read_scope: object (optional);
  page_size: object (optional);
  frame: any (optional);
  origin: any (optional);
  grid: any (optional);
  raw: any (optional);
  metadata_source: string (optional);
  focused_document: any (optional);
  diagnostics: any (optional);
  geometry_available: boolean;
  warning: string (optional);
  not_available: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  error: string (optional);
}

easyeda_schematic_sync_to_pcb

Profile: core | Risk Level: medium

Request a schematic-to-PCB sync (SCH_Document.importChanges). CAUTION (live-verified): opens a confirmation dialog in EasyEDA Pro's UI a HUMAN must approve — success here only means the request was sent, not that components appeared. Ask the user to approve the dialog, then verify with pcb_components.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
confirmWrite'true'YesMust be the literal boolean true (not the string "true") to allow this write.

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  requested: boolean(optional);
  note: string(optional);
  error: string(optional);
}

easyeda_schematic_validate_netlist

Profile: core | Risk Level: low

Validate inferred nets/floating pins and cross-check native ERC. Only native noConnected=true excludes a pin; unavailable/malformed state stays visible. valid requires clean inference and zero native errors. Explicit focused is supported; page/all_pages fail closed on EasyEDA Pro 3.2.149.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
includeWireCheckbooleanYesWhen true, also check for graphical wires without netlist connectivity
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  netlist: object[];
  total_nets: number;
  floating_pins: object[];
  wires_without_netlist: object[] (optional);
  native_erc: object (optional);
  valid: boolean;
  warnings: string[];
  read_scope: object (optional);
  not_available: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  error: string (optional);
}

easyeda_schematic_verify_write

Profile: core | Risk Level: low

Read back schematic state after an agent-authored write. Returns component-count delta evidence and optional netlist validation so agents can confirm a placement or connection before continuing.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
netNamestring (optional)No
beforeComponentCountnumber (optional)No
expectedComponentCountDeltanumber (optional)No
includeWireCheckboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string (optional);
  net_name: string (optional);
  components_available: boolean;
  component_count: number (optional);
  component_count_delta: number (optional);
  component_delta_matches: boolean (optional);
  netlist_available: boolean;
  netlist_validation: any (optional);
  warnings: string[];
  error: string (optional);
}

easyeda_schematic_wires

Profile: core | Risk Level: low

List wire segments with primitiveId, coordinates, net, color, and style; paginate past 50 with offset. Explicit focused is supported; page/all_pages fail closed on EasyEDA Pro 3.2.149. primitiveId is required by delete_primitive/modify_primitive.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYesThe project/schematic ID
limitnumberYes
offsetnumberYes
pageUuidstring (optional)No
scope'focused' | 'page' | 'all_pages' (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  wires: object[];
  total: number;
  read_consistency: object (optional);
  read_scope: object (optional);
  not_available: boolean (optional);
  error_code: string (optional);
  error_data: object (optional);
  error: string (optional);
}

easyeda_semantic_erc_auto

Profile: core | Risk Level: low

Extract nets/devices/pins from the LIVE schematic and run semantic ERC — no hand-authored netlist needed. Net/pin electrical types are INFERRED from naming conventions, not verified — treat findings as a first-pass signal, not a substitute for semantic_erc_validate.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  passed: boolean;
  error_count: number;
  warning_count: number;
  total_issues: number;
  errors: object[];
  warnings: object[];
  inferred_net_count: number;
  inferred_device_count: number;
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_semantic_erc_validate

Profile: core | Risk Level: medium

Run semantic electrical-rule validation over a netlist with pin electrical types to detect output contention, floating inputs, power conflicts, missing power pins, missing decoupling, and voltage-domain mismatches.

Input Parameters

ParameterTypeRequiredDescription
projectIdstring (optional)No
netsobject[]Yes
devicesobject[] (optional)No
interfacesobject[] (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  project_id: string;
  passed: boolean;
  error_count: number;
  warning_count: number;
  total_issues: number;
  errors: object[];
  warnings: object[];
}

easyeda_simulate_operating_point

Profile: pro | Risk Level: low

Translate a typed circuit description into a SPICE deck and run an offline ngspice operating-point (.op) simulation, optionally checking rail node voltages against a spec. Read-only, local-only. Reports a capability gap rather than failing when ngspice is absent.

Input Parameters

ParameterTypeRequiredDescription
circuitobjectYes
railSpecsobject[] (optional)No
timeoutMsnumber (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  available: boolean;
  ngspice_version: string (optional);
  node_voltages: Record<string, number> (optional);
  rail_verdicts: object[] (optional);
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_simulate_transient

Profile: pro | Risk Level: low

Translate a typed circuit description into a SPICE deck and run an offline ngspice transient (.tran) simulation, optionally checking the final rail voltage against a spec. Read-only, local-only. Reports a capability gap rather than failing when ngspice is absent.

Input Parameters

ParameterTypeRequiredDescription
circuitobjectYes
stepSecondsnumberYes
stopTimeSecondsnumberYes
railSpecsobject[] (optional)No
timeoutMsnumber (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  available: boolean;
  ngspice_version: string (optional);
  samples: object[] (optional);
  truncated: boolean (optional);
  rail_verdicts: object[] (optional);
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_wire_probe

Profile: dev | Risk Level: low

Inspect live schematic wire objects, including line coordinates, net names, methods, and state getter values, to validate EasyEDA runtime mappings.

Input Parameters

ParameterTypeRequiredDescription
limitnumberYes

Output Format

Returns a JSON object matching the schema:

ts
{
  total: number;
  samples: any[];
  not_available: boolean (optional);
  error: string (optional);
}

easyeda_workflow_connector_breakout

Profile: pro | Risk Level: medium

Place a connector, wire each declared pin to its net, and create a net port for each net so the breakout is accessible off-sheet — all as a single atomic transaction (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
anchorobjectYes
netPortAnchorobject (optional)No
connectorRefstringYes
connectorobjectYes
rotationnumber (optional)No
mirrorboolean (optional)No
subPartNamestring (optional)No
pinsobject[]Yes
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
}

easyeda_workflow_decouple_ic

Profile: pro | Risk Level: medium

Place one decoupling capacitor per declared IC power pin and wire each to the pin's net and ground, in a single atomic transaction. Cites design-rules decoupling guidance (rule-of-thumb, not datasheet-specific) alongside the plan (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
anchorobjectYes
spacingnumber (optional)No
groundNetNamestringYes
icPowerPinsobject[]Yes
capacitorobjectYes
capacitorPinsobjectYes
decouplingCategory'digital-logic' | 'mcu' | 'analog' | 'rf' | 'crystal-oscillator' | 'power-regulator'Yes
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
  decoupling_guidance: object (optional);
}

easyeda_workflow_layout_section

Profile: pro | Risk Level: medium

Compute and create a section rectangle + title sized from the real pin extents of the given already-placed components (or replace an existing rectangle/title pair). Reports overlap with other rectangles and page-size overflow as warnings; never resizes the page.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
componentPrimitiveIdsstring[]YesComponents belonging to this section — their pin extents define the box.
titlestringYes
marginnumberYesPadding between the component cluster and the box edge.
componentPaddingnumberYesPer-component padding around its pins, approximating body extent beyond them.
titleGapnumberYesGap between the title and the box top edge.
titleFontSizenumberYes
colorstringYes
replaceRectanglePrimitiveIdstring (optional)NoAn existing section rectangle to delete and replace with the newly-sized one.
replaceTitlePrimitiveIdstring (optional)NoAn existing section title to delete and replace with the repositioned one.
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  applied: boolean;
  bounds: object (optional);
  overlapping_rectangles: object[];
  page_frame_warning: string (optional);
  rectangle_primitive_id: string (optional);
  title_primitive_id: string (optional);
  deleted_primitive_ids: string[];
  error: string (optional);
}

easyeda_workflow_led_blinker

Profile: pro | Risk Level: medium

Create a deterministic LED blinker workflow: a switch, current-limiting resistor, and indicator LED. Uses safe sheet-region planning, left-to-right layout, generic wire stubs, and optional post-write QA. Caller supplies resolved device items (confirmWrite required); simplest circuit for validating the MCP pipeline.

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
devicesobjectYes
anchorobject (optional)No
preferredRegion'upper-left' | 'upper-center' | 'upper-right' | 'center-left' | 'center' | 'center-right' | 'lower-left' | 'lower-center' | 'lower-right'Yes
marginnumber (optional)No
createNetPortsbooleanYes
createWireStubsbooleanYes
refsobject (optional)No
netsobject (optional)No
valuesobject (optional)No
pinMapsobject (optional)No
runPostWriteQabooleanYes
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
  safe_region: object;
  design: object;
  post_write_qa: object (optional);
}

easyeda_workflow_ne555_astable

Profile: pro | Risk Level: medium

Create a deterministic NE555 astable LED flasher workflow using safe sheet-region planning, component-level layout offsets, explicit pin-to-net connectivity, and optional post-write QA. Caller supplies already-resolved EasyEDA device items; this tool does not guess catalog parts (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
devicesobjectYes
anchorobject (optional)No
preferredRegion'upper-left' | 'upper-center' | 'upper-right' | 'center-left' | 'center' | 'center-right' | 'lower-left' | 'lower-center' | 'lower-right'Yes
marginnumber (optional)No
createNetPortsbooleanYes
createWireStubsbooleanYes
refsobject (optional)No
netsobject (optional)No
valuesobject (optional)No
pinMapsobject (optional)No
runPostWriteQabooleanYes
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
  safe_region: object;
  design: object;
  post_write_qa: object (optional);
}

easyeda_workflow_place_block

Profile: pro | Risk Level: medium

Place a group of components, wire their pin-to-net connections (new and/or pre-existing components), and create net ports for block-external nets — all as a single atomic transaction with rollback on partial failure (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
anchorobjectYes
spacingnumber (optional)No
blockNamestring (optional)No
componentsobject[]Yes
existingComponentsobject[]Yes
netPortsobject[]Yes
netPortAnchorobject (optional)No
wiresobject[]Yes
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
}

easyeda_workflow_power_rail

Profile: pro | Risk Level: medium

Place a regulator and its supporting passives and wire them to input/output/ground nets in a single atomic transaction, instead of one primitive call per component. Caller supplies already-resolved device items and pin connections; this tool does not select parts (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
anchorobjectYes
spacingnumber (optional)No
groundNetNamestringYes
inputNetNamestringYes
outputNetNamestringYes
componentsobject[]Yes
verifyRailobject (optional)No
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
  verification: object (optional);
}

easyeda_workflow_rp2040_servo_module

Profile: pro | Risk Level: medium

Plan or apply an RP2040 servo-module scaffold: 56 BOM parts in seven visible rollback-backed sections with deterministic titles and completeness diagnostics. Exact pin-to-net wiring stays intentionally absent until later block netlists supply it (confirmWrite required).

Input Parameters

ParameterTypeRequiredDescription
projectIdstringYes
mode'preview' | 'apply'Yes
devicesobjectYes
anchorobject (optional)No
preferredRegion'upper-left' | 'upper-center' | 'upper-right' | 'center-left' | 'center' | 'center-right' | 'lower-left' | 'lower-center' | 'lower-right'Yes
marginnumber (optional)No
confirmWriteboolean (optional)No

Output Format

Returns a JSON object matching the schema:

ts
{
  success: boolean;
  project_id: string;
  transaction_id: string;
  mode: string;
  applied: boolean;
  blocked: boolean;
  rolled_back: boolean;
  placements: object[];
  operations: object[];
  apply_results: object[] (optional);
  issues: object[];
  summary: string;
  rollback_notes: string[];
  error: string (optional);
  safe_region: object;
  scaffold: object;
}

Source-available under PolyForm Noncommercial 1.0.0.