eda-agent (salitronic/eda-agent) is an MCP server listed on the M8ven Trust Index. It scores 60 out of 100, grade C. It declares 783 tools. No publisher has claimed this listing.
Open-source MCP server that lets an AI drive a live session of Altium Designer, and optionally KiCad or EasyEDA Pro, editing the open design in place while you watch. 300+ tools: schematic, PCB, library and project automation, design review, audits, rendering, auto-placement, panelization, autonomous design-plan executor. Apache-2.0.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
salitronic
Source: github_topic · also listed on github_repo_search
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
tool_catalogDiscover tools by category / maturity / interaction without loading every schema.
tool_invokeInvoke any registered tool by name: the companion to `tool_catalog`.
app_get_statusCheck if Altium Designer is running and get status information.
app_contextWhere you are, in one call. Run this before anything else.
app_attachConnect to a running Altium Designer instance.
app_save_allFlush every dirty Altium document to disk.
app_exit_active_commandClose a transaction a crashed handler left open in Altium.
app_checkpointSnapshot the focused project so the session is revertible.
app_list_checkpointsList saved checkpoints for the current workspace, newest first.
app_restore_checkpointRestore the focused project's files from a checkpoint.
app_detachStop the Altium MCP polling loop. CALL THIS WHEN YOU'RE FINISHED.
app_pingTest if the Altium script is responding and report script version.
app_get_reportReport the health of the MCP bridge, workspace, and Altium link.
app_create_documentCreate a new blank document of a given kind and save it to disk.
app_list_documentsList all documents known to the current Altium workspace.
app_diag_workspaceDiagnostic: enumerate workspace files via Altium's FindFiles helper.
app_get_active_documentGet information about the currently active (focused) document.
app_set_active_documentSet a specific document as the active (focused) document.
app_get_versionGet the version of Altium Designer.
app_get_preferencesGet key Altium Designer preferences.
app_run_menuDispatch a menu command by path. DISPATCH IS NOT EXECUTION.
app_set_intentTell the dashboard what high-level task the agent is working on.
app_get_clipboardGet text content from the Windows clipboard.
audit_find_inconsistent_track_widthsFind nets where the maximum and minimum track widths differ by more than 2×.
audit_find_acute_anglesFind pairs of same-net tracks meeting at < 90° interior angle.
audit_find_placeholder_valuesFind SCH component parameters containing obvious "I'll fix this later" placeholder strings that escaped a release.
audit_find_orphan_power_objectsFind schematic power-port markers (GND, VCC, +3V3 etc.) sitting off-wire.
audit_find_orphan_net_labelsFind schematic net labels whose location is NOT on any wire or bus.
audit_find_net_label_conflictsFind net labels that silently merge, short, or do nothing.
audit_find_visible_supplier_pnFind schematic components with a VISIBLE supplier-PN parameter.
audit_find_unlocked_component_primitivesFind placed components whose internal primitives are NOT locked. Unlocked primitives are a silent fab-bug class -- a stray click + drag in the PCB editor moves a single pad off-center within the footprint without any warning. The gerbers look fine, just slightly off, and the part doesn't solder prop…
audit_find_mirrored_pcb_textFind free-floating PCB text (eTextObject) that's mirrored on the wrong overlay.
audit_find_mixed_designator_rotationFind PCB silkscreens where designators face BOTH 0 and 180 (or both 90 and 270) -- the assembly-readability check.
audit_find_non_embedded_imagesFind schematic images that are NOT embedded -- they hold only a path reference to the original file.
audit_find_single_pin_netsFind nets that have EXACTLY ONE pin AND at least one net-label / port / power-object on them.
audit_find_mpn_inconsistenciesFind groups of ICs with the same (lib_ref, comment) but DIFFERENT Manufacturer Part Numbers.
audit_find_missing_datasheetsFind ICs (designator U*) with no fetchable datasheet URL in any of their parameters.
audit_find_pin_net_name_mismatchesFind IC pins whose NAME looks like a power / ground pin but whose connected NET is not actually a power / ground rail.
audit_find_missing_decouplingFind ICs whose power pins lack a nearby decoupling cap.
audit_find_unconnected_ic_pinsFind IC pins with an empty / unset net (excluding pins intentionally named NC / DNC / RSVD / RESERVED).
audit_component_param_visibilityCheck that every placed component shows the parameters its class requires for a legible schematic and a procurable BOM.
audit_power_port_orientationCheck that schematic power-symbol orientations follow the standard convention so reviewers' eyes can scan the sheet quickly.
audit_tented_via_ratioCount tented vs untented via SURFACES on the active board and report the tented ratio.
audit_find_floating_portsFind schematic ports that aren't actually connected to anything.
audit_find_bad_connectionsFind PCB tracks / arcs with endpoints that are close to another same-net primitive but don't actually touch.
audit_find_signal_vias_without_returnFind signal vias that have no nearby ground / power via for return-current flow.
audit_find_pads_near_board_edgeFind PCB pads / vias closer than ``clearance_mils`` to the board outline (depaneling damage hazard).
audit_find_components_outside_board_outlineFind PCB components whose origin sits outside the board outline.
audit_find_off_grid_componentsFind schematic components placed off the snap grid.
audit_find_removed_pad_shapesFind pads / vias whose copper annular ring has been removed on layers where it's still needed.
audit_find_designator_collisionsFind schematic components that share a designator across sheets.
audit_find_via_antennasFind vias connected on only one layer (resonating stubs).
audit_find_unmatched_portsFind schematic nets with port-direction mismatches across sheets.
audit_variant_not_fittedList components marked Not Fitted in the project's CURRENT variant.
audit_find_invalid_regionsFind PCB polygon regions whose area is zero or unset.
pcb_calc_impedanceCharacteristic impedance of a PCB trace (IPC-2141 / Wadell).
pcb_calc_trace_width_for_impedanceTrace width (mils) to hit a target impedance for a geometry (microstrip / stripline / their *_diff variants). Differential targets need spacing_mils. Inverse of the IPC-2141 impedance formula.
pcb_calc_terminationAssess whether a net is electrically long for its edge rate and, if so, recommend a termination (series for point-to-point, Thevenin / parallel for a multi-load bus) with E24 values.
pcb_calc_length_matchResolve the effective Er and a match tolerance from a skew budget (or match_fraction * rise_time_ns), then optionally report a group of net lengths against it.
pcb_calc_thermal_viasSize a thermal-via field for a target thermal resistance (given directly, or as power_w with a delta_t_c budget), or score an existing via_count. Fourier conduction, R = L/(k*A).
pcb_calc_trace_width_for_currentMinimum track width (mils) to carry a current at a temperature rise (IPC-2221), widened by ``margin`` and snapped to a 0.1 mil grid.
pcb_calc_track_current_capacityForward IPC-2221: the current a track of this width sustains at a given temperature rise.
design_get_disciplineRead the design discipline + DesignPlan JSON schema.
design_session_startOpen a durable design-session journal for an autonomous run.
design_session_logAppend one event to a design-session journal.
design_session_statusRead a design session's derived state (stage map, artifacts, ...).
design_session_resumeResume a design run: state plus a plain-language next-action hint.
design_next_actionDecide the single next action for an autonomous design run.
design_autonomy_guideThe autonomous spec-to-board loop protocol, in one call.
design_job_startStart a long engine run as a background job; returns its id.
design_job_statusStatus of a background job (or all jobs if ``job_id`` is blank).
design_job_resultFetch a finished job's result payload (None until it's done).
design_snapshot_inventoryOpen a list of SchLib files and return what components live in them.
design_validate_planValidate a candidate DesignPlan JSON against the schema + cross-check.
design_list_circuit_blocksList the canonical circuit blocks and their parameter contracts.
design_add_circuit_blockFold a canonical circuit block into a DesignPlan in one call.
design_add_partAdd one part and wire its pins to named nets, in one call.
design_connect_busWire a parallel bus across two+ parts in one call.
design_compose_netlistApply many authoring operations to a plan in ONE call.
design_generate_bomDerive the bill of materials from a plan's parts in one call.
design_edit_planEdit an existing plan -- the MODIFY complement to the add tools.
design_compute_component_valueCompute a manufacturable component value, snapped to an E-series.
design_describe_circuitsReport the electrical behaviour of each recognised sub-circuit.
design_suggest_diff_pair_tracesRecommend a controlled-impedance trace width for every differential pair in a plan.
design_review_fileOffline FALLBACK review of a .SchDoc/.PrjPcb: OFF by default.
design_solve_netlist_fileReconstruct a .SchDoc's netlist geometrically: OFF by default.
design_bom_fileConsolidated BOM from a .SchDoc/.PrjPcb on disk: OFF by default.
design_review_planOne-call offline pre-flight: bundle every plan-level analysis.
design_layout_schematicCompute a full schematic layout for a DesignPlan, as pure data.
design_suggest_partitionSuggest how to split a design into balanced functional groups.
design_execute_planInstantiate a DesignPlan in Altium.
design_learn_from_layoutCapture your placement edits as training data.
design_preview_planRender a DesignPlan to SVG without emitting to Altium.
design_audit_schematicStructured visual/layout audit of the active schematic.
design_validateERC + connectivity sanity report on the focused project.
design_validate_requirementValidate a structured DesignRequirement before planning starts.
design_load_fab_profileValidate a fab capability profile and echo the normalized form.
design_synthesize_rulesSynthesize PCB design rules + stackup ops from a fab profile.
design_plan_hierarchyPropose a multi-sheet hierarchy for a dense DesignPlan.
design_apply_hierarchyRewrite a DesignPlan onto the sheets a hierarchy proposes.
673 further tools are not listed here. The complete surface is in the source.
EDA_EXPORT_TIMEOUT_MSEDA_HANDLER_TIMEOUT_MSEDA_AGENT_BACKENDThe server picks a backend at startup (, default altium), so one install drives any of them. See [EDA backends](#eda-backends).EDA_AGENT_TOOLSETregisters several hundred. Set =minimal (or pass_EDA_AGENT_BACKEND_REEXECEDA_SWEEP_OUTEDA_SWEEP_WAITEDA_SWEEP_SECOND_TAB_GRACEEDA_SWEEP_TRY_OPENEDA_SWEEP_TAB_WAITEDA_SMOKE_WAITEDA_SMOKE_TAB_WAITEDA_SMOKE_NEWEDA_AGENT_PLACEMENT_LOGEDA_AGENT_PREFERENCES_LOGEDA_AGENT_ASSUME_YESPYTEST_CURRENT_TESTEDA_AGENT_WORKSPACEOverride: set environment variableEDA_AGENT_EASYEDA_HOSTEDA_AGENT_EASYEDA_PORTEDA_AGENT_EASYEDA_VERIFIEDEDA_AGENT_PRIORSEDA_AGENT_QUALITY_MODELEDA_AGENT_ALTIUM_PROCESSTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
783/783 tools missing one or more hints — tool_catalog (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); tool_invoke (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); app_get_status (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +780 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Destructive tools are labelled
4 tools perform destructive updates without destructiveHint — app_set_intent deletes at line 989 (path.unlink()); kicad_get_fab_stats deletes at line 506 (os.remove(out)); kicad_run_spice deletes at line 1137 (os.remove(cir))
Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.
Descriptions match behaviour
2 tools describe read intent but their handlers mutate — design_snapshot_inventory (line 434: cache_path.write_text(); design_visual_review (line 358: svg_target.write_text(svg, encoding="utf-8"))
Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.
Tool test coverage
506/783 tools referenced in tests (65%)
Write tests that reference each tool by name so every tool has at least one test.
Tool description accuracy
design_snapshot_inventory: description implies read-only but handler writes/deletes/executes; design_visual_review: description implies read-only but handler writes/deletes/executes
Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/salitronic/eda-agent)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check