RemoteConnect MCP Server
RemoteConnect MCP Server
一个用于 Schneider Electric RemoteConnect 及其 SCADAPack x70 UnitySoControl 逻辑编辑器的 MCP 服务器。它可以发现配对的 .PRJ/.RCZ/.STU/.STA 文件,并让 AI 代理安全地检查、编辑、重建和保存 IEC 逻辑。
本项目受 tiaportal-mcp 启发,该库用于 Siemens TIA Portal。TIA Portal 通过 Openness API 开放接口,而 Control Expert 则暴露 Unity Developer's Edition (UDE) COM 自动化服务(PSBroker.PServerBroker)——本服务器使用 pywin32 驱动它,并通过 stdio 将其暴露为 MCP 工具。
AI agent ──MCP/stdio──> remoteconnect-mcp ──COM/UDE──> UnitySoControlAI 可以做什么
项目:为硬件目录中的任意 CPU(M340:**、M580、Premium、Quantum……)从零创建新工程,打开/保存
.STU/ST,导入/导出.mars数据。浏览:查看任务、Sections、变量、DFB工程/DDT类型、CPU/硬件信息、构建状态。
编程:在 ST、LD、FBD、SFC、IL 中创建/读取/删除程序段;通过导入 Control Expert XML 写入逻辑(AI 先读取一次现有段的 XML 并参考其 schema,已验证对五种语言均可往返转换)。
硬件:遍歷完整的总线 → 分站 → 机架 → 模块 拓扑;按目录部件号 添加/删除 IO 模块;更换 CPU。
Modbus / DTM(已在 M580 实测):地浏览 DTM 拓扑,添加从站 DTM(
add_modbus("Modbus Device", ...,parent= ),设置设备 IP 地址,读取扫描状态(get_dtm_control_parameters),并通过get_master_dtm_dataset等工具 VIDM,添加 Modbus MP 请求(读写地址 + 长度)。内置编号规则的ManagedModusRequest模板;写入的扫描行会生成built_ok,并在扫描器配置中显示为ModbusScanLine。
网络(Premium/Quantum):创建逻辑以太网网络并设置其 IP 服务配置。
变量:列表、创建、更新、删除全局变量,包括类型、注释、地址(
%MM等)、初始值。构建:分析并构建工程,输出最终构建状态。
界面:弹出 Control Expert 窗口供人工查看或接管,并可实时打开动画表编辑器(
open_animation_table)来动态显示 AI 操控测试值。在线(可选):连接 PLC/仿真器、下载/上传、运行/停止。
实时值(可选):通过 Modbus TCP(
contact→read_tags/write_tags)读写运行中的 PLC/模拟器数据。由于 UDT/COM 没有实时标签访问,这是与运行控制器进行测试的通道。使用已定位的%M/%MW变量,并将未定位的 DFB 内部数据覆盖到%MM命中名称。安全:明确. ... (continue)
Let's correct. I must not let mistakes get in. Let's rewrite# RemoteConnect MCP Server
一个用于 Schneider Electric RemoteConnect 及其 SCADAPack x70 UnitySoControl 逻辑编辑器的 MCP 服务器。它可以发现配对的 .PRJ/.RCZ/.STU/.STA 文件,并让 AI 代理安全地检查、编辑、重建和保存 IEC 逻辑。
本项目的灵感来源于 tiaportal-mcp(用于 Siemens TIA Portal)。TIA Portal 通过 Openness API 暴露接口,而 Control Expert 则暴露 Unity Developer's Edition (UDE) COM 自动化服务器(PSBroker.PServerBroker)——本服务器通过 pywin32 驱动它,并将它作为 MCP 工具在 stdio 上暴露。
AI agent ──MCP/stdio──> remoteconnect-mcp ──COM/UDE──> UnitySoControlRelated MCP server: control-expert-mcp
AI 可以做什么
项目:为硬件目录中的任意 CPU(M340、M580、Premium、Quantum……)从零创建项目,打开/保存
.stu/.sta,导入/导出.xef/.zef浏览:任务、程序段、变量、DFB/DDT 类型、CPU/硬件信息、构建状态
编程:在 ST、LD、FBD、SFC、IL 中创建/读取/删除程序段;通过导入 Control Expert XML 编写逻辑(AI 会读取一次现有段的 XML 并按照它的 schema 来写——已验证五种语言均可往返转换)
硬件:遍历完整的总线 → 分站 → 机架 → 模块拓扑;按目录部件号 添加/移除 IO 模块;更换 CPU
Modbus / DTMs(已在 M580 上实测):浏览 DTM 拓扑,添加从站 DTM(
add_dtm("Modbus Device", ..., parent_dtm="BMEP58_ECPU_EXT")——协议 ID 是Modbus,会自动尝试),设置设备 IP 地址,读取扫描器状态(get_dtm_control_parameters),并通过get_master_dtm_dataset/set_master_dtm_dataset编辑主站 DTM 数据集来添加 Modbus 扫描请求(读/写地址加上大小);工具说明中构建了遵循编号规则的ManagedModbusRequest模板;写入的扫描行会构建built_ok,并在扫描器配置中显示为ModbusScanLine网络(Premium/Quantum):创建逻辑以太网网络并设置其 IP 服务配置
变量:列出/创建/更新/删除全局变量,包括类型、注释、地址(
%MW...)、初始值构建:分析并构建项目,获取结果
界面:弹出 Control Expert 窗口供人工查看或接管;同时打开动画表编辑器(
open_animation_table),以便在 AI 驱动测试时现场观察值动画在线(可选):连接 PLC/模拟器,下载/上传,运行/停止
实时值(可选):通过 Modbus-TCP(
modbus_connect→read_tags/write_tags)读写运行中的 PLC/模拟器数据——由于 UDE/COM API 不能访问实时标签,这个通道被用于与运行中的控制器测试逻辑通道(使用已定位的%M/%MW标签;先将未定位的 DFB 内部变量镜像到%MW)
环境要求
装有并授权 EcoStruxure Control Expert(或 Unity Pro)的 Windows 中——目前已在 Control Expert 14.0 上验证,但任何能注册
PSBroker.PServerBroker.1的版本应该都能工作(UDE 自动化服务器随 Control Expert 本身提供;单独的 UDE 包只用于文档)Python 3.10+,并同步安装
pywin32服务器必须与 Control Expert 运行在同一台机器上(DCOM 远程展开是可能的,但此处未配置)
安装
cd remoteconnect-mcp
python -m venv .venv
.venv\Scripts\pip install -e .连接 AI 客户端
该服务器通过 stdio 提供 MCP 协议。请将客户端指向 venv 的 Python:
RealConnect / SCADAPack x70
RemoteConnect 将 IEC 逻辑存储在其 .PRJ 逻辑文件旁边的 .STU/.STA 文件中,同级的还有一个可选 .RCZ 配置文件。在启动 MCP 服务器之前,设置 OEM 产品上下文,这样 broker 启动时就是 UnitySoControl,而不是标准 Control Expert:
$env:CE_MCP_XPDF_CONTEXT = "C:\ProgramData\Schneider Electric\CommonControlExpert\16.2\Xpdf\SCBForSCADAPack.xpdf"用文件包中的任意一个成员调用 inspect_remoteconnect_project,就可以找到 paired 文件,然后调用 open_remoteconnect_logic 打开该逻辑工程。.PRJ 检查器是只读的,并且故意不去反序列化或重写ره不明确的 DTM 工程数据。
Claude Desktop
%APPDATA%\Claude\claude_desktop_config.json(参见 samples/claude_desktop_config.json):
{
"mcpServers": {
"control-expert": {
"command": "C:\\path\\to\\control-expert-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "control_expert_mcp"]
}
}
}Claude Code
claude mcp add control-expert -- C:\path\to\control-expert-mcp\.venv\Scripts\python.exe -m control_expert_mcpVS Code(GitHub Copilot 代理模式)
.vscode/mcp.json(参见 samples/vscode-mcp.json):
{
"servers": {
"control-expert": {
"type": "stdio",
"command": "C:\\path\\to\\control-expert-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "control_expert_mcp"]
}
}
}工具
工具 | 用途 |
| 服务器版本、打开的项目、CPU、构建状态 |
| 对配对的 RemoteConnect |
| 只读的 FDT/DTM 拓扑与配置记录清单;绝不反序列化不透明的厂商载荷 |
| 将 Object Bulk Edit 日志解析为逐对象的变更、警告、错误和 |
| 读取 RemoteConnect 原生 |
| 对新的 |
| 使用配置的 OEM 上下文打开一个 bundle 中配对的 UnitySoControl 逻辑文件 |
| 添加变量/ST、执行完整重建,并仅将干净结果保存到新的 |
| 打开 |
| 为 CPU 创建项目(例如 |
| 持久化 / 关闭(close 会丢弃更改,除非 |
| 构建或分析;返回构建结果状态 |
| 任务、段(含语言)、事件、fct 模块 |
| 具有类型/注释/地址/初始值的变量 |
| 变量编辑 |
| 以 Control Expert XML 形式返回段逻辑 |
| 以纯 IEC 文本形式写入 ST 逻辑(无 XML)——创建或替换一段,并可内联声明变量 |
| ST/LD/FBD/SFC/IL 的编写指南和已验证示例——AI 客户端编写图形逻辑所需的 exchange-XML 结构规则(FBD 引脚几何规则、LD 线/单元格模型、SFC 图布局) |
| 在导入/构建前用已安装的 |
| 无需模板即可将任意项目 DFB 放入梯形图——读取 DFB 接口后自动生成正确的(CE 自有)引脚几何结构,然后绑定终端引脚 |
| 克隆 GUI 编写的 LD 内块模板,并重新绑定实例与变量(作为基本 EFB/对 GUI几何有精确要求的回退方案) |
| 段管理(ST/LD/FBD/SFC/IL) |
| 添加 MAST/FAST/AUX/SAFE 任务 |
| 主要写入路径 —导入段逻辑、变量、DFB/DDT 类型、配置或整个工程的交换文件(内联 XML 或文件) |
| 以 XML 导出变量 / 程序 / 配置 / 单个 DFB / 单个段 |
| 将完整应用程序导出为 |
| DFB + DDT 类型 |
| CPU + 总线 → 站 → 机架 → 模块树 |
| 通过部件号 + 目录版本(如 |
| 构建远程站/机架(例如在 M580 RIO 总线上添加 X80 EIO 站 + |
| 更换 CPU 型号 |
| 监视/动画表(接受 |
| DTM 浏览器中的拓扑,包括名称、类型、地址 |
| 添加通讯 DTM 或从站设备(例如 M580 CPU DTM 下的 |
| 设置从站的 IP / 总线内地址(+ 网关/子网——解决 “IP address and Gateway address are not in the same domain” 构建警告) |
| M580 CPU 板上以太网: IP/子网/网关 + security 页面服务(tftp/eip/dhcp_bootp/ftp/web/snmp)。启用 tftp+eip+dhcp_bootp 可解除 remote-EIO CRA 构建错误 |
| Modbus TCP I/O 扫描器配置 XML( |
| 从设备 DTM 自己的数据集(身份+总线地址) |
| 主/CPU DTM 数据集(通过 ZEF 往返)——在 |
| Premium / Quantum 的逻辑网络 |
| 使 Control Expert 窗口可见(默认只读,可边跟随操作 / 在客户保留写入权限时打开编辑器) |
| 在实时 CE 窗口中打开动画表的编辑器,以便在测试期间观察视觉变化 |
| 在线:设置连接 / 断开连接 / 状态 / 传输 / 运行 / 停止 |
| 打开或关闭到 CPU/仿真器服务器的 Modbus TCP 连接(仿真器为 |
`read_tags | 从/写即时变量标记值( |
⚖
AI 如何编写逻辑
程序段以 Control Expert XML 形式进行交换。一个 ST 段如下所示:
<STExchangeFile>
<fileHeader company="Schneider Automation" product="Control Expert V14.0 - 190112"
dateTime="date_and_time#2026-6-11-1:0:0" content="Structured source file"
DTDVersion="41"></fileHeader>
<contentHeader name="Project" version="0.0.000"></contentHeader>
<program>
<identProgram name="Logic01" type="section" task="MAST"></identProgram>
<STSource>
IF StartButton AND NOT StopButton THEN
MotorRun := TRUE;
ELSE
MotorRun := FALSE;
END_IF;
</STSource>
</program>
</STExchangeFile>import_xml(kind="section", xml_content=...) 在段不存在时创建该段,在冲突时删除并替换该段。代理应首先声明被引用的变量(create_variable),或包含一个 <dataBlock>,然后调用 build_project 进行验证。
在线工具(真实 PLC / 模拟器)—— 默认禁用
会触及控制器的工具(plc_connect、plc_transfer、plc_command 等)默认不会注册,除非你设置环境变量:
CE_MCP_ENABLE_ONLINE=1启动/停止 PLC 或下载应用工程都会影响物理过程。因此这些功能只能,请在测试台架或模拟器上启用,并始终留有人在回路中监督。
模拟器调试(已端到端验证):先启动 PLC 模拟器 —— 通过 start_simulator,或使用 Control Expert 安装目录中的 PLC_Simulator\sim.exe(它驻留在系统托盘区)—— 然后依次 plc_setup_connection("simulator", "127.0.0.1") → plc_connect("simulator") → plc_transfer("pc_to_plc") → plc_command("run")。工程在下载前必须能干净构建(built_ok)。plc_state 会报告连接状态、运行/停止状态,以及 PC 与 PLC 是否一致。
已知限制: 一个刚启动、尚未加载任何站点(
plc_state=no_conf)的模拟器,会以 “Family check failed” 拒绝plc_transfer——API 下载(不同于 Control Expert GUI 的行为)要求模拟器里已有一个与设备匹配系列的站点。请先在 Control Expert GUI 中手动传输任意工程一次(PLC →Simulation→ Connect → Transfer)完成默认初始化;已加载的站点在 sim.exe 运行期间一直保留,之后所有 API 下载都能正常工作(但传输前要先停止 PLC——向正在运行的 PLC 传输会失败)。
通过 Modbus TCP 读取实时值(已端到端验证)
UDE/COM 自动化 API 访问的是 工程数据库——它没有实时标记值的读/写能力(动画表只能在 GUI 里显示;IVariable 只暴露离线初始值)。实时值改由 CPU 的 Modbus TCP 服务器 暴露——这正是 SCADA/Vijeo 和 Vijeo 所使用的同一通道:
modbus_connect(host="127.0.0.1") # the sim's Modbus server; or a real CPU IP, port 502
read_tags("EMFM1FLOW, RESIDUAL2CLTHSP, %MW0, %MW2:REAL")
write_tags({"RESIDUAL2CLTHSP": 4.0, "%MX100.0": true})标记既可是全局变量名称(地址和 IEC 类型从工程中解析得到),也可是带可选
:TYPE的显式地址(如%MW86,%MW2:REAL、%MW70:UDINT、%M3、%MW10.2位)。解码由数据类型驱动(INT/UINT、DINT/UDINT、REAL、BOOL,支持线圈%M或字位%MW.x)。只有已定位(LOCATED)的
%M/%MW标记点才可访问。 未定位的 DFB 内部变量(例如Pump1.Running)必须先在程序中镜像 / 映射到%MW/%M(参见test_logic_live提示词)。32 位
REAL/DINT默认采用 Schneider 低字在前(low-word-first) 的顺序;如果某个服务器不同,请传word_order="high_first"。Control Expert 模拟器会在
127.0.0.1:502上开放一个 Modbus 服务,因此整个读/写测试循环都可以针对于模拟器运行,无需物理硬件。
提示词(引导式工作流)
服务器自带了 MCP 提示词(src/control_expert_mcp/prompts.py)—— 即是可复用的“配方”,把经过验证的流程 以及其中不易察觉的坑 固化下来,这样客户端不用再去试错重复踩。在 Claude Code 中它们会成为 /mcp__control-expert__<name> 斜杠命令;其他 MCP 客户端则会在“提示词选择器”中列出它们:
提示词 | 它引导你做的工作 |
| 构建 → 启动模拟器 → 连接 → 传输 → 运行;包含 手动首次传输凭借助 “Family check failed” 的单次初始化。 |
| 针对某个 DFB 实例的 Modbus 测试循环;包括 ** 将未定位的内部变量镜像到 |
| 走通 |
|
|
| 在 M580 CPU 下添加 Modbus-TCP 从站 DTM,并配置一条扫描行。 |
扩展服务器
每当你新增一个工具或能力时,同时请在 prompts.py 中新增(或扩展现有)一个 MCP 提示词,引导使用者如何调用它。这是项目的一条约定,而不是事后的想法:一个好提示词,能把一个小时期的尝试与试错,变成一条斜杠命令。
请为任何 客户端无法从工具描述里直接看出 的事情编写提示词——比如环境变量标志(CE_MCP_ENABLE_ONLINE)、手工 GUI 步骤(模拟内部的一次初始化)、顺序上的强制要求(如:传输前先停止 PLC)、或地址规则(只有已定位的模件可访问、REAL 是低字在前)。基本准则:
每个新工作流 → 配一个提示词;每个新工具 → 至少在一个相关提示词中提一下。
把坑点显式写进提示词中(就是你自己搭建时犯过时间付出的地方)。
严格复现已验证的顺序(工具名 + 参数形式),并按名称引用相关提示词。
保持服务端
instructions字符串中的总方向说明短小精悍;把一步一步的操作“配方”放到提示词里。
故障排查
new_project报Catalog object not found—— CPU 的型号和版本必须与你的 Control Expert 版本自身的硬件目录完全匹配(注意空格:比如BMX P34 2020,固件需写成02.70)。add_io_module报 “application object reference is not found in the catalog” —— 模块也同理:必须写全目录版本(大多数 M340 IO 模块用02.00,机架/电源模块用01.00)。new_project对某 CPU 系列只报“Exception occurred” —— 通常是你的 Control Expert 许可证或 DTM 库根本不带这个平台。该错误信息没有任何描述;只能在 Control Expert GUI 里测试同款 CPU 以确认。add_dtm显示 “protocol Id parameter is empty or invalid” / “Impossible to create a new DTM object” —— 从站 DTM 需要把 FDT 的协议名填截至protocol_id(通用 Modbus TCP 设备用Modbus;当为空时服务端会自动补试Modbus和EtherNet/IP),而且device_type_name必须与 DTM 目录中的名字一字不差(试Modbus Device)。用tools/list_dtm_catalog.py列出目录名字。set_master_dtm_dataset让服务端直接崩溃(RPC failed) —— 绝大多数是请求 XML 结构太畸形;特别是requestUniqueID必须是新的 GUID,不能是一个整数。严格照工具说明中已验证过的模板写。“Write access mode is already reserved by another client”” —— 有 Control Expert(GUI 端)或其他控件客户端以写入方式打开工程。先在那边关掉。服务器设计上一个会话占用一个写权限。
前提下创建 Broker 失败 —— 通常是没有装 Control Expert,或者其 COM 注册损坏(重装/修复安装后可重新注册)。
首次调用会慢 ——
open_project/new_project会拉起 Unity 服务进程;大工程需要几十秒。在客户端中配一个足够长的工具超时。Invalid file导入失败 —— XML 与交换格式不匹配。先导出一个相似对象再仿照其结构(用read_section、export_xml),照搬其结构,包括fileHeader/contentHeader。
架构记录
所有 COM 调用都跑在同一条专用的 STA 工作线程 上(COM 单元内存关联);MCP 工具调用会被编排到这条线程执行(调度器是可重入的——嵌套的桥接直接在工作线程内执行)。
硬件、DTM 对象是通过 辅助双接口(
IProject3、IConfiguration2、IBus、IModule、IP htm*等)暴露成员的,而这些接口并早早并虚拟接口不属于默认的 dispatch 接口。桥接层会用从HKCR\Interface收集到的 IID 对每个对象做 QueryInterface,并把结果包装为 IDispatch(_qi),这是从“late-bound”客户端访问DTMRoot、InternalBuses、AddChild等内部成员唯一办法。写访问等放大标记(
app.Project(1))每个会话获取一次并缓存;失败的 traceback 不会持有 COM 引用,因而不会把ProjectClose锁死。Project是一个带参数化 COM 属性——调用时必须加显式DISPATCH_PROPERTYGET标志,因为 pywin32 的动态调用不能直接调用它。导入的临时文件会使用与 XML 根节点匹配的扩展名(如
STExchangeFile→.xst,VariablesExchangeFile→.xsy...),因为 Control Expert 根据扩展名来选择解析器。枚举常量(语言、导出选项、PLC 命令等)从
PServer.tlb抽取 —— 见 src/control_expert_mcp/constants.py。
免责声明
本项目与 Schneider Electric 无附属关系。UDE 自动化接口由施耐德“原样”提供,且已不再作为商业产品出售;本项目是自担风险去驱动该接口。决不要在没有合格人员监督的情况下,将线上工具连到生产设备上去。
Available Tools
63 toolsadd_dropA
Add a drop to a bus — e.g. a remote X80 EIO drop on the EIO/RIO bus of an M580 ('M580 Drop for Ethernet'). bus is a substring of the bus name from get_hardware (e.g. 'EIO'); drop is the drop topo number. Then use add_rack and add_io_module to populate it (remote racks need their own power supply).
| Name | Required | Description | Default |
|---|---|---|---|
| bus | Yes | ||
| drop | Yes | ||
| version | No | 01.00 | |
| part_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the bus argument is a substring of an existing bus name and that drops are populated via later tool calls, but it does not mention side effects, error behavior, or whether the drop is modified in place, created fresh, or subject to validation. The power-supply note is useful domain context, not tool 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?
The text is compact and front-loaded with the core action, then delivers parameter details and workflow in a logical order. The parenthetical examples add clarity without bloat, though the sentence about part_number would benefit from similar treatment, making it slightly denser than necessary.
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?
The description is adequate for a read of the intended workflow, but it leaves a required parameter unexplained and gives no information about output, validation, or potential failure modes. For a mutation tool in a complex hardware domain, this is a noticeable gap that an agent would have to probe at runtime.
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 description explains 'bus' and 'drop' meaningfully, but it omits 'part_number', which is listed as a required argument yet is absent from the schema's properties list. Version is also not explained. With schema coverage effectively low (at least one required parameter undocumented), the description fails to compensate for the most critical gap.
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 opens with a specific verb and resource: 'Add a drop to a bus', then grounds it with a concrete example (remote X80 EIO drop on an M580 EIO/RIO bus). It also clarifies the bus/drop parameter semantics, which clearly distinguishes this tool from siblings like add_rack and add_io_module by stating the drop is the parent to be populated later.
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 names the follow-up tools ('Then use add_rack and add_io_module to populate it') and provides a prerequisite ('bus is a substring of the bus name from get_hardware'). It also gives a domain caution about remote racks needing their own power supply, which helps the agent decide when and how to invoke the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dtmA
Add a DTM to the project topology.
Top-level communication DTM: leave parent_dtm empty (e.g. on M580 the CPU DTM 'BMEP58_ECPU_EXT' usually exists already). Slave device under a master DTM: set parent_dtm to the master's name and device_type_name to the catalog entry — e.g. add a generic Modbus TCP slave with device_type_name='Modbus Device' under the M580 CPU DTM. After adding, set its IP with set_dtm_address and configure scan requests with get/set_dtm_dataset or set_dtm_control_parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| prog_id | No | ||
| version | No | ||
| dtm_name | Yes | ||
| parent_dtm | No | ||
| protocol_id | No | ||
| device_type_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral disclosure burden. It does communicate that the tool mutates the project topology and implies the added DTM is initially unconfigured until IP and dataset calls are made. However, it does not disclose duplicate behavior, whether the parent must already exist, persistence implications, or error conditions. The behavioral context is adequate but incomplete.
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 well-structured and every sentence earns its place: a clear one-line purpose, then two scenario definitions, then the necessary follow-up workflow. It is slightly longer than the minimal case but not redundant, and the most important information is front-loaded.
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 six-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is not complete enough. It covers the common top-level and slave workflows well, but it omits semantics for four parameters and gives no indication of the return value or error behavior. An agent would still have to guess about several inputs.
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 0%, so the description must compensate. It explains parent_dtm and device_type_name well through concrete examples. But it leaves dtm_name, prog_id, version, and protocol_id completely unexplained, even though dtm_name is required. Four of six parameters remain underspecified, which is a significant gap for an agent trying to invoke the tool correctly.
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 opens with a clear verb and resource: 'Add a DTM to the project topology.' It also differentiates this from sibling hardware tools like add_io_module, add_drop, and add_rack by focusing specifically on DTM objects, and distinguishes top-level vs slave DTMs. An agent can tell what operation this performs and what object it operates on.
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 explicit usage guidance for the two main scenarios: leave parent_dtm empty for a top-level communication DTM, and set parent_dtm to the master's name for a slave device. It also names follow-up tools like set_dtm_address and get/set_dtm_dataset or set_dtm_control_parameters. It does not explicitly state when not to use this tool or compare it directly with alternatives, but the scenario-based guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_io_moduleA
Add a hardware module (IO, communication, ...) to a rack slot.
part_number and version must exactly match the hardware catalog for the PLC family, e.g. 'BMX DDI 1602' (16x DI), 'BMX DDO 1602' (16x DO), 'BMX AMI 0410' (4x AI), 'BMX NOE 0100' (Ethernet) — version '02.00' fits most M340 IO modules ('01.00' for some; try both). slot is the rack position (the CPU usually occupies slot 0). rack/drop/bus default to the local rack on the local bus; use get_hardware to see the topology.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | ||
| drop | No | ||
| rack | No | ||
| slot | Yes | ||
| version | No | 02.00 | |
| part_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It reveals important behavioral constraints: part_number/version must match the catalog exactly, version may need adjustment ('try both'), and defaults for rack/drop/bus assume a local rack on the local bus. It also references get_hardware for topology, but omits side effects like whether an existing module gets overwritten or error behavior on invalid slots or part numbers.
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 tight, two-sentence paragraph that leads with the core purpose, then layers constraints and defaults. Every sentence adds value, with examples kept relevant and no filler. It's appropriately sized for the complexity.
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?
The description is fairly complete for a mutation tool: it covers purpose, constraints, defaults, and a hint for topology via get_hardware. Missing elements include what happens on failure (e.g., invalid part number, occupied slot) and whether the operation is reversible, which are important given no output schema and no annotations. These gaps keep it from being fully self-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 0%, yet the description compensates fully by explaining every parameter: part_number with concrete examples, version with compatibility hints, slot as rack position (CPU at slot 0), and rack/drop/bus defaults and local-bus semantics. This adds substantial meaning beyond the bare schema 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?
The description uses the verb 'Add' with a specific resource ('hardware module') and target ('rack slot'), clearly distinguishing it from sibling tools like replace_io_module or remove_io_module. It also narrows the scope to IO/communication modules, making its purpose unambiguous without needing to inspect 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?
The description explains when to use this tool (adding a module to a slot) and provides practical guidance like checking topology with get_hardware and defaults for rack/drop/bus. However, it does not explicitly contrast with alternatives such as replace_io_module or mention when not to use it, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_networkA
Create a logical network (Premium/Quantum platforms; family e.g. 'Ethernet'). On M340/M580, configure communication on modules/DTMs instead.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| family | Yes |
TDQS
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 indicates a creation action and adds platform constraints, but does not mention prerequisites, side effects, reversibility, or what happens if the network already exists. While the core behavior is clear, deeper behavioral aspects remain undisclosed.
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 crisp sentences with no filler. The core action and platform scoping are front-loaded, and the alternative guidance appears in the second sentence. Every word contributes to understanding the 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?
The description is too sparse for a tool with two parameters and no annotations. It lacks details on the meaning of 'name', acceptable values for 'family' (beyond the example), expected return or errors, and any relation to sibling tools like list_networks or set_network_ip. An agent cannot confidently call this tool correctly without additional context.
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 schema description coverage is 0%, so the description must explain both parameters. It provides an example for 'family' (Ethernet) but gives no explanation for 'name'. This partial compensation leaves the semantics of 'name' entirely unaddressed, which is insufficient for an agent to construct correct arguments.
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 starts with a clear verb and resource: 'Create a logical network'. It adds platform context (Premium/Quantum) and clarifies that on M340/M580 the user should configure elsewhere, distinguishing the tool's purpose from alternative actions. This is specific and actionable.
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 explicitly states when to use this tool (Premium/Quantum platforms) and when not to (M340/M580, where communication should be configured on modules/DTMs). This provides concrete guidance on choosing between this tool and the alternative approach, though it doesn't name a specific sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_rackA
Add a rack to a drop (e.g. 'BME XBP 1200' in a remote EIO drop). Then add a power supply and modules with add_io_module (set drop/bus to target the remote rack; remote drops start with a CRA adapter in slot 0).
| Name | Required | Description | Default |
|---|---|---|---|
| bus | Yes | ||
| drop | Yes | ||
| rack | Yes | ||
| version | No | 01.00 | |
| part_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully explain behavioral traits. It states that it adds a rack and mentions a procedural sequence, but it does not disclose side effects, reversibility, prerequisites (e.g., whether the drop must already exist), or error conditions. This is a significant gap for a hardware mutation tool.
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 with no redundant wording. It front-loads the tool's purpose and packs procedural guidance into the second sentence. 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 tool with 5 parameters, no annotations, and no output schema, the description covers the main purpose and gives a follow-up workflow, but it lacks explicit preconditions (e.g., an existing drop), parameter details for 'rack' and 'version', and information about return values or failure modes. It is adequate for basic use but incomplete for a fully informed agent.
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 schema has 0% parameter descriptions, so the description must compensate. It clarifies that bus and drop are used to target the remote rack and gives an example part_number ('BME XBP 1200'). However, it does not explain the rack parameter or the version parameter, leaving some ambiguity. The description adds partial meaning but not complete coverage of all five 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?
The description clearly states the action: 'Add a rack to a drop' with a concrete example ('BME XBP 1200' in a remote EIO drop). It distinguishes from related tools like add_io_module and add_drop by focusing on the rack-level operation and even references the follow-up workflow.
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 provides clear context for when to use this tool (adding a rack) and immediately instructs the agent on the next steps (add power supply/modules with add_io_module and set drop/bus accordingly). It implicitly differentiates from add_drop by focusing on racks within existing drops, though it does not explicitly state 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.
analyze_projectA
Run a syntax/semantic analysis of the project without generating code. Faster than a build; use it to validate edits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses important behavioral facts: it runs analysis without generating code and is faster than a build. It also implies a read-only validation behavior via 'validate edits'. However, it does not explicitly state side effects or return format, leaving minor uncertainty.
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 that efficiently communicate the core function, a key constraint (no code generation), a comparative advantage (faster than build), and a concrete use case (validate edits). Every word earns its place with no 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?
For a zero-parameter tool with no output schema or annotations, the description provides the essential information needed to call it correctly: what it does, when to use it, and how it differs from siblings. Missing details like return format are minor because the tool's simplicity and usage direction suffice.
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 has zero parameters, so the baseline of 4 applies per the instructions. Schema description coverage is trivially 100% and there are no parameters to document, so the description need not address parameter details.
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?
Description states a specific verb and resource: 'Run a syntax/semantic analysis of the project'. It explicitly says it does not generate code, which distinguishes it from build_project and other code-generation siblings. The 'Faster than a build' comparison further clarifies its role versus a build.
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 explicitly says 'use it to validate edits' and notes it is faster than a build, offering a clear condition for when to choose it. This gives an agent a direct reason to pick this tool over the alternative build_project, and even implies when not to use it (when code generation is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_projectA
Build the project (incremental by default, full rebuild with rebuild_all=True). Returns the resulting build state and, when available, the Control Expert output window text with errors/warnings. A successful build is required before transferring to a PLC or simulator.
On a fresh or just-imported project an incremental build has nothing to build against and Control Expert raises 'Build changes function not available'; this tool detects that and automatically performs a full rebuild instead (the result carries a 'note' when it does), so the default call works on the first build — you do not need to pass rebuild_all=True.
| Name | Required | Description | Default |
|---|---|---|---|
| rebuild_all | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses the incremental default, the rebuild_all override, the automatic fallback to a full rebuild when 'Build changes function not available' occurs, and that a 'note' is added when that fallback happens. This is substantial behavioral detail beyond the bare 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?
The description is compact and well-structured: the first sentence gives the core behavior and return values, the second states the transfer prerequisite, and the final paragraph explains the important edge case. Every sentence earns its place, and the key information is front-loaded.
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 single-optional-boolean-parameter tool with no output schema, this description is complete. It covers the parameter semantics, the return values, the operational requirement, and a realistic error scenario with the tool's automatic response. An agent has everything it needs to call this tool 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 coverage is 0%, so the description must explain the rebuild_all parameter. It does: rebuild_all=True means full rebuild, default is incremental, and it explicitly reassures the agent that the flag is not needed on first build. This fully compensates for the lack of schema descriptions.
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 and resource: 'Build the project' with clear variants (incremental by default, full rebuild with rebuild_all=True). It also describes the return content (build state and Control Expert output text with errors/warnings), which helps differentiate it from the sibling build_remoteconnect_logic_copy.
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 provides explicit context: a successful build is required before transferring to a PLC or simulator, and the default call is safe even on a fresh project. It does not name alternative tools or explicitly say when not to use it, but the stated prerequisite and auto-fallback behavior give clear operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_remoteconnect_logic_copyA
Safely edit ST logic and save only after a clean build, always to a copy.
source_path may be any member of a RemoteConnect bundle; its paired logic file is opened without saving in place. output_path must be a new .STU path unless overwrite=true. variables is an optional list of dictionaries with name/type and optional comment/address/initial_value. declare contains section-local or FB declarations. On edit/build failure the application is closed without saving and output_path is not written.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| declare | No | ||
| section | Yes | ||
| overwrite | No | ||
| st_source | Yes | ||
| variables | No | ||
| output_path | Yes | ||
| source_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavior disclosure, and it does so well. It reveals that the paired logic file is opened without saving in place, that output_path is not written on edit/build failure, and that the application is closed without saving on failure. This gives the agent important side-effect and failure-mode information.
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 compact and front-loaded with the core purpose, then follows with essential parameter and failure details. Every sentence contributes useful information, with no filler or repetition. The structure makes it easy for an agent to grasp the safety-critical behavior quickly.
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?
The tool is complex with eight parameters, no output schema, and no annotations, so the description needs to be thorough. It covers the most distinctive parameters and failure behavior, but leaves required parameters task, section, and st_source unexplained. This creates enough ambiguity that an agent may not correctly construct a valid invocation without additional inference.
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 description adds meaning for source_path, output_path, variables, and declare, which is valuable given 0% schema coverage. However, it does not explain the required task, section, or st_source parameters beyond their names, leaving a significant semantic gap for a complex tool with eight 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?
The description opens with a specific, action-oriented statement: 'Safely edit ST logic and save only after a clean build, always to a copy.' This clearly identifies the verb (edit/save), the resource (ST logic), and the distinguishing constraint (always to a copy). It differentiates the tool from siblings like write_st_logic or build_project by emphasizing the copy-and-safety behavior.
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 clear operational context: source_path can be any member of a RemoteConnect bundle, output_path must be new unless overwrite=true, and failure closes the application without saving. It does not explicitly name alternative tools or state when not to use this tool, but the copy-safety intent makes the use case reasonably clear. This is just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
change_cpuB
Replace the project's CPU with another from the hardware catalog (e.g. 'BMX P34 2020' + '02.70').
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | ||
| part_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Replace' but does not disclose side effects, reversibility, compatibility constraints, or any additional impact on the project. Given it's a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and includes an illustrative example without waste. Every word 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 mutation tool with no output schema, no annotations, and two required parameters, the description is incomplete. It does not explain what happens after replacement, whether the tool returns a success/failure indication, or if any preconditions exist. The presence of many sibling hardware tools further demands clearer context to avoid misuse.
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 0%, so the description must compensate. It provides a concrete example ('BMX P34 2020' + '02.70') that hints at the format and relationship between part_number and version, but it does not explain how to obtain valid values (e.g., from get_hardware) or the full meaning of each parameter. This adds some value but is insufficient for a 0% coverage scenario.
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 clearly states a specific verb ('Replace') and resource ('project's CPU'), with an example that disambiguates from sibling tools like replace_io_module or replace_rack. It does not explicitly contrast with siblings, but the resource is specific enough for an agent to differentiate.
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 to use this tool (when a CPU replacement is needed) but does not provide explicit guidance on alternatives or exclusions. There is no mention of prerequisites (e.g., project must be open) or when not to use it, leaving usage context somewhat inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_projectA
Close the open project, optionally saving first. Unsaved changes are discarded when save=False.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly warns that unsaved changes are discarded when save=False, which is the most important side effect of this action. It does not cover edge cases like closing when no project is open, but the core destructive behavior is clearly disclosed.
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 short sentences with no filler. The primary action is front-loaded, and the important caveat about unsaved changes appears immediately after. 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 tool with one optional parameter and no output schema, the description covers the essential behavior and the parameter semantics well. It lacks only a small amount of context about alternatives or what happens if no project is currently open, but overall it is sufficiently complete for an agent to invoke this tool 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 coverage for parameters is 0%, so the description must compensate for the 'save' parameter. It does: 'optionally saving first' and 'Unsaved changes are discarded when save=False' provide meaningful semantics beyond the raw boolean/default. It could have explicitly stated that save=True saves before closing, but the meaning is strongly implied.
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 clearly states the action ('Close') and the resource ('the open project'), and it adds the optional save-first behavior, which differentiates this from save-only or open operations. It does not explicitly name a sibling tool to distinguish itself, so it falls 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?
The description implies when to use this tool — when the goal is to close the open project — and it explains the save=False consequence. However, it gives no explicit guidance about alternatives like save_project for saving without closing, or open_project for opening a different project, so the usage boundaries are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_cpu_ethernetA
Configure the M580 CPU's embedded Ethernet: main IP/subnet/gateway (+ ip_a/ip_b for the HSBY A/B addresses and ip_d for address D) and the Security-screen service flags.
Service args: -1 = leave unchanged, 0 = disable, 1 = enable. A remote EIO drop's CRA requires tftp, eip and dhcp_bootp ENABLED, otherwise the build fails with "CRA doesn't work when TFTP, EIP and DHCP_BOOTP settings are disabled". Updates every stored copy (application channel config words, DTM binary parameter container, DTM dataset XML) via a project-archive round-trip, so the project is reloaded and UNSAVED — build_project to validate, then save_project. For a slave device's gateway-domain warning use set_dtm_address(gateway=...) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | ||
| ip_a | No | ||
| ip_b | No | ||
| ip_d | No | ||
| subnet | No | ||
| gateway | No | ||
| enable_eip | No | ||
| enable_ftp | No | ||
| enable_web | No | ||
| enable_snmp | No | ||
| enable_tftp | No | ||
| enable_dhcp_bootp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool updates every stored copy, triggers a project-archive round-trip that reloads and marks the project UNSAVED, and can fail the build if certain service flags are disabled. This is rich behavioral context beyond 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?
The description is dense but every sentence adds value: purpose, parameter meanings, a failure condition, side effects with follow-up actions, and an alternative tool. It is well-structured and front-loads the core configuration scope.
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 12 parameters, no output schema, and no annotations, the description covers all essential information: parameter usage, side effects, failure conditions, and alternative routing. An agent has everything needed to call it correctly and interpret the aftermath.
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 0%, so the description must compensate. It explains the meaning of ip_a/ip_b/ip_d, the main IP/subnet/gateway, and the service flag semantics ('-1 = leave unchanged, 0 = disable, 1 = enable') along with defaults. This fully covers the parameter meanings.
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 clearly states the verb 'Configure' and the resource 'M580 CPU's embedded Ethernet', listing specific items (main IP/subnet/gateway, HSBY addresses, service flags). It immediately distinguishes itself from set_dtm_address by naming the alternative, so an agent can tell them apart.
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 explicitly says when to use set_dtm_address instead ('For a slave device's gateway-domain warning'), and provides context on the CRA requirement and the need to run build_project/save_project after the side-effect round-trip. This gives clear when-to-use and 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.
create_animation_tableA
Create an animation table (or add to an existing one) and fill it with variables to watch. variables is a comma-separated list of variable names, e.g. 'Motor, StartPB, UF1_Sequence.S_Service.x, Level'. With the project online (simulator or PLC), the table shows live values in the Control Expert UI.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| variables | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the effect (shows live values) but does not disclose side effects, prerequisites, behavior on existing tables (beyond 'add to an existing one' without specifics), reversibility, or error conditions. For a mutating tool, this is a significant gap – the agent cannot anticipate what happens if the table already exists or what permissions are needed.
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 action, and includes a helpful example for the variables parameter. No redundant fluff. The structure is clear and efficient, though the second sentence explaining variables could be seen as an implementation detail that might belong elsewhere, but it 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 tool with 2 parameters, no output schema, and 0% schema coverage, the description provides the core purpose, an example, and the context (online requirement). However, it omits details about the 'name' parameter, what happens on conflicts, and how to interact with the table after creation (though a sibling open_animation_table exists). This leaves gaps that could mislead an agent into incorrect calls.
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 0%, so the description must explain both parameters. It explains 'variables' well: 'variables is a comma-separated list of variable names' with an example. However, it does not explain the 'name' parameter at all, leaving its role (table name) implicit. It adds value for one of two parameters, but the other remains undocumented in both schema and description.
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 clearly states 'Create an animation table (or add to an existing one) and fill it with variables to watch.' This gives a specific verb (create/add), a resource (animation table), and an action (fill with variables). It distinguishes from siblings like list_animation_tables (list), delete_animation_table (delete), and open_animation_table (open) by implying creation/modification. No 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?
It provides a clear usage context: 'With the project online (simulator or PLC), the table shows live values in the Control Expert UI.' This implies the tool is used for live monitoring. It also covers both creating and adding, which are the two primary use cases. However, it does not explicitly mention alternatives or when not to use it, but the verb and examples make it contextually clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_remoteconnect_bulk_edit_copyA
Create a patched copy of a RemoteConnect Object Bulk Edit workbook.
Each patch is {sheet, match, values}; match must select exactly one existing row using row-2 machine fields. Example: {sheet:'(20) Ethernet Ports', match:{Port:'Ethernet1'}, values:{IpAddress:'192.168.1.10'}}. The template is never modified. The generated XLS is reopened and structurally checked; RemoteConnect import plus read_remoteconnect_feedback remains the final semantic validation step.
| Name | Required | Description | Default |
|---|---|---|---|
| patches | Yes | ||
| overwrite | No | ||
| output_path | Yes | ||
| template_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses that the template is never modified, that the generated XLS is reopened and structurally checked, and that semantic validation is deferred to a later step. It also surfaces the constraint that match must select exactly one existing row.
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 front-loaded with the core purpose and every subsequent sentence earns its place: patch semantics, the exact-match constraint, a concrete example, template safety, and validation expectations. It is dense but not bloated.
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?
Given the absence of annotations and output schema, this is a complete contract: it explains the patch format, the row-matching rule, side effects on the template, structural checking, and the required follow-up validation step. An agent has enough to call 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 0%, so the description must compensate. It does for the complex patches parameter by specifying the {sheet, match, values} shape and giving a concrete example, but template_path, output_path, and overwrite are left to their names and schema defaults.
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 opens with a specific verb and resource: 'Create a patched copy of a RemoteConnect Object Bulk Edit workbook.' It clearly distinguishes this from sibling inspection/validation tools by emphasizing creation of a patched copy and the final validation route through read_remoteconnect_feedback.
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 concrete usage context: how patches are structured, the exact-match requirement, and that the template is never modified. It doesn't explicitly enumerate sibling alternatives, but it tells the agent that RemoteConnect import plus read_remoteconnect_feedback is needed for final semantic validation, which implies when this tool is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sectionA
Create a new empty program section in a task.
language: ST, LD, FBD, SFC, IL or LL984. To fill it with logic:
ST: call write_st_logic (plain IEC text, no XML) — easiest.
LD / FBD / SFC: FIRST call get_language_reference(language) to get the validated exchange-XML rules and a worked example, then author the section XML and import it with import_xml(kind='section'). SFC suits stepwise sequences.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| task | Yes | ||
| language | No | ST |
TDQS
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 clearly signals mutation ('create') and the empty-state behavior, but does not disclose potential side effects such as duplicate-name failures or required task existence.
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 front-loaded with the primary purpose, then efficiently organizes workflow guidance into scannable bullets. Every sentence provides actionable value without repetition or fluff.
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 simple creation tool with no output schema or annotations, the description covers the main workflow well, including language-specific fill strategies. It lacks minor context such as naming constraints and failure behavior, but overall an agent has enough to invoke it effectively.
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 0%, so the description must compensate. It adds meaning for the language parameter by listing ST, LD, FBD, SFC, IL, and LL984, and explains how language affects the filling workflow. However, task and name semantics remain only inferable from their property titles.
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 action and resource: 'Create a new empty program section in a task.' The addition of 'empty' clarifies the tool's narrow role and distinguishes it from write_st_logic and import_xml, which populate logic.
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 explains when to use this tool versus alternatives: ST logic should go through write_st_logic, while LD/FBD/SFC should use get_language_reference then import_xml. This gives an agent clear routing across sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskA
Add a task to the project. task_type: MAST, FAST, AUX0..AUX3 or SAFE. periodicity_ms > 0 makes the task periodic with that period.
| Name | Required | Description | Default |
|---|---|---|---|
| task_type | Yes | ||
| periodicity_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It explains the effect of periodicity_ms (makes the task periodic), which gives some operational insight, but it says nothing about side effects, return values, error handling, permissions, or whether calling it multiple times replaces or creates multiple tasks. This is only a partial disclosure for a mutation operation.
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, no filler. The first sentence states the purpose, and the second sentence packs all essential parameter details. Every word earns its place, and the most important information is front-loaded.
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?
The description covers both parameters and the core purpose, which is sufficient for a simple creation tool. However, with no output schema and no annotations, there is no guidance on what a successful response looks like, what happens on failure, or whether task names are auto-generated. These gaps are non-critical but present, so it falls short of 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 coverage is 0%: the schema merely says task_type is a string and periodicity_ms is an integer. The description compensates fully by enumerating allowed task_type values (MAST, FAST, AUX0..AUX3, SAFE) and defining periodicity_ms semantics (>0 makes the task periodic). This is exactly the kind of parameter meaning an agent needs to call correctly.
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 opens with a clear verb and object: 'Add a task to the project.' It also lists the specific task_type values, which immediately differentiates this from sibling create_* tools like create_variable, create_section, or create_animation_table. An agent can tell it is for adding a task without 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?
The description implies when to use this tool: whenever a task must be added to the project. It does not name alternatives or exclusions, but none are needed because there is no other task-creation sibling. The context is clear enough to select it over other create_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_variableC
Create a global variable.
type_name is an IEC type ('BOOL', 'EBOOL', 'INT', 'DINT', 'REAL', 'TIME', 'STRING', ...), an array ('ARRAY[0..9] OF INT'), a DDT or a DFB type name. address is an optional topological address like '%MW100' or '%Q0.2.0'.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| address | No | ||
| comment | No | ||
| type_name | Yes | ||
| initial_value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It only implies a write operation ('Create') without detailing side effects, reversibility, or error conditions. There is no mention of what happens on duplicate names, or required permissions, so behavioral transparency is minimal.
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 concise and front-loaded with the purpose, then details two key parameters efficiently. It avoids redundant phrasing, but the brevity comes at the cost of completeness for other parameters. Still, the structure is clear and focused.
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?
The tool has 5 parameters, no output schema, and no annotations. The description only covers two parameters and omits usage context, expected return, and any prerequisites or side effects. For a create operation, this is noticeably incomplete for an agent to rely 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?
The schema has 0% description coverage, so the description must compensate. It explains type_name and address thoroughly, but name, comment, and initial_value are left undocumented. This partial coverage is insufficient for a 5-parameter tool with no schema descriptions for the remaining 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?
The description states 'Create a global variable' clearly, with a specific verb and resource. It doesn't differentiate from sibling tools like update_variable or delete_variable, but the creation intent is unambiguous. It also gives examples of type_name and address, which adds clarity to the parameter semantics.
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 vs alternatives, nor any exclusions or prerequisites. The description only explains parameter formats, not the usage context or selection criteria. This leaves the agent to infer when creation is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_animation_tableA
Delete an animation table by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the destructive action ('delete') without disclosing permanence, irreversibility, preconditions (e.g., table must exist or not be in use), or failure behavior. The word 'delete' implies destruction but offers minimal safety 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?
The description is a single concise sentence with no filler. It front-loads the action and resource, making it immediately clear and 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?
For a one-parameter delete operation, the description covers the core action and parameter identification. However, without annotations or an output schema, it omits safety warnings, error behavior, and any preconditions, so the context is not 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 0%, so the description must compensate. It does indicate that the 'name' parameter identifies which animation table to delete. However, it provides no additional constraints, format, or existence requirements beyond the schema's basic string type.
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 ('delete') and resource ('animation table'), and identifies the key parameter ('by name'). It clearly differentiates this tool from sibling tools like create_animation_table, list_animation_tables, and open_animation_table.
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 to use the tool (when you want to delete an animation table) but provides no explicit guidance on alternatives or exclusions. It does not mention that listing or opening tables might be preferable in certain contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dtmA
Delete a DTM (and its children) from the topology by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It explicitly reveals the key side effect: deleting a DTM also deletes its children. It does not mention irreversibility or permissions, but the destructive scope is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. The operation and resource are front-loaded, and the parenthetical scope note efficiently communicates the most important nuance.
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, no-output-schema tool, the description covers the target resource, the selection mechanism, and the destructive scope. It could add an explicit warning about irreversibility or return behavior, but the definition is otherwise sufficient 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?
The schema provides only a string parameter named 'name' with no description (0% coverage), so the description must supply meaning. The phrase 'by name' tells the agent that the required parameter identifies the DTM to delete. It does not detail name matching rules, but that is unnecessary for a single simple parameter.
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 ('Delete'), a concrete resource ('DTM'), the scope ('and its children'), and the selection criterion ('by name'). This clearly distinguishes it from sibling deletion tools like delete_variable or delete_section.
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 provides clear context: use this tool to remove a DTM and its children from the topology by name. It does not explicitly name alternatives or state exclusions, but the resource scoping is unambiguous enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sectionC
Delete a program section from a task.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| section | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full responsibility for disclosing behavioral traits. It names the action as 'Delete', which implies destructiveness, but offers no additional context about irreversibility, permissions, or side effects. The minimal verb does not meet the bar set for unannotated tools.
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, concise sentence with no filler, but it is under-specified rather than appropriately concise. While the structure is clear, the brevity omits necessary detail, making it less helpful than a more complete but still efficient description.
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 tool with only two string parameters and no output schema, the description still lacks essential context. It does not explain what a 'section' is, what constitutes a valid 'task', or any error conditions. The absence of parameter descriptions and behavioral notes leaves the agent with insufficient information to call it reliably.
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 0%, so the description must compensate for the lack of parameter documentation. However, it provides no information about the 'task' or 'section' parameters, their expected formats, or how they relate to the operation. The description adds zero value over 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?
The description clearly states a specific action (Delete), resource (program section), and context (from a task). It distinguishes from sibling tools like create_section and read_section, establishing its destructive purpose without 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?
No guidance is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description does not mention scenarios where deletion might be disallowed or conditions for use, leaving the agent to infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_variableB
Delete a global variable by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without mentioning side effects, reversibility, permission requirements, or error handling. For a destructive operation, this missing context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no filler words. It is front-loaded and efficiently communicates the core action. There is no unnecessary verbosity 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 simple delete operation with one parameter and no output schema, the description is incomplete. It does not address what happens if the variable does not exist, whether deleting it affects references, or what the response looks like. This is a low-complexity tool, but the lack of behavioral context makes it insufficient for an agent to invoke safely.
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 schema has a single required parameter 'name' of type string, and the description says 'by name' which loosely references it. However, it adds no meaningful detail beyond the schema, such as format, case sensitivity, or uniqueness. With 0% schema description coverage, the description does not compensate.
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 clearly states the action (delete), the target resource (global variable), and the selection method (by name). It is unambiguous and distinct from sibling tools like create_variable or update_variable, so an agent can easily tell what this tool does.
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 provides no guidance on when to use this tool versus alternatives like update_variable or list_variables. It does not mention conditions, prerequisites, or when deletion is appropriate, leaving the agent to infer the use case from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectA
Export the full application to a .xef or .zef XML exchange file — useful for backup, diffing, or migrating between Control Expert versions.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It clearly states that the operation is an export to an XML exchange file, but it does not mention overwrite behavior, whether a project must be open, or what side effects may occur at the destination path.
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, focused sentence that front-loads the action, resource, and output format. It earns its place without repetition 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?
For a simple one-parameter tool, the description covers the core operation and rationale, but it leaves path semantics and potential side effects underspecified. Since there is no output schema and no annotations, those details would be needed for fully confident 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 0%, so the description must explain the single 'path' parameter. It only implies that path is the export destination; it does not clarify whether the extension determines .xef vs .zef, whether the path should include the filename, or any path constraints.
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 ('Export'), a clear resource ('the full application'), and the exact output format ('.xef or .zef XML exchange file'). This clearly distinguishes it from sibling tools like export_xml, which would be expected to handle a narrower XML export.
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 concrete use cases: backup, diffing, or migrating between Control Expert versions. It does not explicitly name alternatives or state when not to use it, but the provided context is enough for an agent to decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_xmlA
Export project content as Control Expert XML and return it inline.
kind: 'variables' (all variables), 'program' (all program logic), 'configuration' (hardware config), 'dfb' (one DFB type, requires name), 'section' (one section, requires task and name). Large exports are written to a temp file and the path is returned instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| name | No | ||
| task | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses a critical side effect: 'Large exports are written to a temp file and the path is returned instead', which is exactly the kind of behavioral nuance an agent needs to handle the response correctly. It could add detail on cleanup of temp files or exact size thresholds, but the core behavioral variation is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but the kind enumeration is packed densely in a few sentences without line breaks, making the conditional dependencies less scannable. It could be more readable with bullets or separators, though it's not bloated — 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 tool with 3 params, 0% schema coverage, and no output schema, the description covers the enum values, their parameter requirements, and the variable return behavior. The main gaps are the exact threshold for 'large exports' and temp-file cleanup semantics, but for an agent selecting and invoking the tool, the essential information is present.
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 schema has 0% description coverage and no enum values for 'kind', yet the description fills this gap comprehensively by documenting each allowed value and its dependencies ('dfb' requires name, 'section' requires task and name). This fully compensates for the empty schema and gives the agent what it needs to construct valid calls.
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 ('Export'), a specific resource ('project content as Control Expert XML'), and a clear return behavior (inline or file path). It enumerates the five accepted kind values and their accompanying required parameters, which unambiguously distinguishes this tool from siblings like import_xml, validate_xml, and export_project.
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 when each kind is appropriate ('all variables', 'all program logic', etc.) and which parameters are required for each sub-case. It doesn't explicitly name competing sibling tools or state when NOT to use it, but the kind enumeration provides clear selection guidance for the primary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dtm_control_parametersC
Read a master/communication DTM's control parameters as XML (CetControlParameterOutput schema): Modbus TCP I/O scanner lines with IP, unit id, timeouts, repetitive rate, and the ModbusTcpRequest entries (read/write start addresses and sizes).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of disclosing side effects and prerequisites. It says 'Read', implying a read-only operation, but does not state whether it requires an open project, whether it is non-destructive, or what error conditions may occur. The output format is specified, but behavioral traits are understated.
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, well-structured sentence that front-loads the action and resource, then lists details concisely. No extraneous information is present.
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?
While the output format is detailed (XML with schema and components), the lack of parameter explanation and absence of any prerequisites or behavioral notes makes the description incomplete for a one-parameter tool. It does not compensate for the missing parameter semantics.
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 0%, so the description must explain the 'name' parameter. It does not mention what 'name' refers to (e.g., the DTM's name), leaving the agent without sufficient guidance to correctly supply the parameter.
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 clearly states the tool reads a master/communication DTM's control parameters and specifies the exact content (Modbus TCP I/O scanner lines, addresses, sizes). It distinguishes itself from write counterparts by using the verb 'Read', though it does not explicitly contrast with get_dtm_dataset or other read tools.
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 usage context—when you need control parameters of a master/communication DTM—but does not explicitly mention when not to use it or mention alternatives like set_dtm_control_parameters for writes. The guidance is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dtm_datasetA
Export a slave DTM's configuration dataset for INSPECTION. The payload is a binary-framed FDT container (UTF-16 XML wrapped in length/GUID/type bytes), so the returned 'xml' has the framing stripped for reading and is NOT byte-faithful — do not edit it and write it back via set_dtm_dataset (the response carries a 'note' saying so). For M580 Modbus scan lines, use get_master_dtm_dataset / set_master_dtm_dataset instead.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden, and it does so well. It reveals the binary-framed FDT container format, explains that the returned XML is not byte-faithful, and warns against editing and writing it back. This is valuable beyond anything in the schema or 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?
The description is three sentences, each earning its place: purpose, format/caveat, and sibling routing. It is front-loaded with the core behavior and avoids 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 one-parameter tool with no output schema, the description covers purpose, behavioral caveats, and alternatives impressively well. The only notable gap is the ambiguous 'name' parameter, which prevents fully confident invocation without additional inference.
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 schema provides only a required 'name' string with no description, and schema coverage is 0%. The description never explains what 'name' should be, such as a DTM path, identifier, or display name, so the agent must infer the parameter semantics from context.
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 opens with a specific verb and resource: 'Export a slave DTM's configuration dataset for INSPECTION.' It clearly differentiates from sibling tools like get_master_dtm_dataset and set_master_dtm_dataset by naming them 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 states when to use the tool (for inspecting/exporting a slave DTM dataset) and explicitly routes to alternatives for M580 Modbus scan lines. It also warns against writing the result back via set_dtm_dataset, which is a clear exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hardwareA
List the full hardware configuration: CPU plus the bus → drop → rack → module tree with part numbers, versions and topological addresses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full behavioral burden. It clearly conveys a non-mutating operation through 'List' and specifies the data returned, though it does not mention prerequisites such as requiring an open project or operational caveats.
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, information-dense sentence that front-loads the action before specifying the hierarchical contents. Every element earns its place with no 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?
For a zero-parameter read-only listing tool, the description provides a solid high-level account of the return content, including the topology tree, part numbers, versions, and addresses. It omits an explicit prerequisite like needing an open project, and there is no output schema to fill that gap, but the core invocation is still clear.
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 and the input schema is empty, so there is nothing for the description to explain. Per the zero-parameter baseline this 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 ('List') and a precise resource ('full hardware configuration') and enumerates the exact contents: CPU plus the bus → drop → rack → module tree with part numbers, versions and topological addresses. This is sufficiently distinct from hardware mutation siblings like add_drop or replace_rack.
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 use for reading the complete hardware inventory, and the read-only 'List' verb makes it distinguishable from mutation tools, but it never explicitly states when to use it over alternatives or what not to use it for. No exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_language_referenceA
REQUIRED READING before writing any program logic: the authoring guide for a Control Expert language ('ST', 'LD', 'FBD', 'SFC', 'IL').
Returns the exchange-XML structure rules (validated against a live Control Expert build) and a complete example section that imports and builds with 0 errors — mirror its shapes exactly. Workflow: read this guide -> write the section XML -> import_xml(kind='section') -> build_project -> fix any errors listed in the build output -> repeat. For ST, prefer the write_st_logic tool (no XML needed).
| Name | Required | Description | Default |
|---|---|---|---|
| language | Yes |
TDQS
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 discloses that the output is validated against a live Control Expert build, that the example imports and builds with 0 errors, and that the tool is a read-only reference step. It doesn't explicitly state 'does not modify state', but the workflow and wording make this clear enough.
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 dense and front-loaded with 'REQUIRED READING', then clearly states the return value, workflow, and alternative. Every sentence adds value; the workflow is a succinct but complete sequence. It is longer than some examples, but no part is 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?
Given a one-parameter tool with no output schema, the description fully explains what the tool returns (structure rules + example section) and how to use it in the larger workflow. The integration with import_xml and write_st_logic makes it contextually complete for an agent deciding to call 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?
The schema has a single parameter 'language' with no description and no enum, so the description must compensate. It does by listing the allowed languages ('ST', 'LD', 'FBD', 'SFC', 'IL') and providing guidance on ST via write_st_logic. This gives strong semantic meaning, though it doesn't explicitly map the parameter to the list.
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 clearly states the tool returns a language-specific authoring guide and exchange-XML structure rules, including a validated example section. It distinguishes itself from siblings by explicitly naming write_st_logic as an alternative for ST, so an agent can tell them apart.
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 provides an explicit workflow ('read this guide -> write the section XML -> import_xml -> build_project -> fix errors') and an explicit exclusion: 'For ST, prefer the write_st_logic tool (no XML needed).' This tells the agent exactly when to use this tool and when not to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_master_dtm_datasetA
Read the master/CPU DTM dataset XML — THE document holding the Modbus TCP scan lines (M580 DTMs XML Dataset spec).
Each scanned device is a under ; its holds one per scan line with Parameters attributes requestSettingBit (connection number), requestSettingRDAddress/RDLength, requestSettingWRAddress/WRLength, requestInputObjID/requestOutputObjID. dtm defaults to the first (CPU) DTM node.
| Name | Required | Description | Default |
|---|---|---|---|
| dtm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It reveals that dtm defaults to the first CPU node and describes the XML structure in detail, showing this is a read operation on the master dataset. It does not cover error behavior or side effects, but for a read-only tool the essential behavior is transparent.
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 front-loaded with the primary purpose and then provides relevant structural detail about the XML document. The XML breakdown is dense but useful given the lack of an output schema. It is not overly verbose and every section serves a purpose.
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?
The description covers the key context: what the dataset represents, how it is structured, and the default behavior of the only parameter. It lacks details about error cases and valid dtm values, but for a read tool with a single optional parameter, the provided context is largely 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?
The input schema provides only a bare optional string with default '', and schema_description_coverage is 0%. The description adds meaning by associating dtm with the DTM node and explaining the default CPU behavior, but it does not specify how to reference non-default DTMs or what formats are accepted. This partial compensation keeps it above baseline but leaves a gap.
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 clearly identifies the action ('Read') and the specific resource ('master/CPU DTM dataset XML'), and elaborates on its content (Modbus TCP scan lines). It distinguishes itself from generic DTM reads by emphasizing the master/CPU scope, though it does not explicitly name conflicting 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 implies its usage by stating what it reads and noting the default DTM node, but it does not provide explicit when-to-use versus alternative tools like get_dtm_dataset or set_master_dtm_dataset. The context is clear for the master dataset case, but no exclusions or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_settingA
Read a project setting value by its identifier (e.g. 'unity.multiAssign', 'unity.nestedComment', 'unity.RemanentLink'). Idents appear as in an exported .xef.
| Name | Required | Description | Default |
|---|---|---|---|
| ident | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states this is a read operation, and it adds useful context about how idents can be located in exported .xef files. However, it does not describe return format, error behavior, or what happens when the ident is not found.
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-loaded with the core action and resource, followed by valuable examples and context. Every word contributes, with 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?
For a simple getter with one parameter and no annotations or output schema, the description covers the essential aspects: what the tool does, how the parameter is used, and where to find idents. Minor gaps include explicit return-value description and error behavior, but these are not critical for such a straightforward 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?
The input schema has 0% description coverage, but the description compensates well by defining 'ident' as a project setting identifier, providing concrete examples, and explaining where to find valid idents in exported .xef files. This meaningfully goes beyond the raw schema property name.
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 clearly states the tool 'reads' a project setting value by its identifier, which is a specific verb and resource. This naturally distinguishes it from sibling tools like set_project_settings, which writes rather than reads.
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 usage: use this tool when you need to read a project setting and have its ident. It also provides helpful context about where idents appear in exported .xef files, but it does not explicitly mention when not to use it or directly compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_structureA
List the program structure: tasks (MAST, FAST, ...) with their scan settings and the sections in each task (name + IEC language), plus counts of events and functional modules.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description bears the full burden of behavioral disclosure. It implies a read-only operation but doesn't explicitly state that, nor does it mention any prerequisites (e.g., an open project) or performance implications. Minimal behavioral context beyond the obvious read nature.
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, focused sentence that leads with the action ('List the program structure') and then specifies the exact return elements. No filler, no redundancy, and perfectly efficient for the agent 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?
Given the tool's simplicity (no parameters, no output schema), the description adequately explains the return values: tasks, scan settings, sections with IEC language, and counts. It does not mention prerequisites or error conditions, but for a read-only overview tool these are minor; the core information is present.
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 has zero parameters, so the schema already covers everything (100% coverage). Per rubric, a zero-parameter tool gets a baseline of 4; the description adds no parameter-specific information, but none is needed. No ambiguity exists.
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 ('List') and resource ('program structure'), then enumerates the exact contents: tasks with scan settings, sections with IEC language, and counts of events and functional modules. This clearly differentiates it from siblings like get_status or list_variables, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It merely describes functionality without mention of use cases, prerequisites, or exclusions. The agent must infer when to call it, which is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusA
Get the current session status: Control Expert server version, whether a project is open, its file path, CPU, version and build state.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. 'Get' implies a non-mutating read, and it lists what information is returned. However, it does not explicitly state that the tool has no side effects, nor does it disclose any potential errors or prerequisites, leaving some ambiguity for an agent.
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, well-formed sentence that front-loads the action and then lists the return fields. Every word adds value; there is 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?
The description enumerates the specific items returned (server version, project-open state, file path, CPU, version, build state), which tells an agent what to expect. It does not specify data types or formats, but for a status tool without an output schema, this is sufficient for basic invocation. It could mention that the output is a summary, but it is otherwise 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?
The tool has zero parameters, so the schema is trivially complete (100% coverage). The description adds no parameter-level detail because none is needed; the baseline of 4 is appropriate since there is nothing to augment.
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 clear, specific action: 'Get the current session status' and enumerates the exact data returned (server version, open project, file path, CPU, version, build state). This is unambiguous and distinct from sibling tools like open_project or build_project, which perform different actions.
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 this is a read-only status query for the current session, but it does not explicitly state when to use it versus alternatives or any preconditions. Given the sibling set, no other tool retrieves session-level status, so usage is somewhat self-evident, but the description offers no explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_xmlA
Import Control Expert XML into the open project — the main way to write LD/FBD/SFC program logic and bulk content.
kind: 'section' (program logic, requires task), 'variables', 'dfb', 'ddt', 'configuration', or 'project' (generic project-level import of an exchange file). Provide the XML either inline via xml_content or as file_path. import_mode: 'overwrite' (default), 'keep_existing' or 'rename'.
Authoring graphical logic (kind='section'): for LD, FBD or SFC, FIRST call get_language_reference(language) and mirror its validated example, then validate_xml the candidate before importing. For Structured Text use write_st_logic instead (no XML needed). Always build_project afterwards and fix the per-section errors it lists.
Tip: export an existing object first (read_section / export_xml) and use its XML as the structural template — Control Expert validates the schema strictly.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| task | No | ||
| file_path | No | ||
| import_mode | No | overwrite | |
| xml_content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of disclosure. It does disclose import_mode semantics (overwrite default vs keep_existing vs rename), warns that 'Control Expert validates the schema strictly', and reveals that build_project will list per-section errors to fix. It stops short of stating permission/auth requirements or the direct success/failure return of the call itself, but given the burden it carries, the disclosure is solid rather than complete.
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 long but every sentence earns its place for a 5-parameter, multi-workflow tool. It front-loads the core purpose, then parameters, then the prescriptive authoring workflow, then the template tip. No filler or tautology.
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?
Given the high complexity (multiple kinds, dependencies on sibling tools) and the thin schema with no output schema, the description is nearly complete: it covers purpose, all parameter semantics, workflow ordering, and alternatives. The residual gap is that it never states what import_xml directly returns on success/failure (the agent must infer error handling from the build_project step), and it assumes an already-open project is understood.
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 0%, so the description fully compensates: it enumerates and explains the kind values ('section' requires task, 'project' is a generic exchange-file import), distinguishes xml_content vs file_path as two delivery mechanisms, and documents import_mode with its default and allowed values. This exceeds what the bare schema provides and directly aids correct invocation.
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 ('Import') plus its resource ('Control Expert XML into the open project') and names the primary scope ('the main way to write LD/FBD/SFC program logic and bulk content'). It distinguishes itself from siblings by explicitly routing Structured Text authoring to write_st_logic instead, so an agent can tell it apart from related 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?
Explicit use-context is given: for kind='section' it prescribes an ordered workflow (get_language_reference → validate_xml → import), names the alternative for ST (write_st_logic, 'no XML needed'), and mandates the follow-up build_project step. It even suggests export_xml / read_section as a template prerequisite. The when-versus-alternative guidance is complete and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_remoteconnect_bulk_edit_workbookA
Read a native RemoteConnect Object Bulk Edit .xls workbook.
Returns workbook version/DTM metadata and every sheet's stable machine fields. Pass sheet_name to also return up to limit data rows. Use the row-2 machine fields, not translated row-1 labels, when creating patches.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| limit | No | ||
| sheet_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that this is a read operation, lists what is returned, and adds a meaningful warning about row-2 vs row-1 fields, which affects subsequent patch creation. It does not cover error behaviors or file-format details, but those are less critical for a read-only inspector.
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, no filler, with the core action first and the most actionable usage warning last. Every sentence adds value.
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?
Given no output schema, the description provides a reasonable high-level account of the return value: version/DTM metadata, every sheet's stable machine fields, and optional data rows. It is enough for an agent to invoke the tool correctly, though the exact structure of the returned metadata is not specified.
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 0%, so the description must compensate. It explains sheet_name and limit ('Pass sheet_name to also return up to limit data rows') and implicitly ties path to the workbook being read. However, the path parameter itself is not explicitly described, and no additional detail is given about format, constraints, or defaults beyond what the schema shows.
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 opens with a specific verb and resource: 'Read a native RemoteConnect Object Bulk Edit `.xls` workbook.' It further clarifies the output (version/DTM metadata and stable machine fields) and is clearly distinct from the sibling create_remoteconnect_bulk_edit_copy, which writes rather than reads.
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 concrete usage direction: 'Pass sheet_name to also return up to limit data rows' and instructs to use row-2 machine fields rather than translated row-1 labels. It does not explicitly contrast with alternative tools, but the read-vs-create sibling split and parameter guidance make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_remoteconnect_projectA
Inspect a RemoteConnect project bundle without opening or modifying it.
path may identify a .PRJ, .RCZ, .STU, or .STA file. Returns the matching sibling files and a safe summary of the .PRJ FDT/DTM structure. Opaque DTM EngineeringData is counted but never deserialized or changed.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It states the tool does not open or modify files, returns sibling files and a safe summary, and explicitly notes that opaque DTM EngineeringData is counted but never deserialized or changed. This clearly communicates the operation's safety boundaries.
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 compact and front-loaded, opening with the core behavior before giving supporting detail. Every sentence adds relevant information, and there is 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?
For a single-parameter inspection tool with no annotations and no output schema, the description covers the accepted file types, the action taken, the return content, and the key safety constraint. It is slightly incomplete in not addressing sibling-tool differentiation or potential error conditions, but overall it gives an agent enough to invoke the tool 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?
The input schema only provides the parameter name 'path' with no description, so the description must compensate. It does by explaining that path may identify a .PRJ, .RCZ, .STU, or .STA file, adding meaningful context beyond the bare schema. It does not fully specify path formatting details, but for a single-path parameter this is useful and sufficient.
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 clearly states the tool inspects a RemoteConnect project bundle without opening or modifying it, and names the accepted file types. It does not explicitly distinguish itself from closely named siblings like analyze_project or get_project_structure, but the 'without opening or modifying' phrasing and focus on bundle inspection make the core purpose unambiguous.
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 tool is for safe, non-modifying inspection of project bundles, which signals when to choose it over open_project or modification tools. However, it does not explicitly state when to use this tool versus alternatives such as analyze_project or get_project_structure, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inventory_remoteconnect_configurationB
Read the RemoteConnect FDT/DTM topology and configuration-object index.
Returns every DTM identifier and its InstanceDataRecord groups. Values in those records are proprietary serialized payloads and remain opaque; this tool never performs unsafe .NET deserialization or modifies the project.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explicitly states 'never performs unsafe .NET deserialization or modifies the project' and notes that record values are opaque. This provides meaningful safety-related context beyond the name and schema, though it omits other behaviors like path validation or error handling.
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 compact and well-structured: the first sentence states the core purpose and return, while the second adds safety and output characteristics. Every sentence contributes value with 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?
While the description covers the tool's read-only nature and high-level return content, it critically misses the meaning of the required 'path' parameter and any usage context. Since there is no output schema and only one parameter, the description should explain that parameter to be considered 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?
The only parameter 'path' has zero schema description coverage and the description never explains what 'path' refers to, its format, or how it should be provided. The agent is left without any information to populate the sole required parameter correctly.
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 ('RemoteConnect FDT/DTM topology and configuration-object index'), and clarifies the return value ('every DTM identifier and its InstanceDataRecord groups'). However, it does not explicitly differentiate itself from siblings like list_dtms or inspect_remoteconnect_project, 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?
No guidance is given on when to use this tool versus alternatives. Although the description implies a read/inventory use case, it does not state exclusions, prerequisites, or reference sibling tools, leaving the agent to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_animation_tablesA
List the project's animation tables (watch tables used to monitor and force variable values online).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. 'List' strongly implies a read-only operation and the parenthetical provides conceptual context, but the description does not explicitly state that no side effects occur or describe the return format.
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 states the action and adds only the necessary definition of animation tables. No wasted words or redundant schema 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 zero-parameter listing tool, the description is sufficient to understand what the tool does and when to call it. It could be more complete by noting that this is a non-mutating, project-scoped read operation, 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?
The tool has zero parameters and 100% schema coverage, so there is no parameter detail for the description to add. Baseline 4 applies because no parameter information is missing.
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 ('List') and resource ('the project's animation tables'), and the parenthetical ('watch tables used to monitor and force variable values online') clarifies exactly what animation tables are. This distinguishes it from sibling tools like create_animation_table, delete_animation_table, and open_animation_table.
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 intended usage context clear: use this tool to obtain the project's animation tables. It does not explicitly name excluded alternatives or state 'use X instead', which keeps it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_typesA
List user data types in the project: DFB types (function blocks) and DDTs (structured/array types) with their versions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states the action (list) and the output content (types with versions), which implies a read-only operation, but it does not explicitly confirm that there are no side effects or mention any error scenarios or limitations. For a simple list tool, this is adequate but not rich in behavioral detail.
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, well-structured sentence that front-loads the verb and resource, then adds the specific categories and version detail. There is no wasted wording, and every element adds meaning.
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-parameter tool with no output schema, the description is reasonably complete: it tells the agent what the tool does and what kind of information it returns (types with versions). It does not specify the exact return structure (e.g., fields or format), but for a simple listing operation this is acceptable. The description could be slightly richer by noting if the list is sorted or if it only returns current versions, but it is sufficient 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?
The tool has zero parameters, so the description need not explain any parameter semantics. The schema strongly covers the empty parameter list, and the description adds the context that the listing is for 'user data types' and includes versions, which is useful. Baseline for 0 params is 4, and the description does not need to compensate further.
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 clearly states the verb 'List' and the resource 'user data types in the project', and explicitly enumerates two categories (DFB types and DDTs) with their versions. This is specific and distinguishes it from sibling tools like list_variables (which lists variables, not types) and get_project_structure (which describes the overall project).
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 to use the tool (when you need to list data types) but offers no explicit guidance on alternatives or when not to use it. It does not compare with list_variables or other list operations, relying on the reader to infer the distinction. Given the large sibling set, some explicit routing would be beneficial, but the purpose is clear enough to deduce usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dtmsA
List the project's DTM topology (DTM Browser): communication/master DTMs and their slave devices, with names, DTM ids, types, and bus addresses (IP for Modbus TCP / EtherNet/IP devices).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It accurately describes the output content without implying side effects. The verb 'List' inherently signals a read-only operation, and the description includes the exact fields returned, which is key behavioral transparency. However, it does not state anything about prerequisites (e.g., project must be open) or potential error conditions, though for a zero-parameter tool these are less critical.
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, dense sentence that leads with the action and resource, then immediately details the content of the output. It contains no filler or repetition—every clause adds value. This is exceptionally concise while still being informative.
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-parameter read tool with no output schema, the description is sufficiently complete. It specifies the primary data fields returned and the scope (communication/master DTMs and slaves). It does not describe the exact format (e.g., list vs. hierarchical tree), but 'topology' implies structure and the fields listed give a clear idea of the result. An agent can call this tool with confidence about what to expect.
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?
There are zero parameters, so the schema has full coverage by default. The description doesn't need to add parameter information; the tool takes no input. The baseline for zero-parameter tools is 4, and the description appropriately focuses on output rather than inputs.
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 clearly identifies the verb 'List' and the resource 'project's DTM topology', and enumerates the specific data returned (names, DTM ids, types, bus addresses). This distinctly separates it from sibling tools like add_dtm, set_dtm_address, or delete_dtm, which are mutation operations.
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 clear context for when this tool is applicable—when an agent needs to inspect the DTM topology. It does not explicitly state when not to use it or name alternative tools, but the listing nature and the specificity of 'DTM Browser' make the purpose unambiguous. No exclusions are provided, but it's easy to infer that alternatives like get_hardware or list_networks are for other perspectives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_networksA
List logical networks (Premium/Quantum: Ethernet, Modbus Plus, Fipway) with their IP service configuration where available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It clearly indicates a read-only listing operation and adds the conditional detail that IP service configuration is included only 'where available'. This is sufficient transparency for a simple list operation.
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, front-loaded sentence with no filler. Every phrase contributes either the resource, its scope, or the conditional output 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 zero-argument list operation, the description fully covers what is being listed, the relevant hardware families, and the availability of IP service configuration. No output schema exists, but the return content is sufficiently implied by the description.
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 has zero parameters, so there is nothing for the schema to explain. The description adds semantic context by specifying which types of logical networks are listed, which is helpful despite the absence of 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?
The description uses a specific verb ('List'), identifies the resource ('logical networks'), and enumerates the scope (Premium/Quantum: Ethernet, Modbus Plus, Fipway). This clearly distinguishes the read-only list operation from mutating sibling tools like add_network and set_network_ip.
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 intended usage is implied by 'List' and the network-focused description, but there is no explicit when-to-use or when-not-to-use guidance and no named alternatives. An agent can infer when this tool is appropriate, but the description does not state it directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variablesA
List global variables with type, comment, topological address (%MW..., %I..., etc.) and initial value. name_filter does a case-insensitive substring match on the variable name.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | ||
| name_filter | No |
TDQS
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 makes the read-only nature clear with 'List' and discloses the case-insensitive substring filter behavior. It does not mention prerequisites such as requiring an open project, result ordering, or pagination handling.
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-loaded with the core behavior and followed by the filter detail. There is no filler or redundant restating 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 simple read-only list tool with two optional parameters, the description covers the relevant output fields and the filtering behavior well. Minor gaps are the lack of explanation for max_results semantics and the absence of an explicit output format, but these are not critical given the simplicity.
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 0%, so the description must compensate. It explains name_filter's case-insensitive substring matching, which adds real meaning beyond the schema. However, it leaves max_results undocumented beyond its default in 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 ('List') and resource ('global variables') and enumerates the returned attributes: type, comment, topological address, and initial value. It clearly distinguishes this read-oriented listing tool from sibling tools like create_variable, update_variable, and delete_variable.
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 to use the tool: when one needs to enumerate global variables, optionally filtered by name. However, it does not explicitly mention alternatives or provide when-not-to-use guidance, such as when to use list_data_types instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_projectA
Create a new project from scratch for a given PLC CPU.
cpu_part_number must exactly match a CPU reference in the installed Control Expert hardware catalog, e.g. 'BMX P34 2020' (M340), 'BME P58 2040' (M580), 'TSX P57 4634M' (Premium), '140 CPU 651 60' (Quantum). cpu_version is the firmware version offered by the catalog and is required, e.g. '02.70'. The project exists only in memory until save_project is called with a path; the project name is taken from that .stu file name (Control Expert has no separate, settable project-name field).
| Name | Required | Description | Default |
|---|---|---|---|
| cpu_version | Yes | ||
| cpu_part_number | Yes |
TDQS
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 non-obvious behaviors: the project exists only in memory until save_project is called, the project name is inherited from the .stu filename, and there is no settable project-name field. It also states exact-match requirements against the catalog, which is important acceptance 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?
The description is front-loaded with a one-sentence purpose, then gives focused parameter constraints and the critical persistence trait. Every sentence adds value; there is 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?
The description covers invocation parameters, required catalog matching, and the in-memory-then-save lifecycle, which is sufficient for correct calling. It does not describe return values or error behavior, and with no output schema some agents might want that, but it does not compromise 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?
The schema has 0% description coverage, so the description fully compensates by detailing both parameters: cpu_part_number must exactly match a catalog CPU reference with examples, and cpu_version is the required firmware version offered by the catalog with an example. This is more than enough to invoke the tool correctly.
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 opens with a specific verb and resource: 'Create a new project from scratch for a given PLC CPU.' This clearly distinguishes it from open_project and change_cpu, and the subsequent save_project reference further disambiguates the lifecycle.
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 establishes clear context for when to use: creating a new project rather than opening an existing one, and it names save_project as the follow-up for persistence. It does not explicitly list when not to use it, but the 'from scratch' framing and memory-only caveat provide enough guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_animation_tableA
Open an existing animation table's editor inside the live Control Expert window, so a human watches values update in real time while the AI drives a test. Typical live-test flow: create_animation_table -> start_simulator -> plc_connect -> plc_transfer -> plc_command('run') -> open_animation_table. The GUI opens read-only (this client keeps write); the table animates live once connected to the simulator/PLC.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| state | No | show_normal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must carry the burden. It discloses that the GUI opens read-only while the client keeps write, and that the table animates live once connected. This is critical behavioral context: it tells the agent that this tool has no write side-effects and that the animation depends on an active connection. It also implies a step dependency (must be connected) which is not in annotations. Missing a bit about failure modes or exact GUI behavior, but overall strong.
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 tightly written, with three sentences. The first states purpose and key context, the second gives the usage flow, the third explains read-only and live animation. No filler. It's structured logically: what, when, and behavioral notes. 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?
Given the tool's moderate complexity (2 params, no output schema), the description covers the main usage context and behavior. The main gap is explaining the parameters, especially 'state', and what the return/result of the call is (though it's a GUI opener, so no output is fine). The typical flow and read-only behavior are excellent. Slightly incomplete on parameter semantics and edge cases, but overall adequate.
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 0%, and the description doesn't explain the parameters at all. 'name' likely refers to the table name, but it's not stated; 'state' with default 'show_normal' is entirely unexplained. The agent must infer what 'state' means (e.g., window state, display mode). The description only mentions 'open' and 'editor', not parameter details. Since schema provides only titles and types, this is a significant gap.
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?
Description is very specific: 'Open an existing animation table's editor inside the live Control Expert window' clearly states verb (open), resource (animation table editor), and context (live window). It differentiates from creation/deletion siblings by focusing on opening existing tables. The typical live-test flow provides strong distinction from list_animation_tables (which lists names) and create_animation_table.
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 explicitly gives the typical live-test flow: create_animation_table -> start_simulator ->_connect -> plc_transfer -> plc_command('run') -> open__table. This tells the agent exactly when to call this tool – after the simulation is running and connected. It also states that the GUI opens read-only and that this client keeps write, implying when to use it (for live monitoring) vs. other write operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_projectA
Open a Control Expert project file.
Supports .stu (native project), .sta (archive), and .xef/.zef (XML exchange format, imported into a fresh application). Any previously open project is closed without saving. Opening can take 30-120 s for large projects.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It clearly warns that any previously open project is closed without saving, explains that XML formats are imported fresh, and sets expectations for long opening times (30-120 s). This is strong behavioral transparency for a state-changing tool.
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 concise sentences, each providing useful information: the action, supported formats, and two important behavioral caveats. No filler or redundant restatement.
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?
Given no annotations and no output schema, the description covers the key aspects needed to call the tool correctly: what it opens, which formats are supported, the destructive close-without-save behavior, and expected latency. 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 coverage is 0% and the schema only says 'path'. The description adds meaningful parameter context by specifying that the path can point to .stu, .sta, .xef, or .zef files, and that certain formats are imported differently. It does not fully define path syntax but compensates well for a simple single-parameter tool.
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 ('Open') and a clear resource ('Control Expert project file'), and enumerates the supported file formats. This distinguishes it from sibling tools like new_project and open_remoteconnect_logic without 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?
The description implies when to use this tool by listing supported file extensions and mentioning that XML formats are imported into a fresh application. However, it does not explicitly state when not to use it or point to alternatives such as new_project for creating projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_remoteconnect_logicA
Open the paired UnitySoControl logic project for a RemoteConnect bundle.
Pass any matching .PRJ/.RCZ/.STU/.STA path. Configure the SCADAPack OEM context with CE_MCP_XPDF_CONTEXT (and optionally CE_MCP_LIBSET_VERSION) before starting the server. The RemoteConnect configuration file is not modified by this operation.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states that the RemoteConnect configuration file is not modified, which is a helpful side-effect disclosure. However, it does not mention potential other side effects, error behavior, return semantics, or whether the operation is read-only or mutating (beyond 'open'). It is incomplete but not misleading.
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, each contributing: purpose, usage/prerequisite, and a non-modification note. The information is front-loaded with the core action first. No redundant 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 tool with one parameter and no output schema, the description covers input requirements and a safety guarantee, but lacks details on expected outcomes (e.g., what 'opening' does in practice, whether it starts a server, or what the function returns). It does not clarify if the operation is blocking, and whether any configuration is automatically applied. Given the sibling context, more context would help an agent know exactly when to use 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?
The only parameter 'path' has zero schema description, but the tool description compensates by specifying accepted file extensions (.PRJ/.RCZ/.STU/.STA) and implying a project file path. This adds meaningful semantics beyond the raw schema, though it does not specify path format, absolute/relative requirements, or validation behavior.
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 ('Open') on a specific resource ('the paired UnitySoControl logic project for a RemoteConnect bundle') and further specifies the accepted file extensions. It clearly distinguishes itself from generic tools like 'open_project' by targeting RemoteConnect bundles.
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 provides concrete usage guidance: pass a matching .PRJ/.RCZ/.STU/.STA path, and notes a prerequisite (configure SCADAPack OEM context before starting the server). However, it lacks explicit comparisons to sibling tools (e.g., when to use open_remoteconnect_logic vs inspect_remoteconnect_project or build_remoteconnect_logic_copy), leaving the choice somewhat inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_fb_in_ladderA
Place a function block in LADDER from scratch — NO template needed — for any project DFB. Then build_project to confirm.
An FFB in Ladder can't normally be hand-authored (CE owns the pin layout), but this generates the correct geometry automatically: it reads the DFB's pin interface, places the block (height = max(in,out)+1), wires ONE boolean input on its pin-row to the rail (EN left enabled), and binds the rest.
fb_type: a project DFB type (e.g. 'FC_Valve', 'FC_VSD', 'Motor'). instance_name: the FB instance variable. bindings: {pin: variable_or_literal} for the data / in-out / output pins (e.g. {"Valve":"AV2","ExtReset":"0"}); auto-declared with the right types. rung_input: which BOOL input the rung drives (default: first boolean input). rung_contact: the BOOL variable feeding that input (default '_EN'). For elementary EFBs (TON/CTU/…) author in FBD instead. Multiple blocks = call once per block (each makes its own section).
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | MAST | |
| pos_x | No | ||
| fb_type | Yes | ||
| section | Yes | ||
| bindings | Yes | ||
| rung_input | No | ||
| rung_contact | No | ||
| instance_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must carry the full behavioral burden. It discloses key internal behavior: reads the DFB's pin interface, places the block with computed height (max(in,out)+1), wires one boolean input to the rail, and auto-declares bindings with the right types. This gives significant insight into what the tool does beyond the schema, enough to predict side effects like variable creation.
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 well-structured: a clear purpose in the first sentence, a rationale paragraph, then per-parameter explanations, followed by usage notes. Each sentence adds value; there is no fluff. It is somewhat long but appropriate for the tool's complexity. The key information is front-loaded, and the parameter list is organized with examples.
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 tool of this complexity (8 parameters, no output schema, no annotations), the description covers the main mechanics and defaults, but leaves important gaps. The 'section' parameter is required yet unexplained, and 'task' and 'pos_x' are only mentioned by default values. It also doesn't describe return values or error scenarios. The description is sufficient for a rough understanding but not fully complete for correct invocation without additional inference.
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 0%, so the description must document all parameters. It explains fb_type, instance_name, bindings, rung_input, and rung_contact with examples, covering 5 of 8 parameters. However, it omits explanations for section (required), task, and pos_x, leaving them ambiguous. The agent has to infer their meaning from names and defaults, which is insufficient given the lack of schema descriptions.
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 starts with a clear, specific verb and resource: 'Place a function block in LADDER from scratch'. It explicitly differentiates from alternative authoring by stating 'NO template needed' and 'For elementary EFBs (TON/CTU/…) author in FBD instead', which implies this tool is for project DFBs. This gives the agent a precise understanding of what the tool does and how it differs from related tools.
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 provides explicit when-not-to-use guidance: 'For elementary EFBs (TON/CTU/…) author in FBD instead.' It also says 'Then build_project to confirm,' indicating a follow-up step. However, it doesn't explicitly compare with the sibling 'use_fb_in_ladder', though the 'from scratch — NO template needed' phrase implicitly contrasts it. This is clear enough for an agent to decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_remoteconnect_feedbackA
Read structured RemoteConnect Object Bulk Edit feedback.
With no log_path, reads the newest RemoteConnect bulk-edit log from the current Windows user's application-data directory. Set latest=false to aggregate up to max_files. Returns per-object changes, warnings and errors, source file/line references, counts, and ok=false when errors are present.
| Name | Required | Description | Default |
|---|---|---|---|
| latest | No | ||
| log_path | No | ||
| max_files | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses the source location, the effect of latest and max_files, and the shape of the return value including per-object changes, warnings, errors, source references, counts, and ok=false on errors. This is far beyond a minimal statement and gives an agent a solid model of what will happen.
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 compact and front-loaded. The first sentence states the tool's purpose, the second explains the default behavior, the third covers the key option, and the fourth summarizes the return content. Every sentence earns its place with 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 read-only tool with three optional parameters and no output schema, the description covers all essential operational context: default source, parameter behavior, return contents, and error signaling. The absence of annotations is mitigated by the description's own safety signal ('Read') and return details. Nothing critical is missing for an agent to invoke and interpret the result 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 0%, so the description must compensate for the bare parameter definitions. It does so completely: log_path is explained via the no-log_path default, latest is explained as controlling whether to read only the newest log or aggregate, and max_files is explained as the aggregation limit. Every parameter's semantics are addressed in prose.
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 opens with a specific verb and resource: 'Read structured RemoteConnect Object Bulk Edit feedback.' This clearly distinguishes the tool from siblings like inspect_remoteconnect_bulk_edit_workbook, which targets the workbook itself, and create_remoteconnect_bulk_edit_copy, which creates a copy. The scope is unambiguous.
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 concrete guidance on how to invoke the tool: without log_path it reads the newest log, and setting latest=false aggregates up to max_files. This effectively explains the main behavior and configuration options. It does not explicitly name alternatives or state when not to use this tool, but the usage context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sectionA
Read the logic of a program section as Control Expert XML. The XML contains the source code (ST text, ladder rungs, FBD networks...) and is the same format accepted by import_xml(kind='section').
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| section | Yes |
TDQS
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 clearly implies a read-only operation and describes the return payload (XML). However, it does not explicitly state that it has no side effects or mention prerequisites like an open project, which would be valuable 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?
The description is exactly two sentences with no waste. The purpose is front-loaded ('Read the logic of a program section as Control Expert XML'), and the additional detail about XML contents and compatibility adds value without fluff.
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 tool with two required, undocumented parameters, the description is incomplete. It does mention the output format, but it fails to explain the parameters themselves, any prerequisites (e.g., open project), or potential error conditions. This makes it insufficient for an agent to confidently 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 coverage is 0% – neither 'task' nor 'section' has a description. The tool description does not explain what these parameters represent, their expected formats, or valid values. This leaves the agent without guidance on how to fill the two required fields, a significant gap.
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), a resource (program section), and the output format (Control Expert XML). It explicitly mentions the XML contains ST text, ladder rungs, and FBD networks, which clearly differentiates it from project-wide export or write tools like export_xml or write_st_logic.
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 implies when to use it (to retrieve a single section's logic) by specifying the section as the target. The mention that the format matches import_xml(kind='section') suggests a read-modify-write workflow, but it does not explicitly contrast with alternatives like export_xml or read the entire project structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_io_moduleC
Remove the module at a rack slot.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | ||
| drop | No | ||
| rack | No | ||
| slot | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'remove', implying a destructive operation, but does not describe consequences, reversibility, or side effects on related hardware configurations. For a removal tool, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, a single sentence with no wasted words. However, it omits essential context about parameters and behavior, making it under-specified rather than efficiently complete. It could be expanded with meaningful detail without losing conciseness.
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?
Given 4 parameters with 0% schema coverage and no output schema, the description is far from complete. It does not clarify the addressing model (bus, drop, rack, slot) or any prerequisites for removal. An agent would struggle to call this tool correctly with only this description.
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 0%, so the description must compensate by explaining parameters. It references 'rack slot' but does not explain the 'bus', 'drop', or 'rack' parameters, which are likely necessary to locate the exact module. The description adds minimal meaning 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?
The description clearly states the verb 'remove' and the resource 'module at a rack slot', providing a specific action. However, it does not distinguish this tool from sibling tools like replace_io_module or add_io_module, which also operate on modules at rack slots.
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 guidance is provided on when to use this tool versus alternatives such as replace_io_module or add_io_module. There is no mention of conditions, prerequisites, or exclusions, leaving the agent to guess the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_io_moduleA
Replace a module in place (keeps the slot) — e.g. swap the default power supply new_project puts on the local rack. Old part number/version must match the current module exactly (see get_hardware).
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | ||
| drop | No | ||
| rack | No | ||
| slot | Yes | ||
| new_version | Yes | ||
| old_version | Yes | ||
| new_part_number | Yes | ||
| old_part_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It discloses the critical constraint that the old part number/version must match exactly and references get_hardware for validation, but it does not describe potential side effects, whether the old module is permanently removed, or any prerequisites beyond matching. This is partial transparency for a mutation tool.
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 concise (two sentences) and front-loaded with the action and key constraint. The example adds clarity without verbosity, and 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with 8 parameters and no annotations or output schema. The description does not cover the addressing parameters (bus, drop, rack) or explicitly state when to use this over add/remove, nor any consequences of the replacement. An agent would struggle to correctly supply all parameters without additional guidance.
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 0%, so the description must compensate for all 8 parameters. It only explains the old/new part number and version matching, but does not clarify the meaning or usage of bus, drop, rack, or slot beyond their names. The addressing parameters are left ambiguous, which is insufficient given the lack of schema descriptions.
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 clearly states the verb (replace) and the resource (module), and specifies it is done 'in place (keeps the slot)', which distinguishes it from add_io_module and remove_io_module. The concrete example of swapping a default power supply reinforces the purpose.
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 to use this tool through 'keeps the slot' and the example, but it does not explicitly name alternatives or state when not to use it. There is no mention of add_io_module or remove_io_module, so the agent must infer the selection logic from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
replace_rackB
Replace a rack in place (e.g. the default BME XBP 0800 new_project creates -> BME XBP 0400). Modules on the rack are kept where the new rack has the same slots.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | ||
| drop | No | ||
| rack | Yes | ||
| new_version | Yes | ||
| old_version | Yes | ||
| new_part_number | Yes | ||
| old_part_number | Yes |
TDQS
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 does disclose the key behavior — modules are kept only where the new rack has the same slots — which is valuable. But it leaves the fate of modules in non-matching slots, error behavior for mismatched part numbers, and the destructive nature of the operation undisclosed for what is a hardware-mutation tool.
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 filler, so it is efficient. However, the example uses an unpolished arrow notation ('...0800 new_project creates -> BME XBP 0400') that is slightly cryptic and could be clearer.
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 7-parameter hardware tool with zero schema descriptions, no annotations, and no output schema, this description is thin. Addressing semantics (bus/drop/rack), version formats, and error conditions are all undefined, meaning an agent would struggle to invoke this 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 0%, so the description must compensate for all 7 parameters. It only hints at part-number semantics through the example; bus, drop, rack, and both version parameters are entirely unexplained. The agent would have to guess how addressing and versioning work.
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 and resource ('Replace a rack in place') and reinforces it with a concrete example (BME XBP 0800 -> BME XBP 0400). This cleanly distinguishes it from sibling tools like add_rack and replace_io_module, which do different things.
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 'in place' and the example imply this tool is for upgrading/resizing an existing rack rather than adding a new one, which loosely differentiates it from add_rack. However, there is no explicit when-to-use guidance, no named alternatives, and no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_projectA
Save the open project. Pass path (ending in .stu) on first save or to save a copy under a new name; leave empty to save in place.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains the behavior of the optional path parameter, including first-save handling, copy creation, and in-place saving. It could further mention overwriting or failure states if no project is open, but the core behavior is transparent.
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?
One sentence with no filler. Each clause delivers necessary information: the action, the path format, the two scenarios for providing a path, and the behavior when empty. It is front-loaded and easy 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?
Given the tool's simplicity, one optional parameter, no output schema, and no annotations, the description covers everything needed to invoke it correctly: how to save, copy, and save in place. Additional details like return values are unnecessary for a save operation.
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 0% and the schema only provides a default value. The description fully compensates by explaining that path must end in .stu, when it should be provided, and what leaving it empty does. This is complete parameter semantics for the single argument.
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 the exact verb and resource: 'Save the open project.' It further clarifies three distinct scenarios: first save, saving a copy under a new name, and saving in place. This is specific enough to distinguish the tool from siblings like export_project or close_project.
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?
Clear usage guidance is provided for when to pass a path versus leaving it empty, including the required .stu extension. The description does not explicitly compare against alternatives or state when not to use it, but the context is clear enough for a simple save operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dtm_addressA
Set a slave DTM's bus address — for Modbus TCP / EtherNet/IP devices this is the IP address (e.g. '192.168.10.21'); for fieldbus slaves the node number. Optionally also set the device's gateway and subnet mask (the gateway must be in the same IP domain as the address or the build warns 'IP Address and Gateway address are not in the same domain'). Setting gateway/subnet rewrites the project archive: the project is reloaded and UNSAVED — build_project then save_project afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| subnet | No | ||
| address | No | ||
| gateway | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It warns about the 'IP Address and Gateway address are not in the same domain' build error, and discloses that setting gateway/subnet rewrites the project archive, reloads it, and marks it unsaved (requiring build_project and save_project). This goes beyond what's in the schema and provides critical side-effect information.
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 paragraph but well-structured: it starts with the primary purpose, then details address formats, optional parameters with a warning, and side effects. It is compact yet information-dense, with no filler. The only minor inefficiency is the parenthetical example, which is helpful but could be trimmed.
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?
Given no output schema and no annotations, the description covers the essential side effects (archive rewrite, unsaved state) and the warning condition. It does not mention repo/return value, nor whether setting only address also requires a save, and leaves the 'name' parameter unresolved. Still, it is largely complete for a setter operation.
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 0%, so the description must compensate. It explains 'address' as IP or node number, and clarifies constraints for 'gateway' (same domain) and 'subnet' (part of addressing). However, it omits the required 'name' parameter entirely and does not specify the format for 'subnet' (e.g., '255.255.255.0'), leaving ambiguity for a required field.
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 the specific verb 'Set' and the resource 'a slave DTM's bus address', and distinguishes between IP address vs node number based on protocol. This clearly separates it from sibling tools like set_dtm_dataset or set_dtm_control_parameters, which handle different aspects of a DTM.
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 implicitly defines when to use (to set address, optionally gateway/subnet) and provides context for the gateway/subnet behavior (must be same IP domain). However, it does not explicitly say when NOT to use it or compare to alternatives, leaving some routing to the agent's judgment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dtm_control_parametersA
Write a master DTM's control parameters (CetControlParameterInput XML) — scanner sizing and %MW mapping of the I/O scan. With build=True the DTM→PLC control information is rebuilt afterwards. Read the current values with get_dtm_control_parameters first and mirror the schema.
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | ||
| name | Yes | ||
| build | No |
TDQS
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 the build=True behavior (rebuilds DTM→PLC control information) but does not mention other side effects such as overwriting existing parameters, required permissions, or reversibility. The 'read first' hint implies overwriting, but this is not stated explicitly.
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 action, and includes a critical reference to the read counterpart. No redundant words; every clause adds value.
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 write tool with no output schema, the description supplies the essential workflow (read first, mirror schema) and the build option's effect. It omits details like error handling, behavior when build=False, and the exact XML structure, but the directive to mirror the schema provides a path to accuracy. Overall, it is sufficiently complete for an agent to invoke 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?
Given 0% schema description coverage, the description must compensate. It adds meaning for 'xml' by describing its content (scanner sizing and %MW mapping) and for 'build' by explaining its effect. It does not explain 'name', though its role as a DTM identifier is inferable from context. Coverage is partial, justifying a moderate score.
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 clearly states the action: 'Write a master DTM's control parameters' with a specific resource (CetControlParameterInput XML) and specifies the content domain (scanner sizing and %MW mapping). It also differentiates from the sibling get_dtm_control_parameters by the verb 'Write' vs 'Read', making its purpose unambiguous.
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 instructs to 'Read the current values with get_dtm_control_parameters first and mirror the schema', providing a clear precondition and workflow. It does not, however, contrast with other write siblings like set_master_dtm_dataset or set_dtm_dataset, so the guidance is partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_dtm_datasetA
Import a slave DTM configuration dataset (previously exported with get_dtm_dataset, possibly modified).
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | ||
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full behavioral disclosure. It states the action 'Import', which implies a write operation, but does not describe side effects like overwriting existing data, validation requirements, or persistence. It is basic but not misleading.
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 sentence that is concise and front-loaded with the primary action and resource. There is no superfluous 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?
Given no output schema, no annotations, and zero parameter documentation, the description lacks essential details about the xml format, how the dataset is applied, and any confirmation or error behavior. An agent cannot fully anticipate the tool's requirements without additional information.
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 input schema has 0% description coverage for the two required parameters (name and xml). The description does not explain what each parameter represents or the expected format, leaving the agent to infer that 'name' is an identifier and 'xml' is the dataset content. This is a significant gap.
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 clearly states the verb 'Import' and the resource 'slave DTM configuration dataset', and explicitly references the export counterpart, distinguishing it from get_dtm_dataset and set_master_dtm_dataset. An agent can immediately understand the primary function.
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 indicates that the tool is used to import a dataset 'previously exported with get_dtm_dataset, possibly modified', which provides clear context on when to use it. It does not explicitly state when not to use it, but the pairing with its export sibling is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_master_dtm_datasetA
Write back a modified master DTM dataset (adds/edits Modbus scan lines) and reload the project from the modified exchange archive.
To add a Modbus scan request, insert into the target SlaveDevice's a node shaped exactly like this (validated):
Rules (M580 CPU scanner): Index increments per request within the device starting at 0; requestSettingBit is the connection number (Modbus range 1-128, unique across the scanner); requestUniqueID must be a fresh GUID; requestInput/OutputObjID use an even/odd pair (n, n+1) from 1024-1279 per connection, 65535 for an unused direction; RD/WR address+length are in words (slave-index format, 0-based). After this call the project is reloaded and UNSAVED — run build_project to validate (the scan line then appears in get_dtm_control_parameters), then save_project.
| Name | Required | Description | Default |
|---|---|---|---|
| dtm | No | ||
| xml | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses significant side effects: the project is reloaded, left UNSAVED, must be validated with build_project, and the result appears in get_dtm_control_parameters. It also gives detailed Modbus rules. It does not mention permission requirements or potential data-loss implications of the reload, so it is not 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?
The description is long, but the length is justified by the exact XML template and validation rules needed for a correct call. The first sentence front-loads the core purpose, and the rest is structured guidance followed by post-call steps. It could be slightly tighter but is appropriately detailed.
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?
The description provides strong operational context, workflow steps, and Modbus-specific rules, but it omits parameter mapping and never clarifies the role of dtm. Given the complexity and the absence of an output schema, this leaves a meaningful gap 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 coverage is 0%, and the description never explains what the dtm parameter is or explicitly maps the xml parameter to the provided XML template. The detailed node shape gives content-level guidance, but the agent is left to infer that xml carries the modified dataset and what dtm means.
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 opens with a precise action: 'Write back a modified master DTM dataset (adds/edits Modbus scan lines) and reload the project'. This names the specific resource and operation, and the master DTM scope distinguishes it from the sibling set_dtm_dataset. The Modbus scan-line focus makes selection unambiguous.
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?
Clear context is provided: use this when adding/editing Modbus scan requests and then validating via build_project. However, it never explicitly contrasts with set_dtm_dataset or states when not to use this tool, so the guidance stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_network_ipC
Set the static IP configuration of a logical Ethernet network.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| gateway | Yes | ||
| ip_address | Yes | ||
| subnet_mask | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the mutation but does not mention overwrite behavior, validation, prerequisites, persistence, or side effects.
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 clear, front-loaded sentence with no filler. It is efficient, though it sacrifices useful context because it is so short.
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 four required parameters, no annotations, no output schema, and no parameter descriptions, one sentence is insufficient for reliable invocation. Key details about network identification, address formats, and side effects are 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 0%, and the description adds no parameter-level meaning. The format of ip_address, subnet_mask, and gateway, as well as what 'name' refers to, is left entirely to inference.
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 clearly states the action and target: setting the static IP configuration of a logical Ethernet network. The phrase 'logical Ethernet network' helps differentiate from related networking tools, though it does not explicitly name any sibling.
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 about when to use this tool versus alternatives such as configure_cpu_ethernet or set_dtm_address. No prerequisites, exclusions, or context are given beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_project_settingsA
Set one or more project settings (build/language options). Common idents: 'unity.multiAssign'='1' allows chained assignments a:=b:=c (error E1203 if disabled), 'unity.nestedComment', 'unity.paramNotAssign', 'unity.emptyParaAllowed'. Values are strings ('0'/'1' for booleans). The project is reloaded from a patched archive and UNSAVED — build_project then save_project afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes |
TDQS
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 clearly discloses that the project is reloaded from a patched archive and left unsaved, warns about the side effect, and explains the consequence of a specific setting. This is strong behavioral disclosure for a mutating tool.
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 compact and front-loaded with the purpose, followed by useful examples and the critical unsaved-state warning. Every sentence adds practical value with 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 tool with one open-ended parameter and no output schema, the description covers what settings look like, how values are typed, and the required follow-up sequence. An agent has enough context to invoke it correctly and understand the consequences.
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 0% and the settings object is open-ended, so the description must compensate. It does so with common idents, value type information ('strings', '0'/'1' for booleans), and one concrete semantic example. It is not exhaustive, but this is reasonable for an additionalProperties map.
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 action, 'Set one or more project settings', with the resource domain clearly identified as build/language options. It provides concrete setting idents, making it unmistakably distinct from the sibling get_project_setting.
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 operational context: one or more settings can be set, values are strings, and the project becomes unsaved, requiring build_project and save_project afterward. However, it does not explicitly mention when to prefer alternatives like get_project_setting or state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_uiA
Make the Control Expert window of this automation session visible so a human can watch the AI work or take over. state: show_normal, show_maximized, minimize, restore.
mode: 'read_only' (default — the GUI follows along while this client keeps the write token; required for opening editors) or 'read_write' (hand the GUI full control; only works if this client does not hold write access). command_line: optional Control Expert command line to open specific editors on startup.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | read_only | |
| state | No | show_normal | |
| command_line | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the difference between read_only and read_write modes, including the write-token implication and the prerequisite for read_write. This is meaningful behavioral context beyond a simple 'show window' statement.
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 well-structured and front-loaded with the core purpose. Each sentence adds necessary information about either state, mode, or command_line, with 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?
All three parameters are meaningfully explained, the behavioral tradeoffs between modes are stated, and the purpose is clear. There is no output schema, but for a UI visibility tool the description provides enough context 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?
The input schema provides only parameter titles and defaults, with no descriptions. The tool description fully compensates by explaining the state values, the semantics of mode, and the optional command_line behavior. This is strong parameter-level documentation.
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 and resource: making the Control Expert window visible for human observation or takeover. It is clearly distinguishable from all sibling tools, which focus on project analysis, editing, and simulation tasks.
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 explicit usage context, explaining that read_only mode is the default and required for opening editors, while read_write mode hands control to the GUI and only works when the client does not hold write access. This is actionable guidance for selecting the right mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_simulatorA
Start the Control Expert PLC simulator (sim.exe) so plc_connect can reach it. With enforce_security=False (default) the simulator's 'use default application (enforce security)' option is disabled in the registry first — otherwise sim.exe blocks on a warning dialog unless a password-protected default application is configured. Only use on a local test machine.
| Name | Required | Description | Default |
|---|---|---|---|
| enforce_security | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure burden. It reveals a non-obvious side effect (registry modification of the 'use default application (enforce security)' option) and explains why (avoiding a blocking warning dialog), plus the dependency on enforce_security.
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 action and purpose; every sentence adds necessary information about behavior, parameter effects, or safety constraints. 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?
Given one optional parameter, no output schema, and no annotations, the description covers purpose, side effects, parameter semantics, and safety boundary. Nothing critical is missing 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?
Although the schema only provides a title and default for enforce_security, the description explains the behavioral consequence of False vs True in concrete terms: disabling the registry option to avoid sim.exe blocking. This gives an agent enough information to choose the correct 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?
The description opens with a specific action ('Start the Control Expert PLC simulator (sim.exe)') and a concrete purpose ('so plc_connect can reach it'). This clearly differentiates it from sibling operations like stop_simulator.
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 states when to use the tool ('so plc_connect can reach it') and an explicit restriction ('Only use on a local test machine'), giving a clear operational boundary. It does not name an alternative tool, but the complementary sibling stop_simulator is obvious from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_simulatorB
Stop the PLC simulator process.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 only states the action without disclosing side effects, reversibility, idempotency, or error behavior when the simulator is not running. For a state-changing operation, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no unnecessary words. The information is front-loaded and appropriately sized for a zero-parameter 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?
Despite the tool's simplicity, the lack of annotations and output schema leaves the agent without information about expected effects, return values, or whether the operation is safe/conditional. The description is adequate as a label but under-specified for confident invocation in a workflow.
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 has zero parameters and schema coverage is 100%, so the baseline is 4. The description adds no parameter-specific meaning, but none is needed.
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 ('Stop') and resource ('PLC simulator process'), making the tool's function clear. It is implicitly distinct from the sibling 'start_simulator' by the opposite verb, though it does not explicitly name the 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?
There is no guidance on when to use this tool versus alternatives. No mention of prerequisites (e.g., simulator must be running), no exclusions, and no reference to the paired start_simulator tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_variableB
Update attributes of an existing variable. Only the non-empty arguments are applied. To clear an attribute, pass a single space.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| address | No | ||
| comment | No | ||
| new_name | No | ||
| initial_value | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the partial-update behavior and the space-to-clear quirk, which are valuable. However, it does not mention error behavior, whether renaming breaks references, or what the operation returns.
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 concise sentences with minimal waste. The main purpose comes first, followed by the most important usage quirks. Every sentence contributes useful 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 mutation tool with no annotations, no output schema, and five parameters, the description is incomplete. It lacks information about return values, failure modes, and the meaning of individual parameters, so an agent may not fully understand the tool's 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?
Schema description coverage is 0%, yet the description does not explain the individual parameters. It provides a general rule that applies to all parameters, but it fails to clarify semantics for new_name, initial_value, address, or comment beyond their titles.
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 clearly states the verb 'Update' and the resource 'attributes of an existing variable.' The word 'existing' implies a distinction from create_variable and delete_variable siblings, though it does not explicitly name 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 gives practical usage context: only non-empty arguments are applied, and clearing requires a single space. It does not explicitly route to alternatives like create_variable when the variable does not exist, but the usage rules are clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_fb_in_ladderA
Place a function block in LADDER by cloning a GUI-authored FFB-in-LD template and rebinding it — then build_project to confirm.
WHY: an FFB (EF/EFB/DFB) inside Ladder canNOT be hand-authored as XML — its pin columns come from Control Expert's GUI auto-layout, which import can't reproduce. So author the block in LD ONCE in the GUI (a 'template' section containing the FFBBlock), then this tool reuses that exact geometry and only swaps the instance name and pin variables. (For freely hand-authored block logic, use FBD instead.)
template_section: name of the GUI-made LD section holding the block. new_section: name for the generated section (overwrites if it exists). instance_name: the new FB instance variable name. bindings: {pinName: variable_or_literal} to bind (e.g. {"Valve": "AV2", "ExtIntrlk": "Pump2_Intlk"}); pins you omit keep the template's bindings. Variable pins are auto-declared with the type the template used for that pin. task: the task of both sections (default MAST).
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | MAST | |
| bindings | Yes | ||
| new_section | Yes | ||
| instance_name | Yes | ||
| template_section | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It explains the cloning and rebinding mechanism, notes that new_section overwrites if it exists, mentions auto-declaration of variable pins, and specifies default task. It also suggests building the project afterwards. It does not mention return values or error handling, but the behavior described is quite transparent for a tool without 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?
The description is well-structured: a clear prompt, a 'WHY' section that justifies the tool's existence, and then a parameter breakdown. It is somewhat lengthy but every part contributes meaning. Information is front-loaded with the core purpose, followed by rationale and parameter details. No redundant 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?
While the description thoroughly covers parameters and behavioral mechanics, it does not describe return values or possible errors (e.g., if the template section is missing). It also does not clarify how this tool relates to the sibling 'place_fb_in_ladder'. Given no output schema and no annotations, the agent would not know what to expect after invoking it. These gaps prevent 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 coverage is 0%, so the description is the only source of parameter meaning. It explains each parameter explicitly: template_section, new_section, instance_name, bindings (with a concrete example), and task (with default). It also clarifies that omitted pins keep template bindings and that variable pins are auto-declared. This fully compensates for the schema's lack of descriptions, providing rich semantic detail.
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 clearly states the action: 'Place a function block in LADDER by cloning a GUI-authored FFB-in-LD template and rebinding it.' This is specific with verb and resource. It explains the mechanism and the WHY, making the purpose unambiguous. However, it does not differentiate from the sibling tool 'place_fb_in_ladder' or mention any alternative tool, so it's not perfect on distinguishing from 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 provides context on why this approach is needed (hand-authoring is impossible) and directs users to use FBD for freely hand-authored logic. However, it does not explicitly state when to use this tool versus the sibling 'place_fb_in_ladder' or other alternatives. The guidance is more about the underlying limitation than about choosing between tools, so it's 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.
validate_xmlA
Validate candidate Control Expert exchange XML against the installed XSD grammar (the authoritative SrcXmlSchema) BEFORE import_xml / build_project.
Catches structural errors (unknown elements, bad attribute enumerations, wrong ordering) instantly — far faster than the import+build round-trip — and steers authoring toward the full legal element set. Returns {valid, root, schema, errors}. For LD documents it additionally checks two semantic rules the grammar can't express: per-line cell-count arithmetic (each 's cell-spans must sum to nbColumns) and EBOOL-for-edge rules (P/N contacts and P/N coils need an EBOOL variable). Other semantics (FBD pin geometry, type compatibility) are still caught only by build_project, which remains the final oracle. Set CE_MCP_SCHEMA_DIR to override schema-folder auto-discovery.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | ||
| xml_content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does a strong job: it discloses the exact return object {valid, root, schema, errors}, the additional semantic checks for LD documents, the reliance on the installed XSD/SrcXmlSchema, and the CE_MCP_SCHEMA_DIR override. It does not explicitly state read-only/no side effects, but the validate-and-return framing makes the non-destructive nature clear enough.
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 sentences, all information-dense and logically ordered: when to use, what it returns, LD-specific checks, limits, and environment override. No filler; it is only slightly long because the tool genuinely has multiple nuances to convey.
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 validation tool with no annotations and no output schema, it covers the essential context: input target, authoritative grammar, return keys, validation coverage boundaries, and schema-folder override. The only notable gap is the lack of guidance on how to choose or combine file_path versus xml_content.
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 0% and the description provides almost no parameter-level guidance. It never clarifies whether file_path and xml_content are alternatives, whether one is preferred, what happens if both or neither are supplied, or how inline XML content should be structured. The parameter names are self-explanatory, but the description does not compensate for the missing schema documentation.
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: validate XML against the installed XSD grammar. It explicitly positions itself BEFORE import_xml/build_project and explains that it catches structural errors instantly while other semantics remain with build_project, so it is clearly distinguishable from the relevant sibling tools.
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?
Tells the agent when to use this tool ('BEFORE import_xml / build_project') and defines its scope: structural errors plus two LD-specific semantic rules. It also explicitly says what it does NOT catch — FBD pin geometry and type compatibility — and names build_project as the final oracle, giving clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_st_logicA
Write a program section in plain IEC 61131-3 Structured Text — no XML required. Creates the section or replaces its logic if it exists.
task is the program task that owns the section — 'MAST' for the default master task (also 'FAST', 'AUX0'..'AUX3', 'SAFE'); call get_project_structure to see the project's tasks. section is the section name to create or overwrite. st_source is raw ST (IF/CASE/FOR, FB calls like 'T1(IN := x, PT := t#3s, Q => y);', set()/reset() on EBOOLs, re()/fe() edges). declare optionally declares variables as a comma-separated 'name:TYPE' list, e.g. 'StartPB:BOOL, Delay1:TON, Level:REAL' — FB instances called in the code (TON/TOF/CTU/DFB types) must exist or be declared here. Run build_project afterwards and fix any errors from its output.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| declare | No | ||
| section | Yes | ||
| st_source | Yes |
TDQS
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 destructive overwrite behavior, that it accepts raw ST, that FB instances must exist or be declared, and that build_project is a separate follow-up. It does not clarify whether existing declarations are merged or replaced, nor what success/failure returns look like.
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 front-loaded with the core purpose and then organized by parameter. Examples are embedded without padding, and the build_project follow-up is stated in a single actionable sentence. 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 tool with no annotations and no output schema, the description covers purpose, all parameters, prerequisites, valid task names, required declarations, and a post-step. It would be stronger if it briefly stated what the tool returns on success or failure, but it is sufficient for an agent to select and 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 0%, but the description fully compensates by explaining every parameter: task with concrete examples, section as create/overwrite target, st_source with ST syntax examples, and declare with a comma-separated 'name:TYPE' example and FB declaration requirement. This is exactly the compensation needed.
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?
Clearly states a specific verb ('Write') and resource ('program section in plain IEC 61131-3 Structured Text'), and immediately distinguishes itself from XML-based tools by saying 'no XML required.' It also clarifies create-or-replace semantics, helping an agent distinguish it from read_section, create_section, and import_xml.
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 strong contextual guidance: identifies the owning task with valid values, tells the agent to call get_project_structure to discover tasks, requires FB instances to be declared, and gives the follow-up workflow of running build_project. It does not explicitly enumerate alternatives or when-not-to-use cases, so it falls 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
63 tool updates
v0.11.0- First observed
add_drop - First observed
add_dtm - First observed
add_io_module - First observed
add_network - First observed
add_rack - First observed
analyze_project - First observed
build_project - First observed
build_remoteconnect_logic_copy - First observed
change_cpu - First observed
close_project - First observed
configure_cpu_ethernet - First observed
create_animation_table - First observed
create_remoteconnect_bulk_edit_copy - First observed
create_section - First observed
create_task - First observed
create_variable - First observed
delete_animation_table - First observed
delete_dtm - First observed
delete_section - First observed
delete_variable - First observed
export_project - First observed
export_xml - First observed
get_dtm_control_parameters - First observed
get_dtm_dataset - First observed
get_hardware - First observed
get_language_reference - First observed
get_master_dtm_dataset - First observed
get_project_setting - First observed
get_project_structure - First observed
get_status - First observed
import_xml - First observed
inspect_remoteconnect_bulk_edit_workbook - First observed
inspect_remoteconnect_project - First observed
inventory_remoteconnect_configuration - First observed
list_animation_tables - First observed
list_data_types - First observed
list_dtms - First observed
list_networks - First observed
list_variables - First observed
new_project - First observed
open_animation_table - First observed
open_project - First observed
open_remoteconnect_logic - First observed
place_fb_in_ladder - First observed
read_remoteconnect_feedback - First observed
read_section - First observed
remove_io_module - First observed
replace_io_module - First observed
replace_rack - First observed
save_project - First observed
set_dtm_address - First observed
set_dtm_control_parameters - First observed
set_dtm_dataset - First observed
set_master_dtm_dataset - First observed
set_network_ip - First observed
set_project_settings - First observed
show_ui - First observed
start_simulator - First observed
stop_simulator - First observed
update_variable - First observed
use_fb_in_ladder - First observed
validate_xml - First observed
write_st_logic
TDQS
Scored across 63 tools
Most tools are individually well-scoped, but several near-overlap pairs exist: get_dtm_dataset vs get_master_dtm_dataset, set_dtm_dataset vs set_master_dtm_dataset, and place_fb_in_ladder vs use_fb_in_ladder. With 63 tools, an agent must parse long descriptions to avoid misselecting, especially among DTM/ladder helper variants.
The surface is consistently snake_case, but verb prefixes are mixed: new_project vs create_*, change_cpu vs replace_*, get_project_setting singular vs set_project_settings plural, and place_fb_in_ladder vs use_fb_in_ladder. The pattern is readable but not predictable enough to infer tool relationships.
63 tools is far above the 3-15 well-scoped range and even the 16-25 heavy range; many narrow helpers could be consolidated (two ladder FB placers, four DTM dataset variants). The breadth may match Control Expert's complexity, but as an MCP surface it imposes a heavy selection burden.
Core project, variable, section, hardware, DTM, and simulator operations are present, but the documented workflow references plc_connect, plc_transfer, and plc_command tools that do not exist, leaving online transfer/control incomplete. Other gaps include no delete_task, no data-type creation, and no RemoteConnect import step despite the bulk-edit workflow.
Maintenance
Related MCP Connectors
- ApricotOAuthtools.apricot
Manage SysML2 projects and files directly through your coding agent.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with B\&R Automation Studio projects by building code, running ARsim simulators, and reading or writing OPC UA variables. It facilitates industrial automation development and real-time variable integration through natural language commands.14MIT
- AlicenseBqualityFmaintenanceMCP server that enables AI agents to read, edit, and create PLC projects in EcoStruxure Control Expert via COM automation.523MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI-powered PLC programming with natural language to ladder logic conversion, L5X and .ACD project generation, and semantic search through L5X files and documentation.36-
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to connect to Allen-Bradley, Siemens, and CODESYS PLC projects for discovering, asking questions about, analyzing, and proposing code changes, with access to live tag values and version exports under permission-scoped controls.-