STM32Cube-MCP
Provides control over STM32CubeIDE and the STMicroelectronics embedded ecosystem, enabling project scaffolding, headless builds, hardware flashing, memory/register inspection, GDB debugging, and UART telemetry for STM32 devices.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@STM32Cube-MCPBuild the project in STM32CubeIDE and report flash usage."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
⚡ Overview
STM32Cube-MCP turns your favorite LLM or AI coding agent (Claude Desktop, Antigravity IDE, Cursor, Windsurf, or VS Code) into an elite embedded systems engineer with 100% full-app autonomy over STM32CubeIDE and the STMicroelectronics hardware ecosystem.
Gone are the days when AI could only write code in a vacuum. With STM32Cube-MCP, AI agents can:
Launch, Focus & Drive the IDE GUI: Open projects, send Eclipse keyboard shortcuts (
Ctrl+B,F11,Ctrl+F11), capture real-time window screenshots, and manage dialogs.Headless Build Engine: Compile, clean, and re-index projects headlessly via
headless-buildandstm32cubeidec, then parse exact Flash and RAM memory footprints (arm-none-eabi-size).Physical Hardware Flashing: Auto-discover ST-LINK v2/v3 probes, DFU devices, J-Link adapters, flash binaries (
.elf,.hex,.bin), mass-erase, and reset targets with verification.Deep Silicon Inspection: Read and write 32-bit registers/memory addresses live, configure hardware option bytes (RDP, BOR, Watchdog), and dump flash firmware.
GDB Server & Remote Debugging: Spin up
ST-LINK_gdbserveroropenocdon demand, attacharm-none-eabi-gdb, halt cores, inspect registers, evaluate backtraces, and set breakpoints.Live Hardware Telemetry (UART): Stream
printflogs and FreeRTOS telemetry directly to the agent over serial COM ports.CubeMX .ioc Engineering: Parse, scaffold, and mutate STM32CubeMX
.iocpinout definitions, clock trees, and peripheral drivers programmatically.
Related MCP server: vscode-cube-mcp
🏗️ Architecture
┌──────────────────────────┐
│ AI Assistant / Agent │
│ (Claude/Cursor/Antigravity)
└────────────┬─────────────┘
│ MCP (stdio / sse)
▼
┌──────────────────────────┐
│ STM32Cube-MCP │
│ (34 Tools) │
└───┬──────┬──────┬──────┬─┘
┌────────────────────┘ │ │ └────────────────────┐
▼ ▼ ▼ ▼
┌────────────────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ IDE Controller │ │ Headless │ │ Programmer │ │ GDB Server │
│ & Win32/GUI │ │ Build Bat │ │ CLI Engine │ │ & OpenOCD │
└──────────┬─────────┘ └──────┬──────┘ └──────┬───────┘ └──────┬───────┘
│ │ │ │
▼ ▼ ▼ ▼
┌────────────────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ stm32cubeide.exe │ │ CDT Build │ │ ST-LINK │ │ arm-none- │
│ (GUI Window/Keys) │ │ Compiler │ │ Flash/Memory │ │ eabi-gdb │
└────────────────────┘ └─────────────┘ └──────────────┘ └──────────────┘🚀 Key Features
Capability | Description |
🖥️ Full GUI Control | Launch STM32CubeIDE, bring window to front, send shortcuts ( |
⚙️ Headless Compilation | Run automated headless builds via |
📊 Memory Footprint | Analyze |
🔌 Probe Discovery | Auto-detect connected ST-LINK v2/v3 probes with hardware serial numbers, DFU bootloader devices, and COM ports. |
⚡ Hardware Flashing | Flash |
🔬 Memory & Option Bytes | Read/write raw 32-bit registers (GPIO, RCC, NVIC), modify readout protection (RDP), brown-out reset, and watchdog option bytes. |
🐞 GDB Debug Automation | Background |
📡 Serial UART Monitor | Bidirectional COM port / UART monitor to read MCU |
📁 CubeMX .ioc Engine | Programmatically inspect and modify |
🧩 Project Scaffolder | Scaffold ready-to-build STM32 projects ( |
🌐 Cross-Platform | Native zero-dependency path discovery across Windows, macOS, and Linux. |
📦 Installation
Option 1: Run Instantly with uvx (Recommended)
No installation required! uvx will automatically fetch and launch the MCP server in an isolated environment:
uvx --from git+https://github.com/brovk2008/STMcube-MCP.git stm32cube-mcpOption 2: Install via pip
git clone https://github.com/brovk2008/STMcube-MCP.git
cd STMcube-MCP
pip install -e .Verify your installation:
stm32cube-mcp --detect-onlyOutput:
{
"ide_executable": "C:\\ST\\STM32CubeIDE_2.2.0\\STM32CubeIDE\\stm32cubeide.exe",
"programmer_cli": "...\\STM32_Programmer_CLI.exe",
"stlink_gdbserver": "...\\ST-LINK_gdbserver.exe",
"arm_gcc": "...\\arm-none-eabi-gcc.exe",
"version": "2.2.0",
"platform_name": "Windows"
}🛠️ Configuration for MCP Clients
1. Antigravity IDE
Add to your mcp_config.json (~/.gemini/antigravity-ide/mcp_config.json):
{
"mcpServers": {
"stm32cube": {
"command": "python",
"args": ["-m", "stm32_mcp"]
}
}
}2. Claude Desktop
Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"stm32cube": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/brovk2008/STMcube-MCP.git",
"stm32cube-mcp"
]
}
}
}3. Cursor & Windsurf
In Cursor/Windsurf MCP Settings, add a new command server:
Name:
stm32cubeCommand:
pythonArgs:
["-m", "stm32_mcp"]
🧰 Complete Tool Catalog (34 Tools)
1. Toolchain & Probe Discovery
Tool | Description |
| Auto-detects IDE installation, version, and all bundled CLI/GDB/GCC tools. |
| Returns IDE running status, PIDs, memory usage, open windows, and active probes. |
| Discovers ST-LINK probes (with SNs), DFU devices, J-Link, and serial ports. |
| Queries target MCU silicon for Device ID, Device Name, and Flash size. |
2. IDE Lifecycle & GUI Automation
Tool | Description |
| Opens STM32CubeIDE GUI with optional workspace, project, or file path. |
| Closes running IDE instances gracefully or forcefully. |
| Brings the STM32CubeIDE window to the foreground. |
| Lists all open IDE windows, dialogs, titles, and screen coordinates. |
| Sends keyboard shortcuts ( |
| Captures high-res screenshot of IDE window or desktop as base64 PNG. |
3. Project & CubeMX Workspace Management
Tool | Description |
| Discovers all STM32 projects in a directory with target MCU and |
| Scaffolds complete STM32 project ( |
| Imports a project into the headless Eclipse workspace. |
| Removes a project from the headless workspace. |
| Extracts MCU family, CPU type, clock frequency, pinouts, and enabled IPs from |
| Updates or adds configuration parameters in a CubeMX |
4. Headless Compilation & Memory Analysis
Tool | Description |
| Triggers headless build ( |
| Performs clean build on project or workspace. |
| Locates |
5. Flashing, Erasing & Memory Control
Tool | Description |
| Flashes firmware with readback verification and auto-reset. |
| Performs chip mass erase or sector erase. |
| Triggers software or hardware NRST pin reset. |
| Reads 32-bit words from registers, RAM, or Flash. |
| Writes 32-bit values directly to memory or hardware registers. |
| Dumps hardware option bytes (RDP, BOR, WDG, Boot). |
| Modifies device option bytes. |
| Dumps firmware from target MCU into a local file. |
6. Debugging & GDB Server
Tool | Description |
| Starts background |
| Launches OpenOCD with target/interface scripts. |
| Terminates active GDB server processes. |
| Executes automated batch GDB session (registers, backtrace, breakpoints). |
7. Serial Telemetry & UART
Tool | Description |
| Lists all available COM / UART ports with hardware IDs. |
| Captures incoming UART telemetry / |
| Sends commands or strings to the MCU over UART. |
💬 Example Prompts for Your AI
Once connected, you can ask your AI:
"Check my connected ST-LINK probes, create a new STM32F401RETx blinky project, build it, and flash it to the board with verification."
"Open STM32CubeIDE with my project, focus the window, trigger a build shortcut, and take a screenshot of the IDE build console."
"Connect to my target MCU over SWD, read the option bytes, and check if Readout Protection (RDP) is active."
"Start the ST-LINK GDB server, connect with GDB, halt the target, and dump the core registers."
"Listen to COM4 at 115200 baud for 5 seconds and show me the latest sensor readings from the MCU."
🌐 Cross-Platform Support
STM32Cube-MCP is engineered for cross-platform reliability:
Windows: Full Win32 API window control, process discovery, bundled
headless-build.bat, andSTM32_Programmer_CLI.macOS: Auto-detects
/Applications/STM32CubeIDE.app, AppleScript UI activation, and standard Homebrew / ST toolchains.Linux: Auto-detects
/opt/st/stm32cubeide,wmctrl/xdotoolwindow management, and standard system paths.
🤝 Contributing
Contributions, issues, and feature requests are welcome! Check out CONTRIBUTING.md and our CODE_OF_CONDUCT.md.
📜 License
This project is licensed under the Apache License 2.0 © 2026 Vaibhav Kumar (@brovk2008).
Available Tools
34 toolsstm32_build_projectA
Executes a headless build of a project in an STM32CubeIDE workspace using headless-build.
Args: workspace_path: Path to the Eclipse workspace folder. project_name: Specific project name to build (or None for all projects). configuration: Build configuration ('Debug' or 'Release'). clean_first: If True, performs a clean build (-cleanBuild). no_indexer: Disables Eclipse indexer during build for speed.
| Name | Required | Description | Default |
|---|---|---|---|
| no_indexer | No | ||
| clean_first | No | ||
| project_name | No | ||
| configuration | No | Debug | |
| workspace_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the headless-build mechanism, clean-build behavior via clean_first, and indexer-disabling via no_indexer. However, it does not mention side effects on the workspace, failure modes, output artifacts, or whether an IDE/installation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a clean Args list. Every line adds information and there is no filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all parameters and the core behavior, and an output schema exists to document return values. It lacks context about prerequisites (e.g., workspace must exist, STM32CubeIDE installed) and expected build duration/failure behavior, but the essentials for invoking the tool correctly are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does. Every parameter is explained with meaningful semantics: workspace_path is the Eclipse workspace folder, project_name can be None for all projects, configuration is Debug/Release, clean_first maps to -cleanBuild, and no_indexer disables the indexer for speed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Executes') and resource ('a project in an STM32CubeIDE workspace') and clearly identifies the build action via headless-build. This distinguishes it from siblings like stm32_clean_project or stm32_get_build_artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The intended use is implied by the verb 'build,' but the description never says 'use this when you need to compile a project' or mentions cleaner/artifact-related alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_capture_ide_screenshotA
Captures a screenshot of the STM32CubeIDE window or desktop. Returns dimensions, base64 PNG data, and optionally saves to local file.
| Name | Required | Description | Default |
|---|---|---|---|
| save_path | No | ||
| window_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the core behavior and outputs: it captures a screenshot, returns dimensions and base64 PNG data, and can optionally write to a local file. It does not go deeper into side effects, such as whether the IDE window must be focused, whether desktop capture may include unrelated content, or any permission considerations. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler; the core action is front-loaded and every clause adds information about behavior or output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter capture tool with an output schema, the description is largely complete: it states the action, output, and optional file behavior. It omits operational prerequisites such as requiring the IDE to be running or the window to be visible, but that is a minor gap given the low complexity and available output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does map 'window or desktop' to the window_only parameter and 'optionally saves to local file' to save_path, adding meaning beyond the bare parameter titles. It does not spell out defaults or path syntax, but the schema already expresses those structural details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Captures a screenshot'), specifies the target resource ('STM32CubeIDE window or desktop'), and states the output format. This clearly distinguishes it from sibling tools like stm32_focus_ide_window or stm32_get_system_status, none of which perform screen capture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for visually inspecting the IDE or desktop but never states when to prefer it over alternatives or what conditions should hold (e.g., IDE running, window visible). No explicit when/when-not guidance is given, though the absence of a screenshot sibling makes the use case fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_clean_projectC
Cleans build artifacts for a project or workspace headlessly.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | No | ||
| configuration | No | Debug | |
| workspace_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It only says 'cleans ... headlessly' and does not explain that this deletes artifacts, whether deletion is irreversible, whether workspace_path must exist, or whether it affects only the selected configuration. This is a meaningful gap for a potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-sentence description is terse and front-loaded, with no filler. It is concise, though the brevity comes at the cost of missing behavioral and parameter detail that is scored elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, three parameters, and an optional project_name, this description is incomplete. An agent cannot confidently know how to scope the clean operation or what side effects to expect; the presence of an output schema does not fill those gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no direct parameter explanation. 'project or workspace' weakly maps to workspace_path and project_name, but it does not clarify that project_name defaults to null, what null means, or how configuration selects the build variant. The description does not compensate for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Cleans') and a clear object ('build artifacts') and states the scope ('project or workspace'). This clearly differentiates it from sibling tools like stm32_build_project and stm32_get_build_artifacts, so an agent can tell what it does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when cleaning is appropriate (e.g., before a rebuild, when artifacts are stale) or when to prefer a sibling like stm32_build_project or stm32_remove_project. The agent is left to infer the use case entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_close_ideA
Closes running STM32CubeIDE instances.
Args: force: If True, forcefully terminates the processes. Otherwise closes gracefully.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does this by explaining both execution paths: graceful closing versus forceful termination. It stops short of warning about potential unsaved data loss from force-killing processes, but it does reveal the core behavioral distinction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description contains exactly two sentences: one for the primary action and one for the parameter. It is front-loaded with the purpose and wastes no words, making it easy for an agent to extract the needed information quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and the presence of an output schema, the description covers the necessary operational details: the action, the target resource, and the single parameter's behavior. A minor enhancement would be a note about force mode potentially losing unsaved work, but the definition is already complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, force, is fully explained: 'If True, forcefully terminates... otherwise closes gracefully.' Because schema description coverage is 0%, this textual explanation is essential and compensates entirely for the bare schema; nothing about the parameter is left ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a concrete action and resource: 'Closes running STM32CubeIDE instances.' This immediately distinguishes it from sibling tools like stm32_launch_ide, stm32_focus_ide_window, and stm32_get_ide_windows, leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clearly implied: close running STM32CubeIDE instances. It also gives actionable guidance for choosing between the graceful and forceful modes. It does not explicitly name alternatives or when-not-to-use conditions, but for this simple tool the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_create_projectA
Scaffolds a new, ready-to-build STM32 project:
.project: Eclipse CDT project definition
.ioc: STM32CubeMX configuration file
Core/Src/main.c: Standard embedded main entry point with LED blink loop
Core/Inc/main.h: Embedded header file
STM32_FLASH.ld: Linker script for Flash & RAM section mappings
Makefile: Standalone GNU ARM build script
| Name | Required | Description | Default |
|---|---|---|---|
| target_mcu | No | STM32F401RETx | |
| project_name | Yes | ||
| destination_dir | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to carry the burden, the description discloses the filesystem behavior by listing each created file and its purpose, including the notable detail that main.c contains an LED blink loop. It also signals that the result is buildable via the standalone GNU ARM Makefile. It does not discuss overwrite or conflict behavior, but for a scaffold tool this is a strong disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single framing sentence is immediately followed by a concise bullet list of generated files; there is no filler or repetition. Each bullet adds concrete information an agent needs to know what the tool will produce.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a straightforward scaffold call: the required parameter is project_name, and the other two have defaults. However, it omits meaningful description of target_mcu and destination_dir, and it does not state behavior when files or the destination directory already exist, so an agent must infer important invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the three parameters, but it only references project_name (via the <project_name>.ioc filename). target_mcu and destination_dir are left to inference from their property names and defaults, with no explanation of accepted values or effect on generated code.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Scaffolds a new, ready-to-build STM32 project', and then enumerates the exact generated artifacts (.project, .ioc, main.c, main.h, linker script, Makefile). This clearly differentiates it from sibling operations like import_project, build_project, or list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'new' and the scaffolding verb imply this is the tool to use when starting an STM32 project from scratch, and sibling names such as stm32_import_project suggest the alternative for existing projects. However, the description never explicitly states when to use it versus those alternatives, nor does it call out exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_detect_installationA
Auto-detects the STM32CubeIDE installation path and all bundled toolchains:
Base IDE directory and detected version
stm32cubeide executable and console launcher
headless-build script
STM32_Programmer_CLI executable
ST-LINK_gdbserver executable
OpenOCD executable
GNU ARM toolchain (arm-none-eabi-gcc, gdb, size, objcopy)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It clearly enumerates what is detected, implying a read-only operation, but it does not explicitly state that no modifications are made, nor does it mention any prerequisites (e.g., that STM32CubeIDE must be installed) or failure behavior if the installation is not found. The absence of such details leaves some ambiguity 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary purpose, followed by a bulleted list of detected components. Every sentence earns its place, and the structure makes it easy for an agent to scan and understand the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema exists), the description covers the essential information: what it detects. It could be slightly more complete by noting what happens if the installation is not found, but the output schema likely handles that. Overall, it is adequate for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description correctly omits parameter details. The baseline of 4 is appropriate; the description adds value by listing what the detection will return, which is more than the schema alone provides (though the schema has no properties).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('auto-detects') and a clear resource (STM32CubeIDE installation path and bundled toolchains), listing the exact components. This distinguishes it from all sibling tools, which focus on operations like building, flashing, or debugging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for detecting installation paths and toolchains, and it is the only tool of its kind among the siblings. There are no explicit exclusions or alternatives, but the purpose is unambiguous, and an agent would naturally use this before any tool that requires knowing the installation path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_dump_flash_to_fileB
Reads flash memory contents from the target MCU and dumps them to a local file.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| address | No | 0x08000000 | |
| size_bytes | No | ||
| output_file | No | flash_dump.bin |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that flash contents are read and written to a local file, but it does not explain whether an existing output file is overwritten, what file format is produced, what target state is required, or whether this operation is safe/non-destructive to the MCU.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every word contributes to the core behavior, making it concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four optional parameters, sensible defaults, and an output schema, the one-line description plus the input schema is minimally viable. However, it leaves behavioral details like file overwriting, address alignment, size limits, and MCU connection prerequisites implicit, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters, but it does not. It never explains port, address, size_bytes, or output_file semantics beyond the names and defaults already present in the schema. An agent calling this with custom parameters receives no additional guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Reads'), resource ('flash memory contents from the target MCU'), and destination ('dumps them to a local file'). This clearly differentiates it from siblings like stm32_read_memory, which likely returns data rather than writing a file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as stm32_read_memory, stm32_flash_firmware, or stm32_erase_flash. The description implies a backup/dump use case but does not state exclusions or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_erase_flashA
Erases target flash memory.
Args: mode: 'all' for full chip mass erase, or 'sectors' with start_address and end_address. start_address: Start address (e.g. '0x08000000') for sector erase. end_address: End address (e.g. '0x08004000') for sector erase. port: Connection port ('SWD', 'JTAG', 'URT').
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | all | |
| port | No | SWD | |
| end_address | No | ||
| start_address | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of disclosure. It does disclose what is destroyed — flash memory, either full chip or a sector range — and so the destructive nature is clear. However, it does not explicitly mention irreversibility, loss of existing firmware, or any required target/probe state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-scannable: one purpose line followed by four short, information-dense argument lines. Every sentence adds value, and the most important scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With schema defaults and an output schema available, the description covers the core invocation details: mode, addresses, and port. It is slightly light on safety context — such as the destructive nature of erasing flash and the possibility of bricking a target — but an agent can correctly construct a valid call from the provided information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates: it defines mode values, links 'sectors' to start_address and end_address, gives concrete address examples, and lists valid port choices. This is exactly the meaning an agent needs beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource — "Erases target flash memory" — and adds scope detail by distinguishing full chip mass erase from sector erase. The action is unique among sibling tools, making it clearly distinct from flashing, reading, or writing operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to choose 'all' vs 'sectors', but gives no guidance on when to use this tool instead of alternatives like stm32_flash_firmware, stm32_read_memory, or stm32_dump_flash_to_file. There are no prerequisites, exclusions, or explicit usage conditions beyond the internal mode choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_flash_firmwareA
Flashes firmware (.elf, .hex, or .bin) onto the target STM32 microcontroller.
Args: file_path: Path to compiled binary (.elf, .hex, .bin). address: Flash start address (required for raw .bin files, e.g. '0x08000000'). verify: Verify flash write after programming. reset: Reset target MCU after programming. port: Debug interface ('SWD', 'JTAG', 'URT', 'USB1'). freq_khz: Debug probe clock frequency in kHz. start_run: Start firmware execution immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| reset | No | ||
| verify | No | ||
| address | No | ||
| freq_khz | No | ||
| file_path | Yes | ||
| start_run | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently lists available actions: verification ('verify: Verify flash write after programming'), reset ('reset: Reset target MCU after programming'), and execution start ('start_run: Start firmware execution immediately'). It also notes that address is required for raw .bin files, implying potential danger if omitted. This covers core behaviors though it does not explicitly warn about overwriting existing firmware or prerequisites like probe connection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a one-line purpose followed by a parameter list. It is appropriately sized for seven parameters, with no wasted words. Each parameter gets a concise, informative sentence. It is slightly long but necessary given the number of fields, and it front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, no annotations) and the existence of an output schema (per context signal), the description covers all parameter semantics and gives enough context to call the tool correctly. It lacks explicit error-condition or prerequisite guidance, but the provided information is sufficient for a competent agent to determine file type requirements, optional behaviors, and interface choices. Missing items like return format are likely handled by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It does: every parameter is explained, including pragmatic details like 'address' being required for raw .bin and 'port' listing allowed values ('SWD', 'JTAG', 'URT', 'USB1'). This goes far beyond the bare schema and gives the agent actionable meaning for each argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Flashes firmware (.elf, .hex, or .bin) onto the target STM32 microcontroller.' This clearly distinguishes the tool from siblings like stm32_erase_flash, stm32_write_memory, or stm32_build_project by focusing on programming compiled firmware. The supported file types add 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one has a compiled binary to program onto an STM32, but it does not explicitly contrast with alternatives like stm32_write_memory or stm32_erase_flash. It does provide situation-specific guidance for 'address' (required for raw .bin), which helps in choosing parameters, but lacks explicit 'when not to use this tool' or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_focus_ide_windowA
Brings the STM32CubeIDE main window to the foreground and restores it if minimized.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It transparently discloses two concrete actions: bringing the window to the foreground and restoring it from minimized state. It does not cover failure behavior when the IDE is absent, but for a simple focus operation this is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured sentence with no filler. The primary action is front-loaded and the optional minimized-state restoration is appended concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's very low complexity, zero parameters, and existing output schema, the description provides sufficient context to invoke it correctly. A short note about prerequisites, such as the IDE being already launched, would make it fully complete, but its absence is not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so the schema fully accounts for the argument surface. There is nothing for the description to add about parameters, and it does not attempt to invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Brings') and identifies a precise resource ('the STM32CubeIDE main window'), plus an additional behavior ('restores it if minimized'). This clearly distinguishes it from siblings like stm32_launch_ide, stm32_close_ide, and stm32_get_ide_windows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when it is applicable: when the window needs to be foregrounded, including the minimized case. It does not explicitly state when not to use it, such as if the IDE is not running, but the intended context is clear enough for an agent to choose it over launching or inspecting windows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_get_build_artifactsB
Inspects built binaries (.elf, .hex, .bin, .map) in the project output directory. Uses arm-none-eabi-size to analyze text, data, bss sections, and calculates total Flash and RAM usage.
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | Yes | ||
| configuration | No | Debug |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It mentions the use of arm-none-eabi-size and the analysis of sections, which suggests a read-only operation, but it does not explicitly state that it does not modify anything, nor does it disclose potential side effects like requiring a prior build or failing if artifacts are missing. It does not contradict any annotations since none are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the core purpose. Every word adds value, and there is no redundancy or filler. It efficiently communicates the tool's function and method.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description does not explain what the output contains beyond mentioning Flash and RAM usage. It does not specify prerequisites (e.g., that a build must have been run), likely error conditions (e.g., missing artifacts), or how the configuration parameter affects the inspection. Given the lack of annotations and parameter descriptions, the tool seems incomplete for an agent to use reliably without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not add any meaning to the parameters (project_dir, configuration). It mentions 'project output directory' but does not explicitly map that to the project_dir parameter, nor does it explain the role of the configuration parameter. The description leaves parameter semantics entirely to the schema, which itself lacks descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('inspects') with a clear resource ('built binaries' with specific file extensions), and explicitly mentions the analysis of sections and calculation of Flash/RAM usage. This clearly distinguishes it from sibling tools like build_project, flash_firmware, or clean_project, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is used to analyze build outputs, but it does not explicitly state when to use it (e.g., after a successful build) or when not to use it (e.g., before building). No alternatives are mentioned, and the context of when it is appropriate is left to inference from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_get_ide_windowsA
Lists all open STM32CubeIDE windows, dialogs, coordinates, and window titles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It clearly indicates this is a read-only listing operation and names the returned data (windows, dialogs, coordinates, titles), but it does not mention prerequisites, error behavior, or whether the IDE must be running. The semantics are reasonably transparent for a simple get/list tool, but not fully explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no fluff. It front-loads the verb and clearly enumerates exactly what will be listed. Every word earns its place, making it both concise and structurally sound.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with no parameters and an output schema present, the description is largely sufficient. It names the resource and the data points returned. However, it omits any mention of preconditions (e.g., IDE running) or how it relates to sibling tools, which would make the context fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parametersasi, so there is no parameter semantics to explain. The schema coverage is effectively 100%, and the description adds no parameter information, which is appropriate since no parameters exist. Baseline for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb, 'Lists', and identifies the resource ('all open STM32CubeIDE windows, dialogs, coordinates, and window titles'). It clearly conveys what the tool does, but does not explicitly contrast it with similar tools like stm32_focus_ide_window or stm32_capture_ide_screenshot, so sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of using this before focusing a window, capturing a screenshot, or launching the IDE. The intended use case is only implicit from the verb 'Lists' and the tool name, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_get_system_statusB
Checks the real-time operational status of STM32CubeIDE on the host system:
Whether the IDE GUI is currently running
PIDs, memory usage, and runtime of STM32 processes
Open STM32CubeIDE windows and dialog titles
Connected debug probes (ST-LINK, DFU, COM ports)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral transparency. It does disclose what the tool checks and gives concrete categories of information, implying a non-mutating status read. However, it does not explicitly state that the tool has no side effects, what happens if the IDE is not running, or whether any process scan could be expensive or require permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: an introductory sentence followed by four focused bullet points. It is front-loaded with the main purpose and every line adds meaningful information without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main facets of the tool's behavior and an output schema exists to define return structure. However, given the large sibling set with overlapping functionality, it lacks guidance on when to use this tool instead of focused alternatives, and it omits details about edge cases such as the IDE not running or no probes connected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to clarify. The schema coverage is complete and the description's enumeration of output categories helps set expectations for what the returned status will contain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool checks the real-time operational status of STM32CubeIDE and enumerates the status categories: GUI state, process metrics, open windows, and connected debug probes. It is a specific verb+resource statement, though it does not explicitly differentiate itself from overlapping siblings like stm32_list_connected_probes or stm32_get_ide_windows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this aggregate status tool versus the more specific sibling tools. There are no usage conditions, exclusions, or alternatives mentioned, leaving the agent to infer when this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_get_target_infoB
Connects to the physical STM32 microcontroller and retrieves hardware device info:
Device ID (e.g. 0x423 for STM32F401, 0x410 for STM32F103)
Device name and core architecture
Flash memory size
Connection status
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| freq_khz | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose that the tool connects to the MCU and reports connection status, and 'retrieves' implies a read operation. But it does not explicitly state that it is non-destructive, whether a debug probe must be attached, or whether it starts its own connection session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action appears in the first sentence, followed by a focused bullet list of returned information. There is no filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema presumably covers return structure, and the description adds useful expected values. However, the definition is incomplete for non-default invocation because it omits parameter semantics, prerequisite conditions, and sibling-tool selection guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It does not mention 'port' or 'freq_khz' at all, leaving the agent without any guidance on how these affect the connection or when to change them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('retrieves') and resource ('physical STM32 microcontroller'), and lists concrete output fields such as Device ID, core architecture, and flash size. It does not explicitly distinguish itself from siblings like stm32_get_system_status, but the hardware-info focus is clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the agent would call this when it needs target hardware identity or memory size. However, the description never explicitly says when to prefer this over stm32_get_system_status or stm32_list_connected_probes, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_import_projectC
Imports an existing STM32Cube project into an Eclipse workspace headlessly.
Args: workspace_path: Path to the target workspace folder. project_dir: Path to the project root folder containing .project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | Yes | ||
| workspace_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It mentions 'headlessly' which is useful, but does not disclose side effects (e.g., does it overwrite existing projects? does it require the IDE to be running or not? does it modify the workspace in a way that might conflict?). It doesn't mention potential errors or limitations, which is a significant gap for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose in the first sentence. The Args section is minimal but not bloated. It's efficient, though it could have used the space to add more behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema (not detailed here), the return is likely defined, but the description doesn't mention what the tool returns (e.g., success indicator, imported project handle). It lacks context on preconditions, side effects, and error handling. For a tool with no annotations and two required parameters, it's under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description barely explains the parameters. It only says 'workspace_path: Path to the target workspace folder' and 'project_dir: Path to the project root folder containing .project', which is minimal. It doesn't clarify if paths should be absolute, whether project_dir must be inside workspace, or any format requirements. The description adds only slight value over the raw names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Imports' and the resource 'existing STM32Cube project into an Eclipse workspace', distinguishing it from creation/build/flash tools. However, it doesn't explicitly differentiate from sibling tools like stm32_create_project or stm32_list_projects, though the context of 'import' 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by being an import operation, but doesn't explicitly state when to use it over alternatives like stm32_create_project (for new projects) or stm32_list_projects (for listing). No exclusions or prerequisites are mentioned, such as needing the IDE to be closed or the project not already existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_launch_ideA
Opens/launches the STM32CubeIDE desktop application.
Args: workspace_path: Optional path to open a specific Eclipse workspace directory. project_path: Optional path to open a specific STM32 project. file_to_open: Optional path to a specific source file (e.g. main.c) to edit. clean: If True, passes -clean to refresh Eclipse OSGi bundles.
| Name | Required | Description | Default |
|---|---|---|---|
| clean | No | ||
| file_to_open | No | ||
| project_path | No | ||
| workspace_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the primary side effect (launching a GUI) and explains the clean parameter's effect ('passes -clean to refresh Eclipse OSGi bundles'). However, it does not mention whether the call blocks or returns immediately, potential prerequisites (e.g., installation), or how failures are reported. It provides some parameter-level detail but lacks broader 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It opens with the core purpose, then lists parameters in a clear, front-loaded list. There is no redundant or vague language; every sentence contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a launcher tool with four optional parameters, the description covers all parameter semantics and the core action. It does not specify the return value, but an output schema exists (indicated by 'has output schema: true'), which likely documents that. It also does not mention whether the tool blocks, but that is a minor gap given the tool's straightforward nature. Overall, it is sufficiently complete for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly explains every parameter: workspace_path, project_path, file_to_open, and clean. Each is described with its purpose (e.g., 'path to open a specific Eclipse workspace directory'). This goes well beyond the schema's minimal titles and defaults, providing actionable meaning for an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb-resource pair ('Opens/launches the STM32CubeIDE desktop application') that precisely identifies the tool's function. This distinguishes it from siblings like stm32_detect_installation (detection), stm32_close_ide (closing), and stm32_focus_ide_window (focusing). The intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly specify when to use this tool versus alternatives. It implies usage through its function ('Opens/launches'), but it lacks exclusions or guidance like 'use stm32_close_ide to terminate' or 'use stm32_detect_installation first to verify installation.' The agent must infer the appropriate context from the name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_list_connected_probesA
Scans for all connected STM32 hardware interfaces and debug probes:
ST-LINK probes with serial numbers and firmware versions
STM32 devices in DFU (USB bootloader) mode
J-Link adapters
Available serial / UART COM ports
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It clearly conveys a non-mutating discovery operation ('Scans') and enumerates the categories of hardware it will detect, including serial numbers and firmware versions for ST-LINK probes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence followed by a concise bulleted list. Every line adds a distinct category of detected hardware with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless discovery tool with an output schema, the description is largely complete: it states what is scanned and the main result categories. The only notable gap is the unresolved relationship with stm32_list_serial_ports.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify beyond the empty schema. The baseline for parameterless tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Scans') and names concrete resources: ST-LINK probes, DFU devices, J-Link adapters, and serial ports. However, it does not distinguish itself from the sibling stm32_list_serial_ports, which also covers serial/UART ports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first line implies general use for inventorying connected STM32 hardware and probes, but there is no explicit when-to-use guidance or mention of alternatives. The overlap with stm32_list_serial_ports makes this ambiguity more noticeable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_list_projectsA
Recursively scans a workspace or root directory and discovers all STM32 projects. Returns project names, paths, detected target MCUs, and whether .ioc files exist.
| Name | Required | Description | Default |
|---|---|---|---|
| root_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the core behavior (recursive scan) and what is returned, but omits potential edge cases like error handling for nonexistent directories, performance implications of scanning large trees, or whether the scan is read-only. It does not contradict any annotations (none exist), but it leaves room for assumptions about side effects or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first states the action and scope, the second lists the return values. It is front-loaded with the main purpose and contains no fluff or redundant phrasing. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with a single parameter and an output schema (which presumably documents the return structure), the description covers the essential points: what it scans, what it returns. It does not address edge cases like empty results or how STM32 projects are detected, but these are likely minor given the tool's straightforward nature. The presence of an output schema reduces the need to explain return types in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines only 'root_dir' with no description (coverage 0%), so the description must compensate. It adds meaning by clarifying that root_dir is a 'workspace or root directory' to be scanned. This establishes the parameter's type and purpose, which is a meaningful improvement over the bare schema. However, it doesn't specify path format (absolute vs. relative) or whether the directory must exist, leaving minor ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool recursively scans a directory to discover STM32 projects, and enumerates the exact return data (names, paths, MCUs, .ioc presence). This distinguishes it from siblings like stm32_create_project or stm32_import_project, which operate on projects rather than listing them. The verb 'scans' and resource 'STM32 projects' are 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: you use this when you need to enumerate existing STM32 projects in a directory. It does not explicitly name alternatives or exclusions, but the context is clear enough that an agent would know to invoke it for discovery tasks. Since no sibling tool performs the same listing function, explicit routing isn't critical, though a mention of 'use when you need to know what projects exist' would strengthen it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_list_serial_portsA
Lists all available UART / COM serial ports on the host system with hardware descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It implies a non-destructive read operation through the word 'Lists,' but it does not explicitly state that it performs no system changes, whether it requires any permissions, or what happens when no ports are found. Basic behavior is conveyed, but richer safety/limitation context is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence with no filler or redundant wording. It states the action, resource, scope, and a content detail about the output. Every part contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only enumeration tool with an output schema present, the description sufficiently covers the necessary purpose. It could go further to note the distribution between serial ports and debug probes, but this is a minor omission; the definition is essentially complete for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is an empty object, so there is no parameter burden. The baseline of 4 applies; there is nothing to explain beyond the fact that no arguments are needed, which the empty schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Lists') with a specific resource ('all available UART / COM serial ports on the host system') and adds that hardware descriptions are included. This clearly distinguishes the tool from sibling tools like stm32_list_connected_probes, which targets debug probes rather than serial ports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context of 'on the host system' implies the tool is for enumerating local UART/COM ports, but it does not explicitly mention when to prefer this over stm32_list_connected_probes, nor does it say what to use it for (e.g., before read_serial/write_serial). Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_parse_iocA
Parses an STM32CubeMX .ioc file and returns:
MCU Target name & Family (e.g. STM32F4, STM32G4)
CPU core type (Cortex-M4, Cortex-M7, etc.)
System clock frequency in Hz
Configured GPIO pins, labels, and modes
Enabled IPs (USART, SPI, I2C, CAN, ADC, FreeRTOS, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| ioc_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It implies a read-only parse by the verb and output list, but does not explicitly state that the .ioc file is not modified, nor mention error behavior for invalid paths or malformed files. It adds useful output context but no safety or prerequisite detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a tight action statement followed by a concise bullet list of returned fields. Every line earns its place; there is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter parser with an output schema, the main action and returned categories are covered, so an agent can likely call it. However, missing usage differentiation and behavioral/error details leave moderate gaps, especially without annotations. The output schema mitigates the need to list return values, so this is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions (0% coverage), so the description must clarify the parameter. It does identify the value as a path to an STM32CubeMX .ioc file, which pairs with the self-explanatory parameter name 'ioc_path'. It does not explain path format, existence requirements, or relative vs absolute paths.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (Parses), a specific resource (STM32CubeMX .ioc file), and enumerates the returned data categories. This clearly distinguishes it from sibling tools like stm32_get_target_info or stm32_update_ioc based on input type and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended context (need parsed .ioc configuration data) is implied by the description, but it never explicitly states when to use this tool versus alternatives such as stm32_get_target_info or stm32_update_ioc. No exclusions or recommended alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_read_memoryA
Reads 32-bit words from target memory address (registers, RAM, or Flash).
Args: address: Target memory hex address (e.g. '0x08000000' or '0x40020000'). size: Number of 32-bit words to read. port: Connection interface ('SWD', 'JTAG').
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| size | No | ||
| address | No | 0x08000000 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It does state the non-mutating 'Reads' behavior and the memory types covered, which is useful. But it does not disclose potential side effects such as target halting, connection requirements, or behavior on invalid addresses, so coverage is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a clear Args section. Every line adds value, and there is no redundant prose or repetition of schema defaults.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter read tool with an output schema present, the description is nearly complete: it defines all parameters and the operation. It could add edge-case guidance like word-alignment or invalid-address behavior, but these are minor given the output schema and straightforward read semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description richly compensates: address is explained with hex examples, size is specified as number of 32-bit words, and port lists valid interface values ('SWD', 'JTAG'). This adds real meaning beyond the bare schema defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Reads 32-bit words') and resource ('target memory address'), and adds the scope of memory types (registers, RAM, Flash). This clearly distinguishes it from sibling write/dump tools without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you need to inspect target memory contents. However, it does not explicitly mention alternatives, exclusions, or when not to use it, leaving the agent to infer routing 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.
stm32_read_option_bytesB
Reads device option bytes (Read Out Protection RDP, Brownout Reset BOR, Watchdog, Boot).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It communicates a safe read operation and names the specific bytes retrieved, which is useful. However, it omits behavioral context such as connection requirements, whether OpenOCD must be running, or what happens if the target is unresponsive — gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that front-loads the action and packs the key detail (which option bytes) in-line. Only minor waste is the parenthetical listing, which is justified since it adds meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need no description. With only one parameter and clear scope it is fairly complete, but the undocumented 'port' semantics and lack of prerequisite guidance leave meaningful gaps for an agent deciding how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the 'port' parameter (default 'SWD'). Since the schema carries only a type and default, the agent is left to infer what valid port values look like (e.g., SWD vs JTAG), which the description should clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Reads') and resource ('device option bytes'), then enumerates the exact option bytes covered (RDP, BOR, Watchdog, Boot), giving the agent concrete detail on what is read. It clearly distinguishes from the sibling stm32_write_option_bytes via the read/write contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor prerequisites such as requiring a connected probe or powered target. Differentiation from stm32_read_memory and stm32_write_option_bytes is left to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_read_serialB
Listens and captures incoming serial output from target UART (e.g. printf output or RTOS telemetry).
Args: port: Port name (e.g. 'COM3' or '/dev/ttyUSB0'). baudrate: Baud rate (default: 115200). timeout_sec: Listening window in seconds. max_bytes: Maximum bytes to read.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | ||
| baudrate | No | ||
| max_bytes | No | ||
| timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It discloses that the tool listens/captures and hints at a timeout/max_bytes window, but it does not say whether it blocks, requires exclusive port access, consumes data from the UART buffer, or how failures are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear purpose sentence followed by a tight Args list. Every line earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read tool with an output schema, the description covers purpose and parameters adequately. It is incomplete regarding when to prefer this over sibling read/write/list tools and lacks behavioral caveats, which is more impactful because there are no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section is the only source of parameter meaning. It provides useful semantics for all four parameters, including port examples and default values for baudrate, timeout, and max_bytes, going beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('listens and captures incoming serial output from target UART') and gives example content (printf output or RTOS telemetry). It does not explicitly differentiate from sibling tools like stm32_write_serial or stm32_list_serial_ports, but the read direction is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case via 'printf output or RTOS telemetry', so an agent can infer when to call it. However, it does not explicitly state when not to use it or mention alternatives such as stm32_write_serial or stm32_list_serial_ports.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_remove_projectB
Removes a project from the headless Eclipse workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | ||
| workspace_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Removes' implies mutation, but the description does not reveal whether the operation is permanent, whether files are deleted from disk or only removed from the workspace, or what side effects may occur on build artifacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to defining the operation and its scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema, the description is minimally adequate. However, the ambiguity around whether removal deletes files and the absence of usage guidance or behavioral caveats leaves notable gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It only hints at the workspace context and does not explain path formats, naming conventions, or how project_name and workspace_path relate to the removal operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Removes'), a specific resource ('a project'), and a location ('the headless Eclipse workspace'). This clearly distinguishes the tool from siblings like stm32_create_project, stm32_import_project, and stm32_list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by the verb 'Removes' and the workspace context, so an agent can infer when to call it. However, it does not explicitly state prerequisites, exclusions, or alternatives such as create/import versus removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_reset_targetA
Triggers a target MCU reset via debug probe.
Args: hard_reset: If True, pulses the hardware NRST pin (-hardRst). Otherwise software system reset. port: Connection port ('SWD', 'JTAG').
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| hard_reset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry full responsibility for behavioral disclosure. It only explains the parameters and their effects, but fails to mention side effects such as losing target state, potential disconnection, required debug probe connection, or error conditions. This is a significant gap for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise, using two sentences to state the purpose and then clearly list the arguments. It is front-loaded with the main action, and every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters, the description covers the parameter semantics well. However, it omits important context such as prerequisites (e.g., a connected probe or active OpenOCD session), expected return behavior, and potential side effects. Given the absence of an output schema and annotations, more detail would be needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is the sole source of parameter meaning. It thoroughly explains both parameters: hard_reset distinguishes hardware NRST pulse vs software reset, and port lists the valid values ('SWD', 'JTAG') and even maps to underlying command flags. This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Triggers') and resource ('target MCU reset'), and specifies the method ('via debug probe'). This distinguishes it from sibling tools like flashing, erasing, or reading memory, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to reset the target MCU), but it does not explicitly discuss alternatives or conditions when not to use it. No reference to other tools or scenarios is provided, leaving the choice to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_run_gdb_scriptA
Executes an automated GDB batch session against target MCU using arm-none-eabi-gdb.
Args: commands: List of GDB commands (e.g. ['monitor reset halt', 'info registers', 'bt']). elf_file: Optional path to compiled .elf file with debug symbols. remote_port: Port of active GDB server (connects to localhost:). timeout_sec: Maximum execution timeout in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | ||
| elf_file | No | ||
| remote_port | No | ||
| timeout_sec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses execution mode, localhost connection, and timeout, but it does not disclose that arbitrary GDB commands can mutate target state, what happens on command failure, or session termination behavior. This is a material gap for a tool that executes arbitrary debugger commands.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One purpose sentence plus four compact argument bullets. It is front-loaded with the core action, contains no filler, and every line adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All parameters are explained and an output schema exists, so return-value details are not required. However, with no annotations, the absence of explicit prerequisites and safety/failure behavior leaves the description adequate but not complete for safe autonomous use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates: each parameter receives meaningful explanation, including an example for commands, the role of elf_file, the localhost meaning of remote_port, and units for timeout_sec. This goes well beyond the bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and target: executes an automated GDB batch session against the target MCU via arm-none-eabi-gdb. It is clearly distinguishable from server lifecycle tools, but it does not explicitly contrast with siblings like stm32_start_gdb_server or stm32_flash_firmware.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parameter note 'remote_port: Port of active GDB server' implies a prerequisite that a GDB server must already be running, and the overall purpose implies use for custom GDB command batches. However, it never explicitly says when to prefer this tool over dedicated siblings or gives when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_send_ide_shortcutA
Sends Eclipse keyboard shortcuts directly to the STM32CubeIDE window.
Supported actions:
'build': Build active project (Ctrl+B / Cmd+B)
'debug': Start debug session (F11)
'run': Run target (Ctrl+F11)
'step_into': Debug step into (F5)
'step_over': Debug step over (F6)
'step_return': Debug step return (F7)
'resume': Debug resume execution (F8)
'terminate': Stop/terminate debug (Ctrl+F2)
'save_all': Save all open files (Ctrl+Shift+S)
'open_resource': Open resource dialog (Ctrl+Shift+R)
'quick_access': Focus Quick Access bar (Ctrl+3)
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It does disclose the platform-specific shortcut variants (Ctrl vs Cmd) and lists every supported action, but it does not mention prerequisites such as the IDE being open or whether the window must be focused, nor what happens on invalid actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose, then uses a clean 'Supported actions:' list that adds necessary value. There is no filler, redundancy, or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with a fully documented action list and an output schema available, the description is largely complete for invocation. Minor gaps such as preconditions and invalid-input behavior are absent, but they do not block correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a bare 'action' string with 0% description coverage and no enum. The description fully compensates by enumerating all supported action values and their keyboard shortcut mappings, giving the agent precise information needed to invoke the tool correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific action ('Sends Eclipse keyboard shortcuts') and a specific target ('STM32CubeIDE window'), which clearly differentiates it from other STM32 tools. The list of supported actions reinforces the concrete scope of the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it obvious that the tool is for sending IDE keyboard shortcuts, but it does not explicitly say when to choose it over related siblings like stm32_build_project or stm32_launch_ide. Usage context is implied rather than stated with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_start_gdb_serverA
Starts the bundled ST-LINK_gdbserver as a background process listening on specified TCP port.
Args: port: GDB TCP port (default: 61234). probe_index: ST-Link probe index to bind. verify: Verify flash write during GDB load. persistent: Keep server active between disconnects (-p).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| verify | No | ||
| persistent | No | ||
| probe_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the server runs as a background process and explains the persistent flag's runtime effect. However, it omits important consequences: the server outlives the tool call, the port becomes occupied, and the process presumably must be stopped with stm32_stop_gdb_server.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single purpose sentence is followed by a compact parameter list with no filler. The most important information is front-loaded, and every line earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a side-effectful tool that spawns a persistent server and has no annotations, the description should address lifecycle and prerequisites more thoroughly. Core behavior and parameters are covered, and an output schema exists, but the missing stop/disconnect flow and port-conflict/probe-absence failure modes leave the agent partially in the dark.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the 'Args' section adds essential meaning to all four parameters: port, probe_index, verify, and persistent. Each gets a concise behavioral explanation that goes beyond the schema's type-and-default-only entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Starts'), a specific resource ('bundled ST-LINK_gdbserver'), and operational mode ('background process listening on specified TCP port'). This clearly separates it from sibling stm32_start_openocd, which starts a different debug server.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as stm32_start_openocd, nor are prerequisites (e.g., ST-Link probe connection, prior installation) mentioned. The description jumps straight to parameters, leaving the agent to infer selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_start_openocdC
Starts OpenOCD with specified configuration scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | ||
| config_files | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior itself. It says OpenOCD is started, but it does not say whether the process is long-running/blocking, whether it runs in the background, what happens on misconfiguration, or whether this requires an IDE/daemon relationship. The presence of an output schema covers return shape but not side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no filler: verb, resource, and the key config-file input are all present. It is as concise as the current information allows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a process-launching tool, the description gives the essential action, and the schema defaults plus output schema cover invocation basics, making it minimally usable. It still omits operational facts like blocking behavior, installation requirements, and how it relates to stop/GDB siblings, which is why it does not rise above a 3.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description needed to explain both parameters. It only implicitly maps 'configuration scripts' to config_files and says nothing about the port parameter, its default behavior, or valid value ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the action ('Starts'), the resource ('OpenOCD'), and the key input ('configuration scripts'), so an agent can tell this is about launching OpenOCD rather than the sibling GDB-server or IDE tools. It does not explicitly contrast itself with stm32_start_gdb_server or stm32_launch_ide, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose this tool over stm32_start_gdb_server, stm32_launch_ide, or stm32_flash_firmware, and no mention of prerequisites such as OpenOCD being installed or a target being connected. The only usage signal is the verb and resource, which leaves the decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_stop_gdb_serverA
Stops all running ST-LINK_gdbserver or OpenOCD processes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses the key side effect—stopping all matching processes, not just one—which is critical for an agent to understand impact. It could mention that this affects every running server instance, but the word 'all' already conveys that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that contains exactly the necessary information and nothing extraneous. It wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter process-stopping tool with an output schema, the description is fully complete. It identifies the exact processes affected and the action taken, leaving no ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the rubric baseline is 4. No parameter documentation is required, and the description's focus on the action is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Stops') and a clear resource ('all running ST-LINK_gdbserver or OpenOCD processes'), making the action unmistakable. It also distinguishes itself from sibling tools like stm32_start_gdb_server and stm32_run_gdb_script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'all running... processes' clearly signals when this tool is appropriate: when the user wants to terminate active GDB servers. It does not explicitly name alternatives or state when not to use it, but the intended context is obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_update_iocA
Updates or inserts a configuration property in an STM32CubeMX .ioc file (e.g. key='RCC.SYSCLKFreq_VALUE', value='84000000').
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| ioc_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It does state that the tool mutates the .ioc file and has upsert semantics, but it does not disclose side effects, path/validation behavior, reversibility, or any prerequisites. For a mutation tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The entire description is one focused sentence with an illustrative example. There is no redundant wording, and the core operation is stated up front.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-string-parameter mutation tool, the description is mostly adequate, especially since an output schema exists to explain return values. Still, it lacks full parameter semantics and explicit guidance on when to prefer this over related .ioc or project tools, so completeness is only moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds a useful example showing that 'key' is a dotted STM32CubeMX property path and 'value' is a string, but it does not explicitly define 'ioc_path' or describe formats, constraints, or edge cases for any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Updates or inserts'), a clear resource ('configuration property in an STM32CubeMX .ioc file'), and includes a concrete key/value example. This makes it clearly distinct from sibling read/parse/build/flash tools even without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when a property in an .ioc file needs to be updated or inserted. However, it does not explicitly state when not to use it or name alternatives such as stm32_parse_ioc for reading properties, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_write_memoryB
Writes a 32-bit word directly to a target memory address or peripheral register.
Args: address: Target address (e.g. '0x20000000'). value: Hex value to write (e.g. '0x12345678'). port: Connection interface ('SWD', 'JTAG').
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| value | Yes | ||
| address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, but it only states the operation and width. It does not mention the potential for corrupting runtime state, need for a halted/connected target, error behavior, or reversibility—all material for a direct memory write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clear purpose sentence plus a compact Args block with no filler; every sentence adds value and key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-level hardware write tool with no annotations, the description lacks prerequisite context such as target connection or active debug session, and it provides no risk guidance for writing arbitrary memory. The existing content is enough for syntax but not for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by adding a one-line explanation and hex examples for address/value and allowed SWD/JTAG choices for port. It still omits constraints like word alignment, address validity, and that port defaults to SWD, though the default is present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific operation—'Writes a 32-bit word'—and targets distinct resources: memory addresses or peripheral registers. This differentiates it from sibling write tools such as stm32_write_option_bytes and stm32_write_serial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided; it never names alternatives or conditions such as low-level register debugging vs flashing. The only implicit signal is 'directly,' but an agent isn't told what prerequisites or exclusions apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_write_option_bytesB
Modifies hardware option bytes (e.g. options=['RDP=0xAA', 'BOR_LEV=0']).
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | SWD | |
| options | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, but it only says 'Modifies', implying a mutating operation without detailing effects, reversibility, or prerequisites like specific hardware connections or security implications (e.g., RDP levels). It does not disclose what happens if invalid options are given or if a reset is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with one sentence that front-loads the core action and an example. However, it could add more structured detail without becoming verbose; the brevity is a trade-off that reduces completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (modifying hardware settings) and lack of annotations, the description is insufficient. It needs to cover parameter details, potential risks, and prerequisites. The presence of output schema is unknown, but the description does not explain return values, so an agent may lack critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only provides an example for the 'options' parameter. It does not explain the 'port' parameter (default 'SWD') or its valid values, leaving the parameter semantics incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool modifies hardware option bytes, specifying the resource (option bytes) and providing an example of the options format. This distinguishes it from siblings like stm32_read_option_bytes, which reads instead of writes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for modifying option bytes, but it does not explicitly state when to use this tool versus alternatives like stm32_read_option_bytes or stm32_flash_firmware. No exclusions or alternatives are mentioned, leaving some ambiguity for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stm32_write_serialB
Sends data or AT/terminal commands to target MCU over serial port.
Args: port: Port name (e.g. 'COM3' or '/dev/ttyUSB0'). data: String to send. baudrate: Baud rate (default: 115200). append_newline: If True, appends CRLF (\r\n).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| port | Yes | ||
| baudrate | No | ||
| append_newline | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It does reveal that append_newline appends CRLF and that data can be AT/terminal commands, but it does not say whether the tool opens/closes the port, waits for a response, buffers output, or how errors are handled. For a serial write operation this leaves meaningful behavioral unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: one action sentence followed by four compact parameter bullets. It is front-loaded with the tool's purpose, and every line adds information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple serial write, the essential invocation details are present: required parameters and defaults are clear, and an output schema exists to document return values. However, the lack of behavioral detail about response handling and the absence of any routing guidance relative to sibling tools makes it only minimally complete for an autonomous agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the Args list compensates fully by explaining all four parameters: port with concrete examples, data as the string to send, baudrate with its default value, and append_newline with its functional effect of appending CRLF. This is exactly the semantic enrichment the description needs to provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence uses a specific verb ('Sends') and names the resource ('data or AT/terminal commands to target MCU over serial port'), making the tool's core function clear. It also signals the write direction versus the sibling read tool, though it does not explicitly name stm32_read_serial or contrast itself with other write tools like stm32_write_memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool instead of stm32_read_serial or other serial-related tools. It also omits prerequisites such as selecting a port via stm32_list_serial_ports or ensuring the MCU is connected, leaving the usage context entirely implicit.
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.
34 tool updates
v1.0.0- First observed
stm32_build_project - First observed
stm32_capture_ide_screenshot - First observed
stm32_clean_project - First observed
stm32_close_ide - First observed
stm32_create_project - First observed
stm32_detect_installation - First observed
stm32_dump_flash_to_file - First observed
stm32_erase_flash - First observed
stm32_flash_firmware - First observed
stm32_focus_ide_window - First observed
stm32_get_build_artifacts - First observed
stm32_get_ide_windows - First observed
stm32_get_system_status - First observed
stm32_get_target_info - First observed
stm32_import_project - First observed
stm32_launch_ide - First observed
stm32_list_connected_probes - First observed
stm32_list_projects - First observed
stm32_list_serial_ports - First observed
stm32_parse_ioc - First observed
stm32_read_memory - First observed
stm32_read_option_bytes - First observed
stm32_read_serial - First observed
stm32_remove_project - First observed
stm32_reset_target - First observed
stm32_run_gdb_script - First observed
stm32_send_ide_shortcut - First observed
stm32_start_gdb_server - First observed
stm32_start_openocd - First observed
stm32_stop_gdb_server - First observed
stm32_update_ioc - First observed
stm32_write_memory - First observed
stm32_write_option_bytes - First observed
stm32_write_serial
TDQS
Scored across 34 tools
Most tools target a distinct resource and action, but a few overlaps exist: stm32_get_system_status includes connected debug probes and COM ports, which also appear in stm32_list_connected_probes and stm32_list_serial_ports. Additionally, stm32_start_openocd and stm32_start_gdb_server both start debug servers, with stm32_stop_gdb_server stopping both.
All tools follow the consistent stm32_<verb>_<object> pattern with snake_case throughout, e.g. list_projects, create_project, read_memory, and write_serial. Even longer names like dump_flash_to_file and start_gdb_server fit the same predictable convention.
At 34 tools, the server exceeds the 25-tool threshold and feels heavy for an MCP surface. The IDE-window automation cluster, serial-port listing, and debug-server controls could reasonably be consolidated without losing core functionality.
The tool set covers the full embedded workflow: project creation/import/build/flash, memory access, option bytes, serial I/O, GDB server control, and IDE automation. Minor gaps remain such as CubeMX code generation and project rename/configuration management, but agents can work around them.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Official DevSpeak MCP server — translate technical text into formal specs from any AI IDE or agent
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Related MCP Servers
- FlicenseAqualityCmaintenanceEnables AI assistants to flash firmware, program memory, modify option bytes, erase chips, reset boards, and capture SWO printf traces for STM32 microcontrollers via STM32CubeCLT.12-
- AlicenseAqualityBmaintenanceMCP server that wraps STM32CubeMX CLI to let AI load .ioc projects, modify pin/peripheral configurations, generate HAL code, and export pinout tables.53MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI agents to inspect, plan, validate, and apply STM32CubeMX .ioc configuration changes, and generate STM32CubeIDE projects, ensuring safe and testable embedded-system workflows.9MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets AI coding agents drive the full STM32 development loop—code generation, build, flash, debug, serial monitoring, and fault diagnosis—end to end via CubeIDE, CubeMX, CubeProgrammer, OpenOCD, and GDB.MIT