Skip to main content
Glama

pyocd-debug-mcp

让 AI 全自动进行嵌入式单片机仿真调试的 MCP Server

通过 pyOCD + CMSIS-DAP 探针,为 Claude / GitHub Copilot 等 AI 工具提供 58 个调试工具,涵盖从连接探针、烧录固件、打断点、读寄存器到 HardFault 故障分析的完整调试流程。

✨ 核心能力

能力

说明

🔌 探针管理

自动发现 CMSIS-DAP 探针,连接/断开

⚡ 烧录

支持 .hex / .bin / .elf / .axf 固件烧录,烧录 ELF 自动附加符号

✅ Flash 校验

烧录后逐段对比验证,检测 Flash 损坏或烧录异常

🎯 断点 & 监视点

硬件断点 / 软件断点 / 自动选择(地址或符号名),数据监视点(读/写/读写)

🔄 断点恢复

Reset 后自动恢复所有断点(软件断点 Reset 后丢失,自动重设)

⏳ 等待机制

wait_halt — AI 打断点 → 运行 → 等待命中 → 分析

📊 变量采样

周期性采样全局变量,返回统计数据

💥 故障分析

HardFault/BusFault/UsageFault 全自动解析

📏 栈溢出检测

支持 RT-Thread / FreeRTOS TCB 栈边界检查

🔍 栈回溯

DWARF CFI / EHABI / 启发式三级容错,覆盖 AC5/AC6/GCC

🔧 寄存器 & 内存

读/写 CPU 寄存器、内存、外设寄存器(SVD),支持批量位域更新和枚举值

📋 符号解析

通过 ELF 文件将地址映射到函数名/变量名

📡 RTT 实时传输

SEGGER RTT 通道读写,免 UART 打印调试

🆕 地址格式

所有地址参数同时接受整数和十六进制字符串(如 "0x1FFE000E"

🆕 组合工具

read_symbol 一步读取变量值、step_out 执行到函数返回

Related MCP server: GDB MCP Server

📦 安装

前置条件

  • Python ≥ 3.10

  • uv 包管理器(推荐)

  • CMSIS-DAP 兼容调试探针(DAPLink / STLINK 等)

方式一:从 GitHub 安装(推荐)

# 使用 uv
uv pip install git+https://github.com/konbakuyomu/pyocd-debug-mcp.git

# 使用 pip
pip install git+https://github.com/konbakuyomu/pyocd-debug-mcp.git

# 如需 SVD 字段级解析(可选)
uv pip install "pyocd-debug-mcp[svd] @ git+https://github.com/konbakuyomu/pyocd-debug-mcp.git"

方式二:本地开发安装

git clone https://github.com/konbakuyomu/pyocd-debug-mcp.git
cd pyocd-debug-mcp
uv sync          # 创建虚拟环境并安装依赖

HC32 系列芯片支持

HC32 芯片需要安装 CMSIS-Pack:

uv run pyocd pack install hc32f460
uv run pyocd pack install hc32f4a0

🔧 注册到 AI 工具

Claude Desktop

claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "pyocd-debug": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/pyocd-debug-mcp",
        "run", "pyocd-debug-mcp"
      ]
    }
  }
}

Claude Code (CLI)

claude mcp add pyocd-debug -- uv --directory /path/to/pyocd-debug-mcp run pyocd-debug-mcp

GitHub Copilot (VS Code)

.vscode/mcp.json 中添加:

{
  "servers": {
    "pyocd-debug": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/pyocd-debug-mcp",
        "run", "pyocd-debug-mcp"
      ]
    }
  }
}

💡 将 /path/to/pyocd-debug-mcp 替换为你的实际路径。Windows 下使用 \\/ 均可。

🛠️ 工具列表(58 个)

项目配置

工具名

说明

pyocd_project_load

🆕 加载项目配置(.pyocd-debug.json),或自动发现固件/ELF/SVD 文件

pyocd_project_init

🆕 创建 .pyocd-debug.json 配置文件(路径自动转相对路径)

pyocd_svd_attach_builtin

🆕 ⚠️ 从 pyocd 内置 SVD 临时回退(强烈建议改用厂商提供的完整 SVD)

探针 & 会话

工具名

说明

pyocd_probe_list

列出所有已连接的 CMSIS-DAP 调试探针

pyocd_probe_info

获取指定探针详细信息

pyocd_session_connect

连接探针并打开调试会话

pyocd_session_disconnect

断开调试会话,释放探针

pyocd_session_status

查看当前会话状态

烧录

工具名

说明

pyocd_flash_program

烧录固件(.hex / .bin / .elf / .axf),烧录 ELF/AXF 自动附加符号

pyocd_flash_erase

擦除 Flash

pyocd_flash_verify

🆕 校验 Flash 内容是否与固件文件一致(逐段对比)

目标控制

工具名

说明

pyocd_target_halt

暂停 CPU

pyocd_target_resume

恢复运行

pyocd_target_step

单步执行

pyocd_target_reset

复位 MCU(自动恢复所有断点)

pyocd_target_status

获取目标状态(运行/停止)及关键寄存器

pyocd_target_wait_halt

等待目标停止(断点命中/监视点触发),支持 user_hint 提示

pyocd_target_step_out

🆕 执行到当前函数返回(自动设临时断点在 LR)

pyocd_target_list_supported

列出 pyOCD 支持的所有 MCU(206+)

寄存器 & 内存

工具名

说明

pyocd_register_read

读取 CPU 寄存器

pyocd_register_write

写入 CPU 寄存器

pyocd_register_read_all

读取全部寄存器(含 FPU)

pyocd_memory_read

读内存

pyocd_memory_write

写内存(带 readback 验证)

pyocd_memory_write_block

块写入

pyocd_memory_dump

Hex dump 格式输出

断点 & 监视点

工具名

说明

pyocd_breakpoint_set

设置断点(地址或符号名),支持 hw/sw/auto 三种类型

pyocd_breakpoint_clear

清除断点

pyocd_breakpoint_clear_all

清除所有断点

pyocd_breakpoint_list

列出当前断点

pyocd_watchpoint_set

设置数据监视点(读/写/读写触发)

pyocd_watchpoint_clear

清除监视点

pyocd_watchpoint_clear_all

清除所有监视点

pyocd_watchpoint_list

列出当前监视点

ELF 符号

工具名

说明

pyocd_elf_attach

加载 ELF 文件用于符号解析

pyocd_elf_lookup

按名称查找符号地址

pyocd_read_symbol

🆕 一步读取变量:符号查找 + 内存读取组合工具

pyocd_elf_symbols

列出 ELF 中的符号(函数/变量)

pyocd_elf_info

获取 ELF 文件信息

pyocd_elf_address_to_symbol

地址→符号反查(PC/LR→函数名+偏移)

SVD 外设寄存器

工具名

说明

pyocd_svd_attach

加载 SVD 文件

pyocd_svd_list_peripherals

列出所有外设

pyocd_svd_list_registers

列出外设的寄存器

pyocd_svd_read

按名称读外设寄存器(含位域解析)

pyocd_svd_write

按名称写外设寄存器

pyocd_svd_list_fields

列出寄存器的所有位域(名称、位范围、宽度)

pyocd_svd_set_field

设置单个位域值(RMW,支持枚举名或整数)

pyocd_svd_update_fields

🆕 批量设置多个位域(单次 RMW,原子操作)

pyocd_svd_describe

🆕 查看外设/寄存器详细描述(含枚举值定义)

高级调试

工具名

说明

pyocd_debug_fault_analyze

💥 分析 HardFault 崩溃(SCB 寄存器 + 异常栈帧 + EXC_RETURN + backtrace)

pyocd_debug_stack_overflow_check

📏 检查线程栈溢出(RT-Thread / FreeRTOS)

pyocd_debug_sample_variable

📊 周期性采样变量(如每 0.5s 采样 200 次)

pyocd_debug_backtrace

🔍 精确栈回溯 — DWARF CFI / EHABI / 启发式三级容错,覆盖 AC5/AC6/GCC

RTT 实时传输

工具名

说明

pyocd_rtt_start

🆕 启动 RTT 并发现通道(自动搜索 SEGGER RTT 控制块)

pyocd_rtt_stop

🆕 停止 RTT 并释放资源

pyocd_rtt_read

🆕 从 RTT 上行通道读取数据(非阻塞)

pyocd_rtt_write

🆕 向 RTT 下行通道写入数据

pyocd_rtt_status

🆕 查看 RTT 状态和通道信息

📋 项目配置(推荐)

在项目根目录创建 .pyocd-debug.json,AI 即可自动获取所有调试文件路径:

{
  "target": "hc32f4a0xi",
  "firmware": "build/usart_uart_dma_Debug/usart_uart_dma.hex",
  "elf": "build/usart_uart_dma_Debug/usart_uart_dma.axf",
  "svd": "HC32F4A0PIHB.svd"
}

也可让 AI 自动创建:

AI: pyocd_project_load("/path/to/project")    → 自动扫描发现文件
AI: pyocd_project_init("/path/to/project",    → 创建配置
      target="hc32f4a0xi",
      firmware="build/xxx.hex",
      elf="build/xxx.axf",
      svd="HC32F4A0PIHB.svd")

💡 配置中的路径会自动转为项目根目录的相对路径,方便版本控制。

SVD 文件查找策略

SVD 文件(外设寄存器描述)的查找遵循三级优先级:

  1. 配置文件指定(最佳):.pyocd-debug.json 中的 svd 字段 — 厂商提供的完整 SVD

  2. 项目目录扫描:自动在项目目录中递归查找 .svd / .xml 文件

  3. pyocd 内置回退(最后手段):pyocd_svd_attach_builtin — 从 pyocd 内置的 105 个通用 SVD 中匹配

⚠️ 强烈建议 从芯片厂商 SDK 获取与具体芯片型号匹配的 SVD 文件。内置 SVD 是通用简化版,可能缺少部分外设或引脚定义。

🚀 典型调试流程

以下是 AI 使用此 MCP Server 进行调试的典型对话流程:

1. 连接 → 烧录 → 运行到 main

AI: pyocd_probe_list                           → 发现探针
AI: pyocd_session_connect("hc32f460xe")        → 连接
AI: pyocd_flash_program("firmware.hex")        → 烧录
AI: pyocd_elf_attach("firmware.elf")           → 加载符号
AI: pyocd_breakpoint_set(symbol="main")        → 在 main 打断点
AI: pyocd_target_reset(halt=true)              → 复位并停止
AI: pyocd_target_wait_halt(timeout=10)         → 等待命中 main

2. 串口数据调试(等待断点)

AI: pyocd_breakpoint_set(symbol="UART_RxCallback")
AI: pyocd_target_wait_halt(timeout=60)         ← 等待数据到来
    ... 60s 内数据到达,断点命中 ...
AI: pyocd_memory_dump(rx_buffer_addr, 64)      → 查看接收缓冲区
AI: pyocd_register_read_all()                  → 查看寄存器现场

3. 周期性变量监控

AI: pyocd_debug_sample_variable(
      address=0x20001000,   # 全局变量地址
      interval=0.5,          # 每 0.5s
      count=200              # 共 200 次 = 100s
    )
→ 返回所有采样值 + min/max/变化统计

4. HardFault 崩溃分析

AI: pyocd_debug_fault_analyze()
→ 返回:
  - fault_type: "BusFault"
  - fault_address: "0x40012400"
  - active_faults: [PRECISERR, BFARVALID]
  - exception_frame: {PC_fault, LR_saved, R0-R3, ...}
  - exc_return: {stack_used: "PSP", fpu_context: ...}

5. 野指针/数组越界追踪

AI: pyocd_watchpoint_set(
      address=0x20002000,    # 数组末尾地址
      size=4,
      access_type="write"    # 监控越界写入
    )
AI: pyocd_target_wait_halt(timeout=30)
    ... 越界写入发生,DWT 触发停止 ...
AI: pyocd_target_status()                      → 查看 PC 定位到写入指令
AI: pyocd_debug_backtrace()                    → 查看完整调用链

6. 精确栈回溯(三级容错,全工具链覆盖)

AI: pyocd_debug_backtrace(max_frames=16)
→ 返回:
  frames:
    [0] USART_RxCallback+0x1A          (pc=0x0800135C)
    [1] DMA_IrqHandler+0x18            (unwound via DWARF CFI)
    [2] main+0x42                      (unwound via DWARF CFI)
  method: "dwarf_cfi"                   ← AC6/GCC: .debug_frame 精确展开
  method: "ehabi"                       ← AC5: .ARM.exidx 精确展开
  method: "heuristic"                   ← 无调试信息时: 栈扫描 + BL 验证

# wait_halt 断点命中时自动附带简短 backtrace:
AI: pyocd_target_wait_halt(timeout=30)
→ { ..., "backtrace": ["UART_RxCallback", "DMA_IrqHandler+0x18", "main+0x1A"] }

# fault_analyze 崩溃时自动附带 backtrace:
AI: pyocd_debug_fault_analyze()
→ { ..., "backtrace": ["HardFault_Handler", "memcpy+0x12", "cJSON_Parse+0x8A", ...] }

🆕 地址格式灵活性

所有接受地址参数的工具(共 11 个)同时支持整数和十六进制字符串:

# 两种格式等价
AI: pyocd_memory_read(address=0x20000000, size=16)
AI: pyocd_memory_read(address="0x20000000", size=16)

# 断点也支持
AI: pyocd_breakpoint_set(address="0x0800135C")

# 监视点同理
AI: pyocd_watchpoint_set(address="0x20001000", access_type="write")

🆕 组合工具

# read_symbol: 一步读取变量(自动查找地址 + 读取内存 + 类型推断)
AI: pyocd_read_symbol(name="g_rxBuffer")
→ { "name": "g_rxBuffer", "address": "0x20000100", "size": 64,
     "hex_dump": "48 65 6C 6C 6F ...", "as_string": "Hello..." }

# step_out: 执行到当前函数返回
AI: pyocd_target_step_out(timeout=5.0)
→ { "status": "returned", "from_function": "UART_RxCallback",
     "returned_to": "DMA_IrqHandler+0x18" }

🏗️ 项目结构

pyocd-debug-mcp/
├── pyproject.toml              # 项目配置和依赖
├── src/pyocd_debug_mcp/
│   ├── server.py               # MCP Server 入口,58 个工具注册
│   ├── session_manager.py      # 会话生命周期管理(单例)
│   └── tools/
│       ├── probe.py            # 探针发现
│       ├── target.py           # 目标控制
│       ├── flash.py            # Flash 烧录 + 校验
│       ├── register.py         # 寄存器读写
│       ├── memory.py           # 内存读写
│       ├── breakpoint.py       # 断点管理(HW/SW/AUTO + Reset 恢复)
│       ├── watchpoint.py       # 监视点管理
│       ├── elf.py              # ELF 符号解析
│       ├── svd.py              # SVD 外设寄存器(含批量更新、枚举、描述)
│       ├── rtt.py              # RTT 实时传输(SEGGER RTT 通道读写)
│       ├── debug.py            # 高级调试(故障分析、栈回溯、栈检查、采样)
│       └── project.py          # 项目配置(.pyocd-debug.json 管理)
└── tests/

⚙️ 支持的硬件

  • 调试探针: 所有 CMSIS-DAP 兼容探针(DAPLink、STLINK via pyOCD、J-Link via pyOCD)

  • MCU: pyOCD 支持的 206+ 种芯片,包括:

    • HDSC/XHSC: HC32F460、HC32F4A0 等

    • STMicroelectronics: STM32F0/F1/F2/F3/F4/F7/H7/L0/L4/G0/G4 等

    • Nordic: nRF52832、nRF52840、nRF9160 等

    • NXP: LPC、Kinetis、i.MX RT 等

    • 更多: pyocd_target_list_supported 查看完整列表

📄 License

MIT

Available Tools

58 tools
pyocd_breakpoint_clearB

Remove a breakpoint at an address or symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoSymbol name
addressNoBreakpoint address (integer or hex string)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

Without annotations, the description should disclose behavioral traits. It only states 'remove' but doesn't clarify behavior for non-existent breakpoints, side effects, or required state.

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

Conciseness5/5

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

One short sentence, no fluff, front-loaded with the action and target.

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?

With no annotations and a minimal description, the tool context is incomplete – missing return value, error behavior, and usage scenario details.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description paraphrases parameters without adding deeper meaning (e.g., precedence or format).

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 verb 'Remove' and the resource 'breakpoint', distinguishing it from siblings like pyocd_breakpoint_set and pyocd_breakpoint_list.

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 on when to use address vs symbol, no prerequisites or context provided. The description lacks any usage hints.

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

pyocd_breakpoint_clear_allA

Remove all active breakpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided; the description does not disclose side effects, prerequisites (e.g., active session), or relationship to watchpoints, leaving behavioral context insufficient.

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?

Single sentence with no extraneous information; perfectly concise for a tool with no parameters.

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?

Given no parameters and an output schema (assumed present), the description fully captures the operation; no additional context is necessary.

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?

No parameters exist; the description appropriately states the action without needing param details, meeting the baseline for zero-parameter tools.

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 ('Remove') and resource ('all active breakpoints'), clearly distinguishing it from sibling 'pyocd_breakpoint_clear' which targets a single breakpoint.

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

Usage Guidelines3/5

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

The description implies usage for clearing all breakpoints but does not explicitly contrast with 'pyocd_breakpoint_clear' or mention when to choose one over the other.

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

pyocd_breakpoint_listA

List all active breakpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description correctly indicates a read-only listing operation. Although no annotations are provided, the description is straightforward and does not contradict any implicit safety expectations. It could be enhanced by noting that it lists breakpoints for the current session, but it remains sufficient.

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, complete sentence with no unnecessary words. It is perfectly concise and 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 no parameters and the existence of an output schema, the description is mostly complete. It could optionally clarify that it lists breakpoints for the currently connected target, but the current phrasing is adequate.

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?

There are no parameters, and the schema coverage is 100%. The description does not need to add parameter details. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'List' and clearly identifies the resource as 'all active breakpoints'. This distinguishes it from sibling tools like pyocd_breakpoint_set (sets breakpoints) and pyocd_breakpoint_clear (clears breakpoints).

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 implies the tool is for inspecting current breakpoints. While no explicit alternatives or when-not-to-use guidance is given, the context of sibling tools and the simplicity of the operation make usage clear.

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

pyocd_breakpoint_setA

Set a hardware breakpoint at an address or symbol name (requires ELF). Supports hw (hardware), sw (software), or auto breakpoint types. Software breakpoints survive across more addresses but are lost on reset; hardware breakpoints are limited in number but don't modify flash.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolNoFunction/symbol name (requires ELF attached)
addressNoBreakpoint address (integer or hex string)
bp_typeNoBreakpoint type: 'hw' (hardware, default), 'sw' (software), or 'auto'hw

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, description discloses that software breakpoints are lost on reset, hardware breakpoints are limited and don't modify flash, and that symbol requires ELF. Provides useful behavioral context.

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 with no wasted words. Each sentence adds value: first states purpose and condition, second explains tradeoffs.

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?

Covers purpose, parameter options, and behavioral tradeoffs. Does not explain return values, but an output schema exists. Could mention requirement for active session, but that is implicit.

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 covers all 3 parameters with descriptions. Description adds context on breakpoint type tradeoffs but doesn't add significant new semantics beyond the 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?

Clearly states the action (set), resource (hardware breakpoint), and conditions (address or symbol name, requires ELF). Distinguishes from sibling tools like breakpoint_clear and breakpoint_list.

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?

Explains tradeoffs between hardware, software, and auto breakpoint types, guiding when to use each. However, does not explicitly contrast with other debugging tools like watchpoint_set.

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

pyocd_debug_backtraceA

Perform precise stack backtrace to show the full call chain. Uses DWARF CFI (.debug_frame) or EHABI (.ARM.exidx) for frame-accurate unwinding across all ARM toolchains (AC5/AC6/GCC). Falls back to heuristic stack scanning with BL validation if precise unwinding fails. Returns ordered frames: depth 0 = current PC, deeper = callers. Essential for understanding HOW code reached the current point.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_framesNoMaximum frames to return (default 16)
scan_depthNoBytes to scan from SP upward (default 512)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Although annotations are absent, the description discloses key behavioral traits: it uses DWARF CFI/EHABI for precise unwinding, falls back to heuristic scanning, and returns ordered frames. This covers important behavioral aspects.

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 two sentences that front-load the main purpose and add essential technical details. Every sentence adds value without repetition.

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 complexity (2 parameters, no required ones, output schema exists), the description is sufficiently complete. It explains the return format (ordered frames) and covers the unwinding methods, leaving no major 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 100%, so baseline is 3. The description does not add semantic details beyond what the schema provides for 'max_frames' and 'scan_depth' (defaults and brief descriptions already present).

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 ('Perform precise stack backtrace') and clearly identifies the resource ('full call chain'). It distinguishes from sibling tools by focusing on backtrace, which is unique among the listed tools.

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 states it is 'Essential for understanding HOW code reached the current point,' implying its primary use case. It does not explicitly exclude alternatives, but given the sibling tools, no direct competitor exists.

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

pyocd_debug_fault_analyzeA

Analyze a HardFault/BusFault/MemManage/UsageFault/SecureFault crash. Reads all SCB fault registers, decodes fault bits, reads the exception stack frame to find the fault PC (crash address) and caller LR. Also decodes EXC_RETURN for FPU/MSP/PSP context. Call this when target is halted in a fault handler.

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 fully describes the tool's behavior: reading SCB registers, decoding fault bits, reading exception stack frame, and decoding EXC_RETURN. It does not mention side effects, permissions, or rate limits, but none are expected for a read-only analysis tool.

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 (3 sentences), front-loaded with the fault types, and every sentence adds necessary information without fluff.

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?

Given zero parameters, no annotations, but an output schema exists, the description fully explains what the tool does and when to use it. It is complete for a zero-parameter 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?

No parameters exist; schema coverage is 100%. The description adds value by explaining the tool's functionality without needing parameter details. Baseline for 0 params is 4.

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

Purpose5/5

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

The description explicitly lists the specific fault types handled (HardFault, BusFault, etc.) and details the actions performed (reads SCB registers, decodes fault bits, finds fault PC and caller LR). It clearly distinguishes from sibling tools like backtrace or stack overflow check.

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?

States exactly when to use: 'Call this when target is halted in a fault handler.' This provides clear context, though it does not explicitly list when-not-to-use or alternatives.

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

pyocd_debug_sample_variableA

Periodically sample a memory location (global variable). Reads a variable every N seconds for M samples while target is running. Returns all samples with timestamps and statistics. Sends progress notifications to prevent AI client timeouts during long sampling sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoVariable size: 1, 2, or 4 bytes
countNoNumber of samples (default 200)
addressYesMemory address of the variable (integer or hex string)
intervalNoSeconds between samples (default 0.5)
halt_on_readNoHalt target for each read (safer but slower)

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 full burden. It mentions progress notifications and non-halted operation ('while target is running'), but does not disclose the halt_on_read parameter's effect or potential side effects like halting the target.

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?

Three efficient sentences, front-loaded with the core purpose, no fluff or repetition. Every sentence adds value.

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

Completeness4/5

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

The description covers the sampling process, output (samples, timestamps, statistics), and progress notifications. It omits potential interactions with target state (halt vs run) but is otherwise complete for a periodic sampling tool with a schema and output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the description adds minimal value beyond the schema. It notes 'N seconds' (interval) and 'M samples' (count) but does not elaborate on size or halt_on_read semantics.

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 tool periodically samples a memory location (global variable) while the target is running, distinguishing it from sibling tools like single-time reads or writes.

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 implies usage for periodic observation of a variable over time, but does not explicitly exclude alternatives or provide when-not-to-use guidance. The context is clear but lacks explicit exclusions.

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

pyocd_debug_stack_overflow_checkA

Check if a thread's stack has overflowed by comparing SP against the TCB's stack bounds. For RT-Thread: provide TCB address, offsets default to 0x24 (stack_addr) and 0x28 (stack_size). Reports usage percentage and watermark integrity.

ParametersJSON Schema
NameRequiredDescriptionDefault
tcb_addressNoThread Control Block address (from .map file or symbol)
stack_addr_offsetNoOffset of stack_addr in TCB (RT-Thread=0x24)
stack_size_offsetNoOffset of stack_size in TCB (RT-Thread=0x28)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description must fully disclose behavior. It clearly explains the mechanism (comparing SP against bounds) and what the tool reports (usage percentage, watermark integrity). It does not explicitly state that the operation is non-destructive, but this is implied. Minor omission: no mention of error handling for invalid TCB addresses.

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 with two sentences. The first sentence states the core purpose and mechanism, the second provides RT-Thread specifics and output. No unnecessary words. It is front-loaded and efficient.

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 that an output schema exists (not shown), the description need not detail return values, but it mentions 'usage percentage and watermark integrity', which is helpful. It covers the main workflow but could mention potential issues like invalid TCB address or non-RT-Thread configurations.

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 100% coverage with descriptions. The description adds value by explaining that tcb_address comes from .map file or symbol, and emphasizes the default offsets for RT-Thread (0x24, 0x28). This helps the user understand the context beyond the raw 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 tool's purpose: check if a thread's stack has overflowed by comparing SP against TCB stack bounds. It is specific and well-differentiated from sibling debug tools like pyocd_debug_backtrace or pyocd_debug_fault_analyze, which serve different functions.

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 when to use (stack overflow suspicion) and provides RT-Thread-specific defaults, but lacks explicit guidance on when not to use or alternatives. For example, it does not mention that other tools like pyocd_memory_read could also be used for stack inspection, or that this tool is read-only.

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

pyocd_elf_address_to_symbolA

Resolve a memory address to its symbol name (function or variable). Essential for interpreting PC, LR, and stack return addresses during debugging. Returns function name + offset (e.g. 'main+0x1A').

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesMemory address to resolve (e.g. from PC, LR, or stack trace)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns a symbol name with offset, which is adequate for a read-only lookup. However, it does not mention any dependencies (e.g., ELF must be attached) or error conditions for unmapped addresses. While the behavior is simple, more transparency would strengthen the score.

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 only two sentences, front-loaded with the core purpose, and every sentence adds value. No unnecessary words or repetition. Highly efficient.

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 a simple lookup tool with one parameter and an output schema (implied), the description covers purpose, usage, return format, and use cases. It is complete enough for an AI agent to understand when and how to invoke it without additional context.

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

Parameters3/5

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

Schema coverage is 100% with a clear description of the 'address' parameter. The description adds slight context on typical usage (from PC, LR, stack) but does not significantly extend beyond the schema. Baseline 3 is appropriate as the schema already explains the parameter well.

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 verb 'resolve' and resource 'memory address to its symbol name', provides concrete use case ('interpreting PC, LR, and stack return addresses'), and specifies return format ('function name + offset'). This distinguishes it from sibling tools like pyocd_elf_symbols (list symbols) and pyocd_read_symbol (read by name).

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 explicitly states when to use the tool: 'Essential for interpreting PC, LR, and stack return addresses during debugging.' It does not explicitly mention when not to use or provide alternatives, but the context of sibling tools implies other tools for listing or reading symbols. Slight room for improvement with explicit exclusions.

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

pyocd_elf_attachA

Attach an ELF file for symbol resolution. Enables using function names for breakpoints and provides richer debug info. Note: For flashing, prefer .hex format over .elf for armclang compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
elf_pathYesAbsolute path to the ELF file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Given no annotations, the description effectively discloses the behavioral traits: attaching for symbol resolution, enabling breakpoints, and richer debug info. It also warns about compatibility, covering key aspects without contradicting any annotations.

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 only two sentences and a note, all front-loaded with the primary purpose. Every sentence is necessary and adds value.

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

Completeness4/5

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

For a single-parameter tool with an output schema, the description covers the essential purpose and usage note, leaving no significant gaps. It is complete enough for an agent to understand when and how to use it.

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?

With 100% schema coverage, the description adds no further meaning to the single parameter 'elf_path' beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool attaches an ELF file for symbol resolution, enabling function names for breakpoints and richer debug info, distinguishing it from flashing operations.

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 a clear note about preferring .hex over .elf for flashing with armclang, which gives guidance on when not to use this tool, though it doesn't explicitly mention alternatives.

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

pyocd_elf_infoA

Get information about the attached ELF file (arch, entry point, sections).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It explicitly states it 'gets information' (read-only) and lists what info is returned. It does not disclose preconditions, but the tool name and context imply an ELF is already attached, which is reasonable for a simple info retrieval.

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?

Single sentence, succinct, front-loaded with the verb. No extraneous words; every part adds value.

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?

With zero parameters and an output schema, the description fully conveys the tool's purpose. It explains what information is retrieved (arch, entry point, sections), which is sufficient for an agent to decide if this tool meets its need.

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?

No parameters, so baseline is 4. Description adds no parameter info, but none is needed. Schema coverage is 100% (no params).

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 verb 'Get information' and resource 'attached ELF file', with specific examples (arch, entry point, sections). It distinguishes from siblings like pyocd_elf_lookup or pyocd_elf_symbols by being a general info tool, not a lookup or listing tool.

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 on when to use vs alternatives. The description does not mention prerequisites (e.g., must have an attached ELF via pyocd_elf_attach) or exclude cases like when you need symbol lookup instead.

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

pyocd_elf_lookupB

Look up a symbol's address by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSymbol/function name to look up

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It implies a read operation but does not disclose error behavior (e.g., symbol not found), return format, or any side effects. The description is too minimal to provide adequate transparency.

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 concise sentence with no wasted words. It clearly states the action and the parameter usage.

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 tool has a single parameter and an output schema (not shown), but the description lacks details like prerequisite session, error handling, or the fact that it returns an address. For a simple tool it is minimally adequate but not complete.

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

Parameters3/5

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

Schema coverage is 100% since the only parameter 'name' has a description in the schema. The description repeats 'by name' but adds no additional meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool looks up a symbol's address by name, which is a specific verb+resource. However, it doesn't differentiate from sibling tools like pyocd_elf_symbols (which lists symbols) or pyocd_read_symbol, but the core 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 Guidelines2/5

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

No usage guidance is provided. There is no indication of when to use this tool versus alternatives (e.g., pyocd_read_symbol for reading a symbol's value, pyocd_elf_symbols for listing all symbols). The description does not mention prerequisites like an active session.

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

pyocd_elf_symbolsB

List symbols (functions/variables) from the attached ELF file.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 50)
filter_textNoFilter symbols by name (case-insensitive)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must cover behavioral traits. It only says 'list symbols' without mentioning performance, default behavior, or dependencies like requiring an attached session.

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 very concise, only one sentence, which is efficient for a straightforward listing tool. No extraneous information.

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

Completeness3/5

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

Tool is simple and has an output schema. The description is sufficient but could mention that an ELF file must be attached and that results are limited by default.

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 documentation covers both parameters (limit, filter_text) with descriptions. The tool description adds no additional semantics beyond what the 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?

Description clearly states the tool lists symbols (functions/variables) from an attached ELF file, distinguishing it from sibling tools like pyocd_elf_lookup which look up specific symbols.

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 on when to use this tool versus alternatives such as pyocd_elf_lookup or pyocd_elf_address_to_symbol. Lacks context on prerequisites or use cases.

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

pyocd_flash_eraseA

Erase the target flash memory (chip erase or sector erase). Sends progress notifications to prevent AI client timeouts.

ParametersJSON Schema
NameRequiredDescriptionDefault
chip_eraseNoTrue for full chip erase, False for sector erase

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It mentions sending progress notifications to prevent timeouts, which is helpful. However, it does not state that erasing is destructive, that chip erase takes longer, or any side effects. Basic transparency is present 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.

Conciseness5/5

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

Two concise sentences: the first states the core purpose, the second adds an important behavioral note about progress notifications. No redundant words; every sentence adds value and 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 simplicity (one boolean parameter), the description is mostly complete. It mentions progress notifications, which is relevant for long operations. However, it does not explain the return type (though output schema likely covers that) or prerequisites like requiring a session. Still, it suffices for effective use.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter chip_erase, with clear description. The tool description adds no additional meaning beyond the schema, so baseline score applies. No extra value or clarification is provided.

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 'Erase the target flash memory' with specific verb and resource. Among siblings like pyocd_flash_program and pyocd_flash_verify, it uniquely identifies the erase operation, making it easy to distinguish.

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 lacks explicit guidance on when to use this tool versus alternatives, such as before programming or for cleanup. It does not mention prerequisites like an active session or when to choose chip vs sector erase, though the parameter schema provides that. Adequate but could be clearer.

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

pyocd_flash_programA

Program a firmware file (.hex/.bin/.elf) to the target flash. For armclang-compiled firmware, prefer .hex format to avoid ELF compatibility issues. When programming a .elf or .axf file, automatically attaches it for symbol resolution. Sends progress notifications to prevent AI client timeouts during programming.

ParametersJSON Schema
NameRequiredDescriptionDefault
eraseNoErase flash before programming (default True)
file_pathYesAbsolute path to firmware file (.hex, .bin, .elf, or .axf)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations, so description carries burden. Mentions progress notifications to prevent timeouts and ELF auto-attach behavior. Missing details on post-programming actions like reset or verification.

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?

Three focused sentences: one for main purpose, two for specific guidance. No redundant phrasing, front-loaded with core action.

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?

With 2 params and existing schema, description covers key aspects but lacks prerequisites (session connected?) and what happens after programming (reset, verify). Sibling tools hint at needed workflow but description doesn't complete it.

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 covers both parameters fully. Description adds minor value by recommending .hex format for armclang, but doesn't expand on the erase parameter's effect.

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?

Clearly states it programs firmware files to target flash with specific formats (.hex/.bin/.elf/.axf). Distinguishes well from sibling tools like erase and verify.

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?

Provides format preference for armclang firmware and notes automatic ELF attachment. Could be more explicit about when to avoid this tool, but gives good context.

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

pyocd_flash_verifyA

Verify the target's Flash content matches a firmware file. Reads Flash and compares segment by segment. Supports .hex, .bin, .elf, and .axf formats. Returns verified:true if match, or first mismatch address if different. Sends progress notifications to prevent AI client timeouts during verification.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to firmware file (.hex, .bin, .elf, or .axf)
base_addressNoBase address for .bin files (default: 0x00000000). Ignored for .hex/.elf

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/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 discloses read-only behavior ('Reads Flash and compares'), return values ('verified:true or first mismatch address'), and progress notifications to prevent timeouts. It does not mention side effects (none expected) or required permissions, which is acceptable for a read-only tool.

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 three sentences long: first sentence defines purpose, second details operation and supported formats, third mentions progress notifications. It is well-structured, front-loaded, and every sentence adds value without fluff.

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 two parameters, an output schema (mentioned), and no nested objects, the description covers all essential aspects: what it does, how it works, file formats, return type, and timeout prevention. It could mention that a pyocd session must be connected, but this is implied by the tool's context among sibling session tools.

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

Parameters3/5

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

Schema coverage is 100%, and the description repeats the schema's parameter descriptions without adding new meaning. For example, base_address is described as 'Base address for .bin files (default: 0x00000000). Ignored for .hex/.elf' in both. The baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Verify the target's Flash content matches a firmware file.' It specifies the action (verify), the resource (flash content), and explicitly differentiates from siblings like pyocd_flash_program (write) and pyocd_flash_erase (erase) by its read-only compare operation.

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

Usage Guidelines3/5

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

The description implies usage for verification after programming, but does not explicitly state when to use or not use this tool versus alternatives like pyocd_flash_program or pyocd_memory_read. It lacks direct guidance on prerequisites or exclusions.

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

pyocd_memory_dumpA

Dump memory in hex dump format (address, hex bytes, ASCII). Useful for inspecting data structures.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNoNumber of bytes to dump (default 256)
addressYesStart address (integer or hex string)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must compensate. It does not disclose any behavioral traits such as idempotency, memory impact, or prerequisites beyond the purpose. The minimal information provided is insufficient for a thorough understanding of 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.

Conciseness5/5

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

The description is a single sentence that effectively communicates the tool's function and purpose. It is front-loaded with the verb 'dump' and the format details, with no wasted words.

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 two parameters and existence of an output schema, the description adequately covers the essentials. It could briefly mention the line format or include a note about large dumps, but overall it is sufficient for a simple tool.

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

Parameters3/5

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

The input schema has 100% description coverage, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters 'address' and 'length'.

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 tool dumps memory in hex dump format, specifying the output includes address, hex bytes, and ASCII. It distinguishes from sibling tools like pyocd_memory_read by the formatted output.

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 mentions it is useful for inspecting data structures, which implies usage context, but does not explicitly guide when to use this tool versus alternatives like pyocd_memory_read for raw bytes.

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

pyocd_memory_readC

Read memory at a given address. Returns hex value.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoBytes to read: 1, 2, 4 for single access, or any number for block read
addressYesMemory address (integer or hex string, e.g. 0x20000000)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only mentions 'Returns hex value' but omits crucial details: whether the read is destructive, if the target must be halted, error handling, or the exact format of the return value. This is insufficient for a safe and correct invocation.

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 very short (two sentences) and front-loaded with the core action. Every sentence serves a purpose, but it lacks some necessary details that would make it more informative without bloating.

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?

Given the tool's simplicity and the existence of an output schema (as indicated by context signals), the description still falls short. It does not explain the return format, what constitutes a valid address, or any dependencies on the target state, leaving gaps for an AI agent.

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

Parameters3/5

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

Schema coverage is 100%, meaning both parameters (address and size) are described in the schema. The description adds no further meaning beyond what the schema provides. Per guidelines, baseline is 3 when coverage is high.

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 that the tool reads memory at a given address and returns a hex value. However, it does not differentiate itself from the sibling tool pyocd_memory_dump, which also reads memory but likely in a different format or scope.

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 instead of alternatives like pyocd_memory_dump or pyocd_memory_write. The description provides no context about prerequisites (e.g., requiring an active session) or exclusions.

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

pyocd_memory_writeB

Write a value to memory at a given address.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoAccess size in bytes: 1, 2, or 4
valueYesValue to write (integer)
addressYesMemory address (integer or hex string)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 should disclose that this is a destructive write operation, but it only says 'Write a value' without highlighting side effects or required permissions.

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 very concise (8 words) and front-loaded, but it sacrifices completeness for brevity.

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 does not mention default size, address format, output behavior, or differentiate from sibling tools like pyocd_memory_write_block.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters. The description adds no extra meaning beyond the 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 tool writes a value to memory at a given address, distinguishing it from sibling tools like pyocd_memory_read and pyocd_memory_write_block.

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 on when to use this tool versus alternatives like pyocd_memory_write_block for writing multiple bytes or pyocd_memory_read for reading.

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

pyocd_memory_write_blockC

Write a block of bytes to memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesList of byte values (0-255)
addressYesStart address (integer or hex string)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 full responsibility. It does not disclose any behavioral traits such as whether the target must be halted, potential side effects on memory, or error handling. The output schema exists but is not described, leaving the agent without knowledge of return values.

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 extremely concise and front-loaded, consisting of a single sentence that states the core functionality. While it is not verbose, it could be improved by adding a bit more context without becoming lengthy.

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?

Given that this is a memory write operation with two required parameters and an existing output schema, the description should at least mention the return value or expected behavior. It lacks information on what happens after the write, making it incomplete for an agent to fully understand the tool's effects.

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

Parameters3/5

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

The input schema provides complete descriptions for both parameters (address and data). The description adds no additional meaning beyond what the schema already offers, so it meets the baseline but does not enhance understanding.

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 (write) and the resource (a block of bytes to memory). It differentiates from siblings like pyocd_memory_read by specifying 'write', and the word 'block' hints at bulk operation compared to pyocd_memory_write. However, it does not explicitly distinguish from pyocd_memory_write, which might cause confusion.

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 provided on when to use this tool vs alternatives such as pyocd_memory_write or pyocd_flash_program. The description does not include any context about prerequisites, target state requirements, or typical use cases.

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

pyocd_probe_infoB

Get detailed information about a specific debug probe.

ParametersJSON Schema
NameRequiredDescriptionDefault
unique_idYesProbe unique ID (or partial match)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, description carries full burden but only states generic purpose. No disclosure of side effects, error conditions, or other behaviors beyond the obvious.

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?

Single sentence, front-loaded with verb and resource, no unnecessary words.

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 output schema present, return values need not be explained. Description is adequate for simple tool but could mention fields like target type or unique ID.

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

Parameters3/5

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

Schema coverage is 100%; the parameter description in schema is adequate. Tool description does not add extra meaning beyond the 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?

Description clearly states verb 'Get' and resource 'detailed information about a specific debug probe', distinguishing it from sibling tools like pyocd_probe_list which lists probes.

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 on when to use this tool vs alternatives. Does not mention prerequisites or exclusions (e.g., after listing probes).

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

pyocd_probe_listA

List all connected CMSIS-DAP debug probes. Call this first to discover available probes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses the scope (CMSIS-DAP probes) but lacks details on side effects, permissions, or behavior when no probes are connected.

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 short sentences with no wasted words; front-loaded with the main action and usage order advice.

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 a simple list tool with no parameters and an output schema, the description is complete enough to guide usage.

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?

Input schema has no parameters, so baseline is 4. Description adds no parameter info beyond the schema, but this is appropriate as no parameters exist.

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

Purpose5/5

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

The description states 'List all connected CMSIS-DAP debug probes' with a specific verb and resource, and distinguishes it from siblings as a discovery tool to call first.

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 advises 'Call this first to discover available probes' providing clear context, though it does not explicitly mention when not to use or alternatives.

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

pyocd_project_initA

Create .pyocd-debug.json config file in a project directory. Stores target type, firmware, ELF, SVD, and probe paths so that debug sessions can be started reliably without manual file discovery. Paths under the project directory are automatically converted to relative paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
elfNoPath to ELF/AXF file for symbol resolution
svdNoPath to SVD file for peripheral register access
probeNoProbe unique ID (partial match supported)
targetYesTarget MCU type (e.g. 'hc32f4a0xi', 'stm32f407xe')
firmwareNoPath to firmware file (.hex/.bin)
project_dirYesAbsolute path to the project root directory

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It mentions relative path conversion but does not state whether the file is overwritten, appended, or if prior state is required. Missing side-effect details.

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 three sentences long, front-loaded with the core action, followed by purpose and a key behavioral detail. No redundant information.

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, return value explanation is unnecessary. The description covers the config file content and relative path behavior. Missing error conditions or prerequisites, but overall sufficient for the tool's simplicity.

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 100%, baseline 3. The description adds meaning by noting that paths under project_dir become relative, which enriches understanding of parameters like elf, svd, firmware, and probe. However, it uses 'probe paths' while schema says 'unique ID', causing slight ambiguity.

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 tool creates a .pyocd-debug.json config file, specifying the action (create) and resource (config file). It distinguishes itself from sibling tools like breakpoint or flash operations, as this is an initialization step.

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 implies usage before debug sessions to avoid manual file discovery. It provides clear context but does not explicitly exclude alternatives or state when not to use, though no sibling tool serves the same function.

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

pyocd_project_loadA

Load project debug configuration from .pyocd-debug.json, or auto-discover firmware/ELF/SVD files if no config exists. Call this FIRST before any debug session to get file paths. Returns target type, firmware path, ELF path, SVD path, and probe ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_dirYesAbsolute path to the project root directory

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 full burden. It discloses that the tool either loads from a config file or auto-discovers files, and details the returned fields. It mentions no side effects, but given it is a load operation, destructive actions are unlikely. The lack of error conditions or prerequisites (e.g., project_dir must exist) is a minor gap, but overall sufficient.

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 two sentences with zero waste. The first sentence states the action and the second provides usage guidance and return value listing. It is front-loaded with key information, making it efficient for an agent to parse.

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?

Given the tool's simplicity (one required parameter) and the presence of an output schema, the description covers the essential points: what the tool does, when to use it, and what it returns. No significant gaps are apparent for this type of tool.

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

Parameters3/5

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

The single parameter 'project_dir' has a schema description 'Absolute path to the project root directory', and the description does not add additional meaning beyond what the schema provides. With 100% schema coverage, baseline 3 is appropriate. The description implies its use through context but doesn't elaborate on format or validation.

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 tool loads project debug configuration from a file or auto-discovers files, with a specific verb 'Load' and resource 'project debug configuration'. It distinguishes itself from the many sibling tools by emphasizing it should be called first before any debug session, 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.

Usage Guidelines4/5

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

The description explicitly says 'Call this FIRST before any debug session to get file paths', providing clear when-to-use guidance. It does not explicitly mention alternatives or when not to use, but the context makes it obvious that it is a prerequisite setup tool, not for ongoing debugging.

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

pyocd_read_symbolA

Read a global variable's value by symbol name. Combines ELF symbol lookup and memory read in one call. Returns address, raw bytes, and interpreted value. For structs/arrays, returns a hex dump.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSymbol/variable name (e.g. 'm_u16RxLen', 'g_stcConfig')
sizeNoOverride read size in bytes. If omitted, uses ELF symbol size (capped at 256).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 full burden. It discloses key behaviors: combination of ELF lookup and memory read, return of address/raw bytes/interpreted value, and hex dump for complex types. It does not mention error conditions, permissions, or side effects, but the read-only nature and core behavior are well explained. A minor gap in error handling or performance impact prevents 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.

Conciseness5/5

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

The description consists of three concise sentences that front-load the core purpose and then provide essential details. Every sentence adds value: first sentence states action and resource, second explains the composite nature, third specifies return types. No unnecessary words or repetition.

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?

Given the tool has an output schema (context: true), the description does not need to detail return values but still does so helpfully. The description is complete for a composite read tool: it explains what it does, how it works, what parameters are used (delegated to schema), and what the output looks like. No gaps are apparent for an agent to invoke it correctly.

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

Parameters3/5

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

Both parameters ('name', 'size') have full descriptions in the input schema, providing examples and default behavior. The tool description does not add additional semantic meaning beyond what the schema already conveys. Per guidelines, with 100% schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'read' and the resource 'global variable's value by symbol name'. It distinguishes from sibling tools like pyocd_memory_read (raw memory read by address) and pyocd_elf_lookup (symbol address lookup) by explaining it combines both operations. The return types (address, raw bytes, interpreted value, hex dump for structs/arrays) are specified, leaving no ambiguity about its functionality.

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 have a symbol name and want to read its value. However, it does not explicitly state when not to use it or mention alternative tools (e.g., pyocd_memory_read for addresses, pyocd_elf_lookup for just the address). While the context is clear, the lack of exclusionary guidance prevents a perfect score.

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

pyocd_register_readA

Read a CPU core register by name (e.g. 'pc', 'sp', 'r0', 'xpsr').

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRegister name (e.g. 'pc', 'sp', 'lr', 'r0'-'r12', 'xpsr')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description indicates a safe read operation with no side effects mentioned. However, it does not specify prerequisites (e.g., target must be halted) or any potential impacts on the target. This is adequate but minimal.

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, concise sentence with no unnecessary words. It effectively communicates the tool's purpose without redundancy.

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?

Given the simplicity of the tool (one parameter) and the existence of an output schema, the description provides sufficient information to understand the tool's function. It covers the essential aspect of reading a named register.

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

Parameters3/5

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

Schema description coverage is 100%, as the only parameter 'name' already has a description listing examples. The tool description adds a slightly different set of examples, providing some reinforcement but no new semantic insight beyond the 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 ('Read') and the resource ('CPU core register by name'), and it includes examples ('pc', 'sp', 'r0', 'xpsr'). This distinguishes it from sibling tools like pyocd_register_read_all (reads all registers) and pyocd_register_write (writes registers).

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 implies that this tool is for reading a single register by name, which is distinct from reading all registers or writing registers. However, it does not explicitly state when to use this tool over alternatives or provide exclusion criteria.

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

pyocd_register_read_allA

Read all CPU core registers at once. Useful for getting full CPU state.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_fpuNoInclude FPU registers (default False)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states a read operation but does not mention any prerequisites (e.g., target must be halted) or side effects. The description is adequate but lacks detail about state requirements or potential impacts.

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 two short sentences that convey the essential purpose and usefulness. There is no redundant information, and every word serves a purpose.

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 presence of an output schema (which likely documents return values) and the simplicity of the tool (one optional parameter), the description is sufficiently complete for an AI agent to understand its function. It could mention required session state but is otherwise adequate.

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

Parameters3/5

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

Schema coverage is 100% as the only parameter ('include_fpu') is described in the schema with default and description. The tool description does not add any additional meaning beyond the schema; it relies entirely on the schema. Baseline score of 3 is appropriate since the schema already covers the parameter semantics.

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 ('Read all CPU core registers at once') and the resource ('all CPU core registers'), differentiating it effectively from the sibling tool 'pyocd_register_read' which reads a single register. The verb+resource combination is specific and unambiguous.

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

Usage Guidelines3/5

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

The description mentions that the tool is 'useful for getting full CPU state', which implies a use case but does not explicitly state when to use this tool versus alternatives (e.g., 'pyocd_register_read' for individual registers) or when not to use it. It provides minimal guidance on context.

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

pyocd_register_writeB

Write a value to a CPU core register.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesRegister name
valueYesValue to write (integer)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden for behavioral disclosure. It does not mention side effects (e.g., requires a connected session, may cause undefined behavior if CPU is running) or whether the write takes effect immediately or after a resume.

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 single-sentence description is concise and front-loaded, but it may be too minimal—missing important context that could be added without significant length increase.

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?

Despite having an output schema, the description is incomplete for a potentially dangerous operation like register write. It lacks safety warnings, connection requirements, and explanation of when writes are allowed (e.g., only when target is halted).

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

Parameters3/5

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

Schema coverage is 100% (both parameters documented), so baseline is 3. The description adds no extra meaning beyond the schema; it doesn't clarify valid register names (e.g., 'r0', 'sp', 'pc') or value constraints.

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

Purpose5/5

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

The description 'Write a value to a CPU core register' clearly states the verb (write) and resource (CPU core register), distinguishing it from sibling tools like pyocd_register_read and pyocd_register_read_all.

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 provided on when to use this tool versus alternatives (e.g., pyocd_memory_write for memory, or pyocd_svd_write for SVD registers). There is no mention of prerequisites like target must be halted.

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

pyocd_rtt_readA

Read data from an RTT up channel. Returns text (decoded) and hex. Non-blocking: returns empty if no data available.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoUp channel index (default 0)
encodingNoText encoding (default 'utf-8')utf-8
max_bytesNoMaximum bytes to read (default 1024)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 full burden. It discloses non-blocking behavior and return of text/hex. However, it does not mention prerequisites (e.g., RTT must be started), side effects, or required permissions.

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 concise sentences, front-loaded with purpose and key behaviors. No redundant information. Every sentence adds value.

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 tool with 3 optional parameters and an output schema, the description covers the basic purpose and non-blocking nature. However, it lacks mention of prerequisite steps (e.g., ensure pyocd_rtt_start was called) and does not elaborate on the output format beyond 'text and hex'.

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

Parameters3/5

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

Schema coverage is 100% and schema descriptions are adequate (defaults and types). The description adds no new parameter-level details beyond stating it returns text and hex, which is already covered by output schema. Baseline score is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'RTT up channel', and distinguishes from sibling RTT tools like pyocd_rtt_write, pyocd_rtt_start, etc. It specifies the output format (text and hex) and behavioral trait (non-blocking).

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

Usage Guidelines3/5

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

The description implies usage when reading from an RTT up channel and notes non-blocking behavior, but does not explicitly state when to use vs alternatives, nor when not to use it (e.g., if RTT is not started). No exclusions or alternative tools are mentioned.

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

pyocd_rtt_startA

Start RTT (Real-Time Transfer) and discover channels. Searches target RAM for the SEGGER RTT control block. Returns up/down channel names and sizes. Target must be halted or have RTT initialized.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoSearch size in bytes (default: auto)
addressNoRTT control block address (omit to auto-search)
control_block_idNoRTT control block ID stringSEGGER RTT

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. It reveals that the tool searches RAM, starts RTT, and returns channel info. It also states a precondition (target halted or RTT initialized). However, it could mention side effects such as modifying target state (starting RTT) or potential impacts on further RTT operations.

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 consists of two concise sentences, front-loaded with the core action and followed by key details. Every sentence provides essential information with no 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?

Given the tool complexity (starting RTT, searching memory), the description covers the main functionality, precondition, and outputs. With an output schema present, return values need not be detailed. It lacks details about error conditions or search behavior but is largely complete.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented. The description does not add any parameter-specific meaning beyond the schema, which is adequate. A score of 3 is appropriate as the description does not compensate for low coverage, but coverage is high.

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 tool starts RTT and discovers channels, distinguishing it from siblings like pyocd_rtt_read (reading) and pyocd_rtt_write (writing). It specifies the action of searching for the SEGGER RTT control block and returning channel names/sizes, making the purpose unambiguous.

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 a precondition ('Target must be halted or have RTT initialized'), guiding the agent on when the tool can be used. It does not explicitly compare to alternatives, but the sibling tools (e.g., pyocd_rtt_read) have distinct purposes, so context is implied.

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

pyocd_rtt_statusA

Get RTT status: running/stopped, channel info, bytes available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations provided, so description carries full burden. It states what is returned but does not explicitly mention that the tool is non-destructive or requires an active RTT session. Adequate for a simple getter but could be more explicit.

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?

Extremely concise single sentence that front-loads the purpose. No unnecessary words.

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 no parameters and an output schema (though not detailed), the description sufficiently explains what the tool returns. Could mention prerequisites like an active RTT session, but not essential for a status query.

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?

Tool has no parameters, so this dimension is less critical. Schema coverage is 100% (no params). Baseline for 0 params is 4, and description does not need to add parameter info.

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 it gets RTT status and lists the specific information returned (running/stopped, channel info, bytes available). It distinguishes from sibling tools like pyocd_rtt_read, pyocd_rtt_start, etc., which perform different operations.

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?

Implicitly, the tool is for checking status, but no explicit guidance on when to use it versus alternatives. The context of sibling tools helps, but the description itself lacks when-to-use or when-not-to-use instructions.

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

pyocd_rtt_stopA

Stop RTT and release resources.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description adds 'release resources' beyond the name, disclosing that the tool performs cleanup. With no annotations, this provides adequate transparency for a simple stop action. It does not describe edge cases like idempotency or error states, but is sufficient.

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: one short sentence that is front-loaded with the action. No wasted words.

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 zero parameters and the presence of an output schema, the description is mostly complete. It could mention whether the operation is reversible or what the system state is after, but for a stop/cleanup tool, it is adequate.

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?

There are no parameters, so the description does not need to explain them. Baseline score of 4 is appropriate.

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

Purpose5/5

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

The description clearly states 'Stop RTT and release resources,' providing a specific verb (stop) and resource (RTT). It distinguishes from siblings like pyocd_rtt_start (starts RTT) and pyocd_rtt_status (checks status).

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

Usage Guidelines3/5

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

Usage is implied (stop when done with RTT), but no explicit when-to-use or when-not-to-use guidance is given. No alternatives are mentioned, though the sibling set makes it clear this is for stopping.

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

pyocd_rtt_writeA

Write data to an RTT down channel. The data string is encoded before sending. Returns bytes written.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesText data to send
channelNoDown channel index (default 0)
encodingNoText encoding (default 'utf-8')utf-8

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations, so description carries full burden. It mentions encoding and return value but does not disclose blocking behavior, failure conditions, or requirements (e.g., session state). Adequate but not thorough.

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, front-loaded with the primary action. No superfluous words.

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?

Simple tool with output schema covering returns, but missing context about session/RTT dependencies. Adequate but could mention that pyocd_rtt_start must be run first.

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

Parameters3/5

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

Schema coverage is 100%, providing descriptions for all parameters. The description adds minimal extra insight beyond the schema, such as implying encoding matters. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (write), the resource (RTT down channel), and the return value (bytes written). It differentiates from sibling 'pyocd_rtt_read' by specifying 'down channel'.

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 on when to use this tool vs alternatives like pyocd_memory_write or pyocd_rtt_status. No mention of prerequisites such as needing RTT started or a connected session.

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

pyocd_session_connectA

Connect to a debug probe and open a debug session. Must be called before any target/register/memory operations. Only one session can be active at a time.

ParametersJSON Schema
NameRequiredDescriptionDefault
probe_idNoProbe unique ID. Omit to use first available.
frequencyNoSWD clock frequency in Hz (default 4MHz)
target_typeYesTarget MCU type (e.g. 'hc32f460xe', 'hc32f4a0pi')

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?

No annotations are provided, so the description carries full burden. It discloses the single-session constraint, which is helpful. However, it does not describe what happens if called when a session already exists, or if connection fails, or authentication requirements.

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 two sentences long, fully front-loaded with the core action and essential guidance. Every sentence earns its place with no filler.

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

Completeness4/5

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

Given the tool's simple role (session opener), the description covers the key points: connect, prerequisite, single-session. However, it does not mention return values or error conditions, which would improve completeness.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters. The description adds no additional parameter details beyond what is in the schema, so it meets the baseline of 3 without adding extra value.

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 verb (Connect) and resource (debug probe and session), and distinguishes this tool as the prerequisite for all other pyocd operations, setting it apart from siblings that perform read, write, flash, etc.

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?

Explicitly states 'Must be called before any target/register/memory operations' and 'Only one session can be active at a time,' providing clear when-to-use and a key constraint. Does not mention checking session status via sibling tool, but this is a minor gap.

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

pyocd_session_disconnectA

Close the current debug session and release the probe.

ParametersJSON Schema
NameRequiredDescriptionDefault
resume_on_disconnectNoIf True (default), clear all breakpoints/watchpoints and resume the target before closing. Set False to leave target halted (e.g., for later reconnection). AI MUST consider: will the user need the MCU running after this session ends?

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/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 states the core action and, through the parameter description, discloses that setting resume_on_disconnect to True clears breakpoints and resumes the target. However, it does not mention other potential side effects or 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 extremely concise with a single, clear sentence. No unnecessary words, and the structure is front-loaded with the essential action.

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 simplicity (one optional parameter, output schema exists), the description and parameter detail are largely sufficient. It covers the action and key behavioral switch, though it could mention return values or error conditions.

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 schema covers 100% of the parameter with a description. The description adds value by instructing the AI to consider whether the user needs the MCU running, which goes beyond the schema's technical description.

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 tool's action: 'Close the current debug session and release the probe.' It uses specific verbs and resources, distinguishing it from siblings like pyocd_session_connect and pyocd_session_status.

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 itself lacks explicit when-to-use guidance. However, the parameter description provides contextual guidance for the 'resume_on_disconnect' parameter, asking the AI to consider the user's needs. No alternative tools or conditions are mentioned.

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

pyocd_session_statusA

Check if a debug session is active and get connection info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations exist, so the description bears full responsibility. It implies a read-only, non-destructive operation (status check and info retrieval), which is adequate for a simple query tool. However, it does not explicitly state the absence of side effects or permission requirements.

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

Conciseness5/5

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

The description is a single sentence of 14 words, front-loading the core action. Every word contributes value with no redundancy.

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 a zero-parameter tool with an existing output schema, the description succinctly covers the tool's purpose (session status and connection info) without needing to repeat return details. It is complete for this complexity level.

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 no additional meaning beyond the schema is needed. Per instructions, 0 parameters yield a baseline of 4.

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 tool checks debug session activity and retrieves connection info. It uses specific verbs ('Check', 'get') and resources ('debug session active', 'connection info'), distinguishing it from sibling tools like pyocd_session_connect or pyocd_session_disconnect.

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 provided on when to use this tool vs. alternatives (e.g., before/after connections). The description only states functionality, leaving the agent to infer usage context from sibling tool names.

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

pyocd_svd_attachA

Attach an SVD file for peripheral register access. SVD files describe the register layout of MCU peripherals (GPIO, UART, SPI, etc).

ParametersJSON Schema
NameRequiredDescriptionDefault
svd_pathYesAbsolute path to the SVD file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/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 does not disclose what happens if the file path is invalid, whether it replaces an existing attachment, or if a session is required. Minimal behavioral context beyond the action.

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 with no waste. The first sentence states the action and purpose; the second provides essential context about SVD files. Well-structured and 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 simplicity of the tool (one parameter) and the presence of an output schema, the description is mostly complete. It explains the purpose and file type but could mention that this is a prerequisite for other SVD operations. Still sufficient.

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 100% for the single parameter 'svd_path'. The description adds value by explaining what SVD files are (register layout of MCU peripherals) and providing examples (GPIO, UART, SPI), which goes beyond the schema's 'Absolute path to the SVD file'.

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 verb 'Attach' and the resource 'SVD file'. It distinguishes from the sibling 'pyocd_svd_attach_builtin' by specifying it attaches a file, not a built-in. The examples of peripherals (GPIO, UART, SPI) add context.

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 explicit guidance on when to use this tool versus alternatives like 'pyocd_svd_attach_builtin'. The description only states the basic action; an agent would need to infer use cases from the tool name and context.

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

pyocd_svd_attach_builtinA

Attach a built-in SVD from pyocd's bundled svd_data.zip as a TEMPORARY fallback. ⚠️ Built-in SVDs are generic/simplified versions that may lack peripheral definitions specific to your exact chip variant/package. STRONGLY RECOMMENDED: use a vendor-provided SVD file via pyocd_svd_attach() instead. Only use this as a last resort when no vendor SVD is available. Extracts the SVD to a temp directory and attaches it.

ParametersJSON Schema
NameRequiredDescriptionDefault
svd_nameYesBuilt-in SVD filename (e.g. 'HC32F4A0.svd', 'STM32F429x.svd'). Use pyocd_project_load to discover available names.
target_typeNoTarget type to auto-match SVD name (alternative to svd_name)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

The description warns that built-in SVDs are 'generic/simplified versions' and may lack peripheral definitions, and notes that the SVD is extracted to a temp directory. However, it does not mention cleanup of temp files or potential conflicts with existing attachments, which would improve transparency.

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 concise three-sentence paragraph with a clear structure: purpose, limitation warning, recommendation, and technical detail. Every sentence is necessary, and there is no redundancy.

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?

Given that an output schema exists (so return values need no explanation), the description fully covers what the tool does, when to use it, its limitations, and how it relates to the sibling tool. It provides sufficient context for an agent to make an informed decision.

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 100%, so the baseline is 3. The description adds value by providing example SVD filenames and advising to use pyocd_project_load to discover available names, giving practical usage context beyond the 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 tool's purpose: 'Attach a built-in SVD from pyocd's bundled svd_data.zip as a TEMPORARY fallback.' It distinguishes from the sibling tool pyocd_svd_attach by emphasizing that this is a fallback for when no vendor SVD is available.

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

Usage Guidelines5/5

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

The description explicitly advises when to use this tool ('last resort when no vendor SVD is available') and strongly recommends the alternative pyocd_svd_attach, providing clear guidance on 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.

pyocd_svd_describeA

Return full description of a peripheral or specific register. Without register_name, lists all registers with descriptions. With register_name, shows all fields with bit ranges, descriptions, and enumerated values.

ParametersJSON Schema
NameRequiredDescriptionDefault
registerNoRegister name (omit for peripheral overview)
peripheralYesPeripheral name (e.g. 'GPIOA', 'USART1')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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. It honestly describes the two modes and what is returned (registers with descriptions or fields with bit ranges, descriptions, and enumerated values). It does not mention error handling or prerequisites (e.g., SVD must be attached), but for a read-only query tool this is acceptable.

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, front-loaded with purpose, no unnecessary words. Every sentence adds value.

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?

Given the simplicity (2 params, output schema present), the description is complete. It covers both modes and return contents sufficiently for an agent to use correctly.

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 100%, providing baseline 3. The description adds value by explaining the behavior difference when register_name is omitted versus provided, going beyond the schema's brief description.

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 tool returns a full description of a peripheral or specific register, distinguishing two modes based on the presence of register_name. This differentiates it from sibling tools like list_registers or list_fields by combining listing with detailed descriptions and enumerated values.

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 explains the behavior (with/without register_name) but does not explicitly state when to use this tool versus alternatives like pyocd_svd_list_registers or pyocd_svd_list_fields. Usage context is implied but not directly compared.

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

pyocd_svd_list_fieldsA

List all bit fields of a peripheral register, showing name, bit range, width, and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
registerYesRegister name
peripheralYesPeripheral name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only describes the output content but does not state whether the tool reads from the SVD database (not hardware), has side effects, or is read-only. This leaves the agent uncertain about safety and 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.

Conciseness5/5

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

The description is a single front-loaded sentence of 14 words. Every word contributes meaning, with no redundancy or unnecessary detail. It efficiently conveys the tool's purpose.

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 presence of an output schema, the description does not need to detail return values. It adequately covers the tool's scope for listing bit fields. However, it could mention that the peripheral and register must exist in the SVD, but this is not a major gap.

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

Parameters3/5

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

The input schema already provides 100% coverage with descriptions for both parameters ('Peripheral name', 'Register name'). The description adds no additional meaning or context beyond the schema, so it meets the baseline but does not enhance clarity.

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 (list), the resource (bit fields of a peripheral register), and the information returned (name, bit range, width, description). This distinguishes it from sibling tools like pyocd_svd_list_registers, which lists registers, and pyocd_svd_read, which reads register values.

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

Usage Guidelines3/5

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

The description implies usage for inspecting bit-field structure but does not explicitly state when to use this tool over alternatives (e.g., pyocd_svd_read for reading values) or when not to use it (e.g., no SVD attachment). No exclusions or prerequisites are mentioned.

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

pyocd_svd_list_peripheralsA

List all peripherals defined in the attached SVD file.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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, description carries full burden. States it lists all peripherals (read-only), but doesn't disclose requirements (e.g., connected session, attached SVD) or limits. Output schema exists but is not detailed here.

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?

Single sentence with no redundancy. Front-loaded verb and object. Every word 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?

Given the presence of an output schema and zero parameters, the description is minimal but adequate. Lacks mention of prerequisites (e.g., SVD must be attached) that would help an agent use it correctly among many sibling tools.

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?

No parameters exist, and schema coverage is 100%. Description adds no parameter info, which is appropriate. No need to compensate.

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 uses specific verb 'List' and resource 'all peripherals defined in the attached SVD file'. Clearly distinguishes from sibling tools like 'pyocd_svd_list_fields' and 'pyocd_svd_list_registers' which target different elements.

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?

Implies usage for listing peripherals, but no explicit guidance on when to use this vs. other SVD tools, nor prerequisites like attaching an SVD file. Could benefit from stating that the SVD must be attached beforehand.

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

pyocd_svd_list_registersA

List all registers of a specific peripheral.

ParametersJSON Schema
NameRequiredDescriptionDefault
peripheralYesPeripheral name (e.g. 'GPIOA', 'USART1', 'SPI1')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description only states the basic function without disclosing any behavioral traits (e.g., read-only, performance, 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.

Conciseness5/5

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

A single, front-loaded sentence with no unnecessary words. It is concise and to the point.

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?

Simple tool with one required parameter and an output schema (not shown). The description is adequate but could hint at output format. Still reasonably complete.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents the parameter. The description adds no additional meaning beyond the schema, meeting the baseline.

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

Purpose5/5

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

The description clearly states 'List all registers of a specific peripheral,' using a specific verb and resource. It distinguishes from sibling tools like pyocd_svd_list_peripherals and pyocd_svd_list_fields.

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 guidance on when to use or alternatives. The single parameter implies a straightforward context, but no exclusions or why this tool over others are provided.

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

pyocd_svd_readA

Read a peripheral register by name. Returns value with bit-field decoding. Example: pyocd.svd.read('GPIOA', 'IDR') to read GPIO input data register.

ParametersJSON Schema
NameRequiredDescriptionDefault
registerYesRegister name (e.g. 'IDR', 'ODR', 'CR1')
peripheralYesPeripheral name (e.g. 'GPIOA')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Without annotations, the description carries the transparency burden. It states it is a read operation returning decoded values, which is adequate. However, it omits error behavior (e.g., invalid peripheral/register), side effects, or required permissions.

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 two sentences plus an example, with no wasted words. The purpose is front-loaded ('Read a peripheral register by name'), making it immediately scannable.

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 an output schema exists (not shown), the description does not need to detail return format. It adequately explains the read-by-name concept and bit-field decoding. Minor gaps (e.g., error handling, availability of SVD data) prevent a 5.

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?

Both parameters are fully described in the input schema (100% coverage). The description adds an example showing actual parameter values ('GPIOA', 'IDR'), reinforcing usage beyond the schema definitions. This justifies a score above baseline 3.

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 it reads a peripheral register by name and returns value with bit-field decoding, providing a concrete example. It distinguishes from sibling tools like `pyocd_svd_write` (write) and `pyocd_svd_list_registers` (list).

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 offers a usage example but no explicit guidance on when to use this tool versus alternatives (e.g., `pyocd_register_read`, `pyocd_svd_list_registers`). It lacks when-not-to-use or comparison cues, which is a significant gap given the large sibling set.

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

pyocd_svd_set_fieldA

Set a single bit field of a peripheral register using read-modify-write. Only the specified field is changed; other fields are preserved. Example: set_field('GPIOA', 'MODER', 'MODER0', 1) sets pin 0 to output mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesBit field name within the register
valueYesValue to set (integer or enum name string)
registerYesRegister name
peripheralYesPeripheral name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains the read-modify-write behavior and that other fields are preserved, giving sufficient transparency for a write operation. Could mention potential side effects or permissions, but it's adequate.

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 plus an example. Extremely concise and front-loaded: first sentence defines the action and behavior. Every sentence adds value.

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?

Given all required parameters are described, behavior is explained, and an output schema exists (though not shown), the description is complete for its complexity. No missing information needed for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% (each parameter described). The description adds an example but no additional semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action: 'Set a single bit field of a peripheral register using read-modify-write.' It specifies the scope (single field) and provides an example, distinguishing it from siblings like pyocd_svd_write or pyocd_register_write which write entire registers.

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?

Description implies usage for setting a single field without affecting others, but does not explicitly state when to use over alternatives or list when-not to use. No guidance on prerequisites or error conditions.

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

pyocd_svd_update_fieldsA

Set multiple bit fields of a register in a single read-modify-write. Accepts a dict mapping field names to integer values or enum name strings. All fields are updated atomically. Example: update_fields('GPIOA', 'MODER', {'MODER0': 1, 'MODER1': 2})

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesMap of field names to values (integer or enum name)
registerYesRegister name
peripheralYesPeripheral name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Describes the atomic read-modify-write behavior and accepts both integer and enum name values. With no annotations, the description adequately conveys the operation, though it could mention required permissions or error conditions.

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?

Three sentences: purpose, parameter format, example. No superfluous content. Efficient and well-structured.

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?

Given the complexity (multi-field atomic update), the description is sufficiently complete with purpose, input format, and an example. Context signals show output schema exists, so return values are covered elsewhere.

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?

Adds meaning beyond schema by explaining the dict format and providing an example. Schema already covers each parameter, but the description clarifies usage with enum strings.

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?

Clearly states it sets multiple bit fields of a register atomically via a read-modify-write. Distinguishes from sibling tools like pyocd_svd_set_field (single field) and pyocd_register_write (direct write) by emphasizing atomic multi-field update.

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?

Provides an example implying usage but does not explicitly state when to use this tool over alternatives or give exclusion criteria. No guidance on 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.

pyocd_svd_writeB

Write a value to a peripheral register by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesValue to write (integer)
registerYesRegister name
peripheralYesPeripheral name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states 'write', implying mutation, but fails to mention side effects, permissions, or whether a connection 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?

Single concise sentence with no unnecessary words. Front-loaded and efficient.

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?

Basic write operation is described, but missing context on prerequisites like SVD attachment or session state. Output schema exists, so return values need not be detailed.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are clear, but the tool description adds no extra meaning beyond the schema. Baseline is 3.

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 clearly states 'write' verb and 'peripheral register' resource, and specifies 'by name'. However, it does not differentiate from similar tools like pyocd_svd_set_field or pyocd_register_write, which also write to registers.

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 on when to use this tool versus alternatives such as pyocd_memory_write or pyocd_svd_set_field. No prerequisites or context are mentioned.

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

pyocd_target_haltA

Halt (pause) the target CPU immediately. Returns current PC.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations present, so description must carry burden. It mentions 'immediately' and return of PC, but lacks details on side effects (e.g., CPU state changes, impact on breakpoints, or whether reconnection needed). Adequate but not comprehensive.

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?

Extremely concise: one sentence, front-loaded action and return. No filler words.

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 zero-parameter, simple tool with output schema present, the description is mostly complete. However, missing usage context (e.g., when to use vs wait_halt) slightly lowers completeness.

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?

No parameters in schema, so baseline is 4. Description adds no parameter info, but there is none to add. Schema coverage is 100%.

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 tool halts/pauses the target CPU immediately and returns the PC, with a specific verb and resource. It differentiates from sibling 'pyocd_target_wait_halt' by emphasizing immediate halt.

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 on when to use this tool versus alternatives like pyocd_target_wait_halt, or prerequisites. The description is limited to what it does, not when it's appropriate.

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

pyocd_target_list_supportedA

List all MCU targets supported by pyocd (206+ built-in targets). Includes HC32, STM32, NXP, Nordic, Cypress and more. Use filter_text to search (e.g. 'hc32', 'stm32f4').

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_textNoFilter targets by name (case-insensitive)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions the tool is non-destructive (listing), but does not explicitly state read-only or safety. The behavioral transparency is adequate for a simple list tool but could be more explicit.

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, each well-justified: first states purpose and scope, second provides usage example. No wasted words, front-loaded with primary action.

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?

Given the tool's simplicity (one optional parameter, no nested objects, output schema present), the description is complete. It explains what the tool does, its scope, and how to use the filter. No gaps.

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 100% for the single parameter. The description adds value with concrete filter examples, improving the agent's understanding beyond the schema's 'Filter targets by name (case-insensitive)'.

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 it lists all MCU targets supported by pyocd, mentions the count (206+), and specific families (HC32, STM32, NXP, etc.), distinguishing it from sibling tools which are about debugging, memory, flash, etc.

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 explicit usage guidance: 'Use filter_text to search (e.g. 'hc32', 'stm32f4')'. It does not explicitly state when not to use, but the context and sibling names make it clear this is for discovery of supported targets.

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

pyocd_target_resetA

Reset the target MCU. By default resets and halts at the entry point.

ParametersJSON Schema
NameRequiredDescriptionDefault
halt_afterNoHalt after reset (default True)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Since no annotations are provided, the description bears full burden. It discloses the default halt behavior, which is critical for a reset operation. It does not detail side effects or prerequisites, but for a simple boolean-parameter tool, this is sufficient.

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 two sentences with no extraneous words. Information is front-loaded: first sentence states the action, second clarifies default behavior.

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

Completeness4/5

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

For a tool with one boolean parameter and an output schema, the description covers the core action and default. It omits any mention of return values, but an output schema exists, so that's acceptable. It could mention when the target halts after reset.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description includes the default behavior ('resets and halts') which maps to the 'halt_after' parameter default, but does not add new meaning beyond the 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 'Reset the target MCU' with a specific verb and resource, and adds default behavior 'resets and halts at the entry point', distinguishing it from sibling tools like pyocd_target_halt or pyocd_target_resume.

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

Usage Guidelines3/5

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

The description implies usage when resetting is needed, but does not explicitly compare to alternatives or state when not to use. Given many sibling tools, more guidance on when to prefer this over sequences of other tools would be helpful.

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

pyocd_target_resumeA

Resume target execution (run until next breakpoint or halt).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

The description discloses that execution runs until a breakpoint or halt, but does not mention behavior if no breakpoints are set (e.g., indefinite run) or error handling. Since no annotations exist, the description carries the full burden but provides minimal behavioral context.

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 zero wasted words. Every word adds value.

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

Completeness4/5

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

The description is sufficient for a simple resume action, especially given an output schema exists. However, it could briefly mention typical usage context (e.g., after pyocd_target_halt) to improve completeness.

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?

There are no parameters, so schema coverage is 100%. The description does not need to add parameter info. Baseline for 0 parameters is 4, and no additional detail is necessary.

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 'Resume target execution' and explains it as 'run until next breakpoint or halt'. It effectively distinguishes from sibling tools like pyocd_target_halt and pyocd_target_step.

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

Usage Guidelines3/5

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

The description implies usage (e.g., after halting) but does not explicitly state when to use it or provide alternatives. No guidance on when not to use it is given.

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

pyocd_target_statusA

Get current target state (halted/running) and key registers if halted.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations are provided, so the description must fully disclose behavior. It states it returns state and registers conditionally, but does not specify which 'key registers' or any side effects. It implies a read-only operation.

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

Conciseness5/5

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

The description is a single sentence that directly conveys the tool's action and output. No extraneous words; the key information 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?

With no parameters and an output schema present, the description covers the essential behavior. However, 'key registers' is somewhat vague; more specificity or a reference to the output schema would improve completeness.

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?

There are no parameters, so the description does not need to add schema detail. However, it adds meaning by specifying the conditional return of registers if halted, which goes beyond the schema's empty parameter list.

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 verb 'Get', the resource 'current target state', and the conditional output 'key registers if halted'. It effectively differentiates from sibling tools like pyocd_target_halt and pyocd_target_resume.

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/when-not or alternatives are provided. While the purpose is clear from context, the description does not guide the agent on when to use this over other debug tools, e.g., 'Use before halt to check current state.'

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

pyocd_target_stepA

Single-step the target CPU. Target must be halted first.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of instruction steps (default 1)

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?

No annotations, so description must disclose behavioral traits. It correctly states prerequisite and implies single-stepping, but does not cover error behavior if not halted or side effects like changes to CPU registers.

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, no unnecessary words. Front-loaded with action, then prerequisite. Extremely efficient.

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?

Output schema exists, so return values not needed. Description covers action and critical prerequisite. Simple tool, sufficient completeness.

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

Parameters3/5

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

Schema covers 100% of parameter description with default value. Description does not add additional semantic meaning beyond the 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?

Clear verb 'single-step' with specific resource 'target CPU'. Distinguishes from sibling tools like resume or halt. Includes prerequisite that adds context.

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?

States prerequisite 'Target must be halted first', giving clear usage context. Does not explicitly list alternatives, but the prerequisite guides appropriate use.

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

pyocd_target_step_outA

Execute until the current function returns (step out). Sets a temporary breakpoint at the LR (return address), resumes, waits for the breakpoint hit, then cleans up. Returns the new position after returning from the function.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoMax seconds to wait for return (default 10)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations provided; the description carries the full burden. It explains the internal steps: sets temporary breakpoint at LR, resumes, waits for hit, cleans up, and returns new position. However, it fails to describe behavior on timeout (e.g., error, return, or exception).

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 three sentences, front-loaded with the purpose, and each sentence adds value. It is concise but could be slightly more streamlined.

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 simplicity (1 param, output schema exists), the description covers the main flow and return value. However, missing timeout behavior and error handling slightly reduce completeness.

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

Parameters3/5

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

Schema description coverage is 100% (timeout parameter fully described in schema). The description adds no extra meaning beyond the schema, only indirectly referencing the wait. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'Execute until the current function returns (step out)'. It distinguishes from sibling tools like pyocd_target_step by specifying the step-out behavior and mechanism.

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

Usage Guidelines3/5

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

The description implies usage (when to return from a function) but does not explicitly state when to use versus alternatives like pyocd_target_step or pyocd_target_resume. No 'when not to use' or alternative names are provided.

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

pyocd_target_wait_haltA

Resume target execution and wait for it to halt (breakpoint hit, watchpoint triggered, or manual halt). This is the KEY tool for 'set breakpoint → run → wait for hit → inspect' debugging workflow. Returns halt reason, PC, and registers when the target stops. Sends progress notifications to prevent AI client timeouts during long waits. Automatically includes a compact backtrace (top 4 frames) showing the call chain when halted. Also detects CPU LOCKUP state (double fault) immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoMax seconds to wait (default 30)
user_hintNoMessage to include in progress notifications (e.g. 'Please send serial data now')
resume_firstNoResume target before waiting (default True)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden and excels by disclosing multiple behaviors: progress notifications to prevent timeouts, automatic backtrace inclusion, CPU LOCKUP detection, and return details (halt reason, PC, registers).

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 three sentences, concise and well-structured. It front-loads the core purpose, then details workflow, returns, and special features. No unnecessary words.

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?

Given that an output schema exists (per context), the description adequately covers return values and special behaviors. It provides enough information for an AI agent to understand the tool's complete functionality and usage.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description mentions progress notifications (related to 'user_hint') but does not add significant new meaning beyond what the schema already describes for each parameter.

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 tool's action ('Resume target execution and wait for it to halt') and the specific debugging workflow it supports ('set breakpoint → run → wait for hit → inspect'). It distinguishes itself from sibling tools like pyocd_target_halt and pyocd_target_resume by focusing on waiting for a halt event.

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

Usage Guidelines4/5

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

It explicitly describes the tool as the 'KEY tool' for a common debugging workflow, providing clear context for when to use it. However, it does not explicitly state when not to use it or contrast with alternatives, though the context strongly implies its role.

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

pyocd_watchpoint_clearB

Remove a watchpoint at the given address.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesWatchpoint address to clear (integer or hex string)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose side effects, error behavior, or any operational constraints beyond the basic action. Minimal behavioral insight.

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?

Single sentence is very concise with no extraneous information. However, it could be structured to include more detail without losing conciseness.

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 watchpoint removal tool with output schema, the description is functional but lacks details on return values, error scenarios, or idempotency.

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?

Description adds no extra meaning beyond the input schema's parameter description (which already fully documents the address). Schema coverage is 100%, so baseline is 3.

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 ('Remove') and target ('a watchpoint at the given address'), and distinguishes from sibling tools like 'clear_all' or 'set'.

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 on when to use this tool versus alternatives like clear_all or list. The description does not provide context for selection.

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

pyocd_watchpoint_clear_allA

Remove all active watchpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the basic action without mentioning side effects, required permissions, or behavior when no watchpoints exist. Minimal transparency.

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 a single sentence that is concise and to the point. However, it could benefit from front-loading additional context, though it earns high marks for brevity.

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 the tool has no parameters and an output schema exists, the description provides minimal context. It explains the purpose but does not cover what the output indicates or the impact on the debug session, leaving some gaps.

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?

No parameters exist, and schema coverage is 100%, so the description need not add parameter details. The description fully captures the action with no ambiguity.

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 'Remove all active watchpoints' specifies the action (remove) and the resource (all active watchpoints), clearly distinguishing it from siblings like pyocd_watchpoint_clear which clears a single watchpoint.

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, but the sibling names imply it is for clearing all watchpoints at once. Lacking explicit guidance on 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.

pyocd_watchpoint_listA

List all active watchpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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?

No annotations are provided, so the description carries the burden. It accurately states the tool lists watchpoints (a read operation), but lacks details such as potential side effects or ordering. For a simple list tool, this is adequate but not more.

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 concise sentence with no wasted words. It is appropriately sized for a tool with no parameters.

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

Completeness4/5

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

Given the tool has no parameters and an output schema exists, the description is sufficient for understanding its core purpose. It could potentially mention that it only lists watchpoints set via these tools, but overall it's 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?

There are no parameters, so the schema coverage is 100%. The description does not need to add parameter information. Baseline 4 applies.

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

Purpose5/5

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

The description states the verb 'list' and the resource 'active watchpoints' clearly. It distinguishes the tool from sibling tools like set, clear, and clear_all, 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 description implies usage when needing to view active watchpoints but does not provide explicit guidance on when to use this tool versus alternatives. No when-not or context exclusions are mentioned.

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

pyocd_watchpoint_setA

Set a hardware watchpoint (data breakpoint). Triggers a halt when the target reads/writes a specific memory address. Essential for catching wild pointers, buffer overflows, and unexpected memory writes. Cortex-M4 typically has 4 DWT comparators available.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoWatched region size: 1, 2, or 4 bytes
addressYesMemory address to watch (integer or hex string)
access_typeNo'write' (default), 'read', or 'read_write'write

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?

No annotations present, so description must cover behavioral traits. It explains the halt trigger and hardware limit (4 DWT comparators) but omits details like persistence, overlapping, or side effects on target state.

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?

Three concise sentences that front-load the main purpose and include relevant technical context without extraneous text.

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 schema coverage is full and output schema exists, the description is mostly complete. It lacks mention of return value or error states, but the output schema fills that gap.

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

Parameters3/5

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

Schema covers all parameters with descriptions; baseline is 3. The description adds no further parameter details beyond the 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 it sets a hardware watchpoint (data breakpoint) that triggers a halt on read/write to a specific address, distinguishing it from breakpoints and other tools.

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?

Provides use cases like catching wild pointers and buffer overflows, but does not explicitly mention when not to use or alternatives like software breakpoints.

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. 58 tool updatesv0.1.0
    • First observedpyocd_breakpoint_clear
    • First observedpyocd_breakpoint_clear_all
    • First observedpyocd_breakpoint_list
    • First observedpyocd_breakpoint_set
    • First observedpyocd_debug_backtrace
    • First observedpyocd_debug_fault_analyze
    • First observedpyocd_debug_sample_variable
    • First observedpyocd_debug_stack_overflow_check
    • First observedpyocd_elf_address_to_symbol
    • First observedpyocd_elf_attach
    • First observedpyocd_elf_info
    • First observedpyocd_elf_lookup
    • First observedpyocd_elf_symbols
    • First observedpyocd_flash_erase
    • First observedpyocd_flash_program
    • First observedpyocd_flash_verify
    • First observedpyocd_memory_dump
    • First observedpyocd_memory_read
    • First observedpyocd_memory_write
    • First observedpyocd_memory_write_block
    • First observedpyocd_probe_info
    • First observedpyocd_probe_list
    • First observedpyocd_project_init
    • First observedpyocd_project_load
    • First observedpyocd_read_symbol
    • First observedpyocd_register_read
    • First observedpyocd_register_read_all
    • First observedpyocd_register_write
    • First observedpyocd_rtt_read
    • First observedpyocd_rtt_start
    • First observedpyocd_rtt_status
    • First observedpyocd_rtt_stop
    • First observedpyocd_rtt_write
    • First observedpyocd_session_connect
    • First observedpyocd_session_disconnect
    • First observedpyocd_session_status
    • First observedpyocd_svd_attach
    • First observedpyocd_svd_attach_builtin
    • First observedpyocd_svd_describe
    • First observedpyocd_svd_list_fields
    • First observedpyocd_svd_list_peripherals
    • First observedpyocd_svd_list_registers
    • First observedpyocd_svd_read
    • First observedpyocd_svd_set_field
    • First observedpyocd_svd_update_fields
    • First observedpyocd_svd_write
    • First observedpyocd_target_halt
    • First observedpyocd_target_list_supported
    • First observedpyocd_target_reset
    • First observedpyocd_target_resume
    • First observedpyocd_target_status
    • First observedpyocd_target_step
    • First observedpyocd_target_step_out
    • First observedpyocd_target_wait_halt
    • First observedpyocd_watchpoint_clear
    • First observedpyocd_watchpoint_clear_all
    • First observedpyocd_watchpoint_list
    • First observedpyocd_watchpoint_set

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose within its category (breakpoints, debug analysis, ELF, flash, memory, probes, project, RTT, session, SVD, target, watchpoints). Descriptions are detailed and unique, preventing confusion.

Naming Consistency5/5

All tool names follow a consistent pyocd_<category>_<action> pattern in snake_case, e.g., pyocd_breakpoint_set, pyocd_debug_backtrace. The convention is uniform across all 58 tools.

Tool Count3/5

The server has 58 tools, which is high for an MCP server. While the domain (embedded debugging) is broad and each tool serves a specific function, this count is on the heavy side and may be overwhelming, slightly exceeding the ideal range.

Completeness5/5

The tool surface covers the complete debugging workflow: breakpoints, watchpoints, flash programming, memory/register access, SVD peripherals, RTT, project config, and target control. No obvious gaps for typical debug operations.

Maintenance

ActivityInactive
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

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI to directly control SEGGER J-Link embedded debug probes via the Model Context Protocol for debugging and firmware management. Users can perform tasks like reading registers, analyzing memory, flashing firmware, and tracking RTT logs using natural language commands.
    21
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI agents to debug embedded systems by providing a comprehensive interface for GDB operations across multiple architectures like ARM and x86. It supports remote debugging via gdbserver or QEMU, allowing for detailed inspection of memory, registers, stack frames, and variables.
    31
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants like Claude to directly debug microcontrollers via JLink, supporting breakpoints, single-step, memory/register access, variable inspection, RTT logging, and firmware flashing.
    25
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to debug ARM Cortex-M targets via GDB and OpenOCD, supporting attach, breakpoints, stepping, register/memory inspection, and SVD peripheral decoding.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/konbakuyomu/pyocd-debug-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server