Skip to main content
Glama

Embedded MCP

Universal Embedded AI Infrastructure & Serial over TCP Gateway for Antigravity & AI Agents

Python 3.12+ Package Manager uv Code Style ruff Tests Passing


1. 项目简介 (Overview)

在嵌入式与机器人开发中,传统物理串口(COM / UART)存在以下核心痛点:

  1. Windows 串口强排他性:一个 COM 口被上位机、VOFA+ 或终端打开后,AI Agent、自动化测试与 CLI 工具均会遭遇拒绝访问(WinError 5)。

  2. 多端并发写入冲突:多个 AI Agent 或测试脚本并发操作同一串口时,总线字节交错撕裂,回显混淆。

  3. 跨 Chunk 解码乱码:单片机输出中文或多字节 UTF-8 日志时,若按数据包切割解码,汉字极易损坏变成 \ufffd

  4. 高频遥测淹没交互:单片机持续以 50Hz/10Hz 吐出红外或电机遥测流时,命令回执会被瞬间淹没。

Embedded MCP 通过 Serial over TCP Gateway 架构,将物理串口抽象为双端口微服务网络:

  • 5001 纯数据透传端口 (Raw Sniffer):PuTTY / VOFA+ 零配置直连监听波形与日志,无锁多读。

  • 5101 JSON-RPC 控制端口 (Control & Multiplexing):为 Antigravity AI Agent、自动化脚本与 CLI 提供结构化管控。

  • 方案二:微秒级原子事务排队池 (Transaction Multiplexing):并发下发命令无需手动申请锁,自动在异步 FIFO 队列中借还租约并剥离回显。

  • 单调偏移防乱码环形缓冲区 (ChunkedRingBuffer):在 Raw Bytes 空间反向定位边界,多字节 100% 完整,高频遥测下精准捕获命令回执。


Related MCP server: UART MCP Server

2. 系统架构 (Architecture)

┌──────────────────────────────────────────────────────────┐
│             Antigravity Agent / Claude Client            │
└────────────────────────────┬─────────────────────────────┘
                             │ stdio (JSON-RPC 2.0)
                             ▼
┌──────────────────────────────────────────────────────────┐
│                   embedded-mcp Server                    │
│   (board_list, board_status, serial_tail, serial_exchange)│
└────────────────────────────┬─────────────────────────────┘
                             │
                  ┌──────────┴──────────┐
                  ▼                     ▼
     JSON-RPC 2.0 (Port 5101)    Raw Stream (Port 5001)
     [Control & Leased Writes]   [PuTTY / VOFA+ Sniffer]
                  │                     ▲
                  └──────────┬──────────┘
                             ▼
┌──────────────────────────────────────────────────────────┐
│                  SerialGateway Engine                    │
│  ├── LeaseArbiter (FIFO Transaction Multiplexing Queue)  │
│  ├── ChunkedRingBuffer (Monotonic Byte Sliced Safe Buffer)│
│  └── SerialWorker (Dedicated Thread, Win32 Auto-Heal)    │
└────────────────────────────┬─────────────────────────────┘
                             │ pyserial (dtr=None, rts=None)
                             ▼
               COM4 (ATK-HSWL-CMSIS-DAP 04D8:00DF)

3. 环境准备与全局安装 (Installation)

本项目遵循 uv 环境规范,禁止使用传统 pip

(1) 安装依赖与构建虚拟环境

在项目根目录(e:\WorkSpace\embedded-mcp)执行:

uv sync --extra dev

(2) 安装为全局命令行工具 (任选一种)

  • 推荐方法:通过 uv tool 全局链接

    uv tool install --editable . --force
  • 全局 PATH 支持: 若当前终端未包含 ~/.local/bin,系统已在全局 PATH(C:\Users\Administrator\.gemini\antigravity\bin\)配置了二进制包装器,可直接在任意目录(如 E:\Chassis control)执行 embedded-mcp


4. 板卡配置规范 (Board Configuration)

所有板卡定义存放于 config/boards/*.json 中,系统在任何目录下运行都会自动定位到本目录,支持自动热重载。

示例配置 (config/boards/board_a.json):

{
  "id": "board_a",
  "name": "ATK-HSWL-CMSIS-DAP Board",
  "adapter": "generic",
  "match": {
    "vid": 1240,
    "pid": 223,
    "serial_number": "ATK_20190528",
    "port": "COM4"
  },
  "serial": {
    "baudrate": 115200,
    "bytesize": 8,
    "parity": "N",
    "stopbits": 1,
    "dtr": null,
    "rts": null,
    "timeout": 0.05,
    "gateway": {
      "bind": "127.0.0.1",
      "data_port": 5001,
      "control_port": 5101
    }
  },
  "metadata": {
    "description": "Robot chassis main control board",
    "controller": "STM32",
    "shell_prompt": "dock:/$ "
  }
}
  • match:支持基于 vid / pidserial_number 或显式 port 自动过滤并热插拔寻址,自动过滤 Windows 虚假 ACPI 端口。

  • dtr: null, rts: null:严格杜绝 Windows 串口打开时拉低引脚意外复位单片机。


5. 命令行使用指南 (CLI Manual)

你可以在系统中的任何目录(例如 E:\Chassis control 或任意项目文件夹)打开终端直接使用:

(1) 硬件与板卡发现

# 列出系统中所有已注册板卡与当前匹配的物理端口
embedded-mcp board list

# 扫描宿主机当前可用的物理串口(已过滤虚假 ACPI 端口)
embedded-mcp board ports

(2) 网关生命周期与状态

# 前台启动指定板卡的网关服务(若已有服务在运行,会自动友好提示)
embedded-mcp gateway run board_a

# 查询指定板卡的网关运行状态、波特率、收发字节数与控制器租约
embedded-mcp gateway status board_a

(3) 无锁查看单片机日志

# 查看最近 20 行历史日志(不抢占端口)
embedded-mcp serial tail board_a --lines 20

# 持续跟随实时输出(类似 Linux 的 tail -f,按 Ctrl+C 退出)
embedded-mcp serial tail board_a -f

(4) 下发命令与读取回执 (多写多读原子事务)

利用方案二事务池,命令在微秒级短借租约中排队下发,自动剥离回显并返回纯净内容:

# 查询当前电池电压
embedded-mcp serial exchange board_a "bat"

# 查询充电状态
embedded-mcp serial exchange board_a "charge_status"

# 查询底盘 Shell 支持的所有命令列表
embedded-mcp serial exchange board_a "help"

# 带自定义 Prompt 与超时时间的命令交互
embedded-mcp serial exchange board_a "status" --timeout 2000 --prompt "dock:/$ "

(5) 终端直接访问与全双工交互控制台 (Terminal / Console)

除了原子单次命令外,支持像物理串口助手/串口终端一样直接交互敲命令

  • 方法 A:内置交互控制台(纯终端无依赖) 在任何终端中输入以下指令,直接进入板卡全双工 Shell 会话(按回车发送指令,输入 exitCtrl+C 退出):

    embedded-mcp console board_a
    # 或
    embedded-mcp serial console board_a
  • 方法 B:Netcat 终端直连 宿主机已内置 nc,直接连接 5001 端口:

    nc 127.0.0.1 5001

    直接键盘敲入 bathelp 等指令,单片机实时回显并输出。

  • 方法 C:PuTTY / MobaXterm / SecureCRT 直连

    • 协议选择:RawTelnet

    • 主机 IP:127.0.0.1,端口:5001

    • 打开即是标准串口终端,支持快捷键输入与实时波形/日志回显。


6. Antigravity & AI Agent 集成

本项目完整支持官方 MCP (Model Context Protocol) 2.x 协议标准,通过 stdio 与 Google Antigravity / Claude 互通。

(1) MCP 配置文件

位于 C:\Users\Administrator\.gemini\config\mcp_config.json

{
  "mcpServers": {
    "embedded-mcp": {
      "command": "C:\\Users\\Administrator\\.gemini\\antigravity\\bin\\embedded-mcp.exe",
      "args": ["mcp"],
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}

(2) 专属 Skill

位于 C:\Users\Administrator\.gemini\config\skills\embedded-mcp\SKILL.md,AI Agent 自动加载并具备底层硬件诊断与无锁协同操作能力。

(3) 暴露的 MCP Tools 列表

Tool 名称

核心用途

board_list

获取注册的所有板卡及配置元数据

board_status

查询目标板卡串口连通性、收发计数、活跃租约与缓冲区指标

serial_connect

幂等确保板卡网关已启动连接物理串口

serial_tail

安全跨多字节边界读取最近历史日志(N 读无需持锁)

serial_exchange

核心交互工具:原子微事务下发指令、匹配 Prompt、剥离回显

serial_read

等待并读取最近串口输出

serial_write

受控写入串口(需 Lease)

serial_reset

触发硬件复位(DTR/RTS 脉冲)

ssh_connect

建立 SSH 会话并启动后台日志追踪流(如 tail -f enor.log)

ssh_tail

高速无锁获取远程日志最新 N 行(UTF-8 边界安全、防乱码)

ssh_exec

在远程嵌入式 Linux 主机上执行 Shell 命令并获取输出

ssh_status

查询 SSH 连接状态、目标主机、日志文件及环形缓冲区指标

firmware_release

固件一键发布:Keil 命令行编译 -> 产物新鲜度时间戳校验 -> MD5 -> FTP 上传 -> MQTT mcu_up 下发

firmware_build

Keil 命令行编译,自动发现并校验最新生成的新鲜 .bin 产物

firmware_upload

上传固件至 FTP 服务器并返回下载 URL 与 MD5 校验和

firmware_notify

下发 MQTT mcu_up OTA 升级命令至目标设备

firmware_get_version

APP/config/config.h 解析当前固件版本号(major.min.build)

firmware_get_config

查看当前激活的固件发布配置参数


7. 第三方工具并发协同 (PuTTY / VOFA+)

你可以在 AI 持续监视、CLI 下发测试的同时,使用图形化上位机直连观察波形:

  1. 打开 PuTTYVOFA+

  2. 连接类型选择 TCP(或 Raw)。

  3. 主机 IP 填 127.0.0.1,端口填 5001

  4. 点击连接,即可实时接收底层完全相同、无任何延迟的原始数据流,彻底终结“调串口必须先关上位机”的历史。


8. 自动化测试与质量维护规范 (Maintenance & Testing)

后续对本库进行迭代、扩展适配新板卡或重构时,必须执行以下维护流程

(1) 运行完整测试套件

uv run pytest -v
  • 包含 20 项测试:单元测试、JSON-RPC 协议解析、跨 Chunk 汉字切片无损性、多客户端高并发多写排队事务、以及对物理硬件(COM4)的生命周期全流程测试。

(2) 代码质量校验 (Ruff)

uv run ruff check .
  • 要求 0 warning / 0 error,保持 100% 格式洁净。

(3) 添加新板卡流程

  1. config/boards/ 下新建 <board_id>.json

  2. 配置 VID/PID 或串口号与波特率。

  3. 运行 embedded-mcp board list 验证识别。

  4. 运行 embedded-mcp serial tail <board_id> 验证通信。

Available Tools

20 tools
board_listA

List all configured boards in the registry and their capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. The verb 'List' clearly indicates a read-only operation with no mutation or side effects, and 'all configured boards' discloses the scope. It could mention authentication or the meaning of 'capabilities', but for a simple enumeration tool 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every phrase ('all configured boards', 'registry', 'capabilities') adds meaningful information, and the structure is immediately scannable.

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

Completeness5/5

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

This is a parameterless enumeration tool with an output schema available, so the description need not explain return values. The statement fully covers what the tool does, where it operates (registry), and what it reports (capabilities), leaving no critical invocation questions open.

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

Parameters4/5

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

The tool has zero parameters, so the empty schema already documents everything. The baseline for a zero-parameter tool is 4; the description adds relevant context about the returned capabilities, though no parameter-specific detail is needed.

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

Purpose5/5

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

The description uses a specific verb ('List') and a precise resource ('all configured boards in the registry and their capabilities'). This clearly distinguishes it from sibling tools like board_status by emphasizing enumeration of the full set rather than a single board.

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

Usage Guidelines4/5

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

The description provides clear context: use this tool when you need the complete list of configured boards and their capabilities. It does not explicitly name sibling alternatives or exclusion criteria, so it misses the top bar, but the scope ('all configured boards') makes the intended use unambiguous.

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

board_statusA

Get runtime connection, serial metrics, lease state, and buffer statistics for a board.

Args: board_id: The identifier of the board (e.g. 'board_a')

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes what data is returned but does not disclose whether the operation is read-only, has side effects, requires authentication, or may fail. The 'Get' verb implies read-only, but this is not stated explicitly, and no behavioral details are given.

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

Conciseness5/5

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

The description is highly concise: a one-sentence purpose followed by a clear Args section. It is front-loaded with the core functionality and avoids any filler. Every sentence earns its place.

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

Completeness4/5

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

With an output schema present, the description need not detail return values. The tool has only one parameter and a clear purpose. It does not mention prerequisites like board connectivity or error handling, but given the simplicity and the presence of the output schema, it is reasonably complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains board_id as 'The identifier of the board' and provides an example ('board_a'). This adds meaningful semantic context beyond the schema's bare string type, though it does not cover all possible constraints (e.g., naming patterns).

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

Purpose5/5

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

The description clearly states a specific verb ('Get') and resource ('runtime connection, serial metrics, lease state, and buffer statistics for a board'). It differentiates from siblings by focusing on board status rather than actions like serial_write or ssh_exec. The content is unambiguous.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, nor does it exclude any cases. It implies usage through its purpose, but provides no guidance on choosing between board_status and board_list or other status tools. This is implied usage at best.

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

firmware_buildA

Compile MCU firmware using Keil uVision command-line interface.

Verifies that a fresh .bin binary was produced by the compilation.

Args: board_id: Optional board identifier containing release config. rebuild: Force full rebuild (-r) instead of incremental (-b). config_path: Optional custom firmware release config file.

ParametersJSON Schema
NameRequiredDescriptionDefault
rebuildNo
board_idNo
config_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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 that compilation invokes Keil uVision's command-line interface and that the tool verifies a fresh .bin is produced, which is meaningful behavioral context. It does not mention environmental prerequisites or failure modes, 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.

Conciseness5/5

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

The description is compact and front-loaded with the core purpose, followed by a useful behavioral note and a clearly structured Args list. No filler or redundancy.

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

Completeness4/5

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

With 3 optional parameters, an output schema, and no annotations, this description covers the main operation and parameter semantics adequately. Minor gaps remain, such as assumptions about Keil being installed and the default behavior when board_id or config_path are omitted, but these do not prevent correct use.

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

Parameters4/5

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

Schema description coverage is 0%, but the Args section provides useful explanations for all three parameters: rebuild maps to -r/-b flags, board_id selects a board with release config, and config_path supplies a custom release config file. This compensates well for the bare schema, though the descriptions remain somewhat terse.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Compile MCU firmware using Keil uVision command-line interface.' It also adds a verification behavior ('Verifies that a fresh .bin binary was produced'), which clearly distinguishes it from sibling tools like firmware_upload, firmware_release, or firmware_get_version.

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

Usage Guidelines4/5

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

The first sentence establishes clear usage context: use this tool when you need to compile MCU firmware via Keil. It does not explicitly name alternatives or say when not to use it, but the build purpose is distinct enough among siblings. No misleading exclusions are present.

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

firmware_get_configB

Inspect the resolved firmware release configuration.

Args: board_id: Optional board identifier. config_path: Optional custom firmware release configuration file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idNo
config_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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. 'Inspect' implies a read-only operation, but the description does not explicitly state side effects, authentication requirements, or what 'resolved' means in terms of configuration merging or precedence.

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

Conciseness5/5

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

The description is compact and front-loaded, with the purpose stated in the first sentence and a minimal Args list for parameter clarification. There is no redundant or filler content.

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

Completeness3/5

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

For a simple read-style tool with two optional parameters and an output schema, the description is mostly adequate, but it lacks usage guidance, behavioral caveats, and any indication of how the optional parameters affect the resolved configuration. It is minimally viable but leaves gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The Args section provides brief definitions for both parameters—'Optional board identifier' and 'Optional custom firmware release configuration file path'—but these add only marginal detail beyond the parameter names and schema titles.

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

Purpose4/5

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

The description states a specific verb and resource: 'Inspect the resolved firmware release configuration.' This clearly distinguishes it from siblings like firmware_get_version and firmware_build, though it does not explicitly contrast itself with any alternative.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus siblings such as firmware_get_version, firmware_release, or firmware_build. The description only states the function, leaving the agent to infer usage context.

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

firmware_get_versionC

Read and parse firmware version from APP/config/config.h or active configuration.

Args: config_h_path: Optional explicit path to config.h header file. config_path: Optional firmware release configuration file path. board_id: Optional board identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idNo
config_pathNo
config_h_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does convey that this is a non-mutating read-and-parse operation with two possible sources. However, it does not disclose source precedence when multiple args are supplied, what 'active configuration' means, or behavior on missing or ambiguous configuration.

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

Conciseness4/5

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

The description is short and front-loaded, with the main action stated before an Args list. It is not bloated, though the Args lines add only marginal value over the schema.

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

Completeness2/5

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

An output schema exists, so return shape is covered, but the tool has three optional inputs, no annotations, and no defined fallback or precedence rules. The description is not complete enough for reliable invocation when config_h_path, config_path, board_id, and the active configuration interact.

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

Parameters2/5

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

Schema description coverage is 0%, so the Args section is the only semantic help, and it mostly restates the parameter names with minimal qualifiers. It does not explain how the parameters interact, when each is needed, or how they affect the choice between config.h and active configuration.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Read and parse firmware version from APP/config/config.h or active configuration.' This clearly separates it from siblings like firmware_build or firmware_get_config. It loses the top score only because 'active configuration' is undefined and no sibling is named.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as firmware_get_config or board_status, and no exclusions or prerequisites. The intended context is only implied by the read/parse wording, so an agent cannot reliably decide between it and related firmware tools.

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

firmware_notifyA

Publish MQTT OTA upgrade command (mcu_up) to target device topics.

Args: version: Firmware version string (e.g. '2.1.11'). file_url: Downloadable public URL of the uploaded firmware. md5: MD5 checksum of the firmware. board_id: Optional board identifier. device_ids: Target device ID(s) or topic(s). config_path: Optional custom firmware release config file.

ParametersJSON Schema
NameRequiredDescriptionDefault
md5Yes
versionYes
board_idNo
file_urlYes
device_idsNo
config_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It reveals the mechanism (MQTT, mcu_up) but does not disclose side effects such as triggering a remote firmware update on target devices, whether devices must be online, or how success/failure is reported. For a remote-action tool this is a meaningful gap.

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

Conciseness5/5

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

The description is tightly written: one clear action sentence followed by a compact, well-labeled argument list. Every line adds value and no filler or restatement of the schema is present.

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

Completeness4/5

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

The description gives the core action and explains all six parameters, which is sufficient for correct invocation, especially since an output schema exists. It is slightly incomplete only in lacking workflow context and side-effect warnings, but those gaps are mostly captured in the usage and transparency dimensions.

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

Parameters5/5

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

With 0% schema description coverage, the Args section compensates fully: every parameter gets an explanatory line, including examples, optionality, URL purpose, checksum, and target semantics. This adds real meaning beyond the raw JSON schema types.

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

Purpose5/5

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

The description states a specific verb ('Publish') and resource ('MQTT OTA upgrade command') targeting device topics, and even names the command type ('mcu_up'). This clearly distinguishes it from sibling tools like firmware_upload, firmware_build, and firmware_release.

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

Usage Guidelines2/5

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

The description implies this is used to push OTA upgrade commands, but it gives no explicit guidance on when to choose this tool over alternatives, no prerequisites, and no mention of whether firmware_upload or firmware_build should precede it. An agent is left to infer the workflow.

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

firmware_releaseA

Execute full MCU firmware release pipeline:

  1. Keil command-line compilation (uVision.com -b or -r).

  2. Automatic discovery of latest .bin firmware with timestamp freshness verification.

  3. Calculate MD5 checksum.

  4. Upload .bin binary to FTP server.

  5. Publish MQTT OTA upgrade command (mcu_up) to target device topics.

Args: board_id: Optional board identifier (e.g. 'board_a') containing release config. rebuild: Force full Keil rebuild (-r) instead of incremental (-b). skip_build: Skip Keil compilation and use latest or specified existing binary. firmware_path: Explicit path to .bin file (bypasses auto-discovery). version: Firmware version string (e.g. '2.1.11'). If None, extracted from APP/config/config.h. device_ids: Target device ID(s) or topic(s). If None, taken from config. config_path: Path to custom firmware_release_config.json file. save_config: Save executed release artifact info back to the config file.

ParametersJSON Schema
NameRequiredDescriptionDefault
rebuildNo
versionNo
board_idNo
device_idsNo
skip_buildNo
config_pathNo
save_configNo
firmware_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosing side effects, and it does so well by listing compilation, checksum generation, FTP upload, and MQTT OTA command publication. It also reveals behavioral nuances such as timestamp freshness verification, config-based fallback for device_ids, and version extraction from config.h.

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

Conciseness5/5

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

The description is well-organized: a numbered pipeline overview followed by a compact, line-per-parameter semantic list. Every sentence adds information, and the structure lets an agent quickly understand both workflow and parameters without extraneous prose.

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

Completeness5/5

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

For an 8-parameter mutating pipeline with no annotations and no schema descriptions, the description is nearly self-contained: it defines the full procedure, all parameters, fallback behaviors, and key side effects. Since an output schema exists, omitting return-value details is acceptable.

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

Parameters5/5

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, and it does comprehensively. The Args block explains each parameter's role, including conditional behavior ('If None, taken from config'), build-mode differences (-r vs -b), and the purpose of save_config. This exceeds what the bare schema provides.

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

Purpose5/5

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

The description states a specific verb-resource pair: 'Execute full MCU firmware release pipeline', then enumerates all concrete steps (Keil compile, .bin discovery, MD5, FTP upload, MQTT publish). This clearly differentiates it from siblings like firmware_build, firmware_upload, and firmware_notify by describing the combined end-to-end release operation.

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

Usage Guidelines4/5

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

The description communicates clear context: this tool covers the whole release pipeline, and the parameter notes clarify substitutions (e.g. skip_build, firmware_path, device_ids) that alter the execution path. It does not explicitly name alternative sibling tools or state when not to use it, but the 'full pipeline' phrasing makes the intended use apparent.

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

firmware_uploadB

Upload a firmware binary (.bin) to the configured FTP server.

Args: firmware_path: Path to the .bin file to upload. board_id: Optional board identifier containing release config. remote_filename: Optional remote filename on FTP server. config_path: Optional custom firmware release config file.

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idNo
config_pathNo
firmware_pathYes
remote_filenameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the core side effect (uploading to an FTP server), but does not mention overwrite behavior, required server configuration, authentication, or any other potentially destructive or side-effectful details. For a write operation this is a notable gap.

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

Conciseness5/5

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

The description is compact and well-structured: a one-sentence summary followed by a clean Args list. Every line 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.

Completeness3/5

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

The output schema exists, so return-value details are not required. The description covers all parameters and the upload action, but for a mutation tool with no annotations it still lacks preconditions, side-effect details, and higher-level context about the release config flow. It is adequate for basic invocation but not fully complete.

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

Parameters4/5

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

Despite 0% schema description coverage, the description's Args block adds meaningful semantics to all four parameters: firmware_path is the .bin file path, board_id is an optional board identifier with release config, remote_filename is the optional FTP filename, and config_path is an optional custom release config. This goes well beyond the bare schema titles, though a bit more detail on how board_id and config_path affect the upload would strengthen it.

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

Purpose4/5

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

The description states a specific action and resource: 'Upload a firmware binary (.bin) to the configured FTP server.' This clearly distinguishes it from siblings like serial_write, ssh_exec, or firmware_build, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus firmware_build, firmware_release, or other transfer tools. The intended use is implied by the verb 'Upload,' but no context, prerequisites, or exclusions are provided.

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

serial_acquireA

Acquire exclusive controller lease (write permission) for the board.

Args: board_id: The identifier of the board (e.g. 'board_a') timeout_sec: Lease duration in seconds before auto-release (default: 60.0)

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes
timeout_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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 lease is exclusive and auto-releases after timeout_sec, but it does not mention blocking behavior, failure modes when already held, or that an explicit serial_release exists.

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

Conciseness5/5

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

The description is brief and to the point, containing only a clear purpose statement and two parameter explanations. No redundant or unrelated information is included.

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

Completeness4/5

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

The description covers the core behavior, parameter meanings, and auto-release timeout. While it does not describe error/blocking behavior, the provided details are likely sufficient for an agent to correctly invoke the tool, especially with an output schema present.

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

Parameters5/5

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

The description explains both parameters: board_id as the board identifier with an example, and timeout_sec as the lease duration with a default value. This adds meaningful context beyond the bare input schema.

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

Purpose5/5

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

The description clearly states the action ('Acquire exclusive controller lease') and the resource ('for the board'), explicitly noting it grants write permission. This distinguishes it from sibling tools like serial_read or serial_write.

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

Usage Guidelines3/5

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

The phrase 'exclusive controller lease (write permission)' implies it is a prerequisite for write operations, but there is no explicit guidance about when to use it versus alternatives, nor any mention of avoiding it for read-only scenarios.

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

serial_connectC

Ensure the Serial Gateway is running and connected for the specified board.

Args: board_id: The identifier of the board (e.g. 'board_a')

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing side effects. It implies starting a gateway process and establishing a connection but does not specify whether the tool is idempotent, what state changes occur, or what happens on failure.

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

Conciseness5/5

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

The description is extremely concise, consisting of a single purpose statement and a brief parameter explanation. Every word adds value, with no redundancy or filler.

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

Completeness2/5

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

The description omits expected outcome details (e.g., return values or success indicators) and does not address error scenarios. Given no output schema is provided, the agent lacks information about what the tool returns or how to interpret failures.

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

Parameters3/5

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

The only parameter, board_id, is described as 'the identifier of the board' with an example. This is minimal but functional; it clarifies the parameter's purpose but does not explain how to obtain the identifier or any format constraints beyond the example.

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

Purpose4/5

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

The description clearly states the tool's function: ensuring the Serial Gateway is running and connected for a specified board. It is specific enough to distinguish from serial data transfer tools like serial_write and serial_read, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus other connection tools (e.g., ssh_connect) or serial operations. It does not mention prerequisites or ordering, leaving the agent to infer usage context from the tool name alone.

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

serial_exchangeA

Atomic composite command execution:

  1. Acquires lease temporarily if not already held.

  2. Transmits command with newline.

  3. Waits for expected prompt or output silence.

  4. Automatically strips echo.

  5. Cleanly restores previous lease state.

Args: board_id: The identifier of the board (e.g. 'board_a') request: Command to execute (e.g. 'help' or 'status') timeout_ms: Maximum duration in milliseconds to wait for reply (default: 1000) expected_prompt: Optional prompt to wait for (e.g. '> ' or 'shell#')

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
board_idYes
timeout_msNo
expected_promptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does well by disclosing transient lease acquisition, automatic echo stripping, waiting for prompt or silence, and restoration of the prior lease state. The main gap is that it does not describe failure behavior on timeout or when lease acquisition fails.

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

Conciseness5/5

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

The description is tightly structured: a one-line purpose, a five-step numbered list, and concise parameter explanations. Every sentence adds information, and the key concept—atomic composite execution—is front-loaded.

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

Completeness4/5

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

Given the tool's complexity, no annotations, and an output schema that exists, the description is largely complete: it explains the operational flow, lease behavior, echo stripping, and all parameters. It only lacks explicit guidance on when to prefer this over related serial tools and what happens on failure, which keeps it just shy of fully complete.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates thoroughly by explaining every parameter with concrete examples: board_id ('board_a'), request ('help' or 'status'), timeout_ms (default: 1000), and expected_prompt ('> ' or 'shell#'). This adds meaning well beyond the raw schema property names.

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

Purpose5/5

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

The description opens with 'Atomic composite command execution' and enumerates five concrete steps—lease acquisition, transmission with newline, waiting for prompt/silence, echo stripping, and lease restoration. This clearly identifies the tool as a serial command/response exchange and distinguishes it from siblings like serial_read, serial_write, serial_acquire, and serial_release, which handle only pieces of this flow.

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

Usage Guidelines4/5

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

The steps imply a clear use case: one-shot command execution that needs lease management and synchronous reply handling. It also signals that previous lease state is restored, so it can be used without a prior serial_acquire. However, it does not explicitly name alternatives such as serial_write for fire-and-forget writes or serial_read for passive reading, so some inference is required.

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

serial_readA

Wait and read recent serial output from the board.

Args: board_id: The identifier of the board (e.g. 'board_a') timeout_ms: Duration in milliseconds to wait and collect (default: 500)

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes
timeout_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does reveal blocking/waiting behavior by saying 'Wait' and describing timeout_ms as 'Duration in milliseconds to wait and collect.' However, it does not clarify whether an active connection or prior serial_acquire is required, or whether reading consumes buffered output.

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

Conciseness5/5

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

The description is compact and front-loaded: one clear purpose sentence followed by two concise argument definitions. There is no filler or redundant elaboration.

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

Completeness3/5

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

The description is sufficient for a basic read call, and the output schema likely covers return shape. However, given the sibling set and lack of annotations, it leaves the operational relationship to serial_connect, serial_acquire, and serial_tail unstated. An agent cannot tell whether a prior connection or exclusive access is needed.

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

Parameters4/5

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

The input schema provides only names, types, and a default, with 0% description coverage. The description compensates by explaining board_id as an identifier with an example and timeout_ms as a millisecond wait/collect duration with its default. This is adequate semantics for both parameters.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Wait and read recent serial output from the board.' It clearly states what the tool does, but it does not explicitly distinguish itself from related siblings like serial_tail or serial_exchange.

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

Usage Guidelines3/5

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

The description implies the tool is for one-shot timed reads of recent serial output, and the timeout parameter suggests a wait-and-collect behavior. However, it never states when to choose this over serial_tail or serial_exchange, nor does it mention prerequisites like connecting or acquiring the board.

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

serial_releaseA

Release controller lease, restoring observer role.

Args: board_id: The identifier of the board (e.g. 'board_a')

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

It discloses the main behavioral effect (release lease, restore observer role), but with no annotations it omits details such as failure conditions, idempotency, or prerequisites like holding the lease.

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

Conciseness5/5

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

The description is extremely concise, with no redundant information, and the parameter is documented in a clear Args block.

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

Completeness4/5

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

For a simple release operation with a single parameter and an output schema, the description is nearly complete; only a minor mention of the acquisition prerequisite could improve it.

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

Parameters4/5

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

The board_id parameter is described with its semantic role and an example ('e.g. board_a'), adding useful meaning beyond the schema's type and required flag.

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

Purpose5/5

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

Description clearly states the action ('Release controller lease') and its effect ('restoring observer role'), distinguishing it from related operations like serial_acquire.

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

Usage Guidelines3/5

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

The intended use is implied by 'restoring observer role' and the sibling serial_acquire tool, but there is no explicit guidance on when to call it or when to prefer alternatives.

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

serial_resetA

Trigger hardware reset on target board via DTR line pulse.

Args: board_id: The identifier of the board (e.g. 'board_a')

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

The description mentions the mechanism (DTR line pulse) but does not disclose potential side effects such as disconnection, state loss, or the need for subsequent reconnection. Given no annotations, the description carries full burden and falls short.

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

Conciseness5/5

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

The description is concise, using one sentence for the action and one for the parameter, with no unnecessary words or redundancy.

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

Completeness3/5

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

The description is adequate for a simple operation but lacks any mention of expected output, return behavior, or prerequisites. It covers the essential action and parameter but leaves some context unaddressed.

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

Parameters4/5

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

The board_id parameter is clearly explained with an example ('board_a'), providing sufficient context for what the identifier refers to. This exceeds the bare schema.

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

Purpose5/5

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

The description clearly states the specific action: 'Trigger hardware reset on target board via DTR line pulse.' It identifies the resource (target board) and the mechanism, distinguishing it from other serial tools like write/read/exchange.

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

Usage Guidelines3/5

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

No explicit 'when to use' guidance is provided, but the operation is distinct from siblings and self-evidently for hardware resets. The intended use is implied rather than stated.

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

serial_tailA

Fetch the most recent log lines from the board's ring buffer history.

Safe across UTF-8 boundaries and non-intrusive (no TX write lock needed).

Args: board_id: The identifier of the board (e.g. 'board_a') lines: Number of recent lines to retrieve (default: 200)

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations present, the description carries the burden of disclosing side effects and safety. It does state that the operation is non-intrusive, requires no TX write lock, and is safe across UTF-8 boundaries, but it omits potential behaviors like whether the buffer is consumed, whether a connection is required, or what happens when no logs are available.

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

Conciseness5/5

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

The description is succinct and well-structured, with a clear purpose statement, a short behavioral note, and a compact parameter list. There is no redundant or extraneous content.

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

Completeness3/5

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

The core operation and parameters are covered, but the description does not mention the output format, failure modes, or whether a prior connection is required. Given the simple structure and absence of an output schema, some additional context about expected return values would improve completeness.

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

Parameters5/5

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

Although the JSON schema has no parameter descriptions, the inline Args section fully explains both parameters: board_id is identified as the board identifier with an example, and lines is defined as the number of recent lines to retrieve with its default value. This adds meaningful semantic value beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('Fetch'), the resource ('the board's ring buffer history'), and the result ('log lines'). It is distinguishable from write/upload tools like serial_write and firmware_upload, though it does not explicitly contrast with serial_read or ssh_tail.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives such as serial_read or ssh_tail. The note about being non-intrusive implies a read-only use case, but it does not state a clear selection scenario or compare with sibling tools.

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

serial_writeA

Write a raw command string to the board's serial port.

Requires active controller lease.

Args: board_id: The identifier of the board (e.g. 'board_a') data: String or command to transmit (e.g. 'help\r\n')

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the lease requirement, which is a key precondition. It does not mention whether the write is blocking, whether a response is expected, error behavior, or any side effects on the board. This is minimal 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.

Conciseness5/5

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

The description is compact and front-loaded with the core action. The lease requirement is stated in the second sentence, followed by an 'Args' section that lists parameters with examples. No wasted words; it is efficiently structured.

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

Completeness3/5

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

Given there is an output schema (not shown), the return format is presumably documented. The description covers the core requirement (board_id, data) and the lease prerequisite. It does not explain error conditions (e.g., invalid board, missing lease) or whether the write is synchronous, but for a simple write tool it is reasonably complete. It could be improved with a note about expected behavior on failure.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It provides clear semantics for both parameters, including an example for board_id ('board_a') and for data ('help\r\n'), clarifying that data is a raw string with possible escape sequences. This goes beyond the bare schema and is adequate for basic usage.

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

Purpose5/5

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

The description states a specific action ('Write a raw command string') on a clear resource ('the board's serial port'). It distinguishes from sibling serial tools like serial_read and serial_exchange by specifying it is a write operation. The purpose is unambiguous.

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

Usage Guidelines3/5

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

It provides a prerequisite ('Requires active controller lease') which tells the agent it must acquire a lease first. However, it does not explicitly mention when to prefer this over serial_exchange (which likely does write+read) or serial_read. No explicit alternatives are given, leaving the routing partially to inference.

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

ssh_connectB

Connect to remote board via SSH and start continuous log streaming (e.g. tail -f enor.log).

Args: board_id: The identifier of the board (e.g. 'e1_linux_host')

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full behavioral burden. 'Continuous log streaming' implies a long-running operation, but it does not disclose whether the call blocks, whether an SSH session remains open, how to stop it, or whether any cleanup/release is required.

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

Conciseness5/5

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

Two sentences convey the action, purpose, and example parameter with zero filler. The description is front-loaded and every sentence earns its place.

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

Completeness2/5

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

Although the signature is simple, the description leaves critical context unclear: session lifecycle, blocking behavior, and when to choose this over ssh_tail or serial_connect. The output schema exists, but behavioral and routing context are missing.

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

Parameters4/5

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

The single parameter board_id is described as 'identifier of the board' with a concrete example ('e1_linux_host'). Since schema description coverage is 0%, this is essential and sufficient for the only parameter.

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

Purpose4/5

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

Description states a specific action ('Connect to remote board via SSH') plus the purpose ('start continuous log streaming') with a concrete example. It clearly differs from serial_* siblings, though it is not explicitly differentiated from ssh_tail, which may have overlapping behavior.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool instead of ssh_tail, ssh_exec, or serial_connect. The SSH mention provides an implicit hint, but there are no explicit use cases, exclusions, or alternative routing instructions.

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

ssh_execA

Execute a shell command on the remote host via SSH and return exit status, stdout, and stderr.

Args: board_id: The identifier of the board (e.g. 'e1_linux_host') command: Shell command string to execute (e.g. 'ps aux | grep enor' or 'dmesg | tail') timeout_sec: Maximum timeout in seconds (default: 30.0)

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes
board_idYes
timeout_secNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It clearly states that the command executes via SSH, returns exit status/stdout/stderr, and is bounded by timeout_sec. However, it does not disclose that arbitrary commands can modify or destroy remote system state, nor does it mention authentication or connection prerequisites.

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

Conciseness5/5

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

The description is a single effective purpose sentence followed by a compact Args list with useful examples. It is front-loaded, contains no filler, and every line earns its place.

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

Completeness3/5

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

The core execution contract is documented and an output schema exists. However, it is unclear whether ssh_exec opens its own SSH connection or requires one from ssh_connect, and there is no mention of remote-host prerequisites or safety caveats. These gaps leave agent decision-making incomplete.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully by explaining each parameter's meaning and giving concrete examples for board_id and command, plus the semantics and default of timeout_sec. This adds substantial value beyond the plain input schema.

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

Purpose5/5

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

The description opens with a specific action: 'Execute a shell command on the remote host via SSH' and explicitly names the return payload: 'exit status, stdout, and stderr'. This clearly distinguishes it from siblings like ssh_connect, ssh_tail, and ssh_status, which have different purposes.

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

Usage Guidelines3/5

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

The intended use is implied by the purpose: run an arbitrary shell command and capture its output. However, the description gives no explicit when-to-use or when-not-to-use guidance, does not mention alternatives like ssh_connect or ssh_tail, and does not state whether an existing SSH connection is required.

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

ssh_statusA

Get real-time SSH connection status, target host, monitored log file, and buffer metrics.

Args: board_id: The identifier of the board (e.g. 'e1_linux_host')

ParametersJSON Schema
NameRequiredDescriptionDefault
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'Get real-time' indicates a read-only, live query, which is useful. However, it does not state prerequisites such as whether an SSH connection must already exist, nor does it disclose possible side effects or error behaviors.

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

Conciseness5/5

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

The description is compact and front-loaded: one purpose sentence followed by a single Args line. There is no filler, repetition, or unnecessary detail.

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

Completeness4/5

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

Given the simple one-parameter schema and the presence of an output schema, the description covers the essential purpose, parameter, and output categories. It does not fully explain when to choose this over sibling tools or what happens if no SSH connection is active, but these are minor gaps for a status-query tool.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description compensates by defining board_id as the board identifier and giving a concrete example ('e1_linux_host'). This is sufficient for the single required parameter, though it could specify further constraints or allowed values.

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

Purpose5/5

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

States a specific verb 'Get' and resource 'SSH connection status', and lists distinct output categories: target host, monitored log file, and buffer metrics. This clearly differentiates it from siblings like ssh_connect, ssh_tail, and ssh_exec, which are actions rather than status retrieval.

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

Usage Guidelines3/5

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

The description implies use when SSH connection status or related metrics are needed, but it does not explicitly mention when not to use it or name alternatives such as ssh_tail or ssh_exec. The intended context is inferable from the description, but no direct routing guidance is provided.

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

ssh_tailA

Fetch the most recent log lines from the remote log file (e.g. enor.log) via SSH ring buffer.

Instantly returns latest lines with UTF-8 boundary protection, non-blocking.

Args: board_id: The identifier of the board (e.g. 'e1_linux_host') lines: Number of recent lines to retrieve (default: 200)

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
board_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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 usefully discloses that the operation is non-blocking and returns UTF-8-safe lines. However, it does not state whether an ssh_connect session is required, whether any connection state changes, or what happens on connection failure.

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

Conciseness5/5

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

The description is compact, front-loaded with the main purpose, and uses a clear Args block for parameters. The behavior sentence earns its place by adding non-blocking and UTF-8 boundary details without unnecessary exposition.

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

Completeness3/5

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

For a simple retrieval tool this is mostly sufficient: purpose, behavior, and both parameters are covered, and an output schema exists to document return values. Still, the description omits connection prerequisites and the source/path of the log file, which matter when siblings include ssh_connect and ssh_exec.

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

Parameters5/5

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 both parameters: board_id as an identifier with an example, and lines as the count of recent lines with its default. This is additional meaning beyond the bare schema types and default.

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

Purpose5/5

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

The description uses a specific verb ('Fetch') and identifies the resource ('most recent log lines from the remote log file via SSH ring buffer'), so the agent knows exactly what the tool returns. It also contrasts implicitly with serial-focused siblings like serial_tail and with ssh_exec, which is for executing commands rather than tailing a log.

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

Usage Guidelines3/5

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

The phrase 'via SSH ring buffer' and 'remote log file' imply this is the tool for non-blocking SSH log tailing, but it does not explicitly say when to prefer it over serial_tail or ssh_exec, nor does it mention prerequisites such as an established SSH connection.

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. Dates show when Glama detected each change.

  1. 20 tool updatesv0.1.0
    • First observedboard_list
    • First observedboard_status
    • First observedfirmware_build
    • First observedfirmware_get_config
    • First observedfirmware_get_version
    • First observedfirmware_notify
    • First observedfirmware_release
    • First observedfirmware_upload
    • First observedserial_acquire
    • First observedserial_connect
    • First observedserial_exchange
    • First observedserial_read
    • First observedserial_release
    • First observedserial_reset
    • First observedserial_tail
    • First observedserial_write
    • First observedssh_connect
    • First observedssh_exec
    • First observedssh_status
    • First observedssh_tail

TDQS

A3.6/5.0

Scored across 20 tools

Disambiguation3/5

Several tools overlap in function: serial_write and serial_exchange both transmit commands, serial_read and serial_tail both retrieve output, and firmware_release wraps build/upload/notify. The descriptions do clarify the intended use cases, but an agent could easily select the wrong granularity.

Naming Consistency5/5

All tools follow a consistent lowercase snake_case naming convention with domain prefixes: serial_, ssh_, firmware_, and board_. Actions are consistently placed after the domain prefix, making the tool family predictable and easy to navigate.

Tool Count4/5

At 20 tools, the surface is above the ideal 3-15 range, but the server covers three distinct areas: serial control, SSH access, and firmware release management. Each tool represents a real suboperation, so the count is slightly heavy but still reasonable.

Completeness4/5

The serial lifecycle is well covered with connect, lease, read/write, exchange, tail, and reset, and the firmware pipeline supports build, upload, notify, and full release. Minor gaps exist such as no explicit serial/SSH disconnect and no post-OTA verification, but core workflows have no dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with physical serial port devices across platforms (Windows COM/Linux tty) with support for asynchronous communication, URC pattern recognition, and structured logging.
    1
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to communicate with serial port devices, supporting port management, data transmission in text/binary modes, interactive terminal sessions, and automatic reconnection.
    14
    12
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to communicate with UART/serial devices, offering tools for port management, data read/write, and protocol handling.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Lets AI assistants read, command, and debug microcontrollers over a serial connection via MCP. Provides tools for serial port discovery, reading serial output, sending commands, and decoding register values.
    7
    2
    MIT