# MAX+plus II MCP / 数字电路 AI 工具 (mcpb · maxplus2-mcp-v0.10.3.mcpb)

MAX+plus II / MaxPlus2 MCP: GDF/SYM/SCF, compile/simulation. 原理图、波形、编译仿真与 Windows 自动化。

- Trust score: 51/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- mcpb · `maxplus2-mcp-v0.10.3.mcpb`: 51/100 (this document), [markdown](https://verifymcp.io/servers/hachimeder-maxplus2-mcp/maxplus2-mcp.md), [page](https://verifymcp.io/servers/hachimeder-maxplus2-mcp/maxplus2-mcp)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/Hachimeder/maxplus2-mcp/releases/download/v0.10.3/maxplus2-mcp-v0.10.3.mcpb`
- Transport: `stdio`
- SHA-256: `21f80cb9bf6be1762ea694a9ccfe460c437e0c99a7cb603dc511c7b8c465ed71`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 13/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
  - No install/post-install scripts declared.
  - Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 27 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 49/100
  - 33% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 15851 tokens (~226/item across 70 items; 68 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 77/100
  - Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 70 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the MAX+plus II MCP / 数字电路 AI 工具 server?

MAX+plus II MCP / 数字电路 AI 工具 ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, 21f80cb9bf6be1762ea694a9ccfe460c437e0c99a7cb603dc511c7b8c465ed71; the commands to do that are on this page. If it does not match, do not open it.

- Download bundle: `https://github.com/Hachimeder/maxplus2-mcp/releases/download/v0.10.3/maxplus2-mcp-v0.10.3.mcpb`
- SHA-256: `21f80cb9bf6be1762ea694a9ccfe460c437e0c99a7cb603dc511c7b8c465ed71`

### Verify on macOS / Linux

```bash
echo "21f80cb9bf6be1762ea694a9ccfe460c437e0c99a7cb603dc511c7b8c465ed71  maxplus2-mcp-v0.10.3.mcpb" | shasum -a 256 -c
```

### Verify on Windows (PowerShell)

```powershell
(Get-FileHash -Algorithm SHA256 .\maxplus2-mcp-v0.10.3.mcpb).Hash -eq "21f80cb9bf6be1762ea694a9ccfe460c437e0c99a7cb603dc511c7b8c465ed71"
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 51, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 50, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 48, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 47, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 46, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-23 (score 45, 0)

- [security regression] Provenance: unverified → fail

### 2026-10-22 (score 45, +1)

- [security regression] Provenance: fail → unverified

## MCP tools (68)

### `installation_status` (~74 tokens)

Installation status

Locate the MAX+PLUS II installation (maxplus2.exe / setacf.exe), report version info from maxplus2.ini, available device families, and additional bundled tools. Read-only.

Input parameters:

- `root` (string): Installation root, e.g. C:\maxplus2. Defaults to MAXPLUS2_ROOT or common paths.

### `list_projects` (~83 tokens)

List projects

Recursively find .acf projects under a root directory and list the artifacts already compiled for each. Read-only.

Input parameters:

- `limit` (integer): Maximum projects to return (default 500).
- `maxDepth` (integer): Recursion depth limit (default 6).
- `root` (string): Directory to scan. Defaults to MAXPLUS2_WORKSPACE or the server cwd.

### `project_inspect` (~82 tokens)

Inspect project

Summarize one project: .acf sections, CHIP blocks, device, pin count, compiled artifacts with timestamps, and the cleanliness of the last .rpt. Read-only.

Input parameters:

- `project` (string, required): Project name (e.g. "top") or absolute path to a .acf.
- `workspace` (string): Directory to resolve relative project names against.

### `acf_read_sections` (~119 tokens)

Read ACF sections

Read the .acf as structured sections/entries with line numbers. Use to discover which section holds a setting before writing. Read-only.

Input parameters:

- `includeEntries` (boolean): Set false to return section headers only (default true).
- `project` (string, required): Project name or absolute .acf path.
- `section` (string): Only return this section (case-insensitive), e.g. CHIP.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `acf_read_pins` (~113 tokens)

Read pin assignments

Extract device and pin assignments from the .acf CHIP block, and cross-check them against the compiler-generated .pin report when present. Read-only.

Input parameters:

- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `setacf_plan` (~310 tokens)

Plan a setacf change

Build the exact setacf.exe argument vector for a change WITHOUT executing it. Always call this first: setacf edits the .acf in place and has no dry-run mode.

Input parameters:

- `create` (boolean): Create the .acf if missing (-c).
- `deleteVariable` (string): Delete a variable (-d).
- `device` (string): Set the DEVICE assignment, e.g. EP1K30TC144-1.
- `kind` (string): Pin assignment kind.
- `modifyTo` (string): Modify an existing section value (-m).
- `pin` (string|integer): Pin number.
- `prependPath` (string): Prepend a hierarchy path (-p).
- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `root` (string): MAX+PLUS II install root.
- `section` (string): Section name (defaults to CHIP for device/pin edits).
- `sectionValue` (string): Section value, e.g. the chip name.
- `signal` (string): Signal name, e.g. "|CLK" or "CLK".
- `value` (string): Raw value for advanced use.
- `variable` (string): Raw variable for advanced use.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `setacf_apply` (~591 tokens)

Apply a setacf change

Execute a setacf change. Backs the .acf up first and returns a line diff. Requires confirm:true. Prefer calling setacf_plan first.

Input parameters:

- `async` (boolean): Run in the background and return a jobId immediately instead of blocking. Use for any compile or simulation that may outrun the client timeout: a client timeout does NOT stop the child process, so a…
- `backup` (boolean): Back up the .acf first (default true).
- `confirm` (boolean, required): Must be true to actually write.
- `create` (boolean): Create the .acf if it does not exist (-c). Use only when bootstrapping a new project.
- `deleteVariable` (string): Name of the variable to delete from its section (-d).
- `device` (string): Device to assign, for example EP1K30TC144-1. Written as the DEVICE variable in the CHIP section.
- `kind` (string): Assignment kind. INPUT_PIN, OUTPUT_PIN or BIDIR_PIN sets a pin; omit it when setting a device or a raw variable.
- `modifyTo` (string): New value for an existing section (-m). Requires section and sectionValue.
- `pin` (string|integer): Pin number to assign.
- `prependPath` (string): Hierarchy path prefix to prepend to the variable (-p), for a signal inside a sub-design.
- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `root` (string): MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths.
- `section` (string): ACF section name. Device and pin edits default to CHIP; other settings live in sections such as SIMULATOR_CONFIGURATION.
- `sectionValue` (string): Section value, for example the chip name in "CHIP top". Required when the section does not exist yet, because setacf cannot name a section it is creating.
- `signal` (string): Signal name to constrain, for example "|CLK" or "CLK". A leading pipe is added automatically if absent.
- `timeoutMs` (integer): Hard timeout in milliseconds. A client timeout is wall-clock and progress does not extend it, so keep this below the client budget.
- `value` (string): Value paired with variable for advanced use.
- `variable` (string): Raw setacf variable for advanced use, for example "DEVICE" or a full "\"|SIG\":PIN" form.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `maxplus2_plan` (~723 tokens)

Plan a maxplus2 run

Build the exact maxplus2.exe command line for compile / timing analysis / simulation / object conversion, WITHOUT running it.

Input parameters:

- `compile` (boolean): Run the Compiler (-c).
- `convert` (boolean): Convert object files (-convert).
- `cwd` (string): Working directory for the child process. Defaults to the project directory, which is where MAX+PLUS II expects to run.
- `ignoreErrors` (boolean): Continue past errors (-i).
- `outHex` (string): HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex.
- `outJ11` (string): HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex.
- `outJam` (string): JAM STAPL output (-jam). REJECTED by this build.
- `outJb1` (string): JBC 1.0 output (-jb1). REJECTED by this build.
- `outJbc` (string): JBC 2.0 output (-jbc). REJECTED by this build.
- `outPof` (string): POF output (-pof). REJECTED by this build, but compiling writes <project>.pof anyway.
- `outRbf` (string): RBF output (-rbf). REJECTED by this build.
- `outSbf` (string): SBF output (-sbf). REJECTED by this build.
- `outSvf` (string): SVF output (-svf). REJECTED by this build, so this installation cannot derive a JTAG programming file.
- `outTtf` (string): TTF output file (-ttf). REJECTED by this build; compiling writes <project>.ttf.
- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `rebuild` (boolean): Back up/move matching top and numbered hierarchy CNF before compile to force source extraction (default true); false requests native incremental reuse.
- `root` (string): MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths.
- `simCmd` (string): Simulator command file (-cmd). REJECTED by this build.
- `simHst` (string): Simulator command file (-cmd). REJECTED by this build.
- `simScf` (string): Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run.
- `simTbl` (string): Where to write the simulator result table. Plain text, and what verification reads back.
- `simVec` (string): Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run.
- `simulate` (boolean): Run the Simulator (-s).
- `taDelay` (boolean): Timing Analyzer, Delay Matrix (-ta_delay).
- `taReg` (boolean): Timing Analyzer, Registered Performance (-ta_reg).
- `taSetup` (boolean): Timing Analyzer, Setup/Hold (-ta_setup).
- `timingAnalyzerOutput` (string): -tao file.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `maxplus2_run` (~918 tokens)

Run maxplus2

Execute maxplus2.exe (compile / simulate / timing / convert) with a hard timeout, then report which artifacts changed and the parsed report summary. Beware: this starts a 2002-era Win32 process that can block on modal dialogs.

Input parameters:

- `async` (boolean): Run in the background and return a jobId immediately instead of blocking. Use for any compile or simulation that may outrun the client timeout: a client timeout does NOT stop the child process, so a…
- `compile` (boolean): Run the Compiler (-c). This also writes the .pof, .rpt and .pin artifacts.
- `convert` (boolean): Convert object files (-convert).
- `cwd` (string): Working directory for the child process. Defaults to the project directory, which is where MAX+PLUS II expects to run.
- `ignoreErrors` (boolean): Continue past errors (-i). Use when you want every diagnostic from one run rather than stopping at the first failure.
- `outHex` (string): HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex.
- `outJ11` (string): HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex.
- `outJam` (string): JAM STAPL output (-jam). REJECTED by this build.
- `outJb1` (string): JBC 1.0 output (-jb1). REJECTED by this build.
- `outJbc` (string): JBC 2.0 output (-jbc). REJECTED by this build.
- `outPof` (string): POF output (-pof). REJECTED by this build, but compiling writes <project>.pof anyway.
- `outRbf` (string): RBF output (-rbf). REJECTED by this build.
- `outSbf` (string): SBF output (-sbf). REJECTED by this build.
- `outSvf` (string): SVF output (-svf). REJECTED by this build, so this installation cannot derive a JTAG programming file.
- `outTtf` (string): TTF output file (-ttf). REJECTED by this build; compiling writes <project>.ttf.
- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `rebuild` (boolean): Back up/move matching top and numbered hierarchy CNF before compile to force source extraction (default true); false requests native incremental reuse.
- `root` (string): MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths.
- `simCmd` (string): Simulator command file (-cmd). REJECTED by this build.
- `simHst` (string): Simulator command file (-cmd). REJECTED by this build.
- `simScf` (string): Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run.
- `simTbl` (string): Where to write the simulator result table. Plain text, and what verification reads back.
- `simVec` (string): Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run.
- `simulate` (boolean): Run the Simulator (-s). Requires stimulus: pass simScf, or leave a .scf or a matching .vec next to the project.
- `taDelay` (boolean): Run the Timing Analyzer in Delay Matrix mode (-ta_delay).
- `taReg` (boolean): Run the Timing Analyzer in Registered Performance mode (-ta_reg).
- `taSetup` (boolean): Run the Timing Analyzer in Setup/Hold Matrix mode (-ta_setup).
- `timeoutMs` (integer): Hard timeout, default 900000 (15 min).
- `timingAnalyzerOutput` (string): File for Timing Analyzer output. Each analysis mode is emitted with its own -tao, so multiple modes cannot overwrite one file.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `acf_validate` (~131 tokens)

Validate ACF

Statically validate an .acf for defects that block compilation, notably the bare "CHIP " header that setacf itself creates when no CHIP section exists yet (MAX+PLUS II then fails with "Missing identifier after section keyword"). Read-only.

Input parameters:

- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `acf_repair_chip_headers` (~192 tokens)

Repair CHIP headers

Rewrite malformed CHIP headers (bare "CHIP " or shell-escaped names) into canonical "CHIP <name>" form. setacf is append-only and cannot fix these itself. Preview-first; requires confirm:true to write and backs the file up.

Input parameters:

- `backup` (boolean): Back up the .acf first (default true).
- `chipName` (string): Name to use for the CHIP section. Defaults to the project name.
- `confirm` (boolean): Must be true to write. Without it this is a preview.
- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `probe_executable` (~138 tokens)

Probe the executable

Run `maxplus2 -v` (or -h) to verify the 2002-era binary actually starts and returns on this host. Read-only and project-independent. Run this before trusting any headless compile loop: MAX+PLUS II can block forever on a modal dialog.

Input parameters:

- `cwd` (string): Working directory for the child process. Defaults to the project directory, which is where MAX+PLUS II expects to run.
- `mode` (string): Which probe to run (default version).
- `root` (string): MAX+PLUS II install root.
- `timeoutMs` (integer): Hard timeout, default 60000.

### `simulate_and_verify` (~414 tokens)

Simulate and verify

Run the Simulator headless and return the parsed result table, then optionally check expected output values. This is how simulation verification is automated: MAX+PLUS II writes a plain-text .tbl containing the simulated outputs, so a design can be checked without a human reading a waveform. Note a successful simulation may exit 1 — the verdict comes from the success banner plus the table artifact.

Input parameters:

- `async` (boolean): Run in the background and return a jobId immediately instead of blocking. Use for any compile or simulation that may outrun the client timeout: a client timeout does NOT stop the child process, so a…
- `expect` (object): Expected values, as { "<time>": { "SIGNAL": value } }. Values may be numbers or hex strings like "80". Outputs and buried nodes are both checkable.
- `previewRows` (integer): How many leading trace rows to return (default 12).
- `project` (string, required): Project name (for example "top") or an absolute path to its .acf file. A bare name is resolved against workspace, and is rejected as ambiguous if several projects share it.
- `root` (string): MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths.
- `scf` (string): Stimulus file. Defaults to <project>.scf if present.
- `tbl` (string): Where to write the result table. Defaults to <project>.tbl.
- `timeoutMs` (integer): Hard timeout in milliseconds. A client timeout is wall-clock and progress does not extend it, so keep this below the client budget.
- `tolerance` (number): Time tolerance in table units when matching expectations (default 0.05).
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `parse_tbl` (~203 tokens)

Parse result table

Parse an existing MAX+PLUS II Simulator result table (.tbl) into a time-indexed trace of inputs, outputs and buried nodes, with optional expected-value checking. Read-only.

Input parameters:

- `expect` (object): Expected values as { "<time>": { "<SIGNAL>": value } }. Values may be numbers or hex strings. A mismatch is reported, not thrown.
- `full` (boolean): Return every row.
- `limit` (integer): Max trace rows to return (default 40).
- `path` (string): Explicit .tbl path.
- `project` (string): Project name; uses its <project>.tbl. Optional if path is given.
- `tolerance` (number): Time tolerance, in the table's own unit, when matching an expectation to a simulation row. Default 0.05.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `parse_report` (~123 tokens)

Parse a report

Parse a MAX+PLUS II .rpt / .summary / .pin file into structured severity counts, statuses, device, and diagnostics. Read-only.

Input parameters:

- `maxDiagnostics` (integer): Cap on returned diagnostics (default 200).
- `path` (string): Explicit report path (absolute, or relative to workspace).
- `project` (string): Project name; uses its .rpt. Optional if path is given.
- `workspace` (string): Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `gdf_inspect` (~153 tokens)

Inspect a schematic

Read a strictly validated GDF/SYM schematic summary: labels, fonts, title fields and geometry counts. gdf_geometry provides paginated original coordinates, definitions, instances and world pin positions; gdf_edit supports existing v6 geometry. Electrical connectivity requires netlist_export. Optionally compare labels with another drawing.

Input parameters:

- `compareWith` (string): Optional second schematic to compare against, reporting labels present in one but not the other.
- `path` (string, required): Schematic to read: absolute, or relative to workspace. A missing .gdf extension is added automatically.
- `workspace` (string): Directory that a relative path is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory.

### `job_status` (~110 tokens)

Check a background job

Poll a background job started with async:true. Returns running/done/failed/cancelled, how long it has been going, how many child processes are live, and the full result once it settles. This exists because a client timeout is wall-clock and does NOT stop the work: polling is the only way to keep a long compile without losing it. Results are held for 30 minutes after they settle.

Input parameters:

- `jobId` (string, required): The jobId returned when the job was started with async:true.

### `job_cancel` (~72 tokens)

Cancel a background job

Terminate a running background job by killing its child process. Use this rather than abandoning a job: an abandoned job keeps running and keeps holding the project directory. Build artifacts already written are left in place — this stops work, it does not undo it.

Input parameters:

- `jobId` (string, required): The jobId to terminate.

### `project_restore_file` (~225 tokens)

Restore backed-up project bytes

Restore a file from this project backup store, including binary GDF/SCF bytes. Preview by default. Requires backup SHA-256; an existing destination also requires its current SHA-256 and is backed up before restoration.

Input parameters:

- `backup` (string, required): Backup path returned by an earlier mutation, inside this scope .mcp-backups directory.
- `backupSha256` (string, required): SHA-256 of the backup, equal to previousSha256 from the original change.
- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `expectedSha256` (string): Current destination SHA-256 if it still exists.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `project_create` (~218 tokens)

Create a MAX+plus II project

Create an isolated directory with a named CHIP .acf, optional HDL source and END_TIME=0.0ns. Preview by default, refuse existing directories; use one directory per design.

Input parameters:

- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `device` (string): Optional installed device name, for example EP1K10TC100-1.
- `directory` (string): New directory relative to the workspace, defaulting to the project name.
- `encoding` (string): File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files.
- `name` (string, required): Project/HDL top identifier, for example demo.
- `source` (string): Optional complete HDL text for the top design.
- `sourceExtension` (string): Top source extension; defaults to .vhd.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `project_clone` (~257 tokens)

Clone a project for isolated work

Copy the project directory into a new directory; preserve names and verify SHA-256 for every copied file. Default all; sources selects design extensions and explicit includePaths, avoiding old SCF/TBL/reports in large projects. Preserves originals, excludes backup stores. Does not infer external hierarchy dependencies; inspect and compile the copy.

Input parameters:

- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `directory` (string, required): New destination directory under workspace. Must not already exist or be inside the source directory.
- `includePaths` (array): Explicit files to retain, e.g. a stimulus SCF/VEC or memory asset with an unusual extension. Each must exist within the source directory.
- `profile` (string): Default all. sources copies ACF/GDF/SYM/HDL/INC/MIF/HEX/EDIF/ASM, while excluding other files unless named in includePaths.
- `project` (string, required): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `project_files` (~119 tokens)

List project files

List sources, memories, schematics, waveforms and build artifacts under the selected project/workspace. Deterministic offset pagination, byte sizes and supported text formats are returned.

Input parameters:

- `limit` (integer): Maximum number of files to return; default 200.
- `offset` (integer): Zero-based pagination offset.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `project_read_file` (~187 tokens)

Read a project text file

Read a bounded line range and exact SHA-256 of HDL, ACF, MIF, HEX, VEC, reports or other supported text. Use nextLine to continue and expectedSha256 to avoid overwriting concurrent edits.

Input parameters:

- `encoding` (string): File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files.
- `lineCount` (integer): Maximum lines to return; default 200.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `startLine` (integer): First one-based line to read; default 1.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `project_search` (~167 tokens)

Search design sources and reports

Search for a literal string across supported project text files with file/line evidence. Results are bounded and truncation/oversized skipped files are explicit; binary GDF/SCF content is not guessed.

Input parameters:

- `caseSensitive` (boolean): Case sensitive comparison when true; default false.
- `encoding` (string): File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files.
- `limit` (integer): Maximum matching lines; default 100.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `query` (string, required): Nonempty literal text to find.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `project_edit_file` (~299 tokens)

Edit or manage a project file

Write, exact-patch, copy, move or delete one file. Preview by default. Existing files require expectedSha256; writes/moves/deletes preserve a recoverable backup. General binary writes are refused; use scf_edit for supported SCF scalar inputs and desktop tools for GDF drawing changes.

Input parameters:

- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `content` (string): Complete new text for write.
- `destination` (string): New path inside the scope for copy/move. Existing destinations are refused.
- `edits` (array): Sequential exact text replacements for patch. Each replacement must match exactly occurrences times.
- `encoding` (string): File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files.
- `expectedSha256` (string): SHA-256 from project_read_file or another verified read; mandatory for an existing source file.
- `operation` (string): Single operation to preview/apply. Defaults to write.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `stimulus_write` (~350 tokens)

Write timed simulator stimulus

Generate a verified multi-row VEC shape using INTERVAL, bare pattern rows and one final semicolon. Explicit bus nodes are MSB-first. Preview/apply with backups. Existing SCF may take precedence; inspect/delete its backed-up copy or open/convert VEC in the GUI. Set ACF END_TIME=0.0ns.

Input parameters:

- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `expectedSha256` (string): Existing VEC SHA-256 if replacing a file.
- `inputs` (array, required): Scalar input node strings, or {name,nodes:[MSB,...,LSB]} bus declarations with explicit simulator node names.
- `interval` (number): Duration of each input pattern, default 100.
- `outputs` (array): Optional physical output node names to include in the result table.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `rows` (array, required): One complete input map per interval. Integers or exact-width binary/X/Z strings; for example [{CLK:0,A:3},{CLK:1,A:5}].
- `start` (number): Start time, default 0.
- `stop` (number): Stop time; default start + rows.length * interval.
- `unit` (string): Simulator time unit, default ns.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `memory_write` (~245 tokens)

Write a ROM/RAM memory image

Generate an Intel/Altera MIF with explicit WIDTH, DEPTH, hexadecimal addresses/data and initialized unused addresses. Arbitrary width values may use integer strings. Preview or apply to a .mif with hash checking/backups.

Input parameters:

- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `defaultValue`: Value for remaining addresses, default 0.
- `depth` (integer, required): Number of memory addresses.
- `expectedSha256` (string): Existing MIF SHA-256 if replacing a file.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `values` (array, required): Address-zero-first unsigned values. Large values use decimal, 0x-prefixed hex or 0b-prefixed binary strings.
- `width` (integer, required): Word width in bits.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `scf_inspect` (~245 tokens)

Read binary waveform events directly

Decode verified SCF scalar and display-bus logic runs/events, including 0/1/X/Z, with times in ns. Returns input/output roles, writable input names, paging and unsupported metadata explicitly. Does not open the GUI.

Input parameters:

- `endTime` (number): Range end in ns, default full duration.
- `limit` (integer): Events/segments per signal, default 20; may reduce to fit output budget.
- `offset` (integer): Event/segment page offset, default 0.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `signal` (string): Optional exact scalar or display-bus signal name.
- `signalLimit` (integer): Signals per page, default 5.
- `signalOffset` (integer): Signal page offset, default 0.
- `startTime` (number): Range start in ns, default 0.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `scf_edit` (~250 tokens)

Edit binary SCF input stimulus directly

Preview/apply event changes to existing scalar inputs in vendor version-4 SCF. Fixed existing end time, exact 0.1ns ticks, 0/1/X/Z. Preserve groups, other signal records and opaque editor bytes. Requires current SHA-256; backs up before atomic write. Output/internal traces become stale and must be re-simulated. For a bus, edit its scalar members returned by scf_inspect.

Input parameters:

- `confirm` (boolean): Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval.
- `edits` (array, required): One replacement event sequence per existing scalar input. Each starts at time zero and uses increasing times below the current file end.
- `expectedSha256` (string, required): Current SCF SHA-256 from project_parse_file.
- `path` (string, required): File path relative to the project/workspace. Absolute paths must remain inside that scope.
- `project` (string): Existing .acf project path or unambiguous project name. File paths are scoped to its directory.
- `workspace` (string): Workspace directory for resolving project names, or the scope when no project is supplied.

### `desktop_status` (~75 tokens)

Check independent Windows desktop backend

Check the MCP-owned Windows UI Automation/Win32 backend. Builds the bundled helper locally if needed and reports interactive desktop availability. Runs locally using standard Windows components. Does not launch or manipulate a MAX+plus II window.

Input parameters:

- `root` (string): MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation.

### `desktop_result` (~93 tokens)

Read a recent desktop operation result

Retrieve a cached completed desktop result and its MCP image blocks without executing input again. Results last up to ten minutes, twelve entries, or server restart. No separate host execution step exists.

Input parameters:

- `requestId` (string, required): ID returned directly by desktop_windows/launch/observe/action, or the supplied operationId.
- `root` (string): MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation.

### `desktop_windows` (~74 tokens)

List MAX+plus II windows

Directly discover real windows/dialogs of installed MAX+plus II executables, including HWND, PID, bounds and title. Select exactly one returned windowId before observing/input. All agents call this standard MCP tool.

Input parameters:

- `root` (string): MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation.

### `desktop_launch` (~89 tokens)

Launch a MAX+plus II GUI program

Launch an existing allowlisted MAX+plus II GUI through the independent Windows backend and return its real windows. No shell or arbitrary executable. Launch does not prove readiness; observe the returned window.

Input parameters:

- `program` (string): Installed MAX+plus II GUI executable, default max2win.exe.
- `root` (string): MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation.

### `desktop_observe` (~232 tokens)

Observe a MAX+plus II window

Return a fresh native screenshot as standard MCP image content, UI Automation tree, focus, window bounds and observationId directly. Inspect before acting; each input consumes its observation. Capture diagnostics report limitations honestly.

Input parameters:

- `includeScreenshot` (boolean): Capture screenshot, default true. Required for coordinate input.
- `includeText` (boolean): Capture accessibility tree and focus, default true. Required for indexed input and typing.
- `menuLimit` (integer): Maximum native menu records; default60.
- `menuOffset` (integer): Native menu pagination offset. Use menus.nextOffset and inspect actual enabled leaf commands.
- `root` (string): MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation.
- `textLimit` (integer): Maximum controls in one observation page, default 60; the response budget may reduce this. Global element indices are preserved.
- `textOffset` (integer): Control pagination offset, default 0. Use nextTextOffset from the previous observation; every page creates a new observationId.
- `windowId` (integer, required): Opaque ID from desktop_windows; never invent one.

### `desktop_action` (~320 tokens)

Perform one observed MAX+plus II action

Directly execute ONE click, hover, key chord, Unicode text entry, value change, drag, scroll, secondary UI action or activation, then return a fresh screenshot/tree. Uses MCP-owned Win32/UIA. Requires latest observationId/windowId. Inspect after every input; no host-specific calls.

Input parameters:

- `action` (string, required): One native Windows action; invoke_menu requires an observed enabled leaf menu_index.
- `observationId` (string, required): Unconsumed ID from desktop_observe or the previous action result.
- `operationId` (string): Optional unique 1..100 character letters/digits/_/- ID. Retrying identical arguments with this ID reads the cached result and never repeats input; reuse with different arguments is rejected.
- `parameters` (object): invoke_menu:menu_index from menus.items; click: element_index OR window-relative physical x/y+screenshotId, optional mouse_button/click_count; move:x/y/screenshotId; press_key:key; type_text:text; se…
- `root` (string): MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation.
- `windowId` (integer, required): Window ID from the latest observation.

### `project_parse_file` (~402 tokens)

Parse design and waveform files directly

File-first structured parsing of strict GDF text/geometry, SCF scalar/bus logic events in ns, ACF assignments, TBL traces, reports and EDIF connections. Returns original path/bytes/SHA-256 and explicit limitations. Use gdf_geometry for paginated symbol definitions/placements and netlist_export for GDF circuit connections.

Input parameters:

- `cell` (string): Optional EDIF library/cell identifier for inspecting a hierarchical cell; defaults to the top design.
- `endTime` (number): SCF time-range end in ns; default entire duration.
- `endpointLimit` (integer): Maximum endpoints per EDIF net, default 20; use nextEndpointOffset to continue.
- `endpointOffset` (integer): Zero-based endpoint offset within each EDIF net.
- `format` (string): Default auto detects the file extension; explicit formats still validate their content.
- `limit` (integer): Maximum text records/trace rows/diagnostics or SCF events per signal; default 100, SCF defaults to 20 and may reduce to fit the result budget.
- `net` (string): Optional exact EDIF net identifier/name to inspect its connections.
- `offset` (integer): Zero-based item/event page offset, default 0.
- `path` (string, required): Source file relative to the project/workspace; absolute paths must remain within that scope.
- `project` (string): Existing ACF project to scope file paths to its directory.
- `signal` (string): Optional exact SCF signal or display bus name.
- `signalLimit` (integer): Maximum SCF signals per page; default 5. Use nextSignalOffset to continue.
- `signalOffset` (integer): Zero-based SCF signal page offset; default 0.
- `startTime` (number): SCF time-range start in ns, default 0.
- `workspace` (string): Workspace scope when project is omitted; defaults to MAXPLUS2_WORKSPACE.

### `netlist_export` (~219 tokens)

Export circuit connectivity with the original compiler

Copy a GDF/HDL/ACF/EDIF design and local dependencies to a fresh temporary directory; enable original MAX+plus II EDIF/VHDL/Verilog/AHDL writers and compile there. Return source hashes, actual compiler evidence, exported files and structured port/instance/net connectivity. Original files remain untouched. The netlist is synthesized logic; original drawing placement and source component identities can change. Supports async jobs and cancellation.

Input parameters:

- `async` (boolean): Return jobId immediately; poll job_status or stop with job_cancel.
- `path` (string, required): Source file relative to the project/workspace; absolute paths must remain within that scope.
- `project` (string): Existing ACF project to scope file paths to its directory.
- `root` (string): MAX+plus II installation root, default MAXPLUS2_ROOT/discovery.
- `timeoutMs` (integer): Compiler timeout; default 60000 milliseconds.
- `workspace` (string): Workspace scope when project is omitted; defaults to MAXPLUS2_WORKSPACE.

### `gdf_geometry` (~213 tokens)

Read original schematic geometry

Strictly decode GDF/SYM v2..6 coordinates, wires/buses, symbol definitions, original instances, rotations/mirrors, stretched world pin positions and local text anchors. No compiler or GUI needed. Paginated root records and nested collections preserve offsets/counts. Geometry does not prove connectivity; use netlist_export for circuit connections.

Input parameters:

- `childLimit` (integer): Items per nested collection; default 10, reduced to fit budget.
- `childOffset` (integer): Offset in each nested pins/attributes/primitives collection.
- `limit` (integer): Root records per page; default 20, reduced to fit budget.
- `offset` (integer): Root collection offset; default zero.
- `path` (string, required): GDF/SYM file inside the chosen project/workspace.
- `project` (string): Existing ACF project; file paths stay inside its directory.
- `view` (string): Collection to inspect; default sheet.
- `workspace` (string): Workspace scope when no project is given.

### `gdf_edit` (~188 tokens)

Edit existing schematic geometry

Preview/apply lossless GDF v6 root line coordinates, translations, symbol orientation or free annotation text. Existing records only. Requires fresh file SHA-256, rejects unsupported targets/overflow, preserves unrelated bytes and backs up before atomic replacement. Moving a symbol does not move its wires; recompile/export to verify circuit behavior.

Input parameters:

- `confirm` (boolean): Apply when true; otherwise preview. Session authorization suffices, no new user approval is implied.
- `edits` (array, required): One operation per original record offset. Observe again after text edits.
- `expectedSha256` (string, required): SHA-256 returned by the latest GDF read.
- `path` (string, required): GDF/SYM file inside the chosen project/workspace.
- `project` (string): Existing ACF project; file paths stay inside its directory.
- `workspace` (string): Workspace scope when no project is given.

### `gdf_symbol_library` (~153 tokens)

Read original symbol prototypes

List installed max2lib SYM files with SHA-256 and names, or inspect one prototype with local pins, extent and preserved default instance/parameter attributes. Read-only. Symbol insertion uses these hashes and original bytes, independently of any agent SDK.

Input parameters:

- `limit` (integer): Items per page; default 20, maximum 100.
- `offset` (integer): File or pin/default-attribute page offset; default zero.
- `path` (string): Optional .sym path relative to max2lib, or absolute inside that library.
- `query` (string): Literal case-insensitive substring of library-relative filenames.
- `root` (string): MAX+PLUS II installation root; defaults to environment/detection.

### `gdf_create` (~160 tokens)

Create a blank original-format schematic

Create a version-6 GDF sheet with the recovered original-editor blank header/extent. Preview by default; never overwrite an existing file. Use gdf_construct for symbols/wires, then original compiler/simulator for circuit verification.

Input parameters:

- `confirm` (boolean): Apply when true; otherwise return a preview. Existing session authorization suffices.
- `height` (integer): Sheet height on the 8-unit grid, default 1232.
- `path` (string, required): Target GDF path inside the chosen scope.
- `project` (string): Existing ACF project used as file scope.
- `width` (integer): Sheet width on the 8-unit grid, default 1904.
- `workspace` (string): Workspace directory when no project is given.

### `gdf_construct` (~242 tokens)

Construct schematics and edit parameters and wire names

Transactional GDF v6 construction: insert hashed SYM instances, name I/O and electrical wires/buses, replace/clear modern parameter assignment maps, normalize invalid/duplicate native NET_IDs, add/delete orthogonal wires, symbols and free annotations. Existing offsets/current SHA-256 required; preview/backup/atomic apply. Deleted symbols leave wires. Same wire names can connect remote geometry; actual parameters and connections require original compiler/simulator verification. Legacy/ambiguous parameter records are preserved and refused for edits.

Input parameters:

- `confirm` (boolean): Apply when true; otherwise return a preview. Existing session authorization suffices.
- `expectedSha256` (string, required): Current target GDF SHA-256 from fresh geometry read.
- `operations` (array, required): Explicit source-offset operations, or complete positions/names for new objects. All validated before writing.
- `path` (string, required): Target GDF path inside the chosen scope.
- `project` (string): Existing ACF project used as file scope.
- `root` (string): Installed symbol-library root; not required for local custom SYM sources.
- `workspace` (string): Workspace directory when no project is given.

### `gdf_pin_labels` (~270 tokens)

Inspect or clean overlapping pin labels

File-only GDF/SYM diagnostics. Omit expectedSha256 to inspect exact pin/DOC duplicates and fixed-font same-row pin collisions. Supply a fresh hash to preview cleanup; confirm=true applies with backup. Removes only exact visible duplicate free DOC, preserving native pin labels. Optional right-label alignment moves label anchors only. Does not infer arbitrary glyph/layout collisions.

Input parameters:

- `alignOverlappingRightPins` (boolean): Also align colliding right-edge fixed-font pin labels inside the existing symbol; refuse if insufficient space.
- `childLimit` (integer): Items per nested collection; defaults to the requested root limit, reduced to fit the result budget.
- `childOffset` (integer): Independent offset in each nested collection; default zero.
- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `expectedSha256` (string): Current full file SHA-256 from a fresh inspection.
- `limit` (integer): Root items per collection; default 20, reduced to fit the result budget.
- `offset` (integer): Offset in each root collection; default zero.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `gdf_declarations` (~171 tokens)

Inspect original CONSTANT/PARAM declarations

Read existing native CONSTANT h/51/52 and PARAM h/53/54 declaration pairs. Reports writable and ambiguous/unsupported legacy forms. These are source declarations or defaults, not generic instance parameter assignments.

Input parameters:

- `childLimit` (integer): Items per nested collection; defaults to the requested root limit, reduced to fit the result budget.
- `childOffset` (integer): Independent offset in each nested collection; default zero.
- `limit` (integer): Root items per collection; default 20, reduced to fit the result budget.
- `offset` (integer): Offset in each root collection; default zero.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `gdf_declarations_edit` (~160 tokens)

Edit original constant and parameter declarations

Edit only an existing unambiguous native CONSTANT/PARAM name/value pair. Retains native IDs, aliases, geometry, fonts and other properties. Requires both name and value, fresh hash, preview and recoverable backup. Compiler/simulator must validate expression, scope and effect.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `edits` (array, required): Ordered collection of explicit entries validated by this tool.
- `expectedSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `gdf_text_edit` (~160 tokens)

Edit all root annotation text fields

Create, reposition, restyle or delete root free DOC annotations. Preserves font, metrics, alternative text and opaque bits; refuses electrical labels or instance/pin text. Sequential operations use original offsets and return resulting offsets. Printable Latin-1 only.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `expectedSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `operations` (array, required): Ordered changes; record offsets refer to the original input. Inspect again after applying.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `gdf_symbol_refresh` (~346 tokens)

Update embedded schematic symbols from SYM

Preview or apply a hashed same-name/same-type SYM to explicitly selected GDF instances. Shared definitions split so unselected instances retain original bytes. Instances/NET_ID/parameters/placement/rotation remain. Reports pin/interface and geometric contact changes; these require explicit allow flags. Compile/export/simulate to prove actual connectivity.

Input parameters:

- `allowDisconnected` (boolean): Explicitly permit reported geometric contact changes; this does not prove electrical safety.
- `allowInterfaceChanges` (boolean): Explicitly permit reported pin name/direction/add/delete changes.
- `childLimit` (integer): Items per nested collection; defaults to the requested root limit, reduced to fit the result budget.
- `childOffset` (integer): Independent offset in each nested collection; default zero.
- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `expectedSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `limit` (integer): Root items per collection; default 20, reduced to fit the result budget.
- `offset` (integer): Offset in each root collection; default zero.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `root` (string): Optional installed library root.
- `selectors` (array, required): Explicit selectors: exactly one original offset, definition index or instance name per entry.
- `template` (string, required): Workspace SYM or absolute installed max2lib SYM.
- `templateSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `workspace` (string): Workspace scope when project is absent.

### `gdf_graphics_edit` (~157 tokens)

Create/edit all root schematic graphics

Add/delete or resize/restyle root drawing lines, circles and arcs. Original unknown flags/shared symbol definitions retained; drawing lines are not electrical wires. Use gdf_construct for connections. Original offsets/current hash, preview and backup required.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `expectedSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `operations` (array, required): Ordered changes; record offsets refer to the original input. Inspect again after applying.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `sym_inspect` (~167 tokens)

Inspect a custom symbol interface

Inspect standalone SYM graphics, pin names/positions/native interface directions, text display flags and preserved instance defaults. No compiler needed. Paginated collections; direction provenance does not prove circuit wiring.

Input parameters:

- `childLimit` (integer): Items per nested collection; defaults to the requested root limit, reduced to fit the result budget.
- `childOffset` (integer): Independent offset in each nested collection; default zero.
- `limit` (integer): Root items per collection; default 20, reduced to fit the result budget.
- `offset` (integer): Offset in each root collection; default zero.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `sym_edit` (~161 tokens)

Edit a standalone symbol

Rename/resize standalone SYM, edit/create/delete internal lines/circles/arcs/text and interface pins. Uses original attributes and preserves unrelated/default records. Changes do not update embedded GDF symbol copies. Inspect fresh offsets/hash; verify consuming circuit with original compiler.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `expectedSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `operations` (array, required): Ordered changes; record offsets refer to the original input. Inspect again after applying.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `sym_create` (~263 tokens)

Create or clone a custom symbol

Create a new original-format SYM or clone a hashed workspace/installed-library prototype under a new name. Never overwrite. Optional operations add internal graphics/text/pins. Matching HDL source interface must be supplied separately and compiler/export used to prove connectivity.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `height` (integer): Extent height on grid8.
- `name` (string, required): New HDL symbol name.
- `nameAttributeName` (string): Primitive or hierarchy name attribute; custom clone/create defaults MACRO_NAME.
- `operations` (array): Ordered changes; record offsets refer to the original input. Inspect again after applying.
- `path` (string, required): File path within that scope.
- `pins` (array): Ordered collection of explicit entries validated by this tool.
- `project` (string): Existing ACF whose directory scopes these files.
- `root` (string): Optional installed library root.
- `template` (string): Optional custom scope SYM or absolute installed max2lib SYM.
- `templateSha256` (string): Current full file SHA-256 from a fresh inspection.
- `width` (integer): Extent width on grid8.
- `workspace` (string): Workspace scope when project is absent.

### `scf_structure` (~168 tokens)

Inspect waveform structure

Decode version4 SCF scalar names, display ordering, groups/radix, duration and native record locations. Exposes unknown/reference limits. Use scf_inspect for paginated logic events.

Input parameters:

- `childLimit` (integer): Items per nested collection; defaults to the requested root limit, reduced to fit the result budget.
- `childOffset` (integer): Independent offset in each nested collection; default zero.
- `limit` (integer): Root items per collection; default 20, reduced to fit the result budget.
- `offset` (integer): Offset in each root collection; default zero.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `scf_structure_edit` (~155 tokens)

Edit waveform names, grouping and time span

Transactional SCF signal rename/reorder, group/ungroup/radix, duration extension/truncation and input add/delete. Unknown fields preserved; unsafe opaque reference changes refused. Names must match compiled nodes; resimulate after edits.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `expectedSha256` (string, required): Current full file SHA-256 from a fresh inspection.
- `operations` (array, required): Ordered scalar/group structure changes; names must match compiled nodes.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `scf_create` (~157 tokens)

Create original-format waveform stimulus

Create a new version4 SCF directly without VEC or GUI. Explicit input names and optional 0/1/X/Z events; events in ns on 0.1ns grid. Never overwrite. Use matching compiled netlist and original simulator for verification.

Input parameters:

- `confirm` (boolean): Apply when true; default preview. Current session authorization suffices.
- `durationNs` (number, required): Total waveform duration in ns on a 0.1ns grid.
- `inputs` (array, required): Ordered collection of explicit entries validated by this tool.
- `path` (string, required): File path within that scope.
- `project` (string): Existing ACF whose directory scopes these files.
- `workspace` (string): Workspace scope when project is absent.

### `gdf_connections` (~190 tokens)

Inspect original source connections

Build source nets preserving unsynthesized instances/pins. Original endpoint/overlap, pin-on-wire, transparent WIRE and remote-name rules; crossings, driver and dangling diagnostics. Separate bitTopology expands explicit bus ranges, scalar member aliases and WIRE ordered/reversed mappings; unresolved widths remain explicit. Paginated; original compilation proves electrical legality.

Input parameters:

- `childLimit` (integer): Items per nested detail collection; defaults to root limit.
- `childOffset` (integer): Independent offset in each nested detail collection; default0.
- `limit` (integer): Items per root collection; default20, reduced to fit the response budget.
- `offset` (integer): Offset in each root collection; default0.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `gdf_move_connected` (~193 tokens)

Move or rotate symbols with checked reconnection

Move selected GDF6 placements on grid8 and/or choose orientation0..7. Route scalar pin extensions around other source nets and symbol interiors; split existing wires at departed interior pins. Refuse any changed source terminal partition or named-net membership. Original compilation/export/simulation required. Bus bundles/unknown topology refused. Hash/preview/backup transaction.

Input parameters:

- `confirm` (boolean): Apply when true; default preview with no write.
- `edits` (array, required): Explicit selected placements; offsets refer to current input. One entry per placement.
- `expectedSha256` (string, required): Current full SHA-256 from fresh file inspection.
- `maxRouteSteps` (integer): Total bounded grid search expansions; default100000.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `gdf_text_format_inspect` (~193 tokens)

Inspect native fonts and explicitly decoded text

Inspect all GDF/SYM q records, original font strings, built-in font codes, stored metrics and raw text bytes. Explicit latin1/windows-936 decoding; no guessed encoding. Pagination and malformed-encoding diagnostics.

Input parameters:

- `childLimit` (integer): Items per nested detail collection; defaults to root limit.
- `childOffset` (integer): Independent offset in each nested detail collection; default0.
- `encoding` (string): Explicit original byte encoding. The GDF/SYM has no encoding marker; default latin1.
- `limit` (integer): Items per root collection; default20, reduced to fit the response budget.
- `offset` (integer): Offset in each root collection; default0.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `gdf_text_format_edit` (~175 tokens)

Edit root DOC fonts, metrics and encoded text

Create/change only free root DOC text in GDF6 or standalone SYM2..6. Choose built-in font0..3 or Windows font face,size with explicit width/height. Exact reversible Windows-936 encoding supports Chinese bytes; Chinese requires Windows font. Preserves electrical labels, shared definitions and opaque tails. Verify glyphs with original editor.

Input parameters:

- `confirm` (boolean): Apply when true; default preview with no write.
- `expectedSha256` (string, required): Current full SHA-256 from fresh file inspection.
- `operations` (array, required): Ordered changes use original offsets. Only free root DOC text is writable.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `scf_editor_metadata` (~158 tokens)

Inspect waveform editor metadata and supported operations

Expose known display/time fields and bounded raw metadata, clearly identifying unresolved cursor/grid/zoom/private references. Preserves opaque bytes; do not infer their meaning from a round trip.

Input parameters:

- `childLimit` (integer): Items per nested detail collection; defaults to root limit.
- `childOffset` (integer): Independent offset in each nested detail collection; default0.
- `limit` (integer): Items per root collection; default20, reduced to fit the response budget.
- `offset` (integer): Offset in each root collection; default0.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `scf_stimulus_edit` (~172 tokens)

Generate and transform native SCF input waveforms

Native SCF clock, repeated 0/1/X/Z segments, wide MSB-first counters, shift, invert, fill and snapshot copy. Exact 0.1ns grid, bounded200000 total events; preserves waveforms outside edited half-open ranges and all opaque records. Fresh original simulation computes outputs.

Input parameters:

- `confirm` (boolean): Apply when true; default preview with no write.
- `expectedSha256` (string, required): Current full SHA-256 from fresh file inspection.
- `operations` (array, required): Ordered stimulus edits; windows are half-open and measured in ns on grid0.1.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `scf_compiled_ports` (~182 tokens)

Inspect compiled waveform port names

Read an exported .edo file up to32MiB and map top-level input/output ports to MAX+plus II Simulator names, including explicit vector ranges and native flattening. Internal EDIF nets, ambiguous arrays and INOUT are marked unsupported. Use netlist_export then inspect this fresh file.

Input parameters:

- `childLimit` (integer): Items per nested detail collection; defaults to root limit.
- `childOffset` (integer): Independent offset in each nested detail collection; default0.
- `limit` (integer): Items per root collection; default20, reduced to fit the response budget.
- `offset` (integer): Offset in each root collection; default0.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `workspace` (string): Workspace when no project is supplied.

### `scf_ports_import` (~193 tokens)

Import missing compiled waveform ports

Append selected top-level input/output nodes from a fresh hashed .edo to an existing hashed SCF. Retains existing waveforms; inputs begin0, outputsX until simulated. Refuses role mismatches/unsafe opaque references. Both files must be inside the same scope.

Input parameters:

- `confirm` (boolean): Apply when true; default preview with no write.
- `edifPath` (string, required): Exported .edo in the same scope.
- `edifSha256` (string, required): Current full SHA-256 from fresh file inspection.
- `expectedSha256` (string, required): Current full SHA-256 from fresh file inspection.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `signals` (array): Explicit existing scalar names in MSB-first order where used as counter bits.
- `workspace` (string): Workspace when no project is supplied.

### `scf_from_compiled_create` (~200 tokens)

Create waveform with compiled input and output ports

Create a new SCF from selected or all supported top-level ports in a hashed .edo. Direct original SCF records, no VEC. Inputs0 and output observationsX; use scf_stimulus_edit then the original Simulator. Never overwrites; unresolved nodes require explicit supported selection.

Input parameters:

- `confirm` (boolean): Apply when true; default preview with no write.
- `durationNs` (number, required): Positive total time in ns on grid0.1.
- `edifPath` (string, required): Exported .edo in the same scope.
- `edifSha256` (string, required): Current full SHA-256 from fresh file inspection.
- `path` (string, required): File path within the scope.
- `project` (string): Existing ACF whose directory scopes the files.
- `signals` (array): Explicit existing scalar names in MSB-first order where used as counter bits.
- `workspace` (string): Workspace when no project is supplied.

### `gdf_wire_cleanup` (~202 tokens)

Prune checked anonymous wire tails

Remove only unannotated electrical leaf segments in GDF6 pin-bearing physical nets. Preserve surviving token bytes, named wires, pins, isolated unconnected nets and overlapping conductors. Every round checks source scalar pin partitions and complete bus bit/alias partitions. Refuse unknown topology or exceeded budgets; compile and simulate the result independently. Fresh hash, preview and backup transaction.

Input parameters:

- `confirm` (boolean): Apply when true; default preview without writing.
- `expectedSha256` (string, required): Current full GDF SHA-256 from a fresh inspection.
- `maxComparisons` (integer): Fixed-cap cleanup comparison budget, default4000000; caller may lower it.
- `maxPasses` (integer): Maximum leaf-peeling rounds, default1000.
- `path` (string, required): File path within the selected scope.
- `project` (string): Existing ACF whose directory scopes files.
- `workspace` (string): Workspace scope when no project is selected.

### `waveform_signals` (~205 tokens)

Inspect actual simulation table columns

Read an original TBL and return real declared input/output/buried signals, bit widths, native units and available time span. Detect malformed tables, ambiguous names and exceeded budgets. Hidden SCF signals absent from TBL remain absent; this does not prove saved editor layout.

Input parameters:

- `childLimit` (integer): Nested collection item limit, default root limit.
- `childOffset` (integer): Independent nested detail offset, default0.
- `limit` (integer): Root collection items, default20; may reduce to fit response budget.
- `maxComparisons` (integer): TBL analysis comparison budget, default2000000.
- `maxRows` (integer): TBL row parsing budget, default200000.
- `offset` (integer): Root collection offset, default0.
- `path` (string, required): File path within the selected scope.
- `project` (string): Existing ACF whose directory scopes files.
- `workspace` (string): Workspace scope when no project is selected.

### `waveform_results` (~389 tokens)

Extract valid output events and viewing interval

Extract result events gated by an actual scalar valid signal. Default proven rising edges, with initial-high rows separately marked; optional samples means native rows while valid=1. Optional settling samples point-in-time data inside the valid window. Retains raw numeric/X/Z tokens, missing columns and unknowns; held data while valid is low creates no result. Return paginated events and a recommended ns window; does not alter SCF zoom, row visibility, clock or design logic.

Input parameters:

- `dataSignals` (array, required): Actual result columns, e.g. OUTBUS[7..0].
- `edge` (string): Default rising. samples selects native valid-high rows, not uniform sampling.
- `endTimeNs` (number): Inclusive event-range end in ns, default last native time.
- `kindSignal` (string): Optional type discriminator column, e.g. OUT_KIND; no semantics inferred.
- `limit` (integer): Event count, default20; may reduce to fit output budget.
- `maxComparisons` (integer): TBL analysis comparison budget, default2000000.
- `maxEvents` (integer): Total event budget before pagination, default100000.
- `maxRows` (integer): TBL row parsing budget, default200000.
- `offset` (integer): Result event offset, default0.
- `paddingNs` (number): Recommended view padding, default1000ns.
- `path` (string, required): File path within the selected scope.
- `project` (string): Existing ACF whose directory scopes files.
- `settleNs` (number): Sampling delay after valid entry, default0; must remain in the same valid window.
- `startTimeNs` (number): Inclusive event-range start in ns, default first native time.
- `validSignal` (string, required): Real scalar valid column, e.g. OUT_VALID.
- `workspace` (string): Workspace scope when no project is selected.

### `display_palette_inspect` (~100 tokens)

Inspect stored original application colors

Read only the [Colors] section of installed maxplus2.ini. Separate ordinary DOC Text, native Symbol Pinstub Names, and Nodes & Connection Dots roles. Reports stored preferences, not live unsaved colors; GDF color bits and custom previews cannot prove native display. Verify visible colors using original Color Palette Preview and desktop_observe.

Input parameters:

- `root` (string): Optional explicit MAX+plus II installation root; invalid explicit roots are refused.

### `capability_matrix` (~44 tokens)

Discover available MAX+plus II capabilities

Return precise routes and runtime requirements for authoring, compilation, simulation and native GUI-only workflows. Distinguishes implemented entry points from operations verified on this machine and physical programming requirements.

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/hachimeder-maxplus2-mcp/maxplus2-mcp#diagnostics

## Score history

- 2026-11-05: 51
- 2026-11-04: 51
- 2026-11-03: 50
- 2026-11-02: 50
- 2026-11-01: 49
- 2026-10-31: 49
- 2026-10-30: 48
- 2026-10-29: 48
- 2026-10-28: 47
- 2026-10-27: 47
- 2026-10-26: 46
- 2026-10-25: 46
- 2026-10-24: 46
- 2026-10-23: 45
- 2026-10-22: 45
- 2026-10-21: 44
- 2026-10-20: 40
- 2026-10-19: 39
- 2026-10-18: 39
- 2026-10-17: 40
- 2026-10-16: 40
- 2026-10-15: 40
- 2026-10-14: 40
- 2026-10-13: 40
- 2026-10-12: 14
- 2026-10-10: 14

## Common questions

### What is the MAX+plus II MCP / 数字电路 AI 工具 server?

MAX+plus II MCP / 数字电路 AI 工具 is listed in the public MCP registry as io.github.Hachimeder/maxplus2-mcp. MAX+plus II / MaxPlus2 MCP: GDF/SYM/SCF, compile/simulation. 原理图、波形、编译仿真与 Windows 自动化。 This page covers its MCPB bundle (https://github.com/Hachimeder/maxplus2-mcp/releases/download/v0.10.3/maxplus2-mcp-v0.10.3.mcpb).

### Is the MAX+plus II MCP / 数字电路 AI 工具 server safe to use?

MAX+plus II MCP / 数字电路 AI 工具 scores 51 out of 100 on VerifyMCP. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the MAX+plus II MCP / 数字电路 AI 工具 server expose?

MAX+plus II MCP / 数字电路 AI 工具 exposes 68 tools: installation_status, list_projects, project_inspect, acf_read_sections, acf_read_pins, and 63 more. Their descriptions and schemas cost roughly 14,502 tokens of context every time the server is loaded.

### What licence is the MAX+plus II MCP / 数字电路 AI 工具 server under?

MAX+plus II MCP / 数字电路 AI 工具 declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- Repository: https://github.com/Hachimeder/maxplus2-mcp
- Changelog RSS feed: https://verifymcp.io/servers/hachimeder-maxplus2-mcp/maxplus2-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/hachimeder-maxplus2-mcp/maxplus2-mcp.json
- HTML version of this page: https://verifymcp.io/servers/hachimeder-maxplus2-mcp/maxplus2-mcp
