Skip to main content
Glama
JonathanChan-geek

autoshop

AutoShop MCP

CI License: MIT

不用操作 AutoShop 窗口,通过 MCP 或命令行读取、修改、转换和编译 H3U PLC 工程。

本项目提供 Python 工具层和一个独立的 x86 原生进程。原生进程调用本机 AutoShop 的编译、转换 DLL,不启动 AutoShop 主程序,不模拟鼠标键盘。适合接入 AI 编程工具,也可以直接写脚本调用。

0.4.0:新增 IL 转梯形图、全局符号表读取和写回,共 19 个工具。 已用原厂接口验证,转换和写回都要经过独立回读、重新编译和机器码对照。完整 H3U 运行仿真尚未打通,具体调查结果见 验证记录。

目前适配一个经过验证的 H3U 运行库组合,不是通用 AutoShop SDK。是否兼容以 DLL 的 SHA-256 为准,不能只看安装目录或软件版本号。原厂 DLL、安装包和现场 PLC 工程均不随本项目发布。

能做什么

工具

作用

capabilities

查看支持范围、工具参数和原生运行库状态

project_inspect

读取工程索引、程序块、文件类型和文件哈希

il_read

读取受支持的未加密 IL 指令文本

il_patch_copy

按原文件哈希和精确文本修改 IL,生成新工程副本

project_diff

比较两个工程的源码、配置和其他文件

package_project

打包离线工程,排除可能过期的编译产物

native_compile_probe

静态检查 PE 文件和导出,不执行 DLL

native_compile_copy

调用原厂编译器,生成经过检查的新工程和 ZIP

ld_to_il_copy

原厂 LD → IL 转换,转换前后机器码一致才交付副本

il_to_ld_copy

原厂 IL → LD,回读 IL 并核对机器码;原厂重排分支导致指令变化时拒绝交付

symbols_read

读取全局符号表中的名称、地址、注释和文件哈希

symbols_patch_copy

新增或修改全局符号;独立回读、机器码不变、其他配置不变才交付

project_convert_all_copy

整工程 LD → IL,逐块验证等价后统一编译打包

il_batch_patch_copy

多文件、多处补丁同时校验,全部通过才生成副本

project_build_copy

可选转换、批量修改、原厂编译和打包的一次调用

project_search

搜索 IL 文本,返回文件、行号和上下文

project_xref

查询显式地址的引用位置和已识别指令的读写分类

project_audit

列出缺失文件、多处 OUT、跨程序块写入等复核线索

project_export

导出 UTF-8 指令文本、引用表、检查结果和哈希清单

暂不提供 ST、H5U、受保护工程的原生编译,也不提供连接 PLC、下载、运行或停止接口。编译成功说明通过了编译检查,不等于设备动作已完成现场验证。

Related MCP server: OpenFab MCP

安装

离线文件工具需要 Python 3.10 或更高版本。原生编译和 LD 转换还需要:

  • Windows,以及自行安装的 AutoShop 和匹配的 VC90 MFC 运行库。

  • Visual Studio 2022 Build Tools,安装“使用 C++ 的桌面开发”和 Windows SDK。

  • 与 profile.json 完全一致的原厂 DLL。当前 profile 标识为 h3u-4.10.2.4-local-1;它是验证组合的标识,不代表支持所有同名版本。

在 PowerShell 中执行:

git clone https://github.com/JonathanChan-geek/autoshop-mcp.git
cd autoshop-mcp
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e .

# 编译本项目的 x86 host;不需要复制原厂 DLL 到仓库。
.\src\autoshop_mcp\native\build.cmd

# 改成自己的安装目录。
$env:AUTOSHOP_INSTALL_DIR = 'C:\Program Files (x86)\AutoShop'
.\.venv\Scripts\python.exe -m autoshop_mcp capabilities

检查输出中的 native_compile.available。为 false 时,mismatches 会列出缺少或不匹配的文件;离线读取和修改工具仍可使用。

工具会在安装目录和 Windows WinSxS 中查找匹配的 mfc90.dll。需要指定检查路径时可设置 AUTOSHOP_MFC_PATH。该变量不会改变 Windows 的 DLL 加载规则;原生进程仍会检查实际加载的 MFC 哈希。不支持通过改哈希跳过版本校验,适配其他版本需要重新核对内部接口。

命令行用法

参数通过 UTF-8 JSON 文件传入。project 是包含 .hcp 和配套文件的工程目录,dest 必须是尚不存在的新目录。

例如,将以下内容保存为 compile.json:

{
  "project": "C:/PLC/source",
  "dest": "C:/PLC/build-001"
}

然后编译:

.\.venv\Scripts\python.exe -m autoshop_mcp native_compile_copy --params-file compile.json

成功结果包含 ok: true、native_compiled: true、机器码哈希和诊断信息。目标目录中包含 project/、compiled-project.zip 以及构建记录。失败时保留诊断,不把旧 Output.prg 当作新结果。

其他参数示例在 examples 中。示例路径和指令仅供说明,使用前替换为自己的工程和修改内容。

常用流程:

  1. project_inspect 确认工程和程序块。

  2. 如果要改的是 LD,用 ld_to_il_copy 转换指定块。

  3. il_read 取得指令和 SHA-256。

  4. il_patch_copy 提交原哈希、精确旧文本和新文本,得到修改副本。

  5. project_diff 核对范围,再用 native_compile_copy 编译修改副本。

package_project 只做离线打包,不表示原生编译成功。native_compile_probe 也只是静态检查,不能代替编译。

转回梯形图与符号表写回

修改 IL 后,调用 il_to_ld_copy,参数为 project、file、dest。它生成真正的 LD 文件、更新工程登记、移除副本中的旧 IL,并重新编译。回读比较只忽略空行和指令名后的分隔空白;指令、操作数或注释变化都会拒绝,机器码也必须完全相同。不是所有 IL 都能通过:部分分支被原厂重排 MPS/MRD/MPP,本版本会明确报错并保留原工程。

symbols_read 返回 VarList.gdt 的 SHA-256 和每行 index/name/address/comment。将哈希传给 symbols_patch_copy:

{
  "project": "C:/PLC/source",
  "dest": "C:/PLC/symbols-001",
  "expected_sha256": "替换成 symbols_read 返回的 SHA-256",
  "changes": [
    {"index": -1, "name": "FeedReady", "address": "M100", "comment": "送料准备完成"}
  ]
}

index: -1 表示新增;已有行用读取到的 index 修改,四个字段必须齐全。支持 GBK 中文和多行注释。当前只接受直接地址,拒绝新增重名或重地址,不支持删除、局部符号表或结构化配置编辑。地址语法检查不代表物理端子存在;写回必须保持机器码不变,不能借此重映射程序逻辑。

批量修改与一键编译

il_batch_patch_copy 和 project_build_copy 使用同一种补丁结构:

{
  "project": "C:/PLC/source",
  "dest": "C:/PLC/build-002",
  "patches": [
    {
      "file": "MAIN.IL",
      "expected_sha256": "替换成 il_read 返回的 64 位 SHA-256",
      "edits": [
        {"old_text": "OUT\t\t Y1\n", "new_text": "OUT\t\t Y2\n"}
      ]
    }
  ]
}

每个文件列一次,edits 可列多处。所有替换都以修改前的文本定位,要求唯一匹配且区间不重叠。后面的替换不会意外命中前面新写入的内容。任一文件检查失败都不会交付部分修改的工程。

把参数保存后调用 project_build_copy,可直接得到编译包。只要修改副本时调用 il_batch_patch_copy。如果还需要转换,建议先调用 project_convert_all_copy,读取转换后 IL 的哈希,再准备补丁;convert_all: true 合并执行时也必须使用转换后的 IL 哈希。

查信号、查交叉写入

{"project": "C:/PLC/all-il/project", "device": "Y2"}

将上述参数交给 project_xref 可查询 Y2 的显式引用。project_audit 查多处 OUT、跨块写入及缺失文件;project_search 可按字面文本找指令、常数或注释。

这些工具只分析已登记的未保护 IL,返回 skipped_blocks 和 complete_source_coverage。要读完整源程序,先转换全部 LD。地址引用不展开双字隐含的相邻寄存器、批量范围、位地址和间接地址;未知指令返回 unknown。没有搜索结果不能据此断言某个地址绝对未使用,多处写入也不一定表示逻辑错误。详细边界见 能力说明。

接入 MCP

将下面的配置加入支持 stdio MCP 的客户端,路径按实际安装位置修改:

{
  "mcpServers": {
    "autoshop": {
      "command": "C:/tools/autoshop-mcp/.venv/Scripts/python.exe",
      "args": ["-m", "autoshop_mcp", "serve"],
      "env": {
        "AUTOSHOP_INSTALL_DIR": "C:/Program Files (x86)/AutoShop"
      }
    }
  }
}

客户端只调用工具即可,不需要打开 AutoShop。服务使用当前用户的文件权限,应只连接自己信任的客户端。

编译结果怎么检查

  • 原工程只读;原厂代码在临时工程副本和独立子进程中运行。

  • 加载前校验 DLL 指纹;原生进程另行检查实际加载的运行库。

  • 清除旧编译缓存,确认所有程序块都有本次生成的中间文件。

  • 检查原厂错误信息、编译完成信号,以及连续两次一致的新机器码。

  • 检查源文件和配置字节是否被编译器改动;异常时不交付工程包。

  • LD → IL 转换会分别编译转换前后的工程,比较机器码是否逐字节一致。

  • IL → LD 额外检查转回 IL 的结果;新 LD 首次编译产生的原厂格式整理只允许影响目标块,随后再次回读及严格编译。

  • 符号表写回只允许改变 VarList.gdt,并在新进程中读取验证、比较修改前后机器码。

实现与限制见 原生后端说明。

测试与贡献

.\.venv\Scripts\python.exe -m unittest discover -s tests -v

公开测试使用代码生成的合成数据,覆盖文件处理、修改检查、打包和 MCP 通信;这些数据不是可下载到 PLC 的工程。GitHub Actions 在 Windows、Linux 上运行离线测试,并单独构建 x86 host。

原厂编译的集成测试需要你自己提供运行库和工程,默认跳过。配置方法见 测试说明。CI 通过不代表已在所有 AutoShop 版本或设备上验证。

欢迎提交 issue 和 PR。适配新版本时请附 DLL 指纹、复现步骤和验证结果,不要提交原厂二进制、客户工程或设备凭据。更多说明见 CONTRIBUTING.md。

许可证

本仓库原创代码采用 MIT License。AutoShop 及其原厂组件归各自权利人所有,需自行取得并遵守其许可;不属于本仓库 MIT 授权范围。本项目为独立社区项目,与汇川无官方隶属或背书关系。

Available Tools

19 tools
capabilitiesA

工具清单、支持格式矩阵、限制与原生运行库状态。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility for behavioral disclosure. It lists what information is returned but does not state that the operation is read-only, side-effect-free, or non-destructive. The nature of the tool strongly implies a query, but the description never explicitly confirms that it performs no mutations or has no external effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single line that lists the four content categories directly. It is efficient, front-loaded, and contains no fluff or unnecessary prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description effectively describes the return content (tool list, format matrix, limitations, runtime status). It is sufficient for an agent to understand what to expect, though it lacks detail on the structure or granularity of the output. For a zero-parameter meta-tool, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema already fully documents them (empty object). Baseline 4 applies; the description adds nothing parameter-related, which is appropriate because no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly names the resource content: tool list, supported format matrix, limitations, and native runtime library status. It clearly distinguishes this meta-tool from the project-specific siblings (project_inspect, il_read, etc.) by focusing on environment-wide capabilities rather than any single artifact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool vs alternatives. It does not state that it should be used to discover available tools or formats before calling other operations, nor does it mention any exclusions. Usage context is only weakly implied by the tool's name and content, but not articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

il_batch_patch_copyA

一次核对多文件、多处非重叠补丁;成功才发布副本,隔离旧产物并核对其余文件。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes源工程之外、尚不存在的新目标目录
patchesYes按文件组织的原哈希和 edits;所有匹配基于修改前文本,禁止重叠
projectYes含唯一 HCP 索引的完整工程目录

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It discloses meaningful details: the copy is published only after success, old artifacts are isolated, and remaining files are verified. This goes well beyond a generic patch/copy statement, though it stops short of describing exact failure modes or source-modification guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the main action, then adds essential success semantics without filler. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three required parameters, 100% schema coverage, no output schema, and no annotations, the description provides enough context to select and invoke the tool: it explains the batch scope, non-overlap requirement, success-gated publishing, and artifact isolation. It does not explicitly describe return values or detailed failure behavior, but those are secondary when the schema already covers parameter meaning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the input schema already documents all three parameters with constraints and meanings, including dest being a nonexistent directory and patches being organized by file with expected_sha256 and edits. The prose description adds no extra parameter-specific detail, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: verify multiple files and multiple non-overlapping patches in one pass, then publish a copy only on success. The 'batch' and 'multi-file/multi-patch' wording clearly distinguishes it from single-patch sibling tools like il_patch_copy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for batch scenarios with multiple files and non-overlapping patches, but it never explicitly names when to choose this tool over alternatives like il_patch_copy, nor does it list exclusions or fallback conditions. The usage context is present but must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

il_patch_copyB

在不改动源工程的前提下,生成打了唯一匹配文本补丁的新工程副本,并把失效缓存/陈旧产物移入隔离区。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes新工程目录(必须不存在)
fileYes要修改的 .IL basename
projectYes源工程目录(只读)
new_textYes替换后的文本(LF)
old_textYes必须唯一匹配的原文(LF)
quarantineNo是否隔离派生表
expected_sha256Yes源文件当前 SHA256(防并发改动)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the source project is not modified and that invalid caches/stale artifacts are moved to quarantine. It does not describe failure modes, return semantics, permission requirements, or behavior when old_text is not unique or expected_sha256 mismatches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense sentence with no filler; the key constraint, action, and side effect are all present. The long Chinese clause chain makes it slightly less scannable than separate short sentences, but it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema and no annotations, the description covers the high-level outcome and a key side effect, and the schema covers parameter details. It omits expected return values, failure behavior, and how quarantine relates to the quarantine parameter, leaving it minimally adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The description reinforces concepts like 'unique match' and quarantine, but it does not add meaning beyond the parameter schema, which already documents old_text uniqueness, dest non-existence, and expected_sha256 concurrency protection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete operation: generate a new project copy with a unique-matching text patch applied, without modifying the source project, and quarantine stale/invalid artifacts. This is specific about verb and resource, though it does not explicitly name or differentiate sibling tools like ld_to_il_copy or native_compile_copy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '在不改动源工程的前提下' implies the tool is intended for scenarios where the source must remain untouched while a patched copy is produced. However, it gives no explicit when-to-use/when-not-to-use guidance and does not compare against sibling copy/patch tools, so an agent must infer the appropriate selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

il_readA

读取纯明文 .IL POU 的 IL 源码文本(LF 换行,GBK 解码)。

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYes工程内 POU basename,如 MAIN.IL
projectYes工程目录

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description is responsible for behavioral disclosure. It discloses encoding (GBK) and line ending normalization (LF), which are important. However, it does not specify whether the tool returns the raw content, handles missing files, or errors on non-plain-text. For a read-only tool, the absence of side-effect warnings is acceptable, but the return behavior is left implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that specifies the verb, resource, and key format details (plain-text, GBK, LF). No wasted words; efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool, the description is essentially complete. It covers the file type (plain-text .IL), encoding, and newline handling. It does not mention error conditions or the return type, but those can be inferred (returns the text). The absence of an output schema and the low complexity mean the description does not need to explain much more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both parameters (project and file) have descriptive comments. The tool description itself does not add any extra meaning to the parameters, but it reinforces that the file is a plain-text .IL POU. Since the schema already documents the parameters clearly, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific action: read the IL source text of a plain-text .IL POU. It also notes the file is plain-text and specifies encoding (GBK) and line endings (LF), which makes the purpose unmistakable. While it doesn't explicitly name sibling alternatives, the resource and verb are so specific that an agent can easily distinguish it from the copy/probe siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use case: reading plain-text .IL source files. It does not explicitly say when to use this over siblings like il_patch_copy or ld_to_il_copy, nor does it mention exclusions (e.g., not for binary files). However, the 'plain-text' qualifier and the read action give enough implicit guidance for a simple tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

il_to_ld_copyA

原厂 IL 转梯形图;独立回读 IL、清缓存编译并要求机器码一致后交付。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes源工程之外、尚不存在的新目标目录
fileYes工程索引登记的 IL 文件名
projectYes含唯一 HCP 索引的完整工程目录
install_dirNoAutoShop 安装目录;省略时读取 AUTOSHOP_INSTALL_DIR

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden, and it does more than the bare verb: it discloses independent IL readback, cache-clearing compile, and a machine-code-consistency gate before delivery. It does not say what happens on mismatch or what filesystem side effects '清缓存' has, so it is not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense, front-loaded sentence: purpose first, then verification condition. There is no filler, and every clause carries operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient to invoke the tool for a straightforward IL→LD conversion with verification, and the schema covers parameter details. It lacks explicit failure behavior and return/output semantics, which matters more because there is no output schema or annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented; the description adds no per-parameter meaning. Baseline 3 is appropriate because the tool-level context is useful but does not elaborate on project/file/dest syntax.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific conversion ('原厂 IL 转梯形图') plus a verification workflow, so the core action is unmistakable. The direction IL→LD also distinguishes it from the sibling ld_to_il_copy without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: this is for converting original factory IL to ladder and delivering only after machine-code verification. It does not explicitly name alternatives or state when-not-to-use, but the '原厂' qualifier implies the scoping condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ld_to_il_copyA

调用原厂接口将指定 LD 转成可编辑 IL,仅转换前后编译产物逐字节一致时交付新副本。无需 GUI。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes全新转换结果目录
fileYes索引中登记的 LD 文件名
projectYes源工程目录,只读
install_dirNo版本指纹匹配的安装目录

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and discloses key behaviors: it calls an original vendor API, requires byte-identical compiled artifacts before delivering a new copy, and needs no GUI. It does not detail failure handling or effects on an existing dest, but the core safety gate and external-call behavior are clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence front-loads the main action, then states the critical delivery condition, then adds the GUI note. Every part earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a conversion/copy tool with four parameters and no output schema, the description covers the essential semantics: what is converted, how delivery is gated, and that it is headless. It could be more complete by naming sibling alternatives or failure behavior, but the core information needed to invoke it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters. The description adds global context about converting LD to editable IL but does not explain individual parameters 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action: invokes the vendor interface to convert a specified LD into editable IL, and qualifies the delivery with a byte-identity condition. This makes it clearly distinct from siblings like il_read or native_compile_copy, which involve reading or native compilation rather than LD-to-IL conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies an automated/headless use case via '无需 GUI' and states the delivery condition, but it does not say when to prefer this tool over sibling tools such as il_read or native_compile_copy, nor does it list any exclusions. Usage context 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.

native_compile_copyA

在全新副本中调用原厂 x86 DLL 编译 H3U IL/LD;校验完整覆盖、稳定产物和配置不变,成功后输出工程 ZIP。无需 GUI,不连接 PLC。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes构建结果目录,必须不存在
projectYes原工程目录,只读
install_dirNoAutoShop 安装目录,DLL 必须匹配已验证指纹

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden and does well by revealing that it operates on a fresh copy, validates complete coverage, stable artifacts, and unchanged configuration, and outputs a ZIP only on success. It does not detail failure behavior or cleanup, but the main safety-relevant traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence with no filler; each clause adds operational information, the core action is front-loaded, and the environment constraints are concise. It earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a compilation tool with no output schema, the description adequately covers purpose, isolation, verification criteria, output behavior, and execution environment. The main gaps are lack of explicit failure/error semantics and exact output format, but the essential context for calling it correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has meaningful inline documentation such as read-only project, dest must not exist, and DLL fingerprint matching. The description adds overall compilation context but no parameter-specific semantics beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: invoking the original vendor x86 DLL to compile H3U IL/LD in a fresh copy, with verification and a ZIP output. It also distinguishes itself by emphasizing copy-based isolation, no GUI, and no PLC connection, which separates it from siblings like project_inspect or native_compile_probe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: this is for headless compilation of H3U IL/LD using the vendor DLL, without connecting to a PLC. It does not explicitly name alternatives or state when not to use it, so it stops 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.

native_compile_probeA

静态读取 PE 证据/安装目录,报告架构、SHA256 与编译相关导出;不执行 DLL、不假编译。

ParametersJSON Schema
NameRequiredDescriptionDefault
dllsNo只关注这些文件名
evidenceNoPE 研究证据 JSON 路径
install_dirNoAutoShop 安装目录(只读静态扫描)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavior disclosure. It discloses that the tool is static, does not execute DLLs, does not fake compilation, and reports specific metrics. This is above-average transparency for a tool without annotations, though it omits details about return format or possible edge-case behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core purpose and includes critical negative guarantees at the end. Every word earns its place, and it avoids redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple probe tool with three optional parameters and no output schema, the description covers the essential aspects: what it reads, what it reports, and its non-destructive nature. It does not describe the exact return format, but given the tool's scope and the presence of a descriptive schema, this is an acceptable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all three parameters with 100% coverage (dlls, evidence, install_dir). The description loosely references 'PE evidence/install directory' which maps to evidence and install_dir, but does not add significant new meaning beyond what the schema provides. Since coverage is high, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (reads), resource (PE evidence/install directory), and specific outputs (architecture, SHA256, compile-related exports). It also explicitly excludes execution and fake compilation, which distinguishes it from sibling tools like native_compile_copy or il_patch_copy. Clear and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is a static inspection tool and explicitly says it does not execute DLLs or fake compilation, which conveys a safe, read-only usage context. However, it does not name alternative tools or provide explicit guidance on when to choose this over siblings. Usage is clear but not fully explicit about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

package_projectA

打包源码与配置(排除派生表/陈旧编译结果),输出 ZIP 与 SHA256/CRC32 清单。

ParametersJSON Schema
NameRequiredDescriptionDefault
out_zipYes输出 ZIP 路径(必须不存在)
projectYes工程目录
include_staleNo是否包含失效缓存/陈旧编译产物(默认排除)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses useful behaviors such as excluding derived tables/stale compilation results and producing a hash manifest. However, it does not mention whether the source tree is modified, whether existing files are overwritten, or any side effects beyond creating the ZIP.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the primary purpose, then adds the key exclusions and output format in parentheses. Every element is meaningful and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity, the description sufficiently explains the tool's output (ZIP plus SHA256/CRC32 manifest) and its core exclusion policy. It does not spell out the full manifest contents or detailed handling of stale artifacts, but the essentials needed to invoke and interpret the result are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all three parameters with 100% description coverage, including include_stale's default behavior. The tool description adds little beyond restating the exclusion behavior that is already present in the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('packages source code and configuration') and the concrete deliverables (a ZIP archive and a SHA256/CRC32 manifest). This clearly separates it from sibling tools like project_inspect or native_compile_copy, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies what is included and excluded during packaging, giving clear operational context. It does not explicitly name alternative sibling tools or state when not to use it, but the packaging role is distinct enough that the usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_auditA

静态检查缺失文件、多处 OUT、跨块写入和未知指令;不是运行仿真或逻辑合格证明。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes含唯一 HCP 索引的完整工程目录

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the specific checks performed and explicitly excludes simulation and logic proof, which is good. However, it does not state whether the operation has side effects (likely read-only, but not confirmed) or describe the output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, compact sentence that front-loads the primary function (static checks) and adds exclusions. No wasted words; every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description adequately covers what the tool does and what it does not do. The main gap is the lack of explicit side-effect or return-value information, but given the simplicity, this is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameter, describing 'project' as a complete directory with an HCP index. The description does not add additional syntax or format details beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it performs static checks (缺失文件、多处 OUT、跨块写入和未知指令) on a project, using a specific verb 'audit' and resource 'project'. It distinguishes from simulation tools by explicitly stating what it is not, though it does not name specific siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states it is 'not running simulation or logic qualification proof', giving a clear when-not-to-use condition. However, it does not reference alternative tools or provide context for when it should be chosen over siblings like project_inspect or project_diff.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_build_copyA

可选全部 LD 转换、多文件补丁、原厂编译和打包的一次调用;失败不发布中间工程。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes源工程之外、尚不存在的新目标目录
patchesNo按文件组织的原哈希和 edits;所有匹配基于修改前文本,禁止重叠
projectYes含唯一 HCP 索引的完整工程目录
convert_allNo是否先将全部 LD 转为 IL,默认 false;补丁哈希必须匹配转换后的 IL
install_dirNoAutoShop 安装目录;省略时读取 AUTOSHOP_INSTALL_DIR

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does add one important guarantee: '失败不发布中间工程' (on failure, intermediate project is not published), implying transactional behavior. However, it does not disclose success outputs, whether the source project is mutated, required permissions, or what artifacts are produced, so transparency is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the composite workflow and ends with the critical failure behavior. There is no filler or repetition, and every clause contributes decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with no annotations and no output schema, the description gives the essential orchestration-level context and the key failure guarantee. Still, it leaves unspecified the return or artifact details, execution order, and success behavior, though the rich schema covers parameter-level facts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The description does reinforce how the pipeline stages map to meaningful parameter groups, particularly that patch hashes relate to converted IL, but the detailed semantics are already well documented in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific composite workflow: optional full LD conversion, multi-file patching, factory compile, and packaging in one call. This distinguishes it from the granular sibling tools like il_batch_patch_copy, native_compile_copy, and package_project. It stops short of an explicit verb-resource statement about copying or building into dest, so it's clear but not maximally precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '一次调用' clearly signals that this tool is for combining multiple pipeline stages into a single invocation rather than calling siblings separately. This provides clear usage context, but the description does not state explicit when-not-to-use conditions or name specific alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_convert_all_copyA

将工程内全部 LD 依次转成 IL,每次验证机器码等价,最后统一编译交付。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes源工程之外、尚不存在的新目标目录
projectYes含唯一 HCP 索引的完整工程目录
install_dirNoAutoShop 安装目录;省略时读取 AUTOSHOP_INSTALL_DIR

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It does this well by stating sequential conversion, per-item machine-code equivalence verification, and final compile/deliver; '交付' remains slightly vague but the core side effects are visible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the core conversion and then states the verification and delivery stages; every clause is informative and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The operation's steps are clear, but with no output schema the description does not cover return values or behavior if machine-code equivalence fails, which an agent would reasonably need for a verification-heavy tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters are fully described in the schema, so the description is not required to add parameter detail. It adds no extra meaning beyond the schema, matching the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact operation: convert all LD in the project to IL, with verification and a final compile/delivery step. This distinguishes it from sibling tools like ld_to_il_copy or project_build_copy by signaling batch conversion plus compilation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended batch use is implied by '全部 LD' and '最后统一编译交付', but there is no explicit statement of when to prefer this over ld_to_il_copy or project_build_copy, nor any exclusions for single-block conversions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_diffA

对比两个工程目录:新增/删除/改动文件、IL 文本 diff、配置与索引变化。

ParametersJSON Schema
NameRequiredDescriptionDefault
afterYes新工程目录
beforeYes旧工程目录

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does disclose what the tool analyzes (file changes, IL text diffs, config/index changes), which is useful. However, it does not clarify whether the operation is read-only, whether it modifies anything, what output format is returned, or any performance/availability considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core action and then enumerates the diff categories. Every clause earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only two required string parameters and no output schema, the description does a reasonable job of stating what the comparison covers. It lists the diff categories, which gives an agent expectations about the result. A small gap remains: it does not describe the exact output format or any error conditions, but this is acceptable for a focused comparison tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters (before, after) are documented as old and new project directories. The description reinforces that these are directories to compare, but adds no detail beyond the schema about expected formats, path types, or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('对比' / compare), names the resource ('两个工程目录' / two project directories), and lists concrete comparison dimensions: added/deleted/modified files, IL text diff, and config/index changes. This clearly differentiates it from siblings like project_inspect or il_read, which are about inspecting a single project or reading IL rather than computing a diff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: an agent can infer to use this tool when needing to compare two project directories. However, the description does not explicitly state when to prefer it over alternatives, nor does it mention exclusions or prerequisites such as requiring both directories to exist or be valid project layouts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_exportB

导出 UTF-8 IL 文本、哈希、引用和静态检查 JSON 到新目录,供审查。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes源工程之外、尚不存在的新目标目录
projectYes含唯一 HCP 索引的完整工程目录

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden. It implies side effects by exporting files to a new directory, but does not clarify whether the source project is modified, what response is returned, or what happens on errors. This leaves important operational behavior undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence front-loads the verb, output contents, destination, and purpose. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core information is present: two well-described parameters, a clear export target, and the review-oriented purpose. However, the lack of annotations, absence of an output schema, and no sibling differentiation leave the agent with gaps around return behavior and tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both required parameters ('project' and 'dest') have meaningful descriptions. The tool description adds context about the output contents but does not materially improve parameter understanding 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('导出' / export) and specific output artifacts (UTF-8 IL text, hashes, references, static check JSON) to a new directory. This makes the tool's function identifiable, though it does not explicitly contrast it with sibling tools like package_project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '供审查' (for review) implies an intended use case, and the schema preconditions (complete project, new non-existent destination) provide some context. However, there is no explicit guidance on when to choose this tool over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_inspectB

列出工程机型、POU/文件类型、每个文件的 SHA256、支持级别与派生表。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes工程目录(含唯一 .hcp)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It states it lists information, implying a read-only operation, but does not explicitly confirm safety, mention output format, pagination, or any side effects. For a tool with no annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action and the list of data it returns. There is zero waste; every phrase adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one well-described parameter, the description is mostly complete. However, it does not mention the output format or any error conditions. Given the lack of annotations, a more explicit statement of read-only behavior and return structure would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'project' has a schema description that fully explains it as a directory containing a unique .hcp file. Since schema description coverage is 100%, the description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('列出' / list) and resource (project machine types, POU/file types, SHA256, support levels, derived tables). It is distinct enough from siblings like il_read or project_diff, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives. The description only states what it does, leaving the agent to infer usage context. There is no mention of when to prefer it over project_diff or other inspection tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_xrefA

列出显式软元件地址的指令和读写分类;范围、隐式双字和间接地址不作完整性保证。

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceNo可选直接地址,例如 X10 或 D500;省略则列全部
projectYes含唯一 HCP 索引的完整工程目录

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It usefully discloses a key limitation: range, implicit double-word, and indirect addresses are not guaranteed complete. It also implies a read-only listing operation, though it does not describe output format or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core action and result, then appends the important completeness caveat. There is no filler and no repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description provides enough to understand the purpose and a critical limitation. It does not fully specify the return structure, but the stated output content and caveat are largely sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains `project` and optional `device` with examples. The tool description adds no additional parameter-level semantics beyond the general explicit-address focus, matching the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it lists the instructions and read/write classification for explicit device addresses. It states the scope and exclusions clearly, but it does not explicitly differentiate itself from sibling tools such as project_search or symbols_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Intended use is implied: use it when you need cross-reference information for explicit device addresses. However, it does not explicitly state when to prefer this tool over alternatives, nor does it name any when-not conditions or sibling substitutes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbols_patch_copyA

新增或修改全局符号,独立进程回读并要求前后机器码一致;只交付新副本。

ParametersJSON Schema
NameRequiredDescriptionDefault
destYes源工程之外、尚不存在的新目标目录
changesYes完整行字段;index=-1 新增,其他值修改原行,不支持删除
projectYes含唯一 HCP 索引的完整工程目录
install_dirNoAutoShop 安装目录;省略时读取 AUTOSHOP_INSTALL_DIR
expected_sha256Yessymbols_read 返回的 VarList.gdt SHA256

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses meaningful traits: a separate process reads back results, machine code must match before/after, and only a new copy is delivered. It does not state what happens on mismatch or explicitly guarantee the source tree is untouched, but it is substantially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense, front-loaded sentence with no filler. Each clause contributes either to what the tool does, how it verifies, or what it outputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema richly documents all five parameters, including index=-1 semantics, expected_sha256 source, and the nonexistent-dest requirement. The description adds the critical verification and copy-only behavior. Failure-mode behavior is unspecified, but the information needed to invoke the tool correctly is essentially present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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. The description reinforces the add-versus-modify intent and the copy/verification workflow, but it adds no per-parameter 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: '新增或修改全局符号' (add or modify global symbols), and distinguishes itself from read-only siblings like symbols_read by specifying separate-process read-back and copy-only delivery. An agent can tell what this tool does and how it differs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for modifying global symbols while producing a fresh copy, but it never explicitly says when to prefer it over alternatives such as symbols_read, il_patch_copy, or project_build_copy. It gives no when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

symbols_readA

原厂接口读取全局符号名称、地址、注释;只在工程副本中运行。

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYes含唯一 HCP 索引的完整工程目录
install_dirNoAutoShop 安装目录;省略时读取 AUTOSHOP_INSTALL_DIR

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral transparency burden. It explicitly states the operation is a read ('读取') and restricts execution to project copies, which implies non-destructive intent. It does not mention side effects or permissions, but for a read-only-style tool this is sufficient and more informative than the tool name alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with no filler. Each clause contributes meaning: the resource and action are front-loaded, and the operational constraint is appended without repetition. It is exemplary in brevity and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read tool with two well-documented parameters and no output schema, the description covers the essential behavior and constraints. It specifies the data read (names, addresses, comments) and the execution scope (project copy). Some details like output format are absent, but they are not critical for selecting or calling this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters. The description adds no parameter-specific information beyond what the schema provides (e.g., project copy context matches the schema's '含唯一 HCP 索引的完整工程目录'). Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb (读取/read) and resource (global symbol names, addresses, comments), and adds a key constraint (只在工程副本中运行) that distinguishes it from write/patch siblings like symbols_patch_copy. An agent can tell exactly what this tool does and what it does not do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by requiring a project copy, but it does not explicitly say when to prefer this tool over alternatives such as symbols_patch_copy or il_read. It offers no 'use this when' or 'not when' guidance, only a technical constraint.

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.

  1. 10 tool updatesv0.4.0
    • Addedil_batch_patch_copy
    • Addedil_to_ld_copy
    • Addedproject_audit
    • Addedproject_build_copy
    • Addedproject_convert_all_copy
    • Addedproject_export
    • Addedproject_search
    • Addedproject_xref
    • Addedsymbols_patch_copy
    • Addedsymbols_read
  2. 9 tool updatesv0.2.0
    • First observedcapabilities
    • First observedil_patch_copy
    • First observedil_read
    • First observedld_to_il_copy
    • First observednative_compile_copy
    • First observednative_compile_probe
    • First observedpackage_project
    • First observedproject_diff
    • First observedproject_inspect

TDQS

A3.6/5.0

Scored across 19 tools

Disambiguation5/5

Each tool has a clearly distinct purpose—read, patch, convert, compile, inspect, etc.—with no overlapping functionality. Even the copy variants are differentiated by their operation (IL-to-LD, LD-to-IL, patch, batch patch, convert-all, build).

Naming Consistency3/5

Names use underscores and lowercase but mix conventions: some are verb-noun (package_project), some noun-verb (project_search), and others are compound phrases (il_batch_patch_copy). The pattern is not uniform but still readable.

Tool Count4/5

19 tools is on the higher side but fits the server's comprehensive scope of PLC code manipulation, offering both granular operations and a combined build tool. The count is justified, though it approaches the heavy range.

Completeness4/5

The toolset covers reading, patching, converting, compiling, inspecting, searching, auditing, exporting, diffing, and packaging. Minor gaps exist (e.g., no delete/restore), but core workflows for IL/LD conversion and patching are fully covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    A
    maintenance
    Provides read-only analysis of Mitsubishi GX Works3 PLC projects via MCP, enabling device tracing, cross-referencing, ladder inspection, linting, and report generation without modifying source projects.
    4
    15
    52 PyPI
    6
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables offline-first industrial manufacturing workflows by parsing, linting, and drafting FANUC .LS robot programs and analyzing STEP/STP CAD files through MCP tools.
    4
    Apache 2.0
  • F
    license
    B
    quality
    B
    maintenance
    Enables lossless parsing, inspection, validation, simulation, and creation or editing of FATEK .ldr ladder-logic files through local stdio MCP tools, including a user-import-verified start/stop template. New files are written to an artifacts directory so existing files and original samples are never overwritten.
    9
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables developers to build and deploy MCP servers with multiple modular tools bundled into a single executable file.
    MIT