maxplus2-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@maxplus2-mcpcompile my MAX+plus II project and show any timing errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
maxplus2-mcp — MAX+plus II MCP 服务器
让支持 MCP 的 AI agent 使用 MAX+plus II:读取和修改工程、GDF 原理图、SYM 符号和 SCF 波形,运行原厂编译与仿真,并操作 Windows 原生界面。
适用于 Altera MAX+PLUS II / MaxPlus II / MaxPlus2 的数字电路实验与 FPGA/CPLD 工程,包含 AHDL、VHDL、Verilog 源码和专有原理图、波形文件处理。
当前版本 0.10.3,提供 68 个工具,采用本地 stdio MCP。 运行时只使用 Node.js 内置模块,不需要安装 npm 依赖。 Windows 界面后端属于本项目,通过 Win32 和 UI Automation 工作;任何能连接 本地 stdio MCP 的客户端都可调用,无需 Codex Computer Use 或其他 agent SDK。
项目把工程文件解析、原厂命令行与 Windows 界面操作组合在一个服务中。 AI 可以先读取实际电路和波形,以文件方式进行受检修改,再通过原厂工具验证 结果;遇到向导或未解码的编辑器属性时,使用项目自带的界面后端继续操作。
下载: 最新 Release 提供精简发行包、完整源码包、标准 MCPB 安装包、目录元数据和 SHA-256 校验文件。
查找与连接: 官方 MCP 目录 ·
GitHub 搜索 ·
其他 agent 的查找与连接说明。
目录中的名称为 io.github.Hachimeder/maxplus2-mcp;连接方式为本地 stdio。
数字电路(数电)实验中的 AI 辅助
如果你在寻找「MAX+plus II AI 辅助工具」「MaxPlus2 MCP」「GDF 原理图解析与 编辑」或「SCF 波形自动生成与仿真」,本项目提供相应的本地工具。AI 可以创建 和修改原理图、准备波形激励、编辑 AHDL/VHDL/Verilog 源码,再调用原厂编译器 和仿真器读取实际报告与结果。它也适用于 Altera FPGA/CPLD 工程的文件处理。
常见问题是「AI 能不能直接画 GDF、填写 SCF、操作 MAX+PLUS II?」:连接本地 MCP 后,可以使用对应文件工具及项目自带的 Windows 自动化后端;具体支持范围 见下面的能力表及 格式说明,验证证据见 测试说明。
在 GitHub 中可直接搜索 MaxPlus2 MCP、MaxPlus II MCP、数字电路 MCP
或 数电 MCP。按场景查找也可使用 topic:altera topic:mcp、
topic:cpld topic:mcp、topic:waveform-simulation topic:mcp。
Related MCP server: Ansys Workbench MCP
能力
范围 | 功能 |
工程和源码 | 新建、复制、查找、读取、编辑、备份和恢复;ACF 配置、HDL、MIF、VEC |
GDF 原理图 | 原始几何、符号位置、旋转/镜像、引脚坐标、导线、注释、参数和声明 |
GDF 连接 | 原实例/引脚网络、显式总线逐位连接、受检标量移动补线、匿名叶端清理 |
SYM 符号 | 新建、编辑、检查、选择性刷新嵌入定义,保留未选实例 |
文字和颜色 | 字体、显式 Windows-936 中文、保存的颜色角色;检查并清理覆盖引脚标签的重复 DOC |
SCF 波形 | 输入事件、X/Z、信号增删、名称、组、进制、顺序和时长;clock/counter/repeat 等刺激 |
编译与分析 | 原厂编译、仿真、时序分析、导出综合网表;异步任务、取消、报告与结果验证 |
Windows 界面 | 窗口、截图、UIA、菜单、键盘、鼠标、拖动和滚动;观察有效期和输入去重 |
工具的参数由 MCP tools/list 提供,也可查阅 完整工具列表。
优先使用文件工具处理已解码格式,界面工具处理向导、菜单和其他编辑器操作。
安装与连接
文件工具需要 Node.js 18+。原厂编译、仿真和界面操作需要 Windows 以及 你自行安装并取得适用许可的 MAX+plus II。原厂工具链曾在 10.2 上验证。 界面操作还需要 .NET Framework 4.8 和已登录、未锁定的交互式桌面。 本仓库不包含 MAX+plus II 安装包、程序、设备库或许可证。
使用 Release 发行包
支持 MCPB 的 Windows 客户端可导入 maxplus2-mcp-v0.10.3.mcpb,在客户端中
选择软件安装目录和工程目录。其他 stdio MCP 客户端使用下面的 ZIP 配置步骤。
从 v0.10.3 Release 下载
maxplus2-mcp-v0.10.3.zip并解压到固定目录。确认本机已安装 Node.js;执行
node --version检查。按下面的配置示例连接 MCP 客户端,填写实际软件安装目录和工程目录。
发行包包含运行源码、Windows 后端源码、两种语言的介绍及操作文档。
运行时不需要 Git,不需要执行 npm install;Windows 后端首次使用时自动编译。
maxplus2-mcp-v0.10.3-source.zip 另包含开发脚本、公开测试和 CI 模板,适合开发与贡献。
从源码安装
git clone https://github.com/Hachimeder/maxplus2-mcp.git
cd maxplus2-mcp
node --version复制 mcp-config.example.json 中的服务定义到客户端的 MCP 配置,填写实际路径。示例中的目录是占位路径:
{
"mcpServers": {
"maxplus2": {
"command": "node",
"args": ["C:\\tools\\maxplus2-mcp\\server.mjs"],
"env": {
"MAXPLUS2_ROOT": "C:\\maxplus2",
"MAXPLUS2_WORKSPACE": "C:\\fpga-projects"
}
}
}
}若客户端不能从 PATH 找到 Node,将 command 改为本机 Node 可执行文件的绝对路径。
客户端的配置格式可能不同,核心是用上述 command、args、env 启动 stdio 进程。
可用以下命令检查路径和原厂编译器,并生成被 Git 忽略的本机配置:
node scripts/configure-local.mjs --root "C:\maxplus2" --workspace "C:\fpga-projects"
node scripts/configure-local.mjs --root "C:\maxplus2" --workspace "C:\fpga-projects" --apply也可通过 start-local.ps1 启动,或使用以下命令检查安装。正常 stdio 启动后由
MCP 客户端发送 JSON-RPC 请求;诊断日志使用 stderr。
node scripts/local-startup.mjs --check --root "C:\maxplus2" --workspace "C:\fpga-projects"原生后端会从 native/MaxplusDesktop.cs 自动编译到被忽略的 bin/。
手动构建可运行 pwsh -NoProfile -File scripts/build-desktop.ps1 -SelfTest。
推荐操作顺序
installation_status检查环境,project_clone建立工作副本。project_parse_file或专用 inspect 工具读取实际内容和 SHA-256。用编辑工具预览修改,检查变化、连接和限制;已授权修改使用
confirm:true及刚读取的expectedSha256提交。该参数是工具的事务控制。编译和仿真,检查本次生成的报告、连接和真实输出。异步任务使用
job_status/job_cancel。需要界面时使用
desktop_windows→desktop_observe→desktop_action。 使用最新的 observationId,读取动作后返回的新观察再决定下一步。
验证与开发
以下开发命令在 Git 克隆目录或完整源码包中运行:
npm run audit:public
npm test默认测试使用独立样例和模拟后端,不需要 MAX+plus II 安装、私人实验工程或 原厂库文件。需要实机软件验证时设置安装目录:
$env:MAXPLUS2_ROOT = "C:\maxplus2"
npm run test:native原厂测试在临时目录建立自制电路,运行编译、仿真和网表检查。原生桌面测试还 需要交互式 Windows 会话。公开检查不依赖原厂安装。 仓库附有 GitHub Actions 模板;启用方式见 CI 说明。
公开测试中的分页 GDF 在运行时由自制符号生成;SCF 样例来自自制 XOR 工程, 不包含私人课程实验或本机路径。贡献时请运行检查,并使用可公开的最小复现。 测试范围及实测结果见 验证说明。
已知边界
文件编辑主要支持已确认的 GDF v6 / SCF v4,未知记录保留或拒绝修改。 参数化宏的总线宽度、完整层级内部连接、总线自动布线,以及部分 SCF 编辑器 私有显示字段仍有限制。源连接模型和综合后的网表回答不同问题,修改逻辑后 仍需原厂编译仿真确认。通用界面入口提供软件操作途径,不能证明每个菜单功能 都已经逐项验证;客户端还需把截图传给具备视觉能力的模型处理复杂画布。 实际烧录需要支持的硬件,仓库测试不验证硬件烧录。
许可和隐私
本项目代码采用 MIT License。第三方软件及样例来源见 NOTICE.md。本机配置、日志、截图、备份、实验工程及原厂软件不属于 发布内容。MCP 返回的数据可能经客户端发送给模型服务,详见 SECURITY.md。
Available Tools
68 toolsacf_read_pinsRead pin assignmentsARead-onlyIdempotent
Extract device and pin assignments from the .acf CHIP block, and cross-check them against the compiler-generated .pin report when present. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | 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 | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so 'Read-only.' in the description is redundant. The one genuinely additive behavioral detail is the conditional cross-check against the compiler-generated .pin report when present, but error behavior and result shape are unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the primary action and followed by the conditional cross-check. No filler or repetition beyond the minor 'Read-only.' restatement of annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only extraction tool with no output schema, the description covers the source artifact, the scope (device and pin assignments), and the optional verification step. It could say more about what the returned pin data looks like, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (project, workspace) are fully documented in the schema, including ambiguity resolution and env-var defaults. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('extract') and precise resources: device and pin assignments from the .acf CHIP block, plus a secondary cross-check against the .pin report. This is distinguishable from siblings like acf_read_sections or acf_validate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool applies (reading .acf CHIP pin data) and notes the conditional .pin cross-check when that report exists. However it gives no explicit guidance on when to prefer this over acf_read_sections, acf_validate, or project_inspect, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acf_read_sectionsRead ACF sectionsARead-onlyIdempotent
Read the .acf as structured sections/entries with line numbers. Use to discover which section holds a setting before writing. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project name or absolute .acf path. | |
| section | No | Only return this section (case-insensitive), e.g. CHIP. | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| includeEntries | No | Set false to return section headers only (default true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the description's 'Read-only' merely repeats that. It does add useful return-shape context (sections/entries carry line numbers), but says nothing about scoping, limits or how entries are delimited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the capability and immediately followed by the routing purpose and safety note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inspection tool with a fully documented schema and no output schema, the description covers the essential return shape (sections/entries with line numbers) and intended workflow. Only finer output detail is absent, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (project, section, workspace, includeEntries) are already documented in the schema. The description's mention of 'sections/entries' aligns with but does not extend the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads the .acf as structured sections/entries with line numbers. That distinguishes it from the pin-oriented sibling acf_read_pins and from write tools like setacf_apply, though it never explicitly names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use case: 'Use to discover which section holds a setting before writing,' which positions it ahead of the setacf write tools. It stops short of stating when-not-to-use or naming specific alternative readers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acf_repair_chip_headersRepair CHIP headersADestructive
Rewrite malformed CHIP headers (bare "CHIP " or shell-escaped names) into canonical "CHIP " form. setacf is append-only and cannot fix these itself. Preview-first; requires confirm:true to write and backs the file up.
| Name | Required | Description | Default |
|---|---|---|---|
| backup | No | Back up the .acf first (default true). | |
| confirm | No | Must be true to write. Without it this is a preview. | |
| project | Yes | 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. | |
| chipName | No | Name to use for the CHIP section. Defaults to the project name. | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: dry-run preview by default, a confirm gate for the actual write, and a backup of the .acf file. This meaningfully softens the destructiveHint=true profile. It does not explain what happens on repeated runs despite idempotentHint=false, so not quite a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with no filler: the action and targets come first, followed by the setacf rationale and the safety workflow. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema mutation tool, the description covers the key agent needs: what it rewrites, the preview/write gate, and the backup. Return details are unnecessary with no output schema; only the non-idempotency behavior is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented. The description restates the confirm and backup semantics already present in the schema and adds no new syntax or format detail, making baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Rewrite) plus the exact resource and the malformed forms it targets (bare "CHIP " or shell-escaped names) and the canonical output form. It also distinguishes itself from the setacf siblings by explaining that setacf is append-only and cannot perform this fix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly signals when to reach for this tool (malformed CHIP headers that setacf cannot repair) and establishes the preview-first workflow with confirm:true required to write. It stops short of naming explicit alternatives or when-not-to-use conditions, but the routing context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acf_validateValidate ACFARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | 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 | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and closed-world, so 'Read-only' in the description is redundant. What adds value is the disclosure of what it checks (the bare "CHIP " header setacf leaves behind) and the downstream failure mode, which goes beyond the annotation profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action ('Statically validate an .acf...'), and the parenthetical defect detail earns its place by explaining the target. It is a single dense sentence, though the nested quoting makes it slightly heavy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should ideally indicate the shape of the validation result (pass/fail, list of defects). It explains what is checked but not what comes back, leaving a gap for a validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema. The description adds no syntax, resolution, or ambiguity-handling detail beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (.acf) plus the exact class of defect it targets (the bare "CHIP " header) and why it matters (MAX+PLUS II compile failure). However, it does not distinguish itself from the sibling acf_repair_chip_headers, which addresses the same defect, so the boundary is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of 'defects that block compilation' suggests a pre-compile check, but there is no explicit when-to-use, no exclusion, and no pointer to acf_repair_chip_headers as the fix path. The agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capability_matrixDiscover available MAX+plus II capabilitiesBRead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it distinguishes implemented entry points from operations verified on this specific machine and from physical programming requirements, which is a machine-state nuance the annotations do not capture. It still says nothing about response shape, but the added distinction earns credit above baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense, front-loaded sentences with no filler. The wording is jargon-heavy ('precise routes', 'implemented entry points') but every clause carries information, and the distinct mode it returns is stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description bears full responsibility for telling the agent what it receives, and it only gestures at this ('routes and runtime requirements', 'distinguishes... verification'). For an agent trying to act on the result, the actual contents and format remain under-specified, leaving a real gap for a zero-param tool whose entire value is its return payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly implies a no-argument query rather than any input-driven operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description signals a capability-discovery tool that returns routes and runtime requirements across authoring, compilation, simulation, and GUI-only workflows. However, 'precise routes' is jargon that doesn't concretely say what a caller gets back, and it draws no boundary against discovery-oriented siblings like installation_status, probe_executable, or desktop_status. Purpose is inferable but not sharply stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no named alternative. The closest siblings (installation_status, probe_executable) are equally discovery-flavored, yet the description gives the agent no rule for choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_actionPerform one observed MAX+plus II actionADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation. | |
| action | Yes | One native Windows action; invoke_menu requires an observed enabled leaf menu_index. | |
| windowId | Yes | Window ID from the latest observation. | |
| parameters | No | 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; set_value:element_index/value; drag:from_x/from_y/to_x/to_y/screenshotId, optional mouse_button/durationMs(100..5000); scroll:x/y/scrollX/scrollY/screenshotId (integer wheel units,120 per notch); secondary:element_index/action. Mouse actions may use modifiers:["Ctrl","Shift","Alt"]. Observe actual focus before typing. | |
| operationId | No | 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. | |
| observationId | Yes | Unconsumed ID from desktop_observe or the previous action result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, openWorld=true, so the safety profile is covered. The description adds real context beyond that: it executes exactly one input, uses MCP-owned Win32/UIA rather than host-specific calls, and always returns a fresh screenshot/tree, telling the agent state must be re-inspected after each action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action scope, followed by implementation note, preconditions and the inspect loop. Dense but mostly economical; 'no host-specific calls' is a slightly opaque phrase that does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, nested-object mutation tool with no output schema, the description covers the essential call contract: prerequisites, one-action scope, and the fresh screenshot/tree return value. It leaves operationId retry/caching semantics entirely to the schema, but those are documented there.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested 'parameters' property documents each action's arguments in detail. The description only restates the observationId/windowId freshness requirement, adding little syntax or format meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Directly execute') plus a precise resource and scope ('ONE click, hover, key chord, Unicode text entry, value change, drag, scroll, secondary UI action or activation'). The single-action framing plus 'return a fresh screenshot/tree' cleanly separates it from the observation-oriented siblings like desktop_observe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the precondition ('Requires latest observationId/windowId') and the workflow expectation ('Inspect after every input'), which tells the agent to re-observe between actions. It does not explicitly name desktop_observe as the alternative, so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_launchLaunch a MAX+plus II GUI programA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation. | |
| program | No | Installed MAX+plus II GUI executable, default max2win.exe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the independent-backend isolation, the allowlist restriction, and the crucial caveat that a successful launch does not imply readiness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, then constraints, then the readiness caveat. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: it states it returns real windows and tells the agent to observe the returned window. It leaves some gaps, such as behavior when an instance is already running or what happens on failure, but is adequate for the task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only two optional parameters (root, program) and an enum fully documented in the schema. The description adds the notion that programs are allowlisted, which contextually frames the enum, but offers no syntax or default detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Launch), a bounded resource (allowlisted MAX+plus II GUI), and the mechanism (independent Windows backend returning real windows). 'No shell or arbitrary executable' distinguishes it from a generic process launcher and from pipeline siblings like maxplus2_run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-not ('No shell or arbitrary executable') and a follow-up directive ('Launch does not prove readiness; observe the returned window'), which effectively routes the agent to desktop_observe/desktop_windows. It does not name those siblings explicitly, so it falls short of full alternative-naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_observeObserve a MAX+plus II windowARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation. | |
| windowId | Yes | Opaque ID from desktop_windows; never invent one. | |
| menuLimit | No | Maximum native menu records; default60. | |
| textLimit | No | Maximum controls in one observation page, default 60; the response budget may reduce this. Global element indices are preserved. | |
| menuOffset | No | Native menu pagination offset. Use menus.nextOffset and inspect actual enabled leaf commands. | |
| textOffset | No | Control pagination offset, default 0. Use nextTextOffset from the previous observation; every page creates a new observationId. | |
| includeText | No | Capture accessibility tree and focus, default true. Required for indexed input and typing. | |
| includeScreenshot | No | Capture screenshot, default true. Required for coordinate input. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds the observation lifecycle note ('each input consumes its observation') and a diagnostics caveat, but the latter references a 'diagnostics' concept absent from the schema, so the added signal is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the return payload, then the pre-action guidance, then a caveat. Tight and mostly waste-free, though the trailing diagnostics sentence is vague and slightly muddies the close.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden and lists the key outputs, plus the pagination model lives in the schema. It is complete enough to call correctly, though the one-shot observation semantics could be stated more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the eight parameters (windowId provenance, pagination offsets, includeText/includeScreenshot) are already documented in the schema, including the 'never invent one' warning. The description adds no parameter meaning beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (observe/return) and resource (a MAX+plus II window) and enumerates the returned artifacts: native screenshot, UI Automation tree, focus, window bounds, and observationId. This lets an agent know exactly what it gets. It does not, however, distinguish itself from the adjacent desktop_status / desktop_windows siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Inspect before acting' implies the tool is a read step preceding desktop_action, which is useful guidance. But it names no alternatives, no explicit when-not conditions, and does not clarify how it differs from desktop_windows or desktop_status, leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_resultRead a recent desktop operation resultARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation. | |
| requestId | Yes | ID returned directly by desktop_windows/launch/observe/action, or the supplied operationId. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond the annotations: the cache TTL rules (ten minutes, twelve entries, server restart) and the fact that no separate host execution step is involved. It does not describe the shape or failure mode of a cache miss, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core purpose front-loaded and the cache constraints following. 'No separate host execution step exists' is slightly oblique but still earns its place by clarifying the architecture.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool with no output schema and full schema coverage, the description supplies the key missing context (cache expiry and the fact that no re-execution occurs). A brief note on what happens when the result is gone would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents both requestId (source of the ID) and root (installation root default). The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (a cached completed desktop result and its MCP image blocks), and qualifies it with 'without executing input again,' which differentiates it from the launch/observe/action siblings. It stops short of naming which sibling produced the result, so an agent must infer the pairing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The cache lifetime ('up to ten minutes, twelve entries, or server restart') implies when this tool is valid to call, i.e. only for recent operations. However, it never explicitly states when to prefer this over desktop_status/desktop_observe or what to do if the result has expired, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_statusCheck independent Windows desktop backendARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description still adds real value by disclosing a build side effect ('Builds the bundled helper locally if needed'), that it runs locally with standard Windows components, and that it reports interactive desktop availability. The build step sits in mild tension with readOnlyHint but is disclosed rather than hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the primary purpose and the scope exclusion at the end. Each sentence carries distinct information (what it checks, build behavior, execution locality, boundary), with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter-required diagnostic with no output schema, the description covers purpose, side effects, and scope adequately; return-value detail is not required. It could be stronger by stating the expected usage trigger, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'root' parameter is fully documented in the schema. The description adds no syntax or default-precedence detail beyond the schema's own note about MAXPLUS2_ROOT/discovery, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check the MCP-owned Windows UI Automation/Win32 backend') and clarifies scope by excluding window manipulation. This distinguishes it from desktop_launch/desktop_action without opening their schemas, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The negative boundary ('Does not launch or manipulate a MAX+plus II window') implies this is a pre-flight/diagnostic check, which is useful context. However, it gives no explicit 'use this before desktop_launch' routing or when-to-use statement relative to installation_status or capability_matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
desktop_windowsList MAX+plus II windowsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | MAX+plus II installation root; defaults to MAXPLUS2_ROOT or discovered installation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's added value is the discovery semantics and disclosed return fields (HWND, PID, bounds, title). It does not say what happens when no windows are found or whether an active desktop session is required, but it goes beyond the annotations meaningfully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the high-value content (what is discovered and returned) followed by the ordering rule. The closing sentence, 'All agents call this standard MCP tool,' is promotional filler that does not help an agent decide or call correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-param read tool with annotations and no output schema, listing the returned fields and the required next step is sufficient to call it correctly. Minor gaps remain around empty-result and environment-precondition behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the schema already fully explains 'root' and its MAXPLUS2_ROOT default. The description says nothing about the parameter, which is acceptable at this coverage level but adds no extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'discover real windows/dialogs of installed MAX+plus II executables,' and even enumerates what each entry carries (HWND, PID, bounds, title). This clearly separates it from siblings like desktop_observe or desktop_action, though it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete sequencing rule: 'Select exactly one returned windowId before observing/input,' which tells the agent this is a prerequisite step for the observation/input tools. It stops short of naming those alternatives or stating exclusions, so it is clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
display_palette_inspectInspect stored original application colorsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Optional explicit MAX+plus II installation root; invalid explicit roots are refused. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description still adds useful context: it reports stored rather than live colors, and warns that GDF color bits and custom previews cannot prove native display — genuine evidence caveats beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the core action before the caveats and verification guidance. Every sentence carries information, though the domain jargon ('native Symbol Pinstub Names') makes it slightly heavy for the tool's simple one-parameter nature.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inspect tool with annotations carrying safety and no output schema, the description covers purpose, scope, evidence limitations, and verification alternatives. It hints at the grouped role output without detailing return format, which is a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single optional 'root' parameter, which already documents that invalid explicit roots are refused. The description adds nothing further about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read only the [Colors] section of installed maxplus2.ini.' It also delimits scope precisely (the Colors section only) and clarifies the roles it separates, so an agent can tell it apart from other inspect tools like gdf_inspect or scf_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It sets an explicit boundary ('Reports stored preferences, not live unsaved colors') and routes the agent to alternatives ('Verify visible colors using original Color Palette Preview and desktop_observe'). Clear selection context, though the routing is somewhat indirect and one named resource isn't a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_connectionsInspect original source connectionsBRead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| limit | No | Items per root collection; default20, reduced to fit the response budget. | |
| offset | No | Offset in each root collection; default0. | |
| project | No | Existing ACF whose directory scopes the files. | |
| workspace | No | Workspace when no project is supplied. | |
| childLimit | No | Items per nested detail collection; defaults to root limit. | |
| childOffset | No | Independent offset in each nested detail collection; default0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real context on top: it is paginated, it emits crossings/driver/dangling diagnostics, it expands bus ranges and WIRE mappings via bitTopology, and unresolved widths are surfaced explicitly rather than silently resolved. That is meaningful disclosure of output behavior, though it never states the response shape or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and there is no filler, but the remaining text is a dense semicolon-chained stream of domain jargon (pin-on-wire, transparent WIRE, remote-name rules, driver/dangling diagnostics) that resists quick parsing. Compact, but readability is sacrificed for density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and seven parameters, the description should carry more of the return-value burden; it hints at nets plus crossing/driver/dangling diagnostics but never describes the pagination envelope or what a net record contains. Adequate orientation for a complex EDA tool, but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents path, limit, offset, project, workspace, childLimit, and childOffset. The description adds nothing about any parameter except an oblique 'Paginated' nod to limit/offset, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource pair ('Build source nets') with a clearly scoped domain object, and the title's 'Inspect original source connections' aligns with that intent. It does not, however, differentiate itself from nearby siblings like gdf_inspect, gdf_geometry, or acf_read_pins, so an agent gets the what but not the why-this-one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-routing guidance anywhere in the text. The agent is left to infer from jargon that this is the net-connectivity reader, with no pointer to siblings such as gdf_inspect or gdf_geometry that also inspect GDF content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_constructConstruct schematics and edit parameters and wire namesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Target GDF path inside the chosen scope. | |
| root | No | Installed symbol-library root; not required for local custom SYM sources. | |
| confirm | No | Apply when true; otherwise return a preview. Existing session authorization suffices. | |
| project | No | Existing ACF project used as file scope. | |
| workspace | No | Workspace directory when no project is given. | |
| operations | Yes | Explicit source-offset operations, or complete positions/names for new objects. All validated before writing. | |
| expectedSha256 | Yes | Current target GDF SHA-256 from fresh geometry read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: preview/backup/atomic-apply semantics, that deleted symbols leave their wires behind, that duplicate wire names can connect remote geometry, and that legacy/ambiguous parameter records are preserved and refused for edits. It stops short of describing rollback behavior on partial failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A dense but efficient paragraph: the core purpose leads, operands and prerequisites follow, and caveats close it out. Every sentence carries information, though the run-on enumeration of operations is somewhat heavy to parse in one pass.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-operation, destructive, offset-addressed construction tool with no output schema, the description covers prerequisites, transactionality, verification caveats, and edge-case semantics (orphaned wires, legacy records). Return-value information is absent but no output schema exists, leaving response shape unspecified — a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents path, offsets, SHA-256, operations and their sub-fields. The description echoes the offset/SHA-256 requirements but adds no format or syntax detail beyond what the schema states. Baseline 3 is appropriate when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (construct) and resource (GDF v6) and enumerates the operation families: inserting SYM instances, naming wires/buses, editing parameter maps, normalizing NET_IDs, adding/deleting wires, symbols and annotations. An agent can tell this is a schematic-writing tool. It does not, however, distinguish itself from overlapping siblings such as gdf_edit, gdf_create, or gdf_wire_cleanup, which is the only missing piece for a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies prerequisites (existing offsets and current SHA-256 required; preview unless confirmed; atomic apply) which imply the intended context, but it never says when to reach for this tool versus gdf_edit, gdf_create, or gdf_wire_cleanup. Usage is inferable from the operation list rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_createCreate a blank original-format schematicA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Target GDF path inside the chosen scope. | |
| width | No | Sheet width on the 8-unit grid, default 1904. | |
| height | No | Sheet height on the 8-unit grid, default 1232. | |
| confirm | No | Apply when true; otherwise return a preview. Existing session authorization suffices. | |
| project | No | Existing ACF project used as file scope. | |
| workspace | No | Workspace directory when no project is given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantive behavior beyond the annotations: confirm=false yields a preview rather than an apply, and an existing file is never overwritten. Neither fact is derivable from destructiveHint=false/idempotentHint=false alone, so this is genuine added value; it stops short of describing what the call returns or any write-side effects on the target directory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then the safety default, then the workflow handoff. No filler; every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally say what a preview returns relative to an applied create, and it does not. It otherwise covers the mode toggle, the overwrite guarantee, and the follow-on tooling, which is close to sufficient for a 6-parameter creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so path, width, height, confirm, project, and workspace are already documented in the schema. The description only reinforces the confirm preview semantics already stated on that parameter, adding no syntax, defaults, or constraints beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a version-6 GDF sheet") with the concrete flavor that distinguishes it from other gdf_* writers, and explicitly names the sibling it is not: "Use gdf_construct for symbols/wires." An agent can pick between gdf_create and gdf_construct without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (blank sheet creation) and routes the agent to alternatives for the adjacent task (gdf_construct for symbols/wires, compiler/simulator for verification). It stops short of explicit when-not-to-use conditions, so it falls just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_declarationsInspect original CONSTANT/PARAM declarationsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| limit | No | Root items per collection; default 20, reduced to fit the result budget. | |
| offset | No | Offset in each root collection; default zero. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| childLimit | No | Items per nested collection; defaults to the requested root limit, reduced to fit the result budget. | |
| childOffset | No | Independent offset in each nested collection; default zero. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral value by saying it reports writable and ambiguous/unsupported legacy forms, telling the agent what the result distinguishes. It omits pagination/budget behavior despite limit/offset/childLimit parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the primary action and resource. The final sentence earns its place by disambiguating from generic instance parameter assignments rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no output schema, the description conveys what the output classifies (writable vs ambiguous/unsupported legacy forms) and the scope of the declarations. Nothing critical is missing, though pagination/budget semantics for the four paging parameters are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters (path, limit, offset, project, workspace, childLimit, childOffset) are already documented in the schema. The description adds no additional parameter meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('native CONSTANT h/51/52 and PARAM h/53/54 declaration pairs'), and explicitly excludes a confusable concept ('not generic instance parameter assignments'). It implicitly distinguishes from the gdf_declarations_edit sibling via the read verb, but never names the edit tool as the write counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Read existing' plus the clarification that these are source declarations/defaults rather than instance parameter assignments, which is a soft when-not signal. There is no explicit statement of when to call this versus gdf_declarations_edit or gdf_inspect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_declarations_editEdit original constant and parameter declarationsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| edits | Yes | Ordered collection of explicit entries validated by this tool. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| expectedSha256 | Yes | Current full file SHA-256 from a fresh inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=true and non-idempotent. The description adds genuine context beyond them: what is preserved (native IDs, aliases, geometry, fonts), that a recoverable backup exists, and that a compiler/simulator must validate the result. It does not detail failure/rollback behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the edit scope followed by preservation guarantees and preconditions. Every sentence contributes; wording is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the description supplies the key missing pieces: preservation semantics, backup/recoverability, and the requirement for a fresh hash and compiler validation. It is largely complete, though it could state what happens on validation failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters and nested edit fields are already documented. The description reinforces 'requires both name and value' and 'fresh hash' but adds no syntax or format detail beyond the schema, matching the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Edit... existing... CONSTANT/PARAM name/value pair') and scopes it tightly with 'only an existing unambiguous native'. The 'only existing' qualifier implicitly contrasts with creation siblings like gdf_create/gdf_declarations, but no sibling is named, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage constraints: only existing, unambiguous, native declarations, and mandates both name and value plus a fresh hash. It does not explicitly name what tool to use instead for creating or deleting declarations, so the when-not side is implied rather than enumerated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_editEdit existing schematic geometryADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | GDF/SYM file inside the chosen project/workspace. | |
| edits | Yes | One operation per original record offset. Observe again after text edits. | |
| confirm | No | Apply when true; otherwise preview. Session authorization suffices, no new user approval is implied. | |
| project | No | Existing ACF project; file paths stay inside its directory. | |
| workspace | No | Workspace scope when no project is given. | |
| expectedSha256 | Yes | SHA-256 returned by the latest GDF read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint/readOnlyHint) by disclosing the SHA-256 freshness precondition, rejection of unsupported targets and overflow, lossless preservation of unrelated bytes, pre-write backup, atomic replacement, and the important caveat that moving a symbol does not move its wires. These are exactly the side-effect and safety facts an agent needs before mutating binary geometry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the operational mode (preview/apply) and target set front-loaded, followed by the safety preconditions and the gotcha warning. No filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema mutation tool the description supplies the missing contract: how preview differs from apply, the integrity precondition, what is preserved, and how to verify the result. Nothing needed to invoke it correctly appears to be absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including recordOffset provenance and the maxItems one-operation-per-offset rule. The description echoes the SHA-256 requirement but adds no format, range, or interaction detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb pair (preview/apply) and enumerates the exact editable resources: GDF v6 root line coordinates, translations, symbol orientation, free annotation text. 'Existing records only' cleanly distinguishes it from creation siblings like gdf_create and gdf_construct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear when-not ('Existing records only') and valuable post-edit guidance ('recompile/export to verify circuit behavior'). It stops short of naming alternatives, e.g. gdf_move_connected for symbol+wiring moves or gdf_text_edit for text-only changes, leaving the agent to infer which sibling to reach for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_geometryRead original schematic geometryARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | GDF/SYM file inside the chosen project/workspace. | |
| view | No | Collection to inspect; default sheet. | |
| limit | No | Root records per page; default 20, reduced to fit budget. | |
| offset | No | Root collection offset; default zero. | |
| project | No | Existing ACF project; file paths stay inside its directory. | |
| workspace | No | Workspace scope when no project is given. | |
| childLimit | No | Items per nested collection; default 10, reduced to fit budget. | |
| childOffset | No | Offset in each nested pins/attributes/primitives collection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe-read profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real context the annotations do not: pagination semantics for root records and nested collections preserving offsets/counts, and that no compiler or GUI is required. It does not state return shape or error behavior, but the added pagination detail is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core verb, each carrying distinct information (what is decoded, operating requirements, paging model, and the connectivity caveat). Minor flourish in 'Strictly' and a slightly list-heavy first sentence, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex eight-parameter tool with no output schema, the description communicates scope, paging behavior, and a key semantic caveat (geometry != connectivity). It could go further on what the returned records look like or how the views differ, but it covers enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters including the view enum and the limit/offset/childLimit/childOffset paging fields. The description's mention of 'paginated root records and nested collections' corroborates the paging model but adds no syntax or defaults beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('strictly decode') and an explicit resource set (GDF/SYM v2..6 coordinates, wires/buses, symbol definitions, instances, pin positions, text anchors), which is far more informative than the title. It carves out a boundary by stating geometry does not prove connectivity and routing that need to netlist_export. It stops short of distinguishing itself from near siblings like gdf_inspect or gdf_connections, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is one genuine exclusion ('use netlist_export for circuit connections'), which is useful. However there is no guidance on when to choose this over gdf_inspect, gdf_symbol_library, or sym_inspect, or what scenario (original vs compiled schematic) warrants it. Usage is largely implied by the enumerated data types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_graphics_editCreate/edit all root schematic graphicsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| operations | Yes | Ordered changes; record offsets refer to the original input. Inspect again after applying. | |
| expectedSha256 | Yes | Current full file SHA-256 from a fresh inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/not-idempotent/not-read-only, so the safety profile is covered. The description goes further by disclosing preservation semantics ('original unknown flags/shared symbol definitions retained') and prerequisite workflow ('original offsets/current hash, preview and backup required'), which are genuine behavioral facts not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the primary action front-loaded and no wasted filler. Each clause either scopes the operation, prevents operator confusion (wires vs lines) or states a prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multi-operation tool, it covers the key risks: preservation of unknown data, hash-based concurrency, preview-then-apply, and re-inspection after applying. With 100% schema coverage and annotations covering safety, little is missing; only deeper detail on operation semantics and error behavior is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema carries the field-level detail. The description adds conceptual meaning for several parameters by tying offsets to the original input and calling out the current hash and preview/backup requirements, mapping loosely onto recordOffset, expectedSha256 and confirm.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (add/delete/resize/restyle) against a precise resource (root drawing lines, circles, arcs). It explicitly distinguishes itself from siblings by contrasting drawing lines with electrical wires and naming gdf_construct for connections, so an agent can route correctly without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names one explicit alternative and the condition that selects it: 'Use gdf_construct for connections.' Combined with the 'not electrical wires' caveat, this gives clear when-to-use guidance. It does not differentiate from other close siblings like gdf_geometry or gdf_edit, so it stops short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_inspectInspect a schematicARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Schematic to read: absolute, or relative to workspace. A missing .gdf extension is added automatically. | |
| workspace | No | Directory that a relative path is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| compareWith | No | Optional second schematic to compare against, reporting labels present in one but not the other. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds useful context beyond that: the read is strictly validated, the returned content is summarized rather than raw geometry, and connectivity is deliberately out of scope. It does not discuss limits or pagination behavior for this specific read, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence-pair, front-loaded with what is read before the sibling routing. No filler, though the middle clause packs four sibling disambiguations which makes it feel dense rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey what comes back; it does list the summary categories (labels, fonts, title fields, geometry counts) and notes connectivity must come from netlist_export. What it omits is the shape or size of that summary (e.g. counts vs. full lists), which leaves a small gap for a tool with no documented return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (path, workspace, compareWith) are already documented, including extension auto-append and workspace default resolution. The description only restates the compare behavior ('Optionally compare labels with another drawing'), adding no syntax or semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (strictly validated GDF/SYM schematic summary) and enumerates the payload: labels, fonts, title fields and geometry counts. It also names the sibling tools it is not (gdf_geometry, gdf_edit, netlist_export), so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: gdf_geometry for paginated original coordinates/instances/pin positions, gdf_edit for modifying existing v6 geometry, netlist_export for electrical connectivity. This covers both when-to-use-this and when-to-use-alternatives, with the deciding condition attached to each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_move_connectedMove or rotate symbols with checked reconnectionADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| edits | Yes | Explicit selected placements; offsets refer to current input. One entry per placement. | |
| confirm | No | Apply when true; default preview with no write. | |
| project | No | Existing ACF whose directory scopes the files. | |
| workspace | No | Workspace when no project is supplied. | |
| maxRouteSteps | No | Total bounded grid search expansions; default100000. | |
| expectedSha256 | Yes | Current full SHA-256 from fresh file inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and non-idempotent, and the description adds real value beyond them: refusal conditions, precondition that compilation/export/simulation exist, wire-splitting behavior, and hash/preview/backup transaction semantics. Strong disclosure of mutation consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and largely front-loaded, but the telegraphic fragment style ('Hash/preview/backup transaction', 'Bus bundles/unknown topology refused') sacrifices readability. Every clause carries information, yet the compression hurts comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex destructive mutation tool with no output schema, the description covers preconditions, refusals, wire behavior, and transaction semantics. Safety profile is covered by annotations. Fairly complete, though alternative tools are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description mentions orientation0..7, grid8, and the transaction model, adding marginal color but no syntax beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: move/rotate GDF6 placements on a grid with reconnection awareness. Distinguishes from gdf_edit/gdf_geometry siblings by emphasizing connectivity-preserving move. Title restates but description leads with the actual operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Refusal conditions (bus bundles, unknown topology, changed terminal partition) imply when the tool will not work, but there is no explicit guidance on when to use this versus gdf_edit, gdf_geometry, or gdf_wire_cleanup. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_pin_labelsInspect or clean overlapping pin labelsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| limit | No | Root items per collection; default 20, reduced to fit the result budget. | |
| offset | No | Offset in each root collection; default zero. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| childLimit | No | Items per nested collection; defaults to the requested root limit, reduced to fit the result budget. | |
| childOffset | No | Independent offset in each nested collection; default zero. | |
| expectedSha256 | No | Current full file SHA-256 from a fresh inspection. | |
| alignOverlappingRightPins | No | Also align colliding right-edge fixed-font pin labels inside the existing symbol; refuse if insufficient space. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, readOnlyHint=false): it discloses the inspect→preview→apply workflow, the backup on apply, the exact removal scope ('only exact visible duplicate free DOC, preserving native pin labels'), that alignment moves anchors only, and the refusal behavior when space is insufficient. It even states what the tool will NOT infer, giving strong boundary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five dense sentences, but each carries distinct information and the scope statement is front-loaded. Slightly jargon-heavy, but no sentence is redundant; it is appropriately sized for a dual-mode diagnostic/cleanup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, annotation-light mutation tool with no output schema, the description is largely complete: modes, apply/backup behavior, removal scope, and negative scope are all covered. It does not describe the inspection output shape, a minor gap given there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics on top: the meaning of omitting vs supplying expectedSha256, that confirm=true applies-with-backup, and that alignOverlappingRightPins only relocates right-edge label anchors. These interpretations help beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (inspect/clean) and resource (pin labels) scoped to GDF/SYM files, and names the exact phenomena it targets: 'pin/DOC duplicates and fixed-font same-row pin collisions.' This meaningfully differentiates it from generic siblings like gdf_text_format_inspect or gdf_symbol_refresh. It stops short of naming a sibling directly, keeping it out of 5 territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit mode-selection conditions: 'Omit expectedSha256 to inspect' vs 'Supply a fresh hash to preview cleanup; confirm=true applies with backup.' That is clear when-to-use-this-mode guidance. It does not, however, point to an alternative tool for cases outside its scope, so the alternatives clause is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_symbol_libraryRead original symbol prototypesARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional .sym path relative to max2lib, or absolute inside that library. | |
| root | No | MAX+PLUS II installation root; defaults to environment/detection. | |
| limit | No | Items per page; default 20, maximum 100. | |
| query | No | Literal case-insensitive substring of library-relative filenames. | |
| offset | No | File or pin/default-attribute page offset; default zero. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the 'Read-only' sentence is largely redundant. The description adds modest context: inspection preserves default instance/parameter attributes and hashes/original bytes are used for insertion independently of an agent SDK. That is useful but thin against an already-complete annotation set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the two capabilities (list vs. inspect) in one sentence, then the read-only fact and downstream-usage note. Efficient overall, though the 'independently of any agent SDK' clause is jargon that slightly dilutes the close.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully previews return content (hashes, names, pins, extent, preserved default attributes). All parameters are optional and fully schema-documented, so the definition is largely self-sufficient, though the hash-vs-'original bytes' distinction and downstream use remain a bit opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters in detail. The description only maps path loosely to 'inspect one prototype' and hints at pagination via 'List', adding no syntax or format detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs and resource: 'List installed max2lib SYM files' and 'inspect one prototype' with named fields (SHA-256, pins, extent, default attributes). The two modes are clearly distinguished by the path parameter. It does not name any sibling (e.g., sym_inspect or gdf_symbol_refresh) to differentiate, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the two usage modes (list all vs. inspect one via path), but never states when to use this tool over sym_inspect, gdf_symbol_refresh, or sym_create, nor any exclusion condition. Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_symbol_refreshUpdate embedded schematic symbols from SYMADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| root | No | Optional installed library root. | |
| limit | No | Root items per collection; default 20, reduced to fit the result budget. | |
| offset | No | Offset in each root collection; default zero. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| template | Yes | Workspace SYM or absolute installed max2lib SYM. | |
| selectors | Yes | Explicit selectors: exactly one original offset, definition index or instance name per entry. | |
| workspace | No | Workspace scope when project is absent. | |
| childLimit | No | Items per nested collection; defaults to the requested root limit, reduced to fit the result budget. | |
| childOffset | No | Independent offset in each nested collection; default zero. | |
| expectedSha256 | Yes | Current full file SHA-256 from a fresh inspection. | |
| templateSha256 | Yes | Current full file SHA-256 from a fresh inspection. | |
| allowDisconnected | No | Explicitly permit reported geometric contact changes; this does not prove electrical safety. | |
| allowInterfaceChanges | No | Explicitly permit reported pin name/direction/add/delete changes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/not-read-only/not-idempotent, but the description adds substantial behavior the annotations cannot: shared definitions are split so unselected instances retain original bytes, retained fields (instances/NET_ID/parameters/placement/rotation), and that pin/interface and geometric contact changes are reported and require explicit allow flags. It stops short of stating auth/rate/undo specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each carrying distinct information (mutation semantics, preservation guarantee, reporting/allow flags, verification path), with the primary action front-loaded. No filler, though the first sentence is slightly packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 15-parameter destructive mutation with no output schema, the description adequately covers the mutation, its preservation guarantees, the change-reporting/allow-flag contract and the verification expectation. Complete enough for correct invocation without explaining return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 15 parameters, and baseline is 3. The description adds only light cross-parameter meaning (hashing of templates implies the two SHA-256 checks; 'explicit allow flags' ties to allowDisconnected/allowInterfaceChanges) rather than new per-parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/action (preview or apply a hashed SYM) against a specific resource (explicitly selected GDF instances/embedded symbols). The 'refresh embedded symbols from SYM' intent is unambiguous, but it never names or contrasts a sibling such as sym_edit or gdf_symbol_library, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied ('explicitly selected GDF instances', preview default vs apply) and it adds a useful post-condition workflow ('Compile/export/simulate to prove actual connectivity'). However there is no explicit when-to-use-this-vs-alternative guidance compared with the many nearby edit tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_text_editEdit all root annotation text fieldsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| operations | Yes | Ordered changes; record offsets refer to the original input. Inspect again after applying. | |
| expectedSha256 | Yes | Current full file SHA-256 from a fresh inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: preservation of font/metrics/alternative text/opaque bits, refusal of certain label types, original-offset semantics for sequential operations, and printable Latin-1 restriction. Complements destructiveHint without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight, front-loaded sentences that each earn their place: purpose, preservation, exclusion, ordering, encoding. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no output schema, the description covers scope, side effects, ordering, and encoding constraints. Minor gap: destructive behavior and confirmation/preview semantics are left to annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description reinforces offset semantics but adds no parameter syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (create, reposition, restyle, delete) and resource (root free DOC annotations), distinguishing it from siblings like gdf_geometry or gdf_declarations. Lacks explicit contrast with closest siblings such as gdf_text_format_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage through scope constraints ('root free DOC annotations', 'refuses electrical labels or instance/pin text') but gives no explicit when-to-use guidance or named alternative tools for those excluded cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_text_format_editEdit root DOC fonts, metrics and encoded textADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| confirm | No | Apply when true; default preview with no write. | |
| project | No | Existing ACF whose directory scopes the files. | |
| workspace | No | Workspace when no project is supplied. | |
| operations | Yes | Ordered changes use original offsets. Only free root DOC text is writable. | |
| expectedSha256 | Yes | Current full SHA-256 from fresh file inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a destructive, non-read-only, non-idempotent write, so the safety bar is partly met structurally. The description adds real behavioral context: it preserves electrical labels, shared definitions and opaque tails, states the encoding is exact/reversible for Chinese bytes, notes Chinese requires a Windows font, and recommends verifying glyphs in the original editor. It does not describe write ordering/failure behavior on a SHA mismatch, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the scope/verb and then the encoding constraints; essentially no filler. Density of jargon makes it slightly harder to scan but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, destructive, no-output-schema edit tool this covers scope, alternatives of font selection, encoding rules, preservation guarantees and a verification recommendation. Remaining gaps (error/precondition behavior around expectedSha256, relationship to gdf_text_format_inspect workflow) are minor given annotations cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so schema already documents syntax and defaults (baseline 3). The description adds cross-parameter meaning not present in the schema — that Chinese bytes in Windows-936 require a Windows font face — and reinforces width/height as explicit glyph/layout metrics rather than font size.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Create/change only free root DOC text in GDF6 or standalone SYM2..6' — plus the font/metrics scope, which is more precise than the title alone. The scope restriction ('only free root DOC text', 'Preserves electrical labels...') helps separate it from broader edit tools, but it never names or contrasts with the close siblings gdf_text_edit and gdf_text_format_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the scope constraint and the choices offered ('built-in font0..3 or Windows font face,size', 'Verify glyphs with original editor'), which tells the agent the intended operation shape. However, there is no explicit when-to-use vs gdf_text_edit / gdf_text_format_inspect guidance or prerequisite statement (e.g., run inspect first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_text_format_inspectInspect native fonts and explicitly decoded textARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| limit | No | Items per root collection; default20, reduced to fit the response budget. | |
| offset | No | Offset in each root collection; default0. | |
| project | No | Existing ACF whose directory scopes the files. | |
| encoding | No | Explicit original byte encoding. The GDF/SYM has no encoding marker; default latin1. | |
| workspace | No | Workspace when no project is supplied. | |
| childLimit | No | Items per nested detail collection; defaults to root limit. | |
| childOffset | No | Independent offset in each nested detail collection; default0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds real value beyond them: explicit latin1/windows-936 decoding with 'no guessed encoding' and malformed-encoding diagnostics. This tells the agent how results are produced and what edge cases surface. It stops short of describing output shape or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences front-loaded with the inspected artifacts before the decoding and diagnostics notes. Dense but no wasted phrasing; the semicolon-packed second sentence is slightly terse but earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter read tool with no output schema, the description names the returned categories (records, font strings, codes, metrics, raw bytes) and flags pagination plus malformed-encoding diagnostics. Adequate, though it does not explain result structure or the project/workspace scoping tradeoff.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all eight parameters (including the encoding enum and pagination) are already documented in the schema. The description reinforces the decoding choice and pagination but adds no syntax or meaning beyond the structured fields, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Inspect) and clearly enumerates the resources: GDF/SYM q records, original font strings, built-in font codes, stored metrics, and raw text bytes. This distinguishes it well from generic gdf_inspect, though it never names the edit counterparts (gdf_text_format_edit) as its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what is inspected but never states when to prefer this over gdf_inspect, sym_inspect, or the text edit tools, nor any prerequisites. The agent gets no routing guidance despite a crowded sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdf_wire_cleanupPrune checked anonymous wire tailsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the selected scope. | |
| confirm | No | Apply when true; default preview without writing. | |
| project | No | Existing ACF whose directory scopes files. | |
| maxPasses | No | Maximum leaf-peeling rounds, default1000. | |
| workspace | No | Workspace scope when no project is selected. | |
| expectedSha256 | Yes | Current full GDF SHA-256 from a fresh inspection. | |
| maxComparisons | No | Fixed-cap cleanup comparison budget, default4000000; caller may lower it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive=true and idempotent=false, and the description meaningfully adds to that: it enumerates exactly what is destroyed (unannotated leaves only) versus what survives (named wires, pins, isolated nets, overlapping conductors), and discloses refusal and compile/simulate/backup behavior. This is real depth beyond the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the removal scope leads, followed by preservation, invariants, refusal, and transaction semantics in tight sentences. No filler, though the telegraphic phrasing borders on terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent mutation with no output schema, the definition covers the destructive surface, safeguards (preview/backup/fresh hash), and refusal boundaries. Return values need no explanation absent an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so path, confirm, expectedSha256, maxPasses, maxComparisons, project and workspace are already fully documented. The description gestures at the budget and hash (via 'fresh hash', 'exceeded budgets') but adds no syntax or format detail beyond the schema, which is the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove') and a tightly scoped resource ('unannotated electrical leaf segments in GDF6 pin-bearing physical nets'), which cleanly separates it from gdf_edit and gdf_construct. The jargon is heavy but the intent is unambiguous to a domain agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Remove only...' scoping and the preserve list implicitly tell the agent when this is appropriate, and the refusal conditions (unknown topology, exceeded budgets) bound its use. However, it never names an alternative tool or an explicit when-not condition, so routing versus siblings like gdf_edit remains inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
installation_statusInstallation statusARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Installation root, e.g. C:\maxplus2. Defaults to MAXPLUS2_ROOT or common paths. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful context beyond that by naming the executables it locates and the specific information it reports from maxplus2.ini and bundled tools, though it does not discuss failure modes or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single tight sentence front-loaded with the primary action and scope. Every clause adds specific, non-redundant information, and the trailing 'Read-only' note is short and clearly framed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations and no output schema, the description adequately summarizes the return information an agent can expect. It does not elaborate on the optional root parameter or error cases, but the schema covers parameter semantics and the annotations cover safety, making the description nearly complete for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single optional 'root' parameter is fully documented in the schema, including default behavior. The description adds no additional meaning about this parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource pattern ('locate the MAX+PLUS II installation') and details what is reported (version info, device families, bundled tools). It clearly identifies the tool's focus, though it does not explicitly contrast itself with nearby siblings such as capability_matrix or probe_executable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does and notes that it is read-only, but gives no guidance on when to use it versus alternatives. It does not mention prerequisites, context, or sibling tools that might also report environment or capability information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_cancelCancel a background jobADestructiveIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The jobId to terminate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses what is destroyed (child process), what is preserved (build artifacts already written), what happens if you don't call it (abandoned job keeps running and holding the project directory), and that the action is not reversible. This is consistent with destructiveHint=true and adds real operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and mechanism, followed by the usage rule and the consequence caveat. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with annotations covering safety profile and no output schema, the description supplies everything needed: what it does, why to prefer it, and the side-effect boundary. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (jobId) and schema description coverage is 100%, so the schema already documents it fully. The description adds no format, source, or id-acquisition guidance beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Terminate a running background job by killing its child process' — with the mechanism included. An agent can immediately distinguish this from job_status or any of the project/file editing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('Use this rather than abandoning a job') and explains why the alternative is bad. It does not name a sibling tool (e.g. job_status) as the counterpoint, so routing is slightly inferential, but the condition that selects this tool is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusCheck a background jobARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | Yes | The jobId returned when the job was started with async:true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new operational facts: the returned status set, elapsed time, live child-process count, and a 30-minute post-settlement retention window. It also explains the non-obvious semantic that a client timeout does not stop the underlying work, which is exactly the kind of behavior an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the action, then the rationale, then return contents, then retention. Every sentence carries distinct information and nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return-value burden by enumerating the status values and describing what accompanies them. For a one-parameter read tool, the retention window and timeout semantics close the remaining gaps an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single jobId parameter is already documented there as 'the jobId returned when the job was started with async:true.' The description restates the async:true provenance but adds no format, lifecycle, or error semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Poll a background job started with async:true') and immediately scopes it to async-started jobs, which cleanly separates it from job_cancel and the synchronous plan/run siblings. An agent can tell what this returns (running/done/failed/cancelled plus timing and child-process counts) without opening anything else.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use ('started with async:true') and a rationale that functions as a when-to-use rule: polling is the only way to retain a long compile after a client timeout. It stops short of naming job_cancel as the alternative for stopping work, so the routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsBRead-onlyIdempotent
Recursively find .acf projects under a root directory and list the artifacts already compiled for each. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Directory to scan. Defaults to MAXPLUS2_WORKSPACE or the server cwd. | |
| limit | No | Maximum projects to return (default 500). | |
| maxDepth | No | Recursion depth limit (default 6). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the trailing 'Read-only' largely restates structured data. The description does add a behavioral detail beyond the annotations, namely that discovery is recursive and that per-project compiled artifacts are surfaced, but says nothing about ordering, truncation behavior when limit is hit, or scan cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the safety note as a brief trailing clause. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does need to convey what comes back, and it does so at a high level (each project's already-compiled artifacts). Defaults and parameter semantics live in the schema, so nothing critical is missing, though a hint about result shape or ordering would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so root, limit and maxDepth are already fully documented with defaults. The description corroborates 'root directory' and the recursive nature (maxDepth) but adds no syntax, format, or edge-case meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: recursively find .acf projects under a root and list compiled artifacts per project. That is distinguishable from generic sibling tools like project_files or project_inspect in spirit, but it never names or contrasts with those siblings explicitly, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives among the many project-related siblings (project_inspect, project_files, project_search). The only usage signal is implicit in the scanning behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maxplus2_planPlan a maxplus2 runARead-onlyIdempotent
Build the exact maxplus2.exe command line for compile / timing analysis / simulation / object conversion, WITHOUT running it.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for the child process. Defaults to the project directory, which is where MAX+PLUS II expects to run. | |
| root | No | MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths. | |
| taReg | No | Timing Analyzer, Registered Performance (-ta_reg). | |
| outHex | No | HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex. | |
| outJ11 | No | HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex. | |
| outJam | No | JAM STAPL output (-jam). REJECTED by this build. | |
| outJb1 | No | JBC 1.0 output (-jb1). REJECTED by this build. | |
| outJbc | No | JBC 2.0 output (-jbc). REJECTED by this build. | |
| outPof | No | POF output (-pof). REJECTED by this build, but compiling writes <project>.pof anyway. | |
| outRbf | No | RBF output (-rbf). REJECTED by this build. | |
| outSbf | No | SBF output (-sbf). REJECTED by this build. | |
| outSvf | No | SVF output (-svf). REJECTED by this build, so this installation cannot derive a JTAG programming file. | |
| outTtf | No | TTF output file (-ttf). REJECTED by this build; compiling writes <project>.ttf. | |
| simCmd | No | Simulator command file (-cmd). REJECTED by this build. | |
| simHst | No | Simulator command file (-cmd). REJECTED by this build. | |
| simScf | No | Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run. | |
| simTbl | No | Where to write the simulator result table. Plain text, and what verification reads back. | |
| simVec | No | Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run. | |
| compile | No | Run the Compiler (-c). | |
| convert | No | Convert object files (-convert). | |
| project | Yes | 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 | No | Back up/move matching top and numbered hierarchy CNF before compile to force source extraction (default true); false requests native incremental reuse. | |
| taDelay | No | Timing Analyzer, Delay Matrix (-ta_delay). | |
| taSetup | No | Timing Analyzer, Setup/Hold (-ta_setup). | |
| simulate | No | Run the Simulator (-s). | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| ignoreErrors | No | Continue past errors (-i). | |
| timingAnalyzerOutput | No | -tao file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description still adds genuine value by clarifying that the output is the constructed command line itself, not side effects. It doesn't mention validation errors or what the returned plan looks like, but annotations carry most of the burden here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence, front-loaded with the verb and resource, and the key non-execution constraint is stated immediately. No waste, though the very terse style leaves no room for additional orientation that a 28-param tool might benefit from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 28 parameters, no output schema, and a sibling apply/run tool, the description covers the core non-execution behavior but says nothing about what the returned plan is, whether it validates inputs, or how it relates to maxplus2_run/setacf_plan/job_status in a workflow. Adequate given full schema coverage and annotations, but thin for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema does the heavy lifting and baseline is 3. The description's explicit framing of the mode categories (compile / timing analysis / simulation / object conversion) helps an agent mentally group the 28 parameters, adding real orientation value beyond the flat schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (build the command line), resource (maxplus2.exe), and critically distinguishes itself from the sibling maxplus2_run by emphasizing 'WITHOUT running it.' That is exactly the distinction an agent needs to choose between plan and run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the plan-vs-execute distinction clear through the phrase 'WITHOUT running it,' and the sibling maxplus2_run is implied as the alternative. It doesn't explicitly name maxplus2_run nor lay out when planning is preferred over direct execution, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
maxplus2_runRun maxplus2A
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for the child process. Defaults to the project directory, which is where MAX+PLUS II expects to run. | |
| root | No | MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths. | |
| async | No | 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 blocking call that is abandoned keeps running with nobody holding the result. Poll with job_status. | |
| taReg | No | Run the Timing Analyzer in Registered Performance mode (-ta_reg). | |
| outHex | No | HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex. | |
| outJ11 | No | HEX output (-hex). REJECTED by this build; compiling already writes <project>.hex. | |
| outJam | No | JAM STAPL output (-jam). REJECTED by this build. | |
| outJb1 | No | JBC 1.0 output (-jb1). REJECTED by this build. | |
| outJbc | No | JBC 2.0 output (-jbc). REJECTED by this build. | |
| outPof | No | POF output (-pof). REJECTED by this build, but compiling writes <project>.pof anyway. | |
| outRbf | No | RBF output (-rbf). REJECTED by this build. | |
| outSbf | No | SBF output (-sbf). REJECTED by this build. | |
| outSvf | No | SVF output (-svf). REJECTED by this build, so this installation cannot derive a JTAG programming file. | |
| outTtf | No | TTF output file (-ttf). REJECTED by this build; compiling writes <project>.ttf. | |
| simCmd | No | Simulator command file (-cmd). REJECTED by this build. | |
| simHst | No | Simulator command file (-cmd). REJECTED by this build. | |
| simScf | No | Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run. | |
| simTbl | No | Where to write the simulator result table. Plain text, and what verification reads back. | |
| simVec | No | Stimulus file. A .vec is converted by the Simulator; END_TIME must be 0.0ns for that to span the run. | |
| compile | No | Run the Compiler (-c). This also writes the .pof, .rpt and .pin artifacts. | |
| convert | No | Convert object files (-convert). | |
| project | Yes | 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 | No | Back up/move matching top and numbered hierarchy CNF before compile to force source extraction (default true); false requests native incremental reuse. | |
| taDelay | No | Run the Timing Analyzer in Delay Matrix mode (-ta_delay). | |
| taSetup | No | Run the Timing Analyzer in Setup/Hold Matrix mode (-ta_setup). | |
| simulate | No | Run the Simulator (-s). Requires stimulus: pass simScf, or leave a .scf or a matching .vec next to the project. | |
| timeoutMs | No | Hard timeout, default 900000 (15 min). | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| ignoreErrors | No | Continue past errors (-i). Use when you want every diagnostic from one run rather than stopping at the first failure. | |
| timingAnalyzerOutput | No | File for Timing Analyzer output. Each analysis mode is emitted with its own -tao, so multiple modes cannot overwrite one file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish it is not read-only and not idempotent, but the description adds materially beyond them: a hard timeout, the fact that it reports which artifacts changed plus a parsed report summary, and the significant warning that the 2002-era Win32 process can block on modal dialogs. That blocking risk is exactly the kind of behavioral trait an agent needs and cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and the modes, followed by the reporting behavior and the risk warning. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 30-parameter, non-idempotent execution tool with no output schema, the description covers purpose, output reporting, timeout, and a critical failure mode. The remaining gap is routing context against sibling tools, which keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already annotates all 30 parameters thoroughly (including per-flag notes like 'REJECTED by this build'). The description adds no parameter-level meaning of its own, which is acceptable at full coverage but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Execute) and resource (maxplus2.exe), enumerates the four modes (compile/simulate/timing/convert), and states the reporting behavior (artifacts changed + parsed report summary). It is unambiguous what the tool does, though it never explicitly contrasts itself with the similar-looking siblings maxplus2_plan or simulate_and_verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use/when-not guidance relative to siblings like maxplus2_plan, probe_executable, or simulate_and_verify. The only caveat offered is the modal-dialog warning, which is a risk note rather than routing guidance. The useful async guidance ('a client timeout does NOT stop the child process') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_writeWrite a ROM/RAM memory imageA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| depth | Yes | Number of memory addresses. | |
| width | Yes | Word width in bits. | |
| values | Yes | Address-zero-first unsigned values. Large values use decimal, 0x-prefixed hex or 0b-prefixed binary strings. | |
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| defaultValue | No | Value for remaining addresses, default 0. | |
| expectedSha256 | No | Existing MIF SHA-256 if replacing a file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a non-read-only, non-destructive, non-idempotent write, so the safety profile is covered. The description adds genuine behavioral context beyond that: that apply mode performs hash checking and creates backups, that unused addresses are initialized, and that a dry-run preview is returned when confirm is false. It does not describe failure behavior or rate/scope constraints, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the verb and resource front-loaded. The middle sentence about integer strings for arbitrary widths is slightly cryptic and could be read as conflicting with width being an integer, but overall there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-writing tool with no output schema, the description does explain what is returned in preview mode and that apply is guarded by hash checking and backups. It is nearly complete for an agent to invoke correctly; only edge-case behavior (overwrite conflicts, error returns) is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents all nine parameters in detail. The description adds marginal semantic value by tying 'initialized unused addresses' to the defaultValue parameter and noting that width/depth are explicit rather than inferred, though the 'integer strings' remark largely restates the values schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (Intel/Altera MIF memory image), and the description of explicit WIDTH/DEPTH and initialization makes it clear this produces a memory-init file rather than a stimulus or netlist artifact. It does not name a sibling tool to differentiate from, but the resource is concrete enough to disambiguate from stimulus_write or project_edit_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Preview or apply to a .mif with hash checking/backups' implies a preview-then-apply workflow, which is useful guidance, but there is no explicit statement of when to choose this tool over stimulus_write or project_edit_file, and no stated prerequisites beyond the schema's project/workspace scoping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
netlist_exportExport circuit connectivity with the original compilerA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Source file relative to the project/workspace; absolute paths must remain within that scope. | |
| root | No | MAX+plus II installation root, default MAXPLUS2_ROOT/discovery. | |
| async | No | Return jobId immediately; poll job_status or stop with job_cancel. | |
| project | No | Existing ACF project to scope file paths to its directory. | |
| timeoutMs | No | Compiler timeout; default 60000 milliseconds. | |
| workspace | No | Workspace scope when project is omitted; defaults to MAXPLUS2_WORKSPACE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that work happens in a fresh temporary directory, that original files remain untouched, what is returned (source hashes, compiler evidence, exported files), that the netlist is synthesized logic with possible placement/identity changes, and that async/cancel are supported. The untouched-original-files claim is consistent with destructiveHint=false, though it does not explicitly reconcile non-idempotent repeated compiles. Since annotations are present, the bar is lower and this adds substantial context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core action and followed by return values and caveats. Every sentence carries information, though the enumeration of return artefacts and caveats is somewhat packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description enumerates return values, discloses the temp-directory mutation strategy, async/cancellation behavior, and the synthesized-logic caveat. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including path scoping, root, async, project, workspace, and timeout. The description only gestures at async/cancellation and adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain (copy, enable writers, compile) and the exact resource produced (structured port/instance/net connectivity). The mention of GDF/HDL/ACF/EDIF inputs and the original MAX+plus II writers clearly separates it from siblings like maxplus2_run or gdf_connections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: it is the tool that yields structured netlist connectivity, and it notes async jobs/cancellation, which hints at the async parameter. However, it never names when to prefer this over maxplus2_run or a plain compile, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_reportParse a reportBRead-onlyIdempotent
Parse a MAX+PLUS II .rpt / .summary / .pin file into structured severity counts, statuses, device, and diagnostics. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Explicit report path (absolute, or relative to workspace). | |
| project | No | Project name; uses its .rpt. Optional if path is given. | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| maxDiagnostics | No | Cap on returned diagnostics (default 200). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the trailing 'Read-only.' restates structured data rather than adding to it. What the description does add beyond annotations is the nature of the returned content (severity counts, statuses, device, diagnostics), which is useful given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb and file types, with no filler. The trailing 'Read-only.' is redundant with the annotations and could be dropped, but the overall size is proportionate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what the parser returns (severity counts, statuses, device, diagnostics), which is the main thing an agent needs to know. For a zero-required-parameter read tool with full schema coverage and complete annotations, this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (path, project, workspace, maxDiagnostics) are already documented, including the 'optional if path is given' relationship and defaults. The description adds no syntax, format, or fallback detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (Parse) and the exact resource types (.rpt/.summary/.pin) plus the shape of the result (severity counts, statuses, device, diagnostics). It is clear what it does, though it does not differentiate itself from the sibling parse_tbl or explain why an agent would choose one parser over the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the many neighboring read/parse/inspect tools (parse_tbl, project_parse_file, project_inspect). The only usage-adjacent statement is 'Read-only', which is a safety note rather than a routing rule, so the agent must infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_tblParse result tableARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Return every row. | |
| path | No | Explicit .tbl path. | |
| limit | No | Max trace rows to return (default 40). | |
| expect | No | Expected values as { "<time>": { "<SIGNAL>": value } }. Values may be numbers or hex strings. A mismatch is reported, not thrown. | |
| project | No | Project name; uses its <project>.tbl. Optional if path is given. | |
| tolerance | No | Time tolerance, in the table's own unit, when matching an expectation to a simulation row. Default 0.05. | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the trailing 'Read-only' largely restates it. The description does add one genuine behavioral trait: optional expected-value checking against the trace, though the mismatch-is-reported-not-thrown detail lives in the schema rather than here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the core action, the input artifact and the output shape front-loaded, plus a two-word safety tag. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by characterizing the return value as a time-indexed trace of inputs, outputs and buried nodes. It omits error behavior for a missing or malformed .tbl file and the interaction between full and limit, which is a minor gap given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the nested expect object and tolerance already carries its own documentation; the baseline is 3. The description only echoes this by mentioning 'optional expected-value checking' and adds no formatting or resolution detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Parse) and resource (MAX+PLUS II Simulator result table, .tbl) and describes the shape of the result: a time-indexed trace of inputs, outputs and buried nodes. This is clearly distinguishable from sibling tools like parse_report and project_parse_file, which target different artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The file-type scoping ('an existing ... result table (.tbl)') implies when the tool applies, but there is no explicit guidance on when to prefer it over parse_report, project_parse_file, or simulate_and_verify, and no stated prerequisites such as a completed simulation run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_executableProbe the executableAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for the child process. Defaults to the project directory, which is where MAX+PLUS II expects to run. | |
| mode | No | Which probe to run (default version). | |
| root | No | MAX+PLUS II install root. | |
| timeoutMs | No | Hard timeout, default 60000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description asserts 'Read-only,' while the annotations declare readOnlyHint=false — a direct contradiction of a declared safety property, which the rubric treats as a score of 1. The valuable behavioral detail it does add (the binary can block forever on a modal dialog, and the probe is idempotent per the annotation) is undercut by the conflicting safety claim, which could lead an agent to skip the timeoutMs guard.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, and the operative command and the pre-flight rule are front-loaded, which is good structure. However, the middle sentence ('Read-only and project-independent') is both the source of the annotation conflict and less load-bearing than the timeout/modal-dialog warning that follows it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, zero-required probe with no output schema, the definition covers the invocation, the working-directory expectation, the failure mode it exists to catch, and the default timeout. The remaining gap is what a successful probe yields back to the agent (version string vs. exit status), which matters for deciding whether to proceed to a compile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not carry: why cwd matters (MAX+PLUS II expects to run in the project directory) and that mode maps to the -v/-h flags. It does not explain what distinguishes the version and help probes behaviorally, but the extra project-layout context is real value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and the exact underlying command: run `maxplus2 -v` (or -h) to verify the binary starts and returns. It also distinguishes scope ('project-independent') and separates itself from the compile-loop siblings like maxplus2_run by positioning itself as the prerequisite gate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear conditional trigger: 'Run this before trusting any headless compile loop,' with a rationale (blocking on a modal dialog) that tells the agent when the probe is worth the call. It stops short of naming the alternatives it should precede or stating when it is unnecessary, so it falls just under a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_cloneClone a project for isolated workA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| profile | No | Default all. sources copies ACF/GDF/SYM/HDL/INC/MIF/HEX/EDIF/ASM, while excluding other files unless named in includePaths. | |
| project | Yes | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| directory | Yes | New destination directory under workspace. Must not already exist or be inside the source directory. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| includePaths | No | Explicit files to retain, e.g. a stimulus SCF/VEC or memory asset with an unusual extension. Each must exist within the source directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond annotations: SHA-256 verification of each copied file, 'Preserves originals', 'excludes backup stores', and the caveat that it does not infer external hierarchy dependencies. This is consistent with destructiveHint=false and adds meaningful edge-case disclosure, though it omits failure/rollback behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and reasonably tight at three sentences. Minor awkwardness from the telegraphic 'Default all;' fragment, but no wasted content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a clone tool with no output schema and fully documented params, the description covers the copy semantics, integrity checking, exclusions, and required follow-up steps. It does not describe the return/preview payload, but otherwise an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so the schema fully documents all six parameters. The description restates the profile enum behavior (already in schema) and adds only the 'avoiding old SCF/TBL/reports' rationale, which is marginal added value. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Copy the project directory into a new directory'. An agent can immediately distinguish this from sibling project_create or project_restore_file because the copy-into-new-directory behavior is stated up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains profile selection ('Default all; sources selects design extensions ... avoiding old SCF/TBL/reports in large projects') and suggests a follow-up workflow ('inspect and compile the copy'). Clear context, but it never explicitly states when NOT to use this tool or names an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_createCreate a MAX+plus II projectA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project/HDL top identifier, for example demo. | |
| device | No | Optional installed device name, for example EP1K10TC100-1. | |
| source | No | Optional complete HDL text for the top design. | |
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| encoding | No | File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files. | |
| directory | No | New directory relative to the workspace, defaulting to the project name. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| sourceExtension | No | Top source extension; defaults to .vhd. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readonly, non-destructive, non-idempotent behavior. The description adds useful context beyond that: it previews by default, refuses existing directories, creates an isolated directory, and sets END_TIME=0.0ns. It does not cover authorization or rate limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence front-loads the creation action and artifact, and the second quickly covers default preview, refusal behavior, and the one-directory-per-design rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter creation tool with no output schema, the description adequately covers the key novel behaviors: preview default, refusal on existing directories, and the one-design-per-directory constraint. It could still say more about the non-idempotent nature or how the preview result should be consumed, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters, including confirm, encoding, directory, workspace, device, and sourceExtension. The description adds only marginal parameter meaning (optional HDL source, isolated directory) and mentions END_TIME=0.0ns, which is not a parameter. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (Create) and the resource (an isolated directory with a named CHIP .acf, optional HDL source) and mentions a constraint (END_TIME=0.0ns). It clearly tells the agent what artifact is produced, but it does not explicitly differentiate itself from sibling creation tools like project_clone or project_restore_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives behavioral context — preview by default, refuse existing directories, one directory per design — which implies how to use the tool. However, it does not state when to choose project_create over alternatives such as project_clone or project_restore_file, so the guidance is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_edit_fileEdit or manage a project fileADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| edits | No | Sequential exact text replacements for patch. Each replacement must match exactly occurrences times. | |
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| content | No | Complete new text for write. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| encoding | No | File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files. | |
| operation | No | Single operation to preview/apply. Defaults to write. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| destination | No | New path inside the scope for copy/move. Existing destinations are refused. | |
| expectedSha256 | No | SHA-256 from project_read_file or another verified read; mandatory for an existing source file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is partly covered; the description still adds material non-annotated behavior: preview-by-default semantics, the mandatory expectedSha256 concurrency guard for existing files, recoverable backups on writes/moves/deletes, and the binary-write refusal. Nothing here contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the operation set, then the default behavior, then the constraints and sibling routing. No filler and no repetition of the title or schema field text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter mutation tool with no output schema, the description covers the important preconditions (SHA check, backup, preview) and the escape hatches (scf_edit, desktop tools). The gap is the return surface: with no output schema, the shape of a preview versus an applied result is left implicit, which is the one thing an agent cannot infer elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot: preview behavior is governed by confirm (default off), expectedSha256 is mandatory only for existing source files, and backups apply per operation type. It does not, however, add distinctions between write vs patch payloads beyond the schema's own field docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names the specific resource (one file) and enumerates the five concrete operations (write, exact-patch, copy, move, delete), so an agent can distinguish it from project_create, project_clone, or project_restore_file. It also explicitly separates itself from scf_edit and the desktop/GDF tools, which is exactly the differentiation a sibling-heavy tool needs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives affirmative conditions (preview by default; existing files need expectedSha256) and negative routing rules: general binary writes are refused, SCF scalar inputs belong in scf_edit, GDF drawing changes belong in desktop tools. This is explicit when-to-use / when-not-to-use / alternative guidance rather than implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_filesList project filesARead-onlyIdempotent
List sources, memories, schematics, waveforms and build artifacts under the selected project/workspace. Deterministic offset pagination, byte sizes and supported text formats are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of files to return; default 200. | |
| offset | No | Zero-based pagination offset. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the description is not burdened with the safety profile. It still adds real value by disclosing deterministic offset pagination and that byte sizes and supported text formats are returned — behavioral detail beyond the structured fields, and important given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the what-it-lists information is front-loaded and the pagination/return details follow immediately. Every clause carries information the agent can use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and no output schema, the description usefully characterizes the return payload (byte sizes, supported text formats, paginated offsets). It stops short of describing result shape or whether listing is recursive, which leaves a small gap for a tool whose output shape is otherwise undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (limit, offset, project, workspace all documented inline), so the baseline is 3. The description only restates the project/workspace scoping and mentions pagination generically, adding no syntax, defaults, or format guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (List) plus resource (project files) with an explicit enumeration of the file categories covered (sources, memories, schematics, waveforms, build artifacts) and the scoping context (selected project/workspace). It does not, however, differentiate itself from close siblings such as project_search or project_read_file, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the name and the phrase 'under the selected project/workspace' — the agent can infer this is the enumeration tool versus a content-search or single-file reader. There is no explicit guidance on when to prefer it over project_search or list_projects, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_inspectInspect projectARead-onlyIdempotent
Summarize one project: .acf sections, CHIP blocks, device, pin count, compiled artifacts with timestamps, and the cleanliness of the last .rpt. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| project | Yes | Project name (e.g. "top") or absolute path to a .acf. | |
| workspace | No | Directory to resolve relative project names against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so 'Read-only' is largely redundant with structured data. The description does add value by naming what is inspected (compiled artifacts with timestamps, .rpt cleanliness), giving a sense of the operation's scope, but it discloses nothing about cost, failure modes, or behavior when the project is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and resource, then compresses the inspection contents into a tight list ending with the read-only note. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does so by enumerating the summarized artifacts, which is adequate for an inspect tool. Safety is covered by annotations. Minor gaps remain around error/precondition handling, but nothing essential to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'project' (name or .acf path) and 'workspace' (resolution directory) are fully documented in the schema. The description adds no parameter-level detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (summarize/inspect) and resource (one project), and enumerates the concrete contents returned: .acf sections, CHIP blocks, device, pin count, compiled artifacts, and .rpt cleanliness. It is clearly distinct from list_projects and the various editors, though it never explicitly contrasts itself with siblings like acf_read_sections or scf_inspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'one project' implicitly signals single-project use as opposed to list_projects, and the enumeration of coverage hints at what questions it answers. However, there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. acf_read_sections for section-only reads), leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_parse_fileParse design and waveform files directlyARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| net | No | Optional exact EDIF net identifier/name to inspect its connections. | |
| cell | No | Optional EDIF library/cell identifier for inspecting a hierarchical cell; defaults to the top design. | |
| path | Yes | Source file relative to the project/workspace; absolute paths must remain within that scope. | |
| limit | No | 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. | |
| format | No | Default auto detects the file extension; explicit formats still validate their content. | |
| offset | No | Zero-based item/event page offset, default 0. | |
| signal | No | Optional exact SCF signal or display bus name. | |
| endTime | No | SCF time-range end in ns; default entire duration. | |
| project | No | Existing ACF project to scope file paths to its directory. | |
| startTime | No | SCF time-range start in ns, default 0. | |
| workspace | No | Workspace scope when project is omitted; defaults to MAXPLUS2_WORKSPACE. | |
| signalLimit | No | Maximum SCF signals per page; default 5. Use nextSignalOffset to continue. | |
| signalOffset | No | Zero-based SCF signal page offset; default 0. | |
| endpointLimit | No | Maximum endpoints per EDIF net, default 20; use nextEndpointOffset to continue. | |
| endpointOffset | No | Zero-based endpoint offset within each EDIF net. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real value beyond that: it discloses the returned artifacts (original path, bytes, SHA-256) and the presence of 'explicit limitations', which is meaningful output behavior given no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: what it parses, what it returns, and which siblings to prefer instead. Front-loaded with the highest-value information and no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter multi-format parser with no output schema, the description covers formats, return metadata, limitations, and sibling alternatives. It does not map which parameters apply to which format, but the 100%-covered schema carries that burden, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 15 parameters, so the schema already documents pagination limits, time ranges, and format enum semantics in detail. The description adds only the passing hint of 'events in ns' and the paginated-symbols reference; with the schema doing the heavy lifting, baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parsing) and enumerates the exact resource classes it handles: GDF text/geometry, SCF logic events, ACF assignments, TBL traces, reports and EDIF connections. It also names sibling tools (gdf_geometry, netlist_export) and the cases they own, so an agent can separate this general parser from format-specific tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes two cases to alternatives ('Use gdf_geometry for paginated symbol definitions/placements and netlist_export for GDF circuit connections'), which is strong when-not guidance. It never states the positive trigger condition in so many words, so the 'when to use this' half is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_read_fileRead a project text fileBRead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| encoding | No | File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files. | |
| lineCount | No | Maximum lines to return; default 200. | |
| startLine | No | First one-based line to read; default 1. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description usefully adds that reads are bounded and return a SHA-256, but the 'expectedSha256 to avoid overwriting concurrent edits' phrase imports a write-protection concept into a read-only tool and references an absent parameter, muddying rather than clarifying behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core read action and file scope. However, the second sentence is spent on two parameters that do not exist in the schema, which is wasted and misleading content rather than earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with a fully documented 6-parameter schema and no output schema, the description covers the essentials (bounded reads, SHA-256 return). But its references to non-existent continuation and concurrency parameters leave an agent unable to reconcile the description with the actual interface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all six parameters are well documented in the schema itself, so the schema carries the semantic load. The description adds no parameter detail and instead names two parameters (nextLine, expectedSha256) that are not in the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Read) and resource (a bounded line range plus exact SHA-256) and enumerates the supported file types (HDL, ACF, MIF, HEX, VEC, reports). This lets an agent distinguish it from mutation siblings like project_edit_file, though it never names an alternative tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a small amount of usage context ('Use nextLine to continue and expectedSha256 to avoid overwriting concurrent edits'), but neither nextLine nor expectedSha256 exists in the schema, so the guidance points at non-existent parameters. There is no statement of when to choose this over project_files, project_parse_file, or project_edit_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_restore_fileRestore backed-up project bytesADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| backup | Yes | Backup path returned by an earlier mutation, inside this scope .mcp-backups directory. | |
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| backupSha256 | Yes | SHA-256 of the backup, equal to previousSha256 from the original change. | |
| expectedSha256 | No | Current destination SHA-256 if it still exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds meaningful context beyond those: preview is the default behavior, binary bytes are supported, and an existing destination is backed up before restoration, which is important for understanding the safety model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no filler. The core action and default behavior are front-loaded, followed by the required credential-like inputs, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 7-parameter tool with no output schema, the description covers the essential call behavior: default preview, required SHA-256 values, and backup-before-restore. It does not explain failure modes (e.g., SHA-256 mismatch) or the preview response shape, but the annotations carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description restates the backup SHA-256 requirement and the current-destination SHA-256 condition but adds no syntax, format, or interpretation details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (restore) and resource (file from this project backup store), and notes it handles binary GDF/SCF bytes. It implicitly distinguishes itself from sibling read/edit tools by focusing on backup restoration, but it does not explicitly name an alternative or contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description covers operational context: preview by default, backup SHA-256 required, and current destination SHA-256 required if the file exists. However, it does not explicitly say when to choose this tool over siblings like project_edit_file or project_read_file, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_searchSearch design sources and reportsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matching lines; default 100. | |
| query | Yes | Nonempty literal text to find. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| encoding | No | File encoding; latin1 preserves MAX+plus II legacy bytes. Select utf8 explicitly for Unicode files. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| caseSensitive | No | Case sensitive comparison when true; default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: results are bounded, truncation and oversized-skipped files are surfaced explicitly, and binary bodies are not inferred — all useful for interpreting output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the core action and evidence format, with no filler. Every clause adds a distinct constraint or behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with no output schema, the description covers the key result-handling behaviors (bounded output, explicit truncation/skips) and scope limits, which is enough for correct invocation. It stops short of naming alternatives or describing matching semantics, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters, including the nonempty-literal and case-sensitivity semantics. The description's 'literal string' wording only mildly reinforces the query semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search a literal string across project text files) plus the evidence format (file/line). It also scopes what it does NOT cover by noting binary GDF/SCF content is excluded, which differentiates it from gdf/scf and project_read_file siblings, though no sibling is named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'supported project text files' and 'binary GDF/SCF content is not guessed' phrases implicitly delimit when it applies, but there is no explicit when-to-use guidance or named alternative for reading a known file or searching binary content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_compiled_portsInspect compiled waveform port namesARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| limit | No | Items per root collection; default20, reduced to fit the response budget. | |
| offset | No | Offset in each root collection; default0. | |
| project | No | Existing ACF whose directory scopes the files. | |
| workspace | No | Workspace when no project is supplied. | |
| childLimit | No | Items per nested detail collection; defaults to root limit. | |
| childOffset | No | Independent offset in each nested detail collection; default0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent/non-destructive profile, so the bar is lower. The description still adds real behavioral context: the 32MiB file ceiling and the explicit set of unsupported cases (internal EDIF nets, ambiguous arrays, INOUT), which an agent needs to anticipate partial results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no filler, with the core action front-loaded and the workflow hint last. Minor typo ('up to32MiB') and slight density but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description carries some burden, but for a read/inspect tool it adequately conveys input source (.edo), transformation (port→simulator name mapping, vector ranges, flattening), and unsupported cases. Only the return shape is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters (path, limit, offset, project, workspace, childLimit, childOffset). The description adds no parameter-level detail such as path scoping or pagination syntax, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Read an exported .edo file') and precisely what it produces: mapping top-level input/output ports to MAX+plus II Simulator names. This clearly distinguishes it from siblings like scf_ports_import or scf_inspect, which handle different stages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the workflow: 'Use netlist_export then inspect this fresh file,' which names the producer/alternative. It gives clear context for when this tool applies but does not state exclusions or contrast against other inspect tools beyond the netlist dependency.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_createCreate original-format waveform stimulusA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| inputs | Yes | Ordered collection of explicit entries validated by this tool. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| durationNs | Yes | Total waveform duration in ns on a 0.1ns grid. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false), but the description adds the crucial behavioral fact that it will never overwrite an existing file, which explains the non-idempotent hint concretely. It also ties into the verification workflow, which annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that front-load creation and scope, then units/grid, then the overwrite and verification caveats. Little waste, though the verification sentence drifts slightly from the tool's own behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter file-creation tool with no output schema and fully documented inputs, the description supplies format version, time units and grid, event-value domain, overwrite policy, and a verification recommendation. It omits the confirm preview/apply default, but the schema already states it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are already documented, including the 0.1ns grid and the 0/1/X/Z value domain. The description restates input names and event values without adding syntax or constraints beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: create a version4 SCF waveform file directly, explicitly bypassing the VEC and GUI pathways. That distinguishes it from sibling tools like scf_from_compiled_create, though the sibling is not named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'directly without VEC or GUI' implies when this creation path applies, and it prescribes using a matching compiled netlist plus original simulator for verification. However, it never names an alternative tool or an explicit when-not condition, so routing between it and scf_from_compiled_create is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_editEdit binary SCF input stimulus directlyADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| edits | Yes | One replacement event sequence per existing scalar input. Each starts at time zero and uses increasing times below the current file end. | |
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| expectedSha256 | Yes | Current SCF SHA-256 from project_parse_file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/idempotent annotations, it discloses that groups, other signal records, and opaque editor bytes are preserved, that a backup is taken before an atomic write, that expectedSha256 must be current, and that derived output/internal traces become stale and need re-simulation. That is exactly the side-effect detail an agent needs for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Six tight, front-loaded sentences with no filler; the preview/apply distinction and the key constraints come first. The clipped telegraphic style occasionally costs readability but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent edit with no output schema, the description covers preconditions (fresh SHA-256, scalar-only), side effects (backup, atomic write, stale traces), and the bus workaround. Coverage is strong; only the relationship to the sibling stimulus-edit tool is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents path, edits, time ticks, values, confirm, and expectedSha256. The description restates the 0.1ns/0-1-X-Z constraints and the SHA-256 requirement rather than adding syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (edit), resource (SCF input stimulus), and scope (existing scalar inputs in vendor version-4 SCF), so the agent knows it mutates existing records rather than creating them. It distinguishes the scalar-only scope clearly, though it never explicitly separates itself from near-neighbor siblings like scf_stimulus_edit or scf_structure_edit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance: use scf_inspect to find scalar members for a bus and edit those instead of the bus directly, and it states the SHA-256 precondition. It stops short of naming the sibling alternative (scf_stimulus_edit) for cases where this tool is the wrong choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_editor_metadataInspect waveform editor metadata and supported operationsBRead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| limit | No | Items per root collection; default20, reduced to fit the response budget. | |
| offset | No | Offset in each root collection; default0. | |
| project | No | Existing ACF whose directory scopes the files. | |
| workspace | No | Workspace when no project is supplied. | |
| childLimit | No | Items per nested detail collection; defaults to root limit. | |
| childOffset | No | Independent offset in each nested detail collection; default0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful context that opaque bytes are preserved and that unresolved cursor/grid/zoom/private references are identified, but it does not cover return format, pagination behavior, or permission requirements beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the main action, and avoids filler. The second sentence is a clear caveat, though the phrasing is somewhat jargon-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inspection tool with no output schema, the description conveys the exposed content and a key caveat about opaque bytes. However, it does not explain the collection structure (root vs nested detail collections implied by childLimit/childOffset) or any return format details, leaving gaps for a 7-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all seven parameters are already documented in the input schema. The description's phrase 'bounded raw metadata' loosely echoes the limit/offset bounding but adds no syntax or additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Expose') and resource ('known display/time fields and bounded raw metadata'), and it names the reference types it identifies (cursor/grid/zoom/private). It does not, however, differentiate this tool from siblings like scf_inspect or scf_structure, which could inspect similar waveform editor data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any preconditions or exclusions. The caution 'do not infer their meaning from a round trip' is a usage note but not a selection guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_from_compiled_createCreate waveform with compiled input and output portsA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| confirm | No | Apply when true; default preview with no write. | |
| project | No | Existing ACF whose directory scopes the files. | |
| signals | No | Explicit existing scalar names in MSB-first order where used as counter bits. | |
| edifPath | Yes | Exported .edo in the same scope. | |
| workspace | No | Workspace when no project is supplied. | |
| durationNs | Yes | Positive total time in ns on grid0.1. | |
| edifSha256 | Yes | Current full SHA-256 from fresh file inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly=false, idempotent=false and destructive=false, so the safety profile is covered. The description adds meaningful context beyond that: 'Never overwrites' confirms the write behavior, 'Direct original SCF records, no VEC' discloses the output form, and the scf_stimulus_edit/Simulator note explains post-conditions. It does not, however, mention the preview-vs-apply confirmation step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with the create action front-loaded and no padding. Efficient, though the telegraphic jargon ('Inputs0 and output observationsX', 'no VEC') reduces readability without wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and for an 8-parameter domain-specific mutation tool the description could say more about the confirm/preview semantics and what gets produced. It covers the generation source and the no-overwrite guarantee but leaves the preview-vs-apply workflow to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are documented in the schema (including confirm's preview behavior and edifSha256's freshness requirement). The description only loosely references 'selected or all supported top-level ports' and 'hashed .edo', adding little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and scope: 'Create a new SCF from selected or all supported top-level ports in a hashed .edo.' This distinguishes it from sibling scf_create by naming the .edo source. Sibling differentiation is implied (compiled ports) but not contrasted explicitly against scf_compiled_ports or scf_ports_import.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a downstream flow hint ('use scf_stimulus_edit then the original Simulator') and a constraint on unresolved nodes, but no explicit when-to-use-this-vs-alternative guidance against scf_create or scf_compiled_ports. Usage is implied rather than framed as a decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_inspectRead binary waveform events directlyARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| limit | No | Events/segments per signal, default 20; may reduce to fit output budget. | |
| offset | No | Event/segment page offset, default 0. | |
| signal | No | Optional exact scalar or display-bus signal name. | |
| endTime | No | Range end in ns, default full duration. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| startTime | No | Range start in ns, default 0. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| signalLimit | No | Signals per page, default 5. | |
| signalOffset | No | Signal page offset, default 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds that it operates on verified runs, emits X/Z values, uses ns time units, and explicitly surfaces paging and unsupported metadata. The one notable omission is how unsupported signals are reported (error vs. omission).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that front-load the core action and then list return content and the GUI exclusion. Every clause carries information; the phrase "paging and unsupported metadata explicitly" is slightly compressed but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters and no output schema, the description usefully outlines what is returned (input/output roles, writable input names, paging metadata, unsupported entries), partially compensating for the missing output schema. It stops short of describing the response structure or how pages are exhausted, which would fully close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 10 parameters, making 3 the baseline. The description corroborates units (ns), paging behavior, and that signal selection targets scalar/display-bus names, but adds no syntax or selection guidance beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Decode") and resource ("verified SCF scalar and display-bus logic runs/events, including 0/1/X/Z") with units. It implicitly separates itself from write tools (scf_edit, scf_stimulus_edit) and GUI tools ("Does not open the GUI"), but never names the closest read siblings such as scf_structure or waveform_signals to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the decode framing and the explicit note that it does not open the GUI, so an agent can infer it is a headless read path. There is no stated when-to-use vs. waveform_signals/waveform_results/scf_structure, and no prerequisites such as needing a verified/compiled project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_ports_importImport missing compiled waveform portsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| confirm | No | Apply when true; default preview with no write. | |
| project | No | Existing ACF whose directory scopes the files. | |
| signals | No | Explicit existing scalar names in MSB-first order where used as counter bits. | |
| edifPath | Yes | Exported .edo in the same scope. | |
| workspace | No | Workspace when no project is supplied. | |
| edifSha256 | Yes | Current full SHA-256 from fresh file inspection. | |
| expectedSha256 | Yes | Current full SHA-256 from fresh file inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, non-idempotent, non-read-only, so the safety profile is covered. The description adds real behavioral context: existing waveforms are retained, inputs start at 0 and outputs at X until simulated, and it refuses role mismatches/unsafe opaque references. The 'retains existing waveforms' claim sits a little oddly beside destructiveHint=true, but appending still mutates the file, so this is nuance rather than contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the verb and resource before constraints. Every sentence carries information, though the telegraphic notation ('begin0', 'outputsX') assumes domain familiarity without clarifying it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutating tool with no output schema, the description covers the operation, preconditions, post-state, and refusal cases. It omits only finer details like partial-failure behavior, which is a minor gap against otherwise strong coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters including the confirm preview default and the MSB-first signals ordering. The description ties parameters to concepts ('fresh hashed .edo', 'existing hashed SCF', 'same scope') but adds no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: append selected top-level input/output nodes from a fresh .edo into an existing SCF. It clearly distinguishes itself from siblings like scf_from_compiled_create (create) and scf_compiled_ports (inspect) by describing an incremental append into an existing file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives preconditions ('Both files must be inside the same scope') and refusal conditions, which implies the usage context, but it never names an alternative tool or states when to prefer this over scf_create/scf_from_compiled_create. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_stimulus_editGenerate and transform native SCF input waveformsBDestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the scope. | |
| confirm | No | Apply when true; default preview with no write. | |
| project | No | Existing ACF whose directory scopes the files. | |
| workspace | No | Workspace when no project is supplied. | |
| operations | Yes | Ordered stimulus edits; windows are half-open and measured in ns on grid0.1. | |
| expectedSha256 | Yes | Current full SHA-256 from fresh file inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, and closed-world; the description adds concrete safety/constraint context beyond that: exact 0.1ns grid, a 200000-event bound, and preservation of waveforms outside edited half-open ranges and opaque records. It also notes a fresh original simulation computes outputs, and it does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, with capabilities front-loaded and no filler. The first sentence is a list fragment and 'bounded200000' is a minor formatting slip, but the description stays appropriately short for a tool with rich schema documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex destructive editor with nested operations and no output schema, the description supplies key constraints—grid, event bound, preservation scope, simulation recompute—but omits when to use it versus siblings and does not explain operation composition or preview/confirm behavior. The schema covers parameters, but the description's guidance remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six top-level params and nested operation fields; the description mainly echoes grid/half-open/MSB-first details that are also in the schema. It adds a few constraints (200000 total events, preservation semantics), but not enough to lift beyond the baseline for fully documented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (native SCF waveforms) and enumerates specific operations—clock, repeat, counter, shift, invert, fill, copy—so the agent can tell it generates/transforms stimulus rather than inspecting it. It does not explicitly name a sibling tool or say 'edit,' so it stops short of the 5 threshold for sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are given; the agent is left to infer that this is the mutation tool among many scf_* and stimulus_* siblings. It does not say when to choose it over scf_edit, scf_structure_edit, or stimulus_write.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_structureInspect waveform structureARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| limit | No | Root items per collection; default 20, reduced to fit the result budget. | |
| offset | No | Offset in each root collection; default zero. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| childLimit | No | Items per nested collection; defaults to the requested root limit, reduced to fit the result budget. | |
| childOffset | No | Independent offset in each nested collection; default zero. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that output flags unknown/reference limits, which is useful behavioral context, but omits pagination interaction details, permissions, and any error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler, and the core purpose is front-loaded ahead of the sibling routing. Slightly terse for the number of concepts packed in, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inspection tool with annotations covering the safety profile, the description enumerates the kinds of structural data returned (names, ordering, radix, duration, record locations) even though there is no output schema. Pagination behavior is governed by the well-documented limit/offset params, so coverage is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the seven parameters (path, limit, offset, project, workspace, childLimit, childOffset) are already documented in the schema. The description adds no syntax, default, or scope detail beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (decode/inspect) and resource (version4 SCF structure) and enumerates the concrete artifacts returned: scalar names, display ordering, groups/radix, duration, native record locations. It clearly distinguishes itself from scf_inspect by routing paginated logic events there. It does not, however, differentiate from closely named siblings such as scf_structure_edit or scf_editor_metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use scf_inspect for paginated logic events' gives one explicit alternative with its selecting condition. There is no guidance on when this tool is the right choice versus scf_structure_edit, scf_create, or scf_editor_metadata, so usage is only partially routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scf_structure_editEdit waveform names, grouping and time spanADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| operations | Yes | Ordered scalar/group structure changes; names must match compiled nodes. | |
| expectedSha256 | Yes | Current full file SHA-256 from a fresh inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=false, readOnly=false. The description goes beyond them by disclosing transactional semantics, that unknown fields are preserved, that unsafe opaque-reference changes are refused, and that resimulation is required afterward. That is meaningful behavioral context a caller could not derive from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense telegraphic clauses, front-loaded with the operation scope, with no filler sentences. It is compact and every clause carries information, though the terse phrasing borders on cryptic for an unfamiliar caller.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, transactional mutation tool with no output schema, the description covers the safety-relevant behaviors (preservation, refusal, resimulation) that an agent needs before invoking it. The missing piece is sibling differentiation, but the core call contract is adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter (confirm preview semantics, expectedSha256 freshness, per-operation fields). The description adds only that names must match compiled nodes, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (edit) and resource (SCF waveform structure) and enumerates the concrete operation families: rename/reorder, group/ungroup/radix, duration extension/truncation, input add/delete. This lets an agent separate it from scf_inspect or scf_create, but it never distinguishes it from the closely-named siblings scf_edit and scf_structure, which is the main ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Names must match compiled nodes; resimulate after edits" gives a precondition and a follow-up action, which implies when the tool is applicable. However there is no explicit when-to-use-vs-alternatives guidance against scf_edit, scf_stimulus_edit, or scf_structure, so routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setacf_applyApply a setacf changeA
Execute a setacf change. Backs the .acf up first and returns a line diff. Requires confirm:true. Prefer calling setacf_plan first.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | Pin number to assign. | |
| kind | No | Assignment kind. INPUT_PIN, OUTPUT_PIN or BIDIR_PIN sets a pin; omit it when setting a device or a raw variable. | |
| root | No | MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths. | |
| async | No | 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 blocking call that is abandoned keeps running with nobody holding the result. Poll with job_status. | |
| value | No | Value paired with variable for advanced use. | |
| backup | No | Back up the .acf first (default true). | |
| create | No | Create the .acf if it does not exist (-c). Use only when bootstrapping a new project. | |
| device | No | Device to assign, for example EP1K30TC144-1. Written as the DEVICE variable in the CHIP section. | |
| signal | No | Signal name to constrain, for example "|CLK" or "CLK". A leading pipe is added automatically if absent. | |
| confirm | Yes | Must be true to actually write. | |
| project | Yes | 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. | |
| section | No | ACF section name. Device and pin edits default to CHIP; other settings live in sections such as SIMULATOR_CONFIGURATION. | |
| modifyTo | No | New value for an existing section (-m). Requires section and sectionValue. | |
| variable | No | Raw setacf variable for advanced use, for example "DEVICE" or a full "\"|SIG\":PIN" form. | |
| timeoutMs | No | Hard timeout in milliseconds. A client timeout is wall-clock and progress does not extend it, so keep this below the client budget. | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| prependPath | No | Hierarchy path prefix to prepend to the variable (-p), for a signal inside a sub-design. | |
| sectionValue | No | 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. | |
| deleteVariable | No | Name of the variable to delete from its section (-d). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior the annotations do not convey: the .acf is backed up first, the call returns a line diff, and a confirm gate is enforced. This is meaningful context for a mutating tool whose annotations only say readOnlyHint=false/idempotentHint=false; the backup-first detail also explains why destructiveHint=false is plausible. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four terse sentences, front-loaded with the action and the backup/diff behavior, followed by the two operational requirements. Every sentence carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity, 19-parameter mutation tool with no output schema, the description covers the essential gates (confirm, plan-first) and return shape (line diff). What remains, the per-parameter semantics for sections/variables/paths, is fully handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage across 19 parameters, the schema already documents every argument in detail. The description only restates the confirm requirement and the backup behavior (both already in the schema), adding no new format or interaction guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Execute') and resource ('a setacf change'), and explicitly positions itself against its sibling by saying 'Prefer calling setacf_plan first,' so an agent can distinguish the apply step from the planning step without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard prerequisite ('Requires confirm:true') and names the recommended alternative workflow ('Prefer calling setacf_plan first'). It does not state explicit when-not-to-use conditions or failure modes, so it stops just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setacf_planPlan a setacf changeARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pin | No | Pin number. | |
| kind | No | Pin assignment kind. | |
| root | No | MAX+PLUS II install root. | |
| value | No | Raw value for advanced use. | |
| create | No | Create the .acf if missing (-c). | |
| device | No | Set the DEVICE assignment, e.g. EP1K30TC144-1. | |
| signal | No | Signal name, e.g. "|CLK" or "CLK". | |
| project | Yes | 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. | |
| section | No | Section name (defaults to CHIP for device/pin edits). | |
| modifyTo | No | Modify an existing section value (-m). | |
| variable | No | Raw variable for advanced use. | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| prependPath | No | Prepend a hierarchy path (-p). | |
| sectionValue | No | Section value, e.g. the chip name. | |
| deleteVariable | No | Delete a variable (-d). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=true, so safety is covered structurally. The description adds genuinely useful behavior: that no mutation occurs and that the underlying setacf tool has no dry-run, explaining why planning is mandatory before applying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the non-execution constraint and the mandatory-call ordering front-loaded. Nothing is wasted and no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter planning tool with no output schema, the description covers the essential contract (produces an argument vector, does not execute). It could say a bit more about what the caller does with the returned vector, but the missing detail is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 15 parameters, so the schema already documents each field (pin, kind, device, signal, etc.). The description adds no parameter-level detail such as which combination is required for a given edit type, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and output ('Build the exact setacf.exe argument vector') plus the crucial constraint ('WITHOUT executing it'). This clearly distinguishes it from setacf_apply, the sibling that would run the change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit ordering guidance ('Always call this first') and the reason (setacf edits in place, no dry-run mode), which is exactly the when-to-use context an agent needs. It stops short of naming setacf_apply as the follow-up execution step, so routing to the alternative is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_and_verifySimulate and verifyAIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scf | No | Stimulus file. Defaults to <project>.scf if present. | |
| tbl | No | Where to write the result table. Defaults to <project>.tbl. | |
| root | No | MAX+PLUS II installation root, for example C:\maxplus2. Defaults to MAXPLUS2_ROOT, then a scan of common paths. | |
| async | No | 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 blocking call that is abandoned keeps running with nobody holding the result. Poll with job_status. | |
| expect | No | Expected values, as { "<time>": { "SIGNAL": value } }. Values may be numbers or hex strings like "80". Outputs and buried nodes are both checkable. | |
| project | Yes | 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. | |
| timeoutMs | No | Hard timeout in milliseconds. A client timeout is wall-clock and progress does not extend it, so keep this below the client budget. | |
| tolerance | No | Time tolerance in table units when matching expectations (default 0.05). | |
| workspace | No | Directory that a relative project name is resolved against. Defaults to MAXPLUS2_WORKSPACE, then the server working directory. | |
| previewRows | No | How many leading trace rows to return (default 12). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds a genuinely non-obvious behavioral fact that annotations cannot convey: a successful simulation may exit 1, and the verdict comes from the success banner plus the .tbl artifact. That single disclosure prevents an agent from mis-classifying a good run as a failure. It also explains the .tbl output artifact the run produces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and the artifact, and the critical exit-code caveat placed last as a warning. The middle explanatory sentence about why this matters is slightly discursive but still earns its place by justifying the tool's existence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, mutation-capable tool with no output schema, the description supplies the essential missing context: what artifact is produced and how to interpret success. It does not describe the shape of the parsed table or pagination/preview interaction, which leaves a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with defaults, ranges and formats (e.g. expect as {"<time>":{"SIGNAL":value}}, root fallback chain) all documented in the schema. The description adds only the high-level notion of optional expectation checking, which is the baseline 3 when the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb+resource combination ('Run the Simulator headless and return the parsed result table') plus the optional expectation checking, which cleanly separates it from parse_tbl and the generic maxplus2_run. An agent can identify the tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the context clearly ('This is how simulation verification is automated... a design can be checked without a human reading a waveform'), which tells the agent when this beats a manual waveform workflow. It stops short of naming the sibling alternatives (parse_tbl, maxplus2_run) or stating exclusions, so no explicit when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stimulus_writeWrite timed simulator stimulusB
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path relative to the project/workspace. Absolute paths must remain inside that scope. | |
| rows | Yes | One complete input map per interval. Integers or exact-width binary/X/Z strings; for example [{CLK:0,A:3},{CLK:1,A:5}]. | |
| stop | No | Stop time; default start + rows.length * interval. | |
| unit | No | Simulator time unit, default ns. | |
| start | No | Start time, default 0. | |
| inputs | Yes | Scalar input node strings, or {name,nodes:[MSB,...,LSB]} bus declarations with explicit simulator node names. | |
| confirm | No | Apply the described file change when true; otherwise return a preview. This is a tool argument, not a request for another user approval. | |
| outputs | No | Optional physical output node names to include in the result table. | |
| project | No | Existing .acf project path or unambiguous project name. File paths are scoped to its directory. | |
| interval | No | Duration of each input pattern, default 100. | |
| workspace | No | Workspace directory for resolving project names, or the scope when no project is supplied. | |
| expectedSha256 | No | Existing VEC SHA-256 if replacing a file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly=false, destructive=false, idempotent=false, but the description adds real behavioral context beyond them: writes create backups, a preview/apply workflow exists, and an existing SCF can take precedence over the written VEC. The SCF-precedence conflict and backup behavior are exactly the kind of non-obvious traits annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with no obvious padding, but the opening is cryptic ('bare pattern rows and one final semicolon') and the important SCF-precedence caveat is buried at the end rather than front-loaded. It is adequately sized but not well prioritized for an agent scanning for the key decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 12-parameter mutation tool with no output schema, the description covers the VEC format quirks and the SCF-precedence trap, which is helpful. It still omits error/validation behavior and is ambiguous about what 'verified' means, leaving clear gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters thoroughly, making 3 the baseline. The description adds little parameter-level meaning beyond 'Explicit bus nodes are MSB-first' and the INTERVAL reference, both of which restate schema content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it generates a multi-row VEC shape with INTERVAL, pattern rows, and a terminating semicolon, which is a specific verb+resource, but the phrasing is jargon-dense and does not clearly distinguish it from the sibling scf_stimulus_edit. An agent can guess the domain but not cleanly separate this from the other stimulus tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers conditional guidance ('Existing SCF may take precedence; inspect/delete its backed-up copy or open/convert VEC in the GUI') and notes preview/apply, which implies usage context. However, it never states when to choose this over scf_stimulus_edit or simulate_and_verify, so selection is left largely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sym_createCreate or clone a custom symbolA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New HDL symbol name. | |
| path | Yes | File path within that scope. | |
| pins | No | Ordered collection of explicit entries validated by this tool. | |
| root | No | Optional installed library root. | |
| width | No | Extent width on grid8. | |
| height | No | Extent height on grid8. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| template | No | Optional custom scope SYM or absolute installed max2lib SYM. | |
| workspace | No | Workspace scope when project is absent. | |
| operations | No | Ordered changes; record offsets refer to the original input. Inspect again after applying. | |
| templateSha256 | No | Current full file SHA-256 from a fresh inspection. | |
| nameAttributeName | No | Primitive or hierarchy name attribute; custom clone/create defaults MACRO_NAME. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare write/non-idempotent/non-destructive, and the description adds genuinely new behavioral context: 'Never overwrite' (a safety guarantee not in the annotations), that operations optionally add graphics/text/pins, and that connectivity must be proven separately via compiler/export. This goes meaningfully beyond the annotation set, though it does not describe preview/confirm semantics or rate/authorization details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences with the core create/clone action front-loaded, followed by constraints and workflow. Nothing is padded, though the HDL/compiler sentence is a bit tangential to the tool call itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no output schema, the description covers the create-vs-clone distinction, the no-overwrite guarantee, and the operations workflow. Annotations carry the safety profile and the schema carries field detail, so the remaining gaps (preview/confirm behavior, return shape) are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds conceptual meaning: it explains that 'operations' inject internal graphics/text/pins and that 'template' clones a hashed prototype under a new name. This helps interpret the operations/template/name parameters beyond the terse per-field schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new original-format SYM') and distinguishes two modes (original create vs clone of a hashed workspace/installed-library prototype). It is clear what the tool produces, but it never names a sibling like sym_edit or gdf_create to route the agent, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the usage context ('Never overwrite', operations add graphics/text/pins, HDL source supplied separately then compiler/export to prove connectivity) but gives no explicit when-to-use-vs-alternative guidance or exclusions. The workflow hints are helpful but the agent must still infer when to pick this over sym_edit or gdf_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sym_editEdit a standalone symbolADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| confirm | No | Apply when true; default preview. Current session authorization suffices. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| operations | Yes | Ordered changes; record offsets refer to the original input. Inspect again after applying. | |
| expectedSha256 | Yes | Current full file SHA-256 from a fresh inspection. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the destructive/non-idempotent/write profile, but the description adds meaningful traits beyond them: unrelated/default records are preserved, and changes do not propagate to embedded GDF copies. The offset/hash and compiler-verification caveats add further operational context. It stops short of describing return values or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core action and no filler. The telegraphic style ("Rename/resize standalone SYM") is information-efficient, though slightly compressed for a tool with 18 operations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 18-operation mutation tool with no output schema, the description covers mutability, non-propagation to GDF copies, record-preservation behavior, and the inspect/verify workflow. There is no output schema so return values need not be explained, but a few more details on ordering or failure recovery would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly, including the 18-value operation enum and offset/grid semantics. The description only echoes the general theme (rename/resize, original-attribute offsets) without adding parameter-level meaning beyond the schema, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (rename/resize/edit/create/delete) against a specific resource (standalone SYM internal lines/circles/arcs/text and interface pins). It also differentiates from siblings like gdf_symbol_refresh/gdf_edit by noting that changes do not update embedded GDF symbol copies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear workflow context: inspect fresh offsets/hash before and verify the consuming circuit with the original compiler after, and warns that edits use original attributes. It does not explicitly name which sibling to use for GDF-embedded symbols, so the alternative is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sym_inspectInspect a custom symbol interfaceARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within that scope. | |
| limit | No | Root items per collection; default 20, reduced to fit the result budget. | |
| offset | No | Offset in each root collection; default zero. | |
| project | No | Existing ACF whose directory scopes these files. | |
| workspace | No | Workspace scope when project is absent. | |
| childLimit | No | Items per nested collection; defaults to the requested root limit, reduced to fit the result budget. | |
| childOffset | No | Independent offset in each nested collection; default zero. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value: 'No compiler needed' clarifies it works on source, 'Paginated collections' discloses result paging behavior, and 'direction provenance does not prove circuit wiring' warns against a tempting misreading of the returned directions. That caveat is behaviorally important and not derivable from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose followed by a capability note and a caveat. The pagination/caveat clause is dense but every element earns its place. Minor density is the only cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inspection tool with no output schema and fully documented parameters, the description covers what is inspected, notes pagination, and flags the interpretation caveat. Nothing critical is missing, though a note on the two-scope model (project vs workspace) or the paginated return shape would make it airtight.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters including limit/offset/childLimit/childOffset defaults and caps. The description's 'Paginated collections' echoes that without adding syntax or guidance beyond the schema. Baseline 3 is appropriate when the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (inspect) and resource (standalone SYM graphics), and enumerates the concrete artifacts returned: pin names/positions/native interface directions, text display flags, preserved instance defaults. It clearly reads rather than mutates, distinguishing it from sym_edit and sym_create. It does not, however, explicitly differentiate itself from related inspection siblings such as gdf_pin_labels or gdf_geometry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'No compiler needed' gives an implicit usage context (inspect a source SYM without a compiled artifact), which is a useful hint. But there is no explicit when-to-use statement, no exclusions, and no routing to the edit counterparts when the agent actually needs to change something. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_resultsExtract valid output events and viewing intervalARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| edge | No | Default rising. samples selects native valid-high rows, not uniform sampling. | |
| path | Yes | File path within the selected scope. | |
| limit | No | Event count, default20; may reduce to fit output budget. | |
| offset | No | Result event offset, default0. | |
| maxRows | No | TBL row parsing budget, default200000. | |
| project | No | Existing ACF whose directory scopes files. | |
| settleNs | No | Sampling delay after valid entry, default0; must remain in the same valid window. | |
| endTimeNs | No | Inclusive event-range end in ns, default last native time. | |
| maxEvents | No | Total event budget before pagination, default100000. | |
| paddingNs | No | Recommended view padding, default1000ns. | |
| workspace | No | Workspace scope when no project is selected. | |
| kindSignal | No | Optional type discriminator column, e.g. OUT_KIND; no semantics inferred. | |
| dataSignals | Yes | Actual result columns, e.g. OUTBUS[7..0]. | |
| startTimeNs | No | Inclusive event-range start in ns, default first native time. | |
| validSignal | Yes | Real scalar valid column, e.g. OUT_VALID. | |
| maxComparisons | No | TBL analysis comparison budget, default2000000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/idempotent/non-destructive profile, and the description goes well beyond them: it discloses what is retained (raw numeric/X/Z tokens, missing columns, unknowns), that held data while valid is low yields no result, and what is returned (paginated events plus a recommended ns window). It also explicitly states the tool does not mutate SCF/design state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then dense but information-bearing clauses separated by semicolons. Every clause carries semantics (modes, retention, non-mutation); the density slightly hurts readability but little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description appropriately names the return shape (paginated events and a recommended ns window). For a 16-param, no-output-schema tool it covers modes, retention rules, and non-mutation, with only permissions and pagination mechanics left implicit in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 16 parameters are already documented. The description reinforces the edge/samples distinction and confirms settling samples stay inside the valid window, but adds little beyond the schema on limit/offset/budget parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Extract result events gated by an actual scalar valid signal,' which is far more precise than the tautological title. It distinguishes itself from plain signal listing (waveform_signals) by describing gating and event extraction, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Defaults are given (proven rising edges, samples mode) and scope constraints are implied ('does not alter SCF zoom, row visibility, clock or design logic'), but there is no explicit when-to-use versus waveform_signals or parse_tbl. Usage must be inferred from behavioral prose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waveform_signalsInspect actual simulation table columnsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path within the selected scope. | |
| limit | No | Root collection items, default20; may reduce to fit response budget. | |
| offset | No | Root collection offset, default0. | |
| maxRows | No | TBL row parsing budget, default200000. | |
| project | No | Existing ACF whose directory scopes files. | |
| workspace | No | Workspace scope when no project is selected. | |
| childLimit | No | Nested collection item limit, default root limit. | |
| childOffset | No | Independent nested detail offset, default0. | |
| maxComparisons | No | TBL analysis comparison budget, default2000000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds real behavioral context: it flags malformed tables, ambiguous names, and exceeded budgets (tying to maxRows/maxComparisons), and warns that hidden SCF signals absent from the TBL stay absent and that this does not prove the saved editor layout. That is meaningful disclosure beyond the annotations, though return format and pagination behavior remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that are front-loaded with the core verb and returned artifacts, followed by caveats. Efficient overall, though the final sentence is slightly compressed and the mid-sentence clause stack is heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only 9-parameter inspection tool with no output schema, the description covers what is returned, the malformed/ambiguous/budget failure modes, and an interpretation caveat about SCF signals. It could still say more about how the nested child* and budget parameters affect results, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented in the schema and the baseline is 3. The description adds no parameter-level detail (e.g., how limit/offset interact with childLimit/childOffset, or how budgets degrade results), so it does not exceed the schema's own coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (original TBL) and enumerates concrete outputs (input/output/buried signals, bit widths, native units, time span), so an agent knows exactly what the tool surfaces. It does not, however, name or differentiate itself from likely siblings such as parse_tbl or waveform_results, leaving the agent to infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit when-to-use or when-not-to-use guidance and names no alternative tool, even though parse_tbl and waveform_results sit right beside it. The closing SCF caveat clarifies interpretation of results, not selection of this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
68 tool updates
v0.10.3- First observed
acf_read_pins - First observed
acf_read_sections - First observed
acf_repair_chip_headers - First observed
acf_validate - First observed
capability_matrix - First observed
desktop_action - First observed
desktop_launch - First observed
desktop_observe - First observed
desktop_result - First observed
desktop_status - First observed
desktop_windows - First observed
display_palette_inspect - First observed
gdf_connections - First observed
gdf_construct - First observed
gdf_create - First observed
gdf_declarations - First observed
gdf_declarations_edit - First observed
gdf_edit - First observed
gdf_geometry - First observed
gdf_graphics_edit - First observed
gdf_inspect - First observed
gdf_move_connected - First observed
gdf_pin_labels - First observed
gdf_symbol_library - First observed
gdf_symbol_refresh - First observed
gdf_text_edit - First observed
gdf_text_format_edit - First observed
gdf_text_format_inspect - First observed
gdf_wire_cleanup - First observed
installation_status - First observed
job_cancel - First observed
job_status - First observed
list_projects - First observed
maxplus2_plan - First observed
maxplus2_run - First observed
memory_write - First observed
netlist_export - First observed
parse_report - First observed
parse_tbl - First observed
probe_executable - First observed
project_clone - First observed
project_create - First observed
project_edit_file - First observed
project_files - First observed
project_inspect - First observed
project_parse_file - First observed
project_read_file - First observed
project_restore_file - First observed
project_search - First observed
scf_compiled_ports - First observed
scf_create - First observed
scf_edit - First observed
scf_editor_metadata - First observed
scf_from_compiled_create - First observed
scf_inspect - First observed
scf_ports_import - First observed
scf_stimulus_edit - First observed
scf_structure - First observed
scf_structure_edit - First observed
setacf_apply - First observed
setacf_plan - First observed
simulate_and_verify - First observed
stimulus_write - First observed
sym_create - First observed
sym_edit - First observed
sym_inspect - First observed
waveform_results - First observed
waveform_signals
TDQS
Scored across 68 tools
Descriptions are unusually explicit about boundaries and cross-reference sibling tools ('use gdf_geometry for...', 'use netlist_export for...'), which helps. However the surface has large overlapping clusters — e.g. gdf_text_edit vs gdf_text_format_edit (both edit free root DOC text), gdf_graphics_edit vs gdf_edit vs gdf_construct, and scf_edit vs scf_stimulus_edit vs scf_structure_edit — where an agent can easily pick the wrong one.
Everything is snake_case and grouped by predictable subsystem prefixes (gdf_, scf_, project_, desktop_, acf_, setacf_, maxplus2_, job_). But verb ordering is inconsistent: noun_verb forms (acf_read_pins, project_read_file, gdf_text_edit) coexist with verb_noun forms (list_projects, parse_tbl, simulate_and_verify, probe_executable), and many tools carry no prefix at all.
68 tools is an extreme mismatch for a single server. Even a rich legacy-EDA workflow does not justify this many entry points, and the count forces agents to navigate many near-duplicate edit/inspect variants rather than a focused set.
The surface covers the full lifecycle: project create/clone/files/read/write/search/parse, ACF read/validate/repair, setacf plan/apply, compile/simulate plan/run, result parsing, GDF/SYM/SCF authoring and editing, netlist export, waveform analysis, job control, and desktop GUI automation. Almost no obvious functional gap remains for the stated domain.
Maintenance
Related MCP Connectors
MCP server to assist with JxBrowser development.
Headless CAD engine & MCP server for 2D/3D drafting, solids, DXF/SVG export, and automation.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Retired. Use Collimer's remote MCP server at https://app.collimer.com/mcp instead.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables querying PCB and schematic data and driving DelphiScript automation in Altium Designer via MCP.139MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients like Codex to control Ansys Workbench and ICEM CFD locally, executing scripts, managing projects, and running simulations.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients on Windows to control the local mouse, keyboard, and screen understanding via MCP stdio, allowing automated workflows like viewing the screen, locating elements, clicking, typing, and verifying results.1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables local stdio-based MCP integration with InoProShop/CODESYS for project structure reading, POU editing with verified writes, compilation, task configuration, and persistent session recovery.2MIT