Skip to main content
Glama
cunjun
by cunjun

McuBuddy — AI-Powered MCU and Embedded Firmware Debugging MCP Server

Python MCP License

Languages: English | 中文

Extend AI from firmware analysis to real MCUs, closing the loop across diagnosis, code changes, build, flashing, and validation in verified environments.

McuBuddy is a Model Context Protocol (MCP) server for MCU board-level debugging. It exposes debug probes, Keil MDK projects, ELF/DWARF symbols, CPU and memory state, SVD peripheral registers, UART/RTT logs, FreeRTOS state, Flash operations, and GDB servers as structured tools that AI assistants can call.

It is designed for firmware development, board bring-up, fault isolation, debugging automation, and AI-assisted validation.

McuBuddy starts with 19 stable tools in the default toolset. Add only the domains a workflow needs with MCUBUDDY_TOOLSETS=probe,diagnose (available domains: probe, diagnose, build_flash, rtos, logs, and experimental). The core profile is the only profile; startup toolset selection is explicit and immutable.

IMPORTANT

Automation does not replace engineering responsibility. Humans remain responsible for goals and acceptance criteria, wiring and power safety, high-risk operation approval, code review, and new environment validation. Motors, relays, and other safety-related devices also require recovery plans and independent protection.

Quick links: Quick Start · Project Guide · Tool Reference · Support Matrix

✨ Key Features

  • Real-hardware debugging: Discover and connect to ST-Link, J-Link, CMSIS-DAP, and other probes; control target execution; and inspect registers, memory, breakpoints, and watchpoints.

  • Keil project workflow: Discover .uvprojx / .uvproj files, select a target, invoke Keil MDK through UV4.exe for builds or downloads, and feed the generated AXF/ELF into debugging.

  • Source-level fault diagnosis: Use ELF/DWARF data to resolve addresses to functions, source lines, local variables, and call stacks when investigating HardFaults, startup failures, stack overflows, and memory corruption.

  • Peripheral and RTOS inspection: Decode peripheral registers through CMSIS-SVD and inspect FreeRTOS tasks, task contexts, and stack usage.

  • Logs and runtime observability: Read UART, RTT, and selected J-Link SWO logs, and manage pyOCD/J-Link GDB server lifecycles.

  • Evidence-driven results: Return structured target, state, and validation evidence so AI can continue an investigation instead of guessing code changes from symptoms alone.

  • Actionable hardware boundaries: Distinguish MCU limitations, firmware-inapplicable tools, configuration problems, tool failures, and insufficient evidence, including impact and the next safe check so unsupported paths are not debugged as firmware defects.

Related MCP server: JLink MCP Server

🏗️ How It Works

flowchart LR
    AI["AI Client<br/>Codex / Claude Code"] --> MCP["McuBuddy<br/>MCP Server"]
    MCP --> EB["Execution Boundary<br/>Serialized Session"]
    EB --> TOOLS["Debugging Tools<br/>Diagnostics / Symbols / SVD / RTOS / Logs"]
    TOOLS --> KEIL["Keil MDK / UV4.exe<br/>Build / Optional Download"]
    TOOLS --> PROBE["Probe Backends<br/>pyOCD / J-Link / probe-rs"]
    KEIL --> IMAGE["AXF / ELF / HEX / BIN"]
    IMAGE --> TOOLS
    PROBE --> BOARD["Real MCU Board"]

MCP is not a protocol for invoking Keil. The AI calls McuBuddy through MCP; McuBuddy then uses Keil MDK through UV4.exe, pyOCD, J-Link, or another internal backend as required.

🚀 Quick Start

1. Prerequisites

Basic requirements:

  • Python 3.10 or later;

  • a powered MCU development board;

  • a correctly connected ST-Link, J-Link, or CMSIS-DAP probe;

  • the target chip name;

  • preferably, an ELF/AXF image containing debug information.

Keil build and download features require Windows with Keil MDK installed. McuBuddy invokes µVision through UV4.exe, including in Keil MDK v5 installations.

2. Installation

pip install "McuBuddy @ git+https://github.com/cunjun/McuBuddy.git"

This installs McuBuddy once for all local firmware projects. Do not clone or copy the McuBuddy repository into each target project. McuBuddy is a local-only MCP backend: the client starts one stdio process per connection, and McuBuddy does not expose HTTP, SSE, WebSocket, or another MCP network listener.

The target project, Keil installation, ELF/SVD files, probe, and serial port must be directly visible to the machine running McuBuddy. To update, reinstall from the official repository at https://github.com/cunjun/McuBuddy; McuBuddy never checks for, downloads, or installs updates automatically.

Install the optional dependency when using the J-Link Python backend:

pip install "McuBuddy[jlink]"

For development from source:

git clone https://github.com/cunjun/McuBuddy.git
cd McuBuddy
pip install -e ".[dev]"

3. Configure an MCP Client

{
  "mcpServers": {
    "McuBuddy": {
      "command": "McuBuddy",
      "args": []
    }
  }
}

For a Windows source checkout, explicitly configure the virtual-environment Python executable and working directory. See Installation and First Connection, then restart the AI client.

4. Run a First Read-Only Check

After connecting the probe and powering the board, tell the AI:

Use McuBuddy to inspect the current debugging environment, discover connected probes,
and perform a first read-only check of the board without writing Flash.
Before starting, tell me what information is still missing.

The recommended sequence is to check the environment and target first, then configure the probe and read the minimum target state:

doctor()
list_connected_probes()
match_chip_name("py32f030x8")
configure_probe(target="py32f030x8", backend="pyocd")
probe_connect(target="py32f030x8")
read_stopped_context()

probe_connect and read_stopped_context are available in the default core profile. Reading a stable stopped context may halt the target, so it is still execution-changing. If the device must not be halted, instruct the AI to perform only non-intrusive probe and environment checks.

💬 Automated Debugging Example

Use McuBuddy to debug <project path>. The MCU is <exact model>, and the probe is
<ST-Link/J-Link/CMSIS-DAP>. First collect board-level evidence and locate the problem. After
authorization, modify the code, build and flash it, then validate the result on the real board.

For the evidence-first decision order and common scenarios, see Common Debugging Workflows.

🧰 Backends and Hardware Validation

Path

Current Role

Main Capabilities

pyOCD + ST-Link/CMSIS-DAP

Primary backend

Control, memory, Flash, source debugging, RTT, RTOS, and GDB server

J-Link

Primary backend

Control, memory, Flash, source debugging, native RTT, DWT, and GDB server

probe-rs sidecar

Extended preview

ARM/RISC-V/Xtensa discovery, configurable core control, registers, memory, hardware breakpoints, Flash, and RTT

Keil MDK (Windows, via UV4.exe)

Build/download backend

Project discovery, target configuration, build, logs, and optional download; supports MDK v5 installations

Primary validation coverage includes:

  • STM32L496VETx + ST-Link / pyOCD;

  • STM32F103C8 + J-Link;

  • built-in target preflight profiles for STM32F103ZE and PY32F030X8.

“Implemented in code” does not mean “validated on every board.” Use the Support Matrix and list_validation_records() as the source of truth.

🛡️ Safety Model

McuBuddy provides machine-readable safety classifications through list_tool_safety().

Category

Examples

Default Requirement

Read-only

Target matching, register/memory reads, symbol resolution, logs, diagnostics

No confirmation required

Execution-changing

halt, resume, reset, continue, stepping

Does not write Flash, but changes execution state

Runtime-state write

Memory/register writes, breakpoints, watchpoints, SVD field writes

Explicit confirmation

Persistent destructive operation

Flash erase/program, Keil firmware download

Explicit confirmation

Host process

Keil build, GDB server start/stop

Starts or stops a local process

Safety principles:

  1. For an unknown target, match the chip and probe first; do not guess addresses.

  2. Read evidence before halting, resetting, or writing.

  3. Before a Flash operation, confirm the target, scope, image, and recovery method.

  4. For motors, relays, power switches, and other actuators, prefer breakpoints and low-energy tests.

  5. Send actuator commands with uart_send_with_cleanup, then call finish_debug_session before returning a final conclusion. Server shutdown repeats the same idempotent cleanup as a fallback.

🔒 Sessions and Concurrency

  • Operations that share probe, Keil, ELF/SVD, log, and runtime configuration are serialized within the same Session.

  • Different sessions can run concurrently when they control unrelated boards.

  • Stateless queries such as target matching and tool safety information can run alongside session operations.

  • Cancellation cannot forcibly terminate a call that has entered a synchronous SDK. The server waits for the worker thread to finish before releasing the session lock.

This prevents one request from switching backends, disconnecting the probe, or changing shared state while another probe operation is still running.

📦 mcubuddy Skill

The repository includes skills/mcubuddy, which guides Codex and Claude Code to use these tools in an “evidence first, judgment second” sequence instead of treating MCP tools as an unordered command list.

The Skill is an optional workflow enhancement, not a prerequisite for hardware debugging. A correctly installed and configured local McuBuddy MCP server remains fully usable without it.

Installed releases bundle the Skill. Register the persistent Codex integration without cloning the repository:

uv tool install McuBuddy
McuBuddy setup codex --confirm --json

Install for Codex:

python .\skills\mcubuddy\scripts\install_skill.py --target codex --overwrite

Install for Claude Code:

python .\skills\mcubuddy\scripts\install_skill.py --target cc --overwrite

Restart the client or open a new session after installation. For source-checkout recovery, installation registration, and usage boundaries, see Boundaries Between McuBuddy, MCP, and the Skill for details.

⚠️ Current Limitations

  • Keil build and download currently require Windows with Keil MDK and invoke µVision through UV4.exe, including in MDK v5 installations.

  • The probe-rs sidecar covers Flash and RTT but still requires target-specific real-board validation and does not yet have an official binary release.

  • RTOS inspection depends on FreeRTOS symbols and an ELF/AXF that match the target firmware.

  • SVD files are not bundled automatically for every chip and usually come from a CMSIS-Pack or the chip vendor.

  • SWO text capture depends on chip configuration, probe capabilities, pin multiplexing, and board wiring.

  • Device patches and connection strategies remain lightweight mechanisms rather than a complete board plugin system.

📚 Documentation

🧪 Local Development

pip install -e ".[dev]"
pytest
ruff check src tests

See the Project Guide for repository layout and documentation ownership.

🙏 Upstream and Acknowledgements

McuBuddy is based on SolarWang233/mcudbg and continues its MIT-licensed work with additional architecture, safety boundaries, evidence workflows, backend support, and documentation. The original copyright notice is preserved in LICENSE, with provenance details in NOTICE.

📄 License

This project is licensed under the MIT License. See LICENSE for details.


If McuBuddy helps with your MCU debugging workflow, consider giving the project a Star. If you have suggestions, open an Issue or email zhou229449@gmail.com.

Available Tools

19 tools
configure_elfB

Set the ELF/AXF file path for symbol resolution.

ParametersJSON Schema
NameRequiredDescriptionDefault
elf_pathYes

TDQS

B3.3/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 behavioral disclosure burden. It only states the action, not whether the setting persists, affects other commands, validates the path, or overwrites previous values. This leaves important behavioral traits undisclosed.

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

Conciseness5/5

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

The description is a single, concise sentence that directly states the tool's purpose. It contains no redundant information and is well-structured for quick understanding.

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 one-parameter setter with no output schema and no annotations, the description provides sufficient purpose and parameter context, but it lacks usage guidelines and behavioral side effects. It is adequate but not comprehensive, leaving gaps that an agent would need to infer.

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

Parameters3/5

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

The schema has zero description coverage for the one parameter. The description adds context by mentioning that the path can be ELF or AXF and is for symbol resolution, but it does not explain the expected format, path rules, or how the parameter value is used beyond the schema's property name.

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 ('Set') and the specific resource ('ELF/AXF file path') and purpose ('for symbol resolution'). It distinguishes from sibling tools like configure_probe, configure_log, and configure_keil_project by specifying the exact file type and role.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention prerequisites, contexts, or when not to use it. The purpose implies usage, but without explicit exclusions or alternative references, the guidance is absent.

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

configure_probeB

Set probe connection parameters. Run list_connected_probes first to find unique_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
backendNo
pack_pathNo
unique_idNo
pack_pathsNo
jlink_dll_pathNo
connect_attemptsNo
probe_rs_speed_khzNo
probe_rs_core_indexNo
probe_rs_sidecar_pathNo
probe_rs_wire_protocolNo
probe_rs_halt_on_connectNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the intent and a prerequisite, but does not mention whether this tool modifies persistent state, requires special permissions, what side effects occur, or whether it implicitly connects to the probe. This is a significant gap for a configuration 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 two sentences, front-loaded with the core purpose and followed by a precise instruction. Every sentence earns its place; no filler or redundancy.

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?

A tool with 12 optional parameters, no annotations, and no output schema requires more detailed context to be fully understood. The description only hints at the workflow (listing probes first) but doesn't explain the configuration scope, whether changes are persistent, or what a successful configuration looks like. The description is too sparse for the tool's complexity.

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

Parameters2/5

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

The input schema has 12 parameters with 0% description coverage, so the description must compensate by explaining parameter meanings. The only parameter mentioned is unique_id, which is correctly identified as a value from list_connected_probes. All other parameters (target, backend, pack_path, connect_attempts, etc.) remain unexplained in both schema and description.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Set probe connection parameters.' This is a specific verb+resource combination that indicates configuration of probe connection settings. It doesn't explicitly distinguish from sibling tools like probe_connect, but the focus on 'parameters' sets it apart as a configuration step rather than a connection action.

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 prerequisite: 'Run list_connected_probes first to find unique_id.' This gives the user actionable guidance on when to use the tool relative to a sibling tool. It doesn't mention alternatives or exclusions, but the context is sufficient for a straightforward configuration step.

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

disconnect_allD
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

doctorB

Run a read-only environment, dependency, probe, target, and config preflight.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

The description explicitly states 'read-only', which is a valuable behavioral disclosure given that no annotations are provided. It also lists the areas covered (environment, dependency, probe, target, config). However, it does not describe what the tool returns, whether it requires an active connection, or what constitutes a 'pass/fail', leaving some behavioral ambiguity.

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 entire description is a single, compact sentence that front-loads the verb and read-only nature. It wastes no words, though the list of five target areas could be seen as slightly dense. Still, it is appropriately concise for a simple no-argument tool.

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 no output schema, the description gives a reasonable sense of scope. However, it fails to describe what the preflight output is (report? exit codes? logs?) or when the user should interpret results. For a diagnostic tool, that missing context makes it only partially complete.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing to explain beyond the schema. The baseline for 0 params is 4, and the description appropriately focuses on the tool's scope rather than parameter details. No credit is lost here.

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

Purpose4/5

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

The description uses the specific verb 'Run' and clearly identifies a preflight operation covering environment, dependency, probe, target, and config aspects. This distinguishes it from sibling tools like 'probe_connect' or 'get_target_info' by focusing on a holistic read-only diagnostic. However, 'preflight' is not defined in detail, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description implies a pre-flight check that should be run before other actions (like build/flash), but it provides no explicit guidance on when to use this tool or how it relates to alternatives such as 'pack_diagnose' or 'collect_crash_evidence'. There are no stated exclusions or prerequisites.

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

elf_loadD
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

finish_debug_sessionB

Stop registered actuators, reset and run the target, then disconnect.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the main actions (stopping actuators, resetting, running, disconnecting) but omits prerequisites, reversibility, or broader side effects (e.g., clearing breakpoints). The core behavior is stated, but depth is lacking.

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

Conciseness5/5

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

A single sentence that clearly lists the operation sequence is highly concise and front-loaded. No wasted words; every element contributes to the meaning.

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 the name, the description does not explicitly state this finishes a debug session or indicate when it should be used. Given the sibling tools, an agent may struggle to choose this over disconnect_all. The lack of context on invocation scenarios is a significant gap.

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 and the schema is fully covered (empty schema). The baseline for 0-param tools is 4, and since there is nothing to explain, the description adds no parameter info but also needs none.

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 sequence (stop, reset, run, disconnect) with a clear resource (the target). It distinguishes from siblings like disconnect_all, which only disconnects, and read_stopped_context, which reads. The purpose is explicit and non-tautological.

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

Usage Guidelines1/5

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

No guidance is given on when to use this tool versus alternatives. The description does not mention session termination, prerequisites, or conditions. An agent cannot infer when this is the correct choice over disconnect_all or other tools.

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

first_contactC

Run the safest first board contact flow and suggest next debug tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
backendNopyocd
elf_pathNo
pack_pathNo
unique_idNo
pack_pathsNo
disconnect_afterNo

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosure. The word 'safest' implies non-destructive operation, but there is no explicit statement about read-only behavior, connection lifecycle, or data returned.

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 with clear action, no unnecessary words. It is concise and front-loaded, though perhaps too sparse for the tool's complexity.

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?

For a tool with 7 parameters, no output schema, and no annotations, the description is under-specified. It fails to describe what the 'first board contact' flow does, what the return value looks like, or how parameters affect behavior.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no explanation of the 7 parameters. The required 'target' field is undefined, and optional parameters like backend, pack_path, and unique_id are not described.

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

Purpose4/5

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

The description clearly states it runs a 'first board contact flow' and suggests next debug tools, giving a specific action and outcome. It is distinct from low-level probe tools but could be more explicit about what the flow entails.

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 it is for the initial contact with a board ('first contact') and that it will suggest next steps, indicating when to use it. However, it does not name alternatives or state when not to use other connection or flashing tools.

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

get_runtime_configD
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

get_target_infoC

Return alias-match and device-patch info for a target on a given backend.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
backendNopyocd

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Return' without clarifying whether this is a read-only operation, potential side effects, required permissions, or error behavior. The lack of such context is a significant gap for a tool interacting with a backend.

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, concise sentence with no filler or repetition. The action is front-loaded ('Return') and the structure is scannable. It is appropriately sized for the tool's simplicity, though extremely brief.

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 no output schema and no annotations, the description is incomplete. It fails to explain what 'alias-match' and 'device-patch' mean, what the returned info looks like, or when this tool would be used in a debugging flow. The jargon and missing behavioral context leave the agent under-informed.

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

Parameters2/5

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

The schema has zero description coverage (0%), and the description does not compensate. While 'target' and 'backend' are implicitly mentioned ('for a target on a given backend'), no details are provided about valid values, formats, or the meaning of 'backend' beyond the default. This leaves the agent guessing about parameter usage.

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 ('Return') and the specific resource ('alias-match and device-patch info for a target on a given backend'), which distinguishes it from sibling tools like 'match_chip_name'. However, the domain-specific terms 'alias-match' and 'device-patch' are not further explained, leaving some ambiguity for unfamiliar users.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention use cases, exclusions, or relationships with sibling tools, so an agent receives no help in selecting this over another tool.

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

inspect_project_memoryC

Read target-project memory or prepare a read-only onboarding proposal.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNo
target_rootYes
current_rootNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the 'read-only' nature and the preparation of an onboarding proposal, which is helpful. However, it does not explain side effects, parameter-driven behavior, or output details beyond that proposal, leaving significant gaps.

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

Conciseness3/5

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

The description is succinct and front-loads the main verb, but the 'or' clause is structurally awkward and the extreme brevity omits necessary context. It is not overly verbose but under-specifies, making it less useful than a more balanced length.

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?

For a tool with 3 parameters, no annotations, and no output schema, the description is too minimal to provide complete guidance. It does not cover parameter semantics, return values, or when to use vs. alternatives, leaving the agent to guess. The context of many sibling tools further increases the need for more detail.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the three parameters (target_root, max_depth, current_root). The agent must infer their meaning from titles alone, which is insufficient for correct invocation.

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

Purpose4/5

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

The description uses a specific verb ('Read') and resource ('target-project memory'), making the primary purpose clear. However, the disjunctive 'or prepare a read-only onboarding proposal' introduces ambiguity about whether it performs two distinct actions, and it only partially distinguishes from the sibling write_project_memory by noting 'read-only'.

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

Usage Guidelines3/5

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

The description implies use for read-only inspection and onboarding but does not explicitly state when to prefer this tool over siblings such as write_project_memory or other inspection tools. No exclusions are provided, making the usage context somewhat vague.

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

list_connected_probesA

List all probes currently connected to this machine. Start here if unsure what probe to use.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 burden. It states a read-only listing operation, but does not explicitly mention side-effect-free behavior or any prerequisites. For a simple list operation, this is adequate but not rich in behavioral disclosure.

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 just two short sentences with no wasted words. Each sentence adds value: the first states the action and scope, the second gives usage guidance.

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, no-output-schema discovery tool, the description is functionally complete. It states what is listed, the scope, and when to use it, and the sibling context confirms this is a simple enumeration tool.

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

Parameters4/5

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

The schema has zero parameters, and the description correctly requires none. Baseline 4 applies for zero-parameter tools; the description adds no parameter-specific details because there are none to explain.

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

Purpose5/5

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

The description uses a specific verb 'List' with resource 'probes' and scope 'currently connected to this machine,' clearly distinguishing it from sibling tools like probe_connect or configure_probe. The phrase 'Start here if unsure what probe to use' further establishes its role as the initial discovery tool.

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 'Start here if unsure what probe to use,' giving clear when-to-use guidance and positioning this tool as the entry point for probe selection. It doesn't name specific alternatives or exclusions, but the context is clear and sufficient for a discovery tool.

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

list_tool_safetyC

List safety levels for public McuBuddy tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_hiddenNo

TDQS

C2.9/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 of behavioral disclosure. 'List' implies a non-mutating read operation, which is transparent, but the description does not explain the effect of include_hidden, whether permissions are needed, or what the output format is. It meets the minimum bar but adds little beyond the inherent read-only nature of the verb.

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 efficient sentence, front-loaded with the key information. It earns its place without wasted words. However, it could benefit from elaboration on parameters or context, which would not make it overly long.

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 has no annotations, no output schema, and one parameter with no explanation, the description is too sparse to fully inform an agent. It does not clarify what safety levels are, how results are returned, or how include_hidden changes behavior. For such a minimal tool, some additional context would be expected.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not mention the include_hidden parameter at all. The parameter name is somewhat self-explanatory (including hidden items), but its exact meaning and default behavior are left unspecified. The description fails to compensate for the schema's complete lack of explanation.

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

Purpose4/5

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

The description uses a specific verb and resource: 'List safety levels for public McuBuddy tools.' It clearly states what the tool does. However, it does not explicitly differentiate from sibling tools like list_validation_records or list_connected_probes, though the subject matter is distinct enough.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It simply states the action. This is a clear gap for an agent deciding between sibling tools.

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

list_validation_recordsB

List machine-readable real-hardware validation records.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, whether it accesses external systems, or any limitations such as record volume or filters. The phrase 'machine-readable' hints at output format but not behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that immediately conveys the tool's purpose. Every word contributes meaning without redundancy or filler.

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

Completeness2/5

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

Because there is no output schema, the description should explain what the returned records contain or any specifics about the record format. It only says 'machine-readable real-hardware validation records', which is vague. The context of sibling tools suggests this is a hardware debug environment, but the description alone is insufficient for an agent to understand the output's structure or content.

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 zero parameters, so the schema provides full coverage (100%). The description is not required to explain parameter semantics, and the baseline for zero parameters is 4. No further detail is needed.

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

Purpose5/5

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

The description uses the specific verb 'list' and identifies the resource as 'machine-readable real-hardware validation records', which clearly distinguishes it from sibling tools like list_connected_probes or list_rtos_tasks. The qualifiers 'machine-readable' and 'real-hardware' add useful specificity without ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no mention of exclusions, and no mention of any prerequisites or typical scenarios. For a list operation, one might expect a statement like 'Use when you need the complete set of validation records; other tools provide filtered views.' This is absent.

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

match_chip_nameB

Resolve a chip alias to a backend-specific target name.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
backendNopyocd

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 carries full burden for behavioral disclosure. It implies a read-only lookup but does not explicitly state safety, side effects, error behavior (e.g., unmapped alias), or whether it modifies anything. The single sentence lacks context beyond the basic 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, front-loaded sentence that efficiently communicates the core purpose. No filler or redundant information, earning a 5.

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 2 parameters, no output schema, and no annotations, the description is too sparse to be complete. It lacks guidance on when to use, return format, error cases, and parameter semantics. For a simple lookup tool, this is below the minimum viable bar, though the core purpose is clear.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only partially compensates. It implies that 'target' is the chip alias and 'backend' influences the resulting name, but it does not provide per-parameter details, accepted values, or format expectations. The description gives general semantics but not enough to fully understand the parameters.

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 'resolve' and clearly states the input (chip alias) and output (backend-specific target name). It distinguishes from siblings like get_target_info by focusing on alias resolution to a backend-specific name rather than general target information.

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 does not explicitly state when to use this tool versus alternatives like get_target_info or configure_probe. There is no mention of exclusions, prerequisites, or scenarios where this tool is preferred. Only the basic function is described.

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

pack_diagnoseB

Find and checksum-verify the managed CMSIS-Pack for a target.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
search_rootsNo

TDQS

B3.3/5.0
Behavior3/5

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

The description discloses the two core behaviors (find and checksum-verify), implying a read-only diagnostic operation. However, it does not mention side effects, failure modes, requirements, or what happens on checksum mismatch. With no annotations, the description carries the full burden but only covers basic behavior.

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

Conciseness5/5

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

The description is a single sentence that is efficiently front-loaded with action verbs. No filler words or redundant information, every word contributes to clarity.

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 no annotations, no output schema, and only 2 parameters, the description is too terse for complete invocation. It leaves out the role of search_roots, the meaning of 'managed', and what the tool returns. This is insufficient for an agent to confidently use the tool.

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

Parameters2/5

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

The schema has 0% description coverage. The description mentions 'target' (for a target) providing minimal meaning for that parameter, but 'search_roots' is completely unexplained. The description does not compensate for the missing schema descriptions.

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 specific verbs 'find' and 'checksum-verify' with a clear resource: 'managed CMSIS-Pack for a target.' It clearly distinguishes from sibling tools like pack_install by focusing on verification rather than installation.

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 vs alternatives such as pack_install or pack management. No context, exclusions, or alternative suggestions are provided, leaving the agent to infer appropriate usage.

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

probe_connectD
ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
unique_idNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

read_stopped_contextD
ParametersJSON Schema
NameRequiredDescriptionDefault
include_logsNo
log_tail_linesNo
resolve_symbolsNo
include_fault_registersNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

svd_loadA

Load a CMSIS-SVD file to enable peripheral register interpretation.

SVD files define the register map of a chip. You can find SVD files in your chip vendor's SDK, or at https://github.com/posborne/cmsis-svd-data Example: svd_load('/path/to/STM32L496.svd')

ParametersJSON Schema
NameRequiredDescriptionDefault
svd_pathYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only restates the loading action and provides background on SVD files. It does not disclose side effects (e.g., whether a previous SVD is replaced), prerequisites (e.g., need for a probe connection), or failure modes, which is limited behavioral 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 concise (three sentences plus an example) and front-loaded with the core purpose. Every sentence adds value, including the useful external link and the example invocation.

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 tool with one parameter and no output schema, the description covers the basic purpose and usage. However, it does not mention that this tool is a prerequisite for svd_read_peripheral or describe error behavior, leaving some contextual 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?

The schema has no description coverage (0%) for the single parameter svd_path, so the description must compensate. It does so by explaining what SVD files are and showing an example path, but it does not specify constraints or the exact expected input format beyond the schema's type string.

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

Purpose5/5

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

The description states a specific verb ('Load'), a resource ('CMSIS-SVD file'), and the purpose ('to enable peripheral register interpretation'). It clearly distinguishes from siblings such as svd_read_peripheral, which reads registers, and match_chip_name, which matches chip names, by focusing on loading the file itself.

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

Usage Guidelines4/5

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

The phrase 'to enable peripheral register interpretation' provides clear context for when to use the tool. It does not explicitly mention alternatives or exclusions, but the purpose and example make the intended usage unambiguous.

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

write_project_memoryC

Write canonical memory inside a confirmed target project.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
contentYes
target_rootYes
update_existingNo
allow_mcubuddy_targetNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It only says 'Write canonical memory' without mentioning side effects, the need for confirmation (despite a 'confirm' parameter), whether it overwrites existing content, or any safety implications. This is insufficient for a tool with multiple boolean flags.

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, concise sentence with no wasted words. It is front-loaded with the core action and resource, but it sacrifices necessary detail for brevity.

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

Completeness1/5

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

For a tool with 5 parameters, no output schema, and no annotations, this description is severely incomplete. It does not explain the meaning of the flags, the expected content format, the target project confirmation process, or any side effects. The agent cannot safely invoke this tool based on the given information.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no information about parameters. The meaning of 'target_root', 'content', 'confirm', 'update_existing', and 'allow_mcubuddy_target' is entirely left to the schema titles, which are opaque. The description does not compensate for the lack of schema descriptions.

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

Purpose4/5

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

The description states a specific action ('Write') on a specific resource ('canonical memory') within a target project. It distinguishes from the sibling 'inspect_project_memory' tool by indicating it is a write operation, though the term 'canonical memory' is somewhat vague.

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 about when to use this tool versus alternatives. It does not mention the read counterpart 'inspect_project_memory' or any conditions, prerequisites, or exclusions.

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. 26 tool updatesv0.6.1
    • Removedbacktrace
    • Removedbuild_project
    • Removedcollect_crash_evidence
    • Removedcollect_peripheral_evidence
    • Removedcollect_rtos_evidence
    • Removedcollect_startup_evidence
    • Removedcompare_elf_to_flash
    • Removedconfigure_keil_project
    • Removedconfigure_log
    • Removeddiscover_keil_projects
    • Addedfinish_debug_session
    • Removedflash_firmware
    • Removedflash_image
    • Removedlist_rtos_tasks
    • Removedlog_connect
    • Removedlog_tail
    • Removedpack_install
    • Removedprobe_halt
    • Removedprobe_reset
    • Removedprobe_resume
    • Removedread_rtt_log
    • Removedrtos_task_context
    • Removedsvd_read_peripheral
    • Removeduart_exchange
    • Removeduart_read_bytes
    • Removeduart_send
  2. 43 tool updatesv0.5.2
    • First observedbacktrace
    • First observedbuild_project
    • First observedcollect_crash_evidence
    • First observedcollect_peripheral_evidence
    • First observedcollect_rtos_evidence
    • First observedcollect_startup_evidence
    • First observedcompare_elf_to_flash
    • First observedconfigure_elf
    • First observedconfigure_keil_project
    • First observedconfigure_log
    • First observedconfigure_probe
    • First observeddisconnect_all
    • First observeddiscover_keil_projects
    • First observeddoctor
    • First observedelf_load
    • First observedfirst_contact
    • First observedflash_firmware
    • First observedflash_image
    • First observedget_runtime_config
    • First observedget_target_info
    • First observedinspect_project_memory
    • First observedlist_connected_probes
    • First observedlist_rtos_tasks
    • First observedlist_tool_safety
    • First observedlist_validation_records
    • First observedlog_connect
    • First observedlog_tail
    • First observedmatch_chip_name
    • First observedpack_diagnose
    • First observedpack_install
    • First observedprobe_connect
    • First observedprobe_halt
    • First observedprobe_reset
    • First observedprobe_resume
    • First observedread_rtt_log
    • First observedread_stopped_context
    • First observedrtos_task_context
    • First observedsvd_load
    • First observedsvd_read_peripheral
    • First observeduart_exchange
    • First observeduart_read_bytes
    • First observeduart_send
    • First observedwrite_project_memory

TDQS

C2.2/5.0
Disambiguation2/5

Many tools have overlapping purposes (flash_firmware vs flash_image, log_tail vs log_connect vs read_rtt_log, elf_load vs configure_elf), and several tools have empty descriptions, making it difficult to distinguish them. The boundaries between probe_connect, list_connected_probes, and probe_halt/resume/reset are unclear without descriptions.

Naming Consistency3/5

Most tools follow a verb_noun pattern (e.g., write_project_memory, list_connected_probes), but there are notable deviations: elf_load, svd_load, uart_send, and log_connect use noun_verb order, while backtrace, doctor, and first_contact are standalone words or phrases. This mixed convention is still readable but not fully consistent.

Tool Count2/5

With 43 tools, the server is heavily over-scoped for typical debugging workflows. While the breadth covers many specialized diagnostics, many tools are redundant or could be consolidated, making the set feel bloated and overwhelming for an agent to navigate.

Completeness3/5

The tool set covers a wide range of embedded debugging operations, including configuration, flashing, probe control, RTOS inspection, and evidence collection. However, there are notable gaps for a debugger, such as no breakpoint management, no single-step/continue, and no generic memory read/write operations, which would be expected in a complete debugging surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Stateful MCP server for driving debug probes (J-Link) to flash, debug, and inspect embedded targets. Enables AI agents to perform flash, memory, breakpoint, and ELF/SVD-aware operations conversationally.
    41
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides comprehensive debugging capabilities for J-Link debuggers, enabling memory, flash, register, and RTT operations through AI assistants.
    33
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server bridging Lauterbach TRACE32 debuggers to AI agents for autonomous debugging, providing 47 tools for execution control, breakpoints, memory, registers, variables, and symbol inspection.
    100
    7
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for simulating firmware on virtual microcontroller instances, allowing AI agents to upload, run, and read UART output from supported boards such as STM32 and Nordic.
    16
    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/cunjun/McuBuddy'

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