jlink-mcp
This server lets an AI assistant debug ARM Cortex-M embedded devices through a debug probe (J-Link, OpenOCD, or Black Magic Probe) over MCP.
Discover and configure connected probes and target devices
Flash firmware, erase flash, reset, halt, resume, and single-step the CPU
Read/write memory and CPU registers
Read and decode peripherals from CMSIS-SVD files
Set and clear hardware breakpoints
Start/stop/check GDB servers and attach a GDB client for source-level debugging
Run GDB commands, backtraces, load ELF symbols, and wait for target stops
Connect to RTT, read/search/send/clear logs, and parse Zephyr output
Run telnet proxies for Trice/Pigweed detokenizers
Capture full device snapshots and diagnose crashes with decoded fault registers
Execute raw probe commands and inspect server configuration
Provides debugging for ARM Cortex-M microcontrollers, including register and memory access, flashing firmware, crash fault decoding, RTT logging, breakpoint control, and GDB server integration.
Click on "Install 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., "@jlink-mcpread memory at 0x20000000"
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.
See it work
Your firmware just crashed. One tool call:
> diagnose_crash
## Crash Diagnosis
### CPU State
Core: PC=0x000000B8 SP=0x2003FFA8 R0=0x0000000A R1=0x000007FF R2=0x00000001 ...
Status: XPSR=0x21000003 CONTROL=0x00000000 PRIMASK=0x00000000 ...
Stack: MSP=0x2003FFA8 PSP=0x00000000
⚠ CPU is in exception handler (IPSR=0x00000003)
### Fault Registers
CFSR=0x01000000 HFSR=0x40000000 DFSR=0x00000000 MMFAR=0xe000edf8 BFAR=0xe000edf8
### Decoded Faults
## UsageFault (UFSR):
- UNALIGNED: Unaligned memory access
## HardFault (HFSR):
- FORCED: Forced HardFault (escalated from configurable fault)
### Exception Stack Frame
R0 = 0x0000000A R1 = 0x000007FF
R12 = 0x00000000 LR = 0x000001F5
PC = 0x00000254 xPSR = 0x21000000
→ Faulting instruction at PC=0x00000254
### Recent Errors/Warnings from RTT
[WRN] sensor_drv: sample out of range, clamping seq=2Fault decoded, exception frame unwound, faulting instruction named, and the device's own log correlated — from one call, without a human reading a datasheet to find out what bit 24 of CFSR means.
And it knows what the silicon is
Point it at your target's CMSIS-SVD file and peripheral registers stop being hex:
> read_peripheral FICR
FICR @ 0x10000000
INFO.PART @ 0x10000100 = 0x00052840 (read-only)
[31:0] PART 0x52840 → N52840
INFO.RAM @ 0x1000010C = 0x00000100 (read-only)
[31:0] RAM 0x100 → K256
INFO.FLASH @ 0x10000110 = 0x00000400 (read-only)
[31:0] FLASH 0x400 → K10240x400 means 1024 KB of flash — but only if you know that, and an LLM guessing
at bit layouts is exactly the failure this avoids. The addresses come from the
vendor's own description, and the meanings from its enumerations.
Both transcripts are verbatim output from an nRF52840-DK in this project's hardware test suite.
Related MCP server: jlink-mcp
What is this?
jlink-mcp connects AI assistants (Claude, Copilot, etc.) to your embedded hardware via SEGGER J-Link debug probes using the Model Context Protocol.
Instead of manually typing J-Link commands, your AI assistant can:
Read registers and memory to understand device state
Flash firmware and reset devices
Stream RTT logs and search them by level/module/regex
Diagnose crashes by auto-decoding ARM Cortex-M fault registers
Control execution — halt, step, resume, breakpoints
Start GDB servers for full debugging sessions
Also supports OpenOCD (ST-Link, CMSIS-DAP, FTDI) and Black Magic Probe backends.
Installing
You need the SEGGER J-Link software
— that is what this server drives — a probe connected to an ARM Cortex-M
target, and Node 18+. For the other backends, OpenOCD or arm-none-eabi-gdb
instead.
Claude Code — from the plugin marketplace. This brings the
embedded-debugging skill along with the server, which is what stops an
assistant guessing at your hardware:
/plugin marketplace add Klievan/jlink-mcp
/plugin install jlink-mcpAny other agent — point it at this repository and ask it to set itself up:
Install the MCP server at https://github.com/Klievan/jlink-mcp and configure it for my board.
It will find what it needs here. If you would rather do it by hand, the server
is on npm and needs no build step: npx -y jlink-mcp, with JLINK_DEVICE set
to your target. mcp-config.json is a config you can paste.
VS Code — install the extension. It registers the server for Copilot Chat, Claude, and any MCP-aware client, so there is nothing to configure.
Then check it
Ask for check_setup. One call, and it says what is missing and what to do:
Not ready to debug yet.
OK probe software — J-Link software found at /Applications/SEGGER/JLink
BLOCK probe — none detected (Connecting to J-Link via USB...FAILED). Check the USB cable.
BLOCK target device — not set. Find the exact name with search_devices, then set_device.
note SVD — not loaded, so peripheral reads stay raw hex. Set SVD_PATH to a CMSIS-SVD file.You do not need your device's exact part number up front. search_devices
searches all 9800 that J-Link supports, by part number, manufacturer, or core.
Tools (47)
Workflow Tools (start here)
Tool | Description |
| One-call setup. Starts GDB server + connects RTT + returns boot log. |
| Captures full device state: registers, fault status, stack dump, RTT output. |
| Auto-reads and decodes ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR) with exception stack frame. |
Device Setup
Tool | Description |
| Scan for connected probes and show the configured target |
| Change the target device at runtime — no restart needed |
| Current probe, target device, and GDB server state |
Device Control
Tool | Description |
| Probe type, target CPU, compact register summary |
| Halt CPU |
| Resume CPU |
| Reset device. |
| Single-step one instruction |
Peripherals (CMSIS-SVD)
Set jlinkMcp.svdPath to your target's SVD — the same file Cortex-Debug takes
as svdFile. Vendors publish one per part.
Tool | Description |
| Every peripheral and base address on the chip |
| Read a peripheral's registers and decode each one's bit fields by name |
| Decode one register — read from the device, or interpret a value you already have |
Memory & Registers
Tool | Description |
| Read memory at address (clean hex dump output) |
| Write 32-bit value to address |
| All CPU registers in compact format |
| Read specific register (PC, SP, R0-R12, etc.) |
Flash
Tool | Description |
| Flash .hex/.bin/.elf firmware to device |
| Erase entire flash |
Breakpoints
Tool | Description |
| Set hardware breakpoint at address |
| Clear all breakpoints |
GDB Server
Tool | Description |
| Start probe's GDB server |
| Stop GDB server + disconnect RTT |
| GDB server, RTT, and proxy status |
Source-Level Debugging
Attach a real GDB client for symbol-aware work — backtraces, variable inspection, and stepping by source line rather than by instruction.
Tool | Description |
| Attach a GDB client (auto-starts the server; optional ELF for symbols) |
| Load an ELF for debug symbols, optionally flashing it too |
| Call stack, optionally with locals in each frame |
| Run any GDB command — |
| Wait for the target to stop (after a continue or a breakpoint) |
| Detach the client, clearing breakpoints and debug hardware |
RTT (Real-Time Transfer)
Tool | Description |
| Connect to RTT telnet port |
| Disconnect from RTT |
| Read recent log lines (ANSI stripped, Zephyr format parsed) |
| Filter logs by level ( |
| Send data to device via RTT down-channel |
| Clear RTT buffer |
Telnet Proxy (Trice / Pigweed)
Tool | Description |
| Start TCP proxy that tees RTT for external detokenizers |
| Stop proxy |
| Proxy connection status |
| Read raw proxy buffer |
Advanced
Tool | Description |
| Execute raw probe commands |
| Current probe and server configuration |
The status bar knows who has the probe
A J-Link serves one client at a time, so a GDB server left running blocks everything else — and the usual way that happens is an assistant starting one through MCP and nobody noticing. The extension cannot detect that by remembering what it did: the MCP server runs in a separate process, so an LLM-started server is invisible to it.
So it watches the GDB port instead, which is true whoever is responsible. When something is listening the status bar turns amber and reads J-Link · MCP · 47m — who started it, and how long ago. Those are the two facts that turn "something has the probe" into "the assistant has had it since before lunch". Clicking offers to stop it.
The tooltip carries the rest: device, ports, whether RTT is up, and why it matters. And it never claims an uptime it did not watch — a server that was already running when the window opened is reported as known about for that long, not up for it.
It will not kill a process it cannot identify as a J-Link GDB server. A listening port proves something is there, not that it is ours.
The skill
The tools tell a model what it can do. They do not tell it what is worth doing, and two things go wrong constantly without that: models never think to load the ELF, so every backtrace is bare addresses; and they reason about what the hardware should be doing instead of spending one call asking it.
skills/embedded-debugging/SKILL.md is a Claude Code skill that covers both —
the two files that change everything (ELF for names, SVD for meanings), the
halt/read/resume rule, workflows for crashes, hangs, peripherals and silent
devices, and a table of beliefs paired with the tool call that actually checks
each one.
Claude Code picks it up if you install this repo as a plugin
(.claude-plugin/plugin.json), or you can copy the directory into
.claude/skills/ in your firmware project. MCP itself has no notion of skills
— its portable equivalent is prompts, and this server ships four.
Its claims are tested. test/hil/s04-symbols.test.ts proves on real silicon
that a backtrace without symbols has no function names, that loading the ELF
gives them, and that a symbols-only load does not reprogram the device.
Multi-Probe Support
jlink-mcp supports multiple debug probe backends through a common ProbeBackend abstraction:
Backend | Probe Hardware | Status | RTT Support |
J-Link | SEGGER J-Link, J-Link OB, J-Link EDU | Production | Yes |
OpenOCD | ST-Link, CMSIS-DAP, FTDI, J-Link (via OpenOCD) | Beta | No |
Black Magic Probe | BMP (built-in GDB server on serial) | Beta | No |
probe-rs | All probe-rs supported probes | Planned | Planned |
Selecting a Backend
# J-Link (default)
PROBE_TYPE=jlink JLINK_DEVICE=nRF52840_XXAA node out/mcp/standalone.js
# OpenOCD with ST-Link
PROBE_TYPE=openocd \
OPENOCD_INTERFACE=interface/stlink.cfg \
OPENOCD_TARGET=target/stm32f4x.cfg \
node out/mcp/standalone.js
# Black Magic Probe
PROBE_TYPE=blackmagic \
BMP_SERIAL_PORT=/dev/ttyACM0 \
node out/mcp/standalone.jsArchitecture
┌─────────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude, Copilot, any MCP client) │
└──────────────────────┬──────────────────────────────┘
│ JSON-RPC over stdio
┌──────────────────────▼──────────────────────────────┐
│ jlink-mcp │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ │ 31 Tools │ │4 Resources│ │ 4 Prompts │ │
│ └────┬─────┘ └────┬─────┘ └───────┬───────────┘ │
│ │ │ │ │
│ ┌────▼──────────────▼────────────────▼───────────┐ │
│ │ ProbeBackend │ │
│ │ ┌─────────┐ ┌─────────┐ ┌──────────────────┐ │ │
│ │ │ J-Link │ │ OpenOCD │ │ Black Magic Probe│ │ │
│ │ └────┬────┘ └────┬────┘ └────────┬─────────┘ │ │
│ └───────┼───────────┼───────────────┼─────────────┘ │
│ │ │ │ │
│ ┌───────▼───┐ ┌─────▼────┐ ┌───────▼──────────┐ │
│ │ RTTClient │ │TelnetProxy│ │ ProcessManager │ │
│ └───────────┘ └──────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────┘
│
┌────────────▼────────────┐
│ Debug Probe (USB) │
│ → Target MCU (SWD/JTAG)│
└─────────────────────────┘Source Layout
src/
├── probe/
│ ├── backend.ts # ProbeBackend abstract class + shared utilities
│ ├── jlink.ts # SEGGER J-Link implementation
│ ├── openocd.ts # OpenOCD implementation
│ ├── blackmagic.ts # Black Magic Probe implementation
│ └── factory.ts # Probe creation from config
├── mcp/
│ ├── server.ts # MCP server (45 tools, 4 resources, 4 prompts)
│ └── standalone.ts # Standalone entry (stdio transport)
├── rtt/
│ └── rtt-client.ts # RTT client with ANSI stripping + Zephyr log parsing
├── telnet/
│ └── telnet-proxy.ts # TCP proxy for Trice/Pigweed detokenizer
├── utils/
│ ├── config.ts # VSCode settings / env var config
│ ├── logger.ts # Logging
│ └── process-manager.ts # Child process lifecycle
└── extension.ts # VSCode extension + MCP provider registrationDesign Decisions (LLM-Optimized)
This server was built by having an AI use it against real hardware, then fixing every friction point.
What read_registers would give you
Raw JLinkExe output for halt; regs — 77 lines, of which about six carry
information. Every token here costs context, and the register values are buried
in the middle:
SEGGER J-Link Commander V9.70 (Compiled Aug 19 2026 12:16:13)
DLL version V9.70, compiled Aug 19 2026 12:15:25
Connecting to J-Link ...O.K.
Firmware: J-Link OB-nRF5340-NordicSemi compiled Jun 11 2026 13:12:28
Hardware version: V1.00
J-Link uptime (since boot): 0d 00h 34m 29s
S/N: 1050298247
License(s): RDI, FlashBP, FlashDL, JFlash, GDB
...30 more lines of connect banner...
PC = 00000044, CycleCnt = 00EB67E5
R0 = 20000000, R1 = 9D56C547, R2 = 00000000, R3 = 00000000
...
FPS0 = 00000000, FPS1 = 00000000, FPS2 = 00000000, FPS3 = 00000000
...28 more lines of zeroed FP registers...What it actually gives you
Three lines. Same information, grouped by what you would ask for:
Core: PC=0x00000046 SP=0x20010000 R0=0x20000000 R1=0x01D43416 R2=0x00000000 ...
Status: XPSR=0x01000000 CONTROL=0x00000000 PRIMASK=0x00000000 BASEPRI=0x00000000
Stack: MSP=0x20010000 PSP=0x00000000Both captured from the same board. The rest of the design follows the same rule — return what was asked for, and nothing else:
Output parsing strips the connection banner. Only data comes back.
Registers are compact and grouped (core / status / stack).
FP registers only shown if non-zero (they're usually all zeros).
RTT output has ANSI escape codes stripped and Zephyr log format parsed into structured fields.
Composite tools (
start_debug_session,snapshot,diagnose_crash) replace multi-step workflows with single calls.Fault decoding is automatic — reads CFSR/HFSR/MMFAR/BFAR and explains each bit.
rtt_searchlets you find errors without reading the entire log.Peripheral registers decode through the vendor's own CMSIS-SVD, so the model reads
RAM = K256rather than guessing what0x100means in that field of that register.Failures say what to do. "Target is running; use halt" beats "could not read memory", and a fault-register read that did not happen reports itself rather than decoding zeroes into "no faults detected".
Verified on real hardware
Most of what can go wrong between an LLM and a debug probe fails quietly: a tool returns success with an empty payload, a parser drops half a line, a session dies and the next command reports something plausible instead. None of that is visible from reading the code, and a test suite that asserts "the call did not error" passes on all of it.
So this project runs a hardware tier: 58 tests against a real nRF52840-DK on a self-hosted runner, driving the actual MCP server over stdio exactly as a client would. It covers probe discovery, flash and verify, halt/step/resume under a live GDB session, memory and peripheral reads, RTT streaming and filtering, and crash diagnosis against faults injected on demand.
It has caught bugs that had been shipping green, including:
diagnose_crashreporting "No faults detected" during real crashes — the memory-dump parser was dropping half of every lineevery GDB-routed tool returning empty output while the server reported itself healthy
sessions leaving the target unbootable, with breakpoint comparators still armed that no reset clears
resetreporting success while doing nothing at all — the GDB server is a synchronous remote and refuses commands while the target runs, so every command of the reset sequence was rejected in turn and the failure discardedthe session teardown that disarms debug hardware being refused in its entirety for the same reason, and reporting "debug hardware disarmed" regardless — the fix above is what made this one visible
a GDB server reported running when it had already exited, because startup returned on the spawn without waiting to see whether it got the probe
RTT going silent after a reset or a flash — the target was still logging and the probe had stopped collecting, which reads exactly like a quiet device. Caught by reading the control block from both ends: 490 bytes written by the firmware, none collected
an assignment that was silently discarded, taking RTT out for the rest of the session — the flag guarding it asked whether a state enum read
GDB_RUNNING, when the question it meant to ask was whether the GDB server was running
Every one of those reported success. That is the point of the hardware tier, and the reason the suites assert on parsed content rather than on the call having returned without error — a suite that checked for errors would have passed on all of them.
Raw probe output captured during those runs is committed as golden transcripts, so a fast unit tier replays real device bytes in seconds on any machine — no probe required to catch a format regression.
npm test # ~257 tests, seconds, no hardware
npm run test:hil # hardware tier; needs HIL=1 and a probeEnvironment Variables
J-Link
Variable | Default | Description |
|
| Probe backend: |
|
| Target device (e.g., |
| Auto-detect | Path to SEGGER J-Link installation |
|
| Debug interface: |
|
| Connection speed in kHz |
| J-Link serial number (multi-probe) | |
|
| GDB server port |
|
| RTT telnet port |
| Auto | Address of the RTT control block (your |
OpenOCD
Variable | Default | Description |
|
| Path to openocd binary |
|
| Interface config file |
|
| Target config file |
|
| GDB server port |
|
| Telnet command port |
Black Magic Probe
Variable | Default | Description |
|
| Path to GDB binary |
|
| BMP serial port |
|
| Target index after scan |
Contributing
Adding a new probe backend:
Create
src/probe/yourprobe.tsimplementingProbeBackendAdd a case to
src/probe/factory.tsThat's it — all 31 MCP tools work automatically
License
MIT - see LICENSE
Available Tools
47 toolscheck_setupA
Check that everything needed to debug is in place: the probe software, a connected probe, a target device name, and the optional files that make output readable. Run this first when anything fails, or when starting on a machine for the first time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining what the tool does. It discloses that it verifies setup components and is meant as a first step, but it does not describe what the tool returns, whether it is strictly read-only, or how failures are reported. The behavior is mostly transparent but not fully specified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The purpose is front-loaded, the enumerated items provide concrete scope, and the usage rule is a natural second sentence.
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 zero-parameter preflight tool, the description covers what is checked and when to run it. The main gap is that it does not explain the return format or how to interpret the result, and there is no output schema to provide that information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is no parameter meaning for the description to add. The baseline of 4 applies because nothing is missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check') and a clear resource ('everything needed to debug is in place'), then enumerates the concrete items involved: probe software, connected probe, target device name, and optional readability files. This clearly distinguishes it from sibling tools like list_devices or diagnose_crash.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: run this first when anything fails, or when starting on a new machine. It does not name alternative tools or state when not to use it, so it stops just short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_breakpointsA
Clear all breakpoints, including any left armed in the debug hardware by an earlier session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals a non-obvious side effect: the tool also clears breakpoints armed in debug hardware from earlier sessions, which signals persistence across sessions. This is meaningful behavioral context beyond what the tool name alone conveys.
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 wasted words. 'Clear all breakpoints' immediately states the action, and the trailing clause adds important hardware-session context without bloating the text.
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, no-output-schema tool, the description adequately covers what the operation does and even addresses a subtle edge case about hardware-armed breakpoints from prior sessions. It could optionally mention return behavior or idempotency, but for this simple command the core contextual needs are met.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is trivially 100%, so there is no parameter surface for the description to explain. The rubric sets a baseline of 4 for zero-parameter tools, and the description appropriately avoids inventing parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource, 'Clear all breakpoints,' making the tool's function unmistakable. The added clause about breakpoints 'left armed in the debug hardware by an earlier session' clearly distinguishes this cleanup operation from ordinary breakpoint manipulation and from siblings like set_breakpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when a complete cleanup is desired, especially after a previous session may have left hardware breakpoints armed. However, it does not explicitly say when not to use it or mention alternatives such as set_breakpoint, leaving the usage boundary to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_registerA
Decode a value into named bit fields using the target's SVD. Reads from the device unless a value is supplied — useful for interpreting a number you already have.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Hex value to decode instead of reading the device | |
| register | Yes | Register name, e.g. 'ENABLE' or 'INFO.PART' | |
| peripheral | Yes | Peripheral name, e.g. 'UARTE0' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does so well: it discloses that the tool reads from the device unless a value is supplied and that it relies on the target's SVD for decoding. It also implies a non-destructive, read-only operation. It doesn't cover error cases or full return format, but 'named bit fields' gives a clear output expectation.
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 packs the core purpose, conditional source behavior, and a practical use case without any filler. Every clause adds information, and the formatting is easily scannable.
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 three-parameter tool with no output schema, the description covers purpose, how the source is determined (device vs supplied value), and the expected output concept (named bit fields). It does not explicitly mention prerequisites like setting the SVD path, but that is implied by 'using the target's SVD' and is a reasonable gap for a specialized debugger tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The schema already documents the 'value' parameter as a hex value used instead of reading the device, and both required parameters have examples. The tool description adds only a slight clarification of the conditional device-read behavior, not enough to raise the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Decode a value into named bit fields using the target's SVD.' This clearly distinguishes it from siblings like read_register or read_peripheral, which fetch raw values rather than decode them. The behavior of reading from the device or using a supplied value is also clearly 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 states a clear use case: 'useful for interpreting a number you already have,' which signals when an agent should use this tool with a supplied value. It also explains the alternative mode—reading from the device when no value is given—even though it doesn't explicitly name sibling tools. This gives adequate contextual guidance for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_infoA
Halt the target and read its registers via SEGGER J-Link. Returns the probe name and a compact register summary. Leaves the target HALTED — call resume when you are done.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and handles it well: it explicitly states that the target is left HALTED and instructs the agent to call resume when done. It also clarifies that this is a J-Link operation and describes the return content, so there is no hidden state change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences each earn their place: the action, the return value, and the critical halted-state warning. There is no filler or redundant schema repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description adequately covers the operation, the return value, and the postcondition. It is slightly incomplete because it omits prerequisites such as requiring an active debug session or connected J-Link probe, and it does not detail the register summary format, but these are secondary for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty, so there are no parameters to document and the 0-parameter baseline applies. The description appropriately adds no parameter information because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: halt the target and read its registers via SEGGER J-Link, and names the expected outputs (probe name and register summary). It does not explicitly differentiate this from the sibling halt/read_registers tools, though the compound behavior and probe-name output make it reasonably distinct.
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 about when to choose this tool over related siblings such as read_registers, read_register, or halt. The only operational instruction is the postcondition to call resume, which is useful after invocation but does not help the agent select a tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_crashA
Auto-read and decode ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR), exception stack frame, and recent errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the action (auto-read and decode) but lacks details on prerequisites (e.g., target must be halted), side effects, or limitations. The behavioral transparency is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core action. It is concise with no unnecessary words, though it could include more contextual details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should clarify what the tool returns. It states it 'reads and decodes' but does not specify the output format (e.g., text, structured data). This missing detail reduces completeness for a tool with multiple read targets.
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 parameters, the input schema provides no guidance. The description adds meaning by specifying which registers and structures are read (CFSR, HFSR, MMFAR, BFAR, exception stack frame, recent errors), fulfilling the need beyond the schema. Baseline is 4 due to zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool auto-reads and decodes specific ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR), exception stack frame, and recent errors. This specific verb+resource combination distinguishes it from siblings like 'read_registers' (generic register read) and 'gdb_backtrace' (backtrace).
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 diagnosing crashes but does not explicitly state when to use this tool versus alternatives like 'gdb_backtrace' or 'read_registers'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eraseB
Erase target flash memory
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'erase', implying destructive action but without details on scope, reversibility, or required device state. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no excess. It is appropriately concise for a simple tool with no parameters.
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 destructive operation, the description lacks important context such as what exactly is erased (entire flash, specific sectors?) and any preconditions (e.g., device halted). Incomplete for safe 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?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter meaning. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it erases flash memory, using a specific verb and resource. It is distinct from sibling tools like 'flash' or 'write_memory', though it does not explicitly differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as 'flash' or 'reset'. There are no prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flashC
Flash firmware to the target device
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to firmware file (.hex, .bin, .elf) | |
| baseAddress | No | Base address for .bin files (hex) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states the action without mentioning side effects (e.g., erasing before writing), potential failures, or required device state, offering minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, free of fluff. While efficient, it could be slightly more informative without adding much length.
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 has no output schema and many sibling tools, the description lacks details on return values, error conditions, or prerequisites. For a potentially destructive operation, this is insufficiently 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 input schema has 100% coverage with descriptions for both parameters, so the baseline is 3. The tool description adds no additional parameter context beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('flash firmware') and target ('target device'), providing a specific verb and resource. However, it does not differentiate from sibling tools that may also involve flashing (e.g., gdb_load), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like gdb_load or erase. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_backtraceB
Get a stack backtrace. With debug symbols loaded, shows function names, file paths, and line numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Include local variables in each frame (default false) |
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. It describes the output but does not disclose side effects, safety, or requirements (e.g., target must be halted). The description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description omits output format/type and contextual prerequisites. Adequate for a basic tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter fully described in the schema. The description adds no additional semantics beyond the schema, so baseline 3 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 clearly states the tool retrieves a stack backtrace, specifying that with debug symbols it shows function names, file paths, and line numbers. This is a specific verb+resource and distinguishes it from other GDB tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like gdb_command or read_memory. There is no mention of prerequisites (e.g., connected session) or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_commandA
Send any GDB command and get the response. For execution commands (continue, step, next, finish, until), blocks until the target stops or times out. If the target doesn't stop, use gdb_wait to poll. Examples: 'bt' (backtrace), 'info threads', 'print myVar', 'break main', 'continue', 'next', 'step', 'finish', 'info registers', 'x/10xw 0x20000000'
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | GDB command to execute | |
| timeout | No | Timeout in ms for run commands (default 15000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses blocking and timeout for execution commands, but does not mention side effects (e.g., setting breakpoints modifies state) or response format. Lacks full 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?
Description is concise with three sentences and examples, front-loaded with purpose. Every sentence adds necessary information 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?
No output schema, so description should explain return value format, but only says 'get the response'. Missing details on error handling or response structure. Given moderate complexity and sibling count, description 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?
Schema covers both parameters with descriptions (100% coverage). Description adds value through examples of commands and clarifies timeout default, enhancing understanding beyond schema alone.
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 sends any GDB command and gets a response, with specific verb and resource. It distinguishes from siblings like gdb_wait by explaining blocking behavior and when to use the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (any GDB command) and when not (for execution commands that block, with suggestion to use gdb_wait if target doesn't stop). This provides clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_connectA
Connect a GDB client to the running GDB server. Enables source-level debugging: backtraces, variable inspection, conditional breakpoints, stepping by source line. Optionally load an ELF file for symbol info.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | GDB server host (default: localhost) | |
| port | No | GDB server port (default: 2331) | |
| elfFile | No | Path to .elf file with debug symbols (enables source-level debugging) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. States connection and debugging enablement but lacks disclosure on connection establishment, failure modes, or side effects. Minimal transparency beyond obvious purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core action. No extraneous information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and optional ELF loading. Missing return value description and failure scenarios. Without output schema or annotations, description is adequate for a simple connector but incomplete for advanced 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?
Schema coverage 100%; all parameters documented. Description adds context for elfFile (symbol info) but does not significantly enhance schema definitions. Baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'connect' and resource 'GDB client to server'. Describes enabled functionality (source-level debugging). Distinct from siblings like gdb_disconnect and gdb_server_start.
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?
Implies server must be running, but does not explicitly state prerequisites or when not to use (e.g., if server not started). Offers optional ELF loading for extra context, but no alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_disconnectA
Disconnect the GDB client (does not stop the GDB server)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly states what the tool does (disconnect client) and what it does not do (stop server), which is transparent for a simple operation. However, it could mention prerequisites like requiring an active 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 a single sentence that is front-loaded with the key action and a critical clarification. No wasted words, earning its place efficiently.
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 has no parameters and no output schema, the description is complete. It explains the action and the key distinction from related tools, providing all necessary context for an agent to use 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?
There are no parameters (schema coverage 100%), so the baseline is 4. The description does not need to add param info, and it is sufficient for this no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'disconnect' with the resource 'GDB client', and explicitly distinguishes from stopping the server, making it clear and distinct from siblings like gdb_server_stop.
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?
While the description clarifies it does not stop the GDB server, there is no explicit guidance on when to use this tool versus alternatives (e.g., gdb_server_stop). The usage is simple enough to infer, but explicit guidance would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_loadA
Load an ELF file into GDB. By default loads symbols only (for source-level debugging: backtraces with file:line, variable names). Set flash=true to also program it onto the target.
| Name | Required | Description | Default |
|---|---|---|---|
| flash | No | Also flash the ELF to the target (default: false, symbols only) | |
| elfFile | Yes | Path to .elf file with debug symbols |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses that symbols-only is the default and that flash=true programs the target. It also explains the benefit of symbols (source-level debugging). Missing details like prerequisites or side effects (e.g., does it require an active connection? does it reset the target?) but adequate for a simple 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 two sentences, front-loaded with the main action. It uses precise language and avoids filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two simple parameters and no output schema, the description adequately explains the tool's function and modes. It lacks output/return value info but is otherwise complete enough for an agent to select and invoke correctly given the available 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 coverage is 100%, so the schema already describes both parameters. The description adds value by explaining why symbols are useful (backtraces with file:line, variable names) and clarifies the flash parameter's effect. This goes beyond the schema's type/description, justifying a 4.
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 loads an ELF file into GDB, and distinguishes between two modes: symbols-only (for source-level debugging) and flashing onto the target. The purpose is specific and distinct from sibling tools like 'flash' or 'gdb_connect'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use symbols-only vs. flashing. However, it does not contrast this tool with the sibling 'flash' tool, which may cause confusion since both can flash. The usage context is clear for the tool's typical use but lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_server_startA
Start SEGGER J-Link GDB server
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the basic action but omits important behavioral details such as idempotency, blocking behavior, or requirements (e.g., device must be set). This leaves the agent with incomplete understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. While it could include slightly more context (e.g., 'for debugging'), it remains efficient and 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?
Given the tool's simplicity (0 params, no output schema), the description is minimally sufficient. However, it lacks context about the overall debugging workflow (e.g., that gdb_connect should follow), which would better support an AI 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?
There are no parameters (schema coverage 100%), so the description does not need to add parameter details. Baseline for 0 parameters is 4, and the description appropriately conveys the action without redundant parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the clear verb 'Start' and specifies the resource 'SEGGER J-Link GDB server'. It accurately conveys the tool's action and distinguishes it from siblings like gdb_server_stop and gdb_server_status.
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 explicit guidance on when to use this tool versus alternatives like gdb_connect. The usage context (starting a server before connecting) is implied but not stated, and no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_server_statusB
Get GDB server, RTT, and telnet proxy status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description lacks behavioral details such as read-only nature, required connections, or side effects. This is a gap for a status 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?
Single concise sentence with no extraneous words. Front-loaded with the main 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?
Lacks output description, usage context, and behavioral traits. Users cannot know what the status output contains or when to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, so the description does not need to add parameter semantics. Baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets status for GDB server, RTT, and telnet proxy, differentiating it from sibling tools that target individual components or actions (start/stop). However, it could be more explicit about the combined nature.
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 separate status tools like telnet_proxy_status, or prerequisites like having a debug session active.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_server_stopA
Stop SEGGER J-Link GDB server and disconnect RTT
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states the action without disclosing behavioral traits such as that it terminates debug sessions or requires a running server. It does not warn about potential side effects like losing 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?
Single sentence, front-loaded with action verb, no wasted words. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and simple action, the description is adequate but lacks completeness for context: it doesn't mention that the server must be running, or what state it leaves the system in (e.g., debug session ends). For a tool in a debugging suite, more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema description coverage is 100%. Baseline for zero parameters is 4. Description adds no parameter info, which is appropriate since there are none.
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 stops the SEGGER J-Link GDB server and disconnects RTT. It uses specific verb 'Stop' and resource 'SEGGER J-Link GDB server', distinguishing it from siblings like gdb_server_start or gdb_server_status.
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. For example, gdb_disconnect might also disconnect but not stop the server. The description does not mention prerequisites (e.g., server must be running) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gdb_waitA
Poll for target stop after a continue/step that timed out. Returns the stop reason (breakpoint hit, signal, finished stepping, etc.) when the target halts.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | How long to wait in ms (default 30000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses it polls until target stops and returns the stop reason, but does not clarify behavior on timeout (e.g., returns an error or times out gracefully). No annotations exist, so description holds full burden; lacks completeness about blocking nature and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the key information: purpose and return value. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description covers essential aspects: what it does, when to use it, and what it returns. Minor gap: no mention of timeout behavior, but overall sufficient for selection.
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 does not elaborate on the 'timeout' parameter beyond what the schema already states (how long to wait). With 100% schema coverage, baseline is 3; no additional value provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it polls for target stop after a continue/step that timed out, distinguishing it from sibling tools like 'step' or 'halt'. Specifically identifies the verb (poll), resource (target stop), and condition (after timeout).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'after a continue/step that timed out', providing clear context for when to use. Does not mention alternatives or exclusions, but the context is sufficient for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configC
Get current probe and server configuration
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only states it 'gets' configuration, implying a read-only operation, but does not disclose behavioral traits such as whether it requires specific permissions, what side effects might occur, or if it caches results.
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?
Single sentence, no unnecessary words, front-loaded with the core action. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no parameters and low complexity, the description lacks details about the output format or what keys/values are returned. Without an output schema, the description should specify what configuration fields are included (e.g., probe version, server address). This omission reduces 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?
No parameters exist so schema coverage is 100%. The description adds no parameter-level semantics, but since there are none, a baseline score of 3 is appropriate. Could have elaborated on what 'configuration' encompasses.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves current probe and server configuration. While the verb 'Get' and object 'configuration' are specific, it does not distinguish from sibling tools like 'device_info' which might also return configuration details.
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 (e.g., 'device_info', 'probe_command'). Should specify that this returns configuration settings, not runtime state or debugging info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
haltA
Halt the target CPU
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as side effects, state changes, or safety implications. The tool performs a halt but lacks transparency beyond the name.
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?
Single sentence with no redundancy. Perfectly concise and 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 parameterless tool with no output schema, the description is largely complete. However, it could benefit from noting that the CPU stops execution, which is implied by 'halt'.
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 no parameters (schema coverage 100%), the description cannot add value beyond what the schema provides. Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Halt' and resource 'target CPU', clearly stating the action and distinguishing it from siblings like 'resume' or 'step'.
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 (e.g., 'stop', 'reset', 'step'). The description does not provide context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devicesA
Scan for connected PROBES — the debuggers plugged into this machine, not target chips. Despite the name it does not list target devices; use search_devices for those. Shows probe serial numbers and whether one is reachable.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It clearly states the tool scans for connected probes and reports serial numbers and reachability. It could add more detail about what 'reachable' means or potential side effects of scanning, but for a no-parameter listing tool this is solid 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?
Three sentences, each earning its place: the actual purpose, the critical correction about what it does not list, and the output summary. The most important clarifying 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 no-parameter, no-output-schema tool, the description is complete enough. It defines scope, names the alternative, and states what results are shown. Nothing an agent needs to correctly invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema already fully covers inputs. The description adds no parameter details, but none are needed; the baseline for zero parameters is 4.
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 ('Scan for connected PROBES') and a clear resource, then explicitly distinguishes from target devices by naming the sibling search_devices. An agent can immediately understand what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives direct usage direction: use this for connected debugger probes, and explicitly says to use search_devices for target chips. This is an explicit when-to-use and when-not-to-use statement with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_peripheralsA
List the target's peripherals and base addresses, from its CMSIS-SVD description. Requires an SVD file to be configured.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Case-insensitive substring, e.g. 'uart' or 'timer' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of describing behavior. It communicates that this is a read-only enumeration and reveals the SVD-configuration prerequisite, but it does not disclose what happens if no SVD file is configured, whether a target connection is required, or how results are formatted.
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 short sentences with no filler: the core action and source come first, and the prerequisite is a separate, front-loaded condition. 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 one optional filter and no output schema, the description gives the essential information: what is listed, the data source, and the prerequisite. It could be more complete by describing the return format or failure mode if the SVD is missing, but those are minor 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?
The input schema already describes the only parameter ('filter') completely as a case-insensitive substring, so baseline 3 applies. The description adds no parameter-level detail, but none is needed beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a specific resource ('the target's peripherals and base addresses') and identifies the data source (CMSIS-SVD). This clearly separates it from sibling tools like read_peripheral, which reads a peripheral's registers, and set_svd_path, which manages SVD configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states an explicit prerequisite: an SVD file must be configured, which tells the agent when this tool is viable and implies checking setup first. It does not name alternatives or give when-not conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_commandC
Execute raw SEGGER J-Link commands
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Commands to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose potential side effects (e.g., device reset, corruption), error behavior, or that commands are executed directly on hardware. The minimal text leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one short sentence), but it is under-specified. While brevity is appreciated, it lacks critical context that would justify its short length.
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 raw command execution tool with no output schema, the description should at least mention output format, risk level, and typical use cases. It fails to provide sufficient context for safe and effective 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 coverage is 100% with parameter description 'Commands to execute'. The tool description adds no additional meaning beyond the schema. Baseline 3 is appropriate as schema already documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes raw SEGGER J-Link commands, distinguishing it from sibling tools like gdb_command which use GDB protocol. However, it could be more specific about the command format (e.g., J-Link Commander syntax).
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 (e.g., higher-level operations like erase or flash). No mention of prerequisites or safety considerations for raw command execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_memoryB
Read memory from the target. Returns clean hex dump.
| Name | Required | Description | Default |
|---|---|---|---|
| length | Yes | Bytes to read (max 4096) | |
| address | Yes | Hex address (e.g., '0x20000000') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it returns a clean hex dump, which explains output format. However, with no annotations, it doesn't disclose side effects (e.g., whether reading is safe or if it requires target halt). It doesn't mention error handling for invalid addresses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no wasted words. It front-loads the purpose and quickly states return format.
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 2-parameter tool without output schema, the description is adequate but lacks details on alignment, endianness, or error cases. It doesn't mention prerequisites (e.g., target must be halted). Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions (address as hex string, length as number). The description adds no additional context beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads memory and returns a clean hex dump. It distinguishes from siblings like write_memory by focusing on reading, but doesn't explicitly differentiate from read_register or rtt_read, though the name implies memory vs register.
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 usage guidelines are provided. It doesn't suggest when to use this tool instead of alternatives like read_register or when the target should be halted. The description is too brief to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_peripheralA
Read every register of a peripheral from the target and decode each one's bit fields by name. This is read_memory plus the meaning of what was read.
| Name | Required | Description | Default |
|---|---|---|---|
| registers | No | Only these registers (default: all readable ones) | |
| peripheral | Yes | Peripheral name, e.g. 'FICR', 'UARTE0' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It clearly discloses a read-only operation plus decoding behavior, and the comparison to read_memory makes the meaningful interpretive step explicit. It does not detail failure modes or target-state requirements, but for a benign read-plus-decode tool the core behavior is well conveyed.
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 short, front-loaded sentences with no filler. The first sentence captures the purpose and the second sharpens the distinction from read_memory.
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 read tool with a schema-covered parameter list, but there is no output schema and the description does not specify the return shape of the decoded registers. It also leaves the relationship to close siblings like decode_register and read_register implicit, so an agent may need to inspect those tools before choosing confidently.
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 100%, so peripheral and registers are already documented with names and defaults. The description adds no extra parameter-level detail beyond the tool's overall behavior, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read every register of a peripheral and decode its bit fields by name. It explicitly contrasts itself with read_memory, and the 'every register' + 'decode' wording also separates it from singular reads and pure memory reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'This is read_memory plus the meaning of what was read' gives a useful hint about when to choose this over read_memory, implying you use it when you want decoded semantics. However, it does not explicitly say when to prefer read_register, read_registers, or decode_register, or provide exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_registerA
Read a specific CPU register by name
| Name | Required | Description | Default |
|---|---|---|---|
| register | Yes | Register name (e.g., 'PC', 'SP', 'R0') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description adequately implies a read-only, non-destructive operation. However, it does not explicitly state side effects, permissions needed, or the lack thereof. The description is minimally sufficient but lacks detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous information. Every word is necessary and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with one parameter and no output schema, the description is largely complete. It covers the tool's purpose and input. Minor gaps include no mention of error handling or register validation, but these are not critical for such a tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description confirms the parameter 'register' is a name with examples. It adds no additional semantics beyond the schema, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a specific CPU register by name, which is a specific verb-resource combination. It distinguishes from sibling tools like 'read_memory' and 'read_registers' which operate on different targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that 'read_registers' reads all registers, nor does it note any prerequisites or context requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_registersA
Read all CPU registers (compact format, FP only if non-zero).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses compact format and FP filtering behavior, which adds useful insight beyond a simple read operation. However, it doesn't cover permissions or side effects (though likely read-only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded and efficient, earning 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?
Given the tool has no parameters and no output schema, the description is mostly complete. It clarifies the format and scope, though a longer description could elaborate on the return type. Still, it is adequately complete for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema coverage is 100% by default. The description adds no parameter-specific meaning, but baseline for 0 parameters is 4 as it doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads all CPU registers and specifies formatting (compact, FP only if non-zero). It effectively distinguishes from the sibling 'read_register' (singular) which reads a single register.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need all registers rather than a single one. It provides clear context but does not explicitly list when not to use it or name alternatives beyond the implicit sibling contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resetA
Reset the target device. Halting leaves the core stopped at the reset vector, which is where you want it before flashing, or to watch startup run.
| Name | Required | Description | Default |
|---|---|---|---|
| halt | No | Halt at the reset vector after reset (default: false) | |
| strategy | No | J-Link reset type. Omit to let J-Link pick the right one for the device, which is what SEGGER recommends and is almost always correct. 0 = normal; 1 = core only, via VECTRESET, leaving peripherals running; 2 = drive the reset pin, which fails if that pin is not wired. See https://kb.segger.com/J-Link_Reset_Strategies |
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 usefully explains that halting leaves the core stopped at the reset vector, and that without halt the device will run startup. However, it does not disclose other behavioral effects such as whether the debug session remains attached, whether memory is preserved, or other side effects of resetting the target. Some transparency is provided, but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, with the core action front-loaded in the first sentence. The second sentence provides just-in-time context about why the halt option matters. There is no fluff, repetition, or unnecessary 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?
The description gives enough context for basic use cases and the schema covers parameters fully. However, with no output schema and no annotations, the description does not mention what happens to the debug session, whether a reset is destructive, or what the tool returns after triggering the reset. For a hardware-control tool, this leaves some ambiguity about expected side effects.
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 100%, so the input schema already explains both 'halt' and 'strategy' in detail. The description adds minimal semantic value beyond what the schema provides, mentioning the halting behavior but not the strategy parameter. Baseline 3 is appropriate because the schema carries the parameter documentation burden.
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's action: 'Reset the target device.' It adds the purpose of the reset vector halt, distinguishing it from the sibling 'halt' tool, though it does not explicitly name that alternative. The verb and resource 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 gives concrete use cases: reset before flashing or to watch startup run. It implies that reset is useful as an alternative to a simple halt, but it does not explicitly explain when to choose one over the other or mention any exclusions. Context is clear, but alternatives are not explicitly contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resumeC
Resume the target CPU
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic action. It does not disclose any behavioral traits such as whether it is destructive, requires a connection, or what happens on failure. The description carries the full burden but provides no transparency beyond the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of four words, making it extremely concise. Every word is necessary. While it is not verbose, it is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, no output schema), the description is adequate for understanding the basic action. However, it lacks context about typical usage (e.g., after a halt) and how it fits into a debugging workflow, which a more complete description could provide.
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 0 parameters, so baseline is 4. The description adds the verb and object, which is sufficient for a parameterless tool. No additional parameter information is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Resume the target CPU' clearly states the action (resume) and the resource (target CPU). It is specific and not a tautology. However, it lacks context about what 'resume' means in this debugging environment (i.e., continuing execution after a halt), which slightly limits clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical use cases, or exclusions. The sibling list includes halt and reset, implying a workflow, but the description itself gives no context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_clearB
Clear RTT buffer
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a destructive action ('Clear') but provides no details on side effects, such as data loss or state changes. With no annotations, the description should elaborate on what exactly happens when the buffer is cleared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words, with no superfluous content. It is front-loaded and efficient for a trivial action.
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 simplicity of the tool (no parameters, no output schema), the description is minimally adequate. However, it leaves ambiguity about which buffer is cleared and what state results, which could be clarified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100% by default. The description adds meaning by naming the action and resource, which is sufficient for a parameterless tool. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Clear') and the resource ('RTT buffer'). It distinguishes from sibling tools like rtt_read or rtt_send, which perform different operations. However, it could specify which buffer (e.g., input/output) for added clarity.
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 like rtt_read or rtt_send. The description does not indicate prerequisites or typical scenarios for clearing the buffer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_connectB
Connect to RTT
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits beyond the bare action of connecting. With no annotations, the agent is left uninformed about side effects, persistence of the connection, or required setup. A 2 reflects the significant gap for a connection-oriented 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 a single, concise sentence that delivers the core purpose with no extraneous words. It is optimally short for the complexity level.
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 role in a suite of RTT and debugging tools, the description is too sparse to provide complete context. It does not explain what RTT is, what the connection implies, or how it relates to other tools (e.g., rtt_read, rtt_send). The agent may need to infer meaning from the sibling tool names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters with 100% coverage, so the description does not need to add parameter details. The description is adequate for a parameterless tool, earning a baseline 4.
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 clear verb+resource structure: 'Connect to RTT'. It distinguishes from sibling RTT tools (e.g., rtt_clear, rtt_disconnect) by indicating it establishes a connection. However, the acronym RTT is not expanded, which may be ambiguous without domain knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like gdb_connect or telnet_proxy_start. There is no mention of prerequisites, ordering, or situations where the tool is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_disconnectC
Disconnect from RTT
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits such as side effects (e.g., releasing resources, affecting other RTT operations) or confirmation of success. With no annotations provided, this minimal description fails to convey what the tool actually does beyond its label.
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, short sentence with no extraneous content. It is as concise as possible for this simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description still lacks completeness. It does not mention that a connection must exist before disconnecting, nor does it describe what happens to the connection state or the tool's effect on other RTT operations. The description is too minimal to be fully informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and the schema description coverage is 100% (trivially). Since there are no parameters to describe, the description does not need to add meaning beyond what the schema provides. Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Disconnect from RTT' is a tautology that simply restates the tool name 'rtt_disconnect'. It does not add any specific verb or resource differentiation beyond what the name already conveys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., rtt_connect, rtt_clear). There is no mention of prerequisites or expected sequencing, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_readA
Read RTT log lines (clean, parsed Zephyr format). Non-destructive — reading does not consume the buffer. Returns the NEWEST lines by default; oldest:true returns the start of the buffer. Note the buffer spans reflashes: its oldest lines may be from firmware you have since replaced. rtt_clear drops them.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many lines (default 50) | |
| oldest | No | Return the OLDEST lines instead of the newest — use this to see boot output |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It explicitly states non-destructive behavior, the default newest-line ordering, the oldest:true behavior, and the reflash-spanning caveat. This is substantial transparency for a read 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?
Four sentences, each contributing distinct value: purpose, non-destructive behavior, ordering semantics, and reflash caveat. It is slightly longer than strictly necessary but every sentence earns its place and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter read tool with no output schema and no annotations, this description is quite complete. It covers return orientation, buffer persistence, and the destructive counterpart. It does not mention prerequisites such as an active RTT connection, but that is a minor gap given the tool's simple scope.
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 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the default ordering ('Returns the NEWEST lines by default'), the practical use of oldest, and the reflash caveat tied to the oldest lines. It does not add much about count, but the existing schema already documents it well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as reading RTT log lines and specifies the format ('clean, parsed Zephyr format'). It also differentiates the behavior from related tools by explicitly noting non-destructive reading and referencing rtt_clear as the operation that drops lines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: reading RTT logs without consuming the buffer, with oldest:true for boot output. It does not explicitly enumerate alternatives or exclusions, but the mention of rtt_clear and the buffer semantics gives practical routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_searchA
Search/filter RTT logs by level, module, or regex
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max results (default 50) | |
| level | No | Log level: 'err', 'wrn', 'inf', 'dbg' | |
| module | No | Module name (partial match) | |
| pattern | No | Regex or text pattern |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states it searches/filters, but does not disclose behavioral traits like needing an active RTT connection, performance impact, or result format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence efficiently conveys the tool's core purpose with no wasted words and front-loaded 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?
The description is adequate for a simple search tool but lacks details about output or behavior, especially given no output schema. It is minimally complete for the complexity level.
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 100% with adequate parameter descriptions. The description summarizes the parameters but adds no additional semantic value beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches/filters RTT logs by level, module, or regex, using specific verbs and resource, distinguishing it from siblings like rtt_read or rtt_clear.
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 state when to use this tool versus alternatives (e.g., rtt_read for raw logs) or when not to use it, lacking usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_sendC
Send data to device via RTT down-channel
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It only states the action without mentioning side effects, required device state, or limitations (e.g., data size, need for 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?
One short sentence, efficiently stated but lacking necessary detail. It is front-loaded with the core purpose but too terse to be fully useful.
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 lack of output schema and annotations, and the presence of sibling tools for connection setup, the description fails to mention the need for an active RTT connection or how to handle errors. Incomplete for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter described as 'Data to send'. The description adds the context of 'RTT down-channel' but does not further clarify the parameter format or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('send'), target ('device'), and mechanism ('via RTT down-channel'). It is distinct from siblings like 'rtt_read'.
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 like 'rtt_connect', 'rtt_clear', or 'rtt_read'. Missing prerequisites such as establishing an RTT connection first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rtt_statusA
Read SEGGER's RTT control block on the target: is it initialised, how much has the firmware written, and how much has the probe collected. Use this when RTT is silent — it separates a quiet device from a probe that stopped collecting, which look identical from rtt_read.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Address of the control block (your _SEGGER_RTT symbol), e.g. '0x20002050'. Defaults to JLINK_RTT_ADDR if that is set. |
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 does disclose what the tool reads and the three facts it reports, and the 'Read' phrasing implies a non-destructive operation. However, it omits operational behavior such as whether a debug session or RTT connection must already exist, and what happens when the control block address is invalid or uninitialised — gaps an agent would benefit from knowing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The first front-loads the operation and its three outputs; the second delivers the usage guidance and sibling contrast. Every clause 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 one-optional-parameter read tool with full schema coverage, the description is nearly complete: it states purpose, informally describes the returned values, and gives the triggering scenario. Since no output schema exists, the enumeration of reported values partially compensates. The only real gap is prerequisites and error behavior, which keeps it from a 5.
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 100%, so the schema alone fully documents the single address parameter, including a concrete example ('0x20002050') and the JLINK_RTT_ADDR default. The description adds no parameter detail, but per the rubric the 100%-coverage baseline of 3 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?
States a specific verb ('Read') plus a specific resource ('SEGGER's RTT control block'), and enumerates exactly what the agent learns: initialisation state, bytes written by the firmware, and bytes collected by the probe. The closing clause explicitly distinguishes it from rtt_read, so an agent can tell the two apart without opening either 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 second sentence is an explicit when-to-use directive: 'Use this when RTT is silent.' It also explains the diagnostic value — separating a quiet device from a probe that stopped collecting — and names rtt_read as the tool that cannot make this distinction. This is exactly the routing guidance the rubric asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_devicesA
Search the device names this J-Link installation accepts, by part number, manufacturer, or core. Use this before set_device instead of guessing a part number — the name must match exactly, and a wrong one fails in a way that looks like broken hardware.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default 40) | |
| query | Yes | Substring of a part number, manufacturer, or core. E.g. 'stm32f407', 'nrf528', 'nordic', 'cortex-m33' |
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 goes beyond a simple search description by revealing that the name must match exactly and that a wrong one fails in a misleading way resembling broken hardware. This is valuable operational context, though it does not describe read-only behavior or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is stated first, and the critical usage warning and exact-match caveat are packed efficiently into the second sentence. Every word contributes.
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 largely complete for a simple search tool: it names the resource, explains query semantics, and warns about failure modes. Since there is no output schema and no annotations, a bit more detail about the expected return format would fully round it out, but all information needed to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds useful conceptual context about what the query can match (part number, manufacturer, core) and warns about exact matching, but this complements rather than extends the schema's parameter definitions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and clearly identifies the resource ('device names this J-Link installation accepts'), plus the search dimensions (part number, manufacturer, core). It also connects to set_device, helping distinguish its role from siblings like list_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs the agent to use this tool before set_device instead of guessing a part number, and warns why guessing is risky. This gives clear when-to-use guidance and names the relevant alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_breakpointC
Set a hardware breakpoint
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Hex address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits, but it only states the action without explaining consequences (e.g., halting execution, permission requirements, or side effects). This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no unnecessary words. It is front-loaded, directly stating the purpose. It could include more detail without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description fails to explain what happens after setting a breakpoint (e.g., effect on execution or return value). Given the complexity of debugging, the description is incomplete.
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 100% with a clear description of the 'address' parameter as 'Hex address'. The description adds no extra meaning, but the schema already provides adequate clarity, meeting the baseline.
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 'Set a hardware breakpoint' clearly states the verb and resource, making the tool's purpose evident. However, it does not explicitly differentiate from sibling tools like 'clear_breakpoints', which is a minor gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'gdb_command' or 'step'. There is no mention of prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_deviceA
Set the target device name at runtime. Required before any debugging commands will work. The name must match J-Link's exactly — use search_devices to find it rather than guessing a part number. Examples: 'nRF52840_XXAA', 'nRF5340_xxAA_APP', 'STM32F407VG', 'STM32L476RG'.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Target device name (e.g., 'nRF52840_XXAA', 'STM32F407VG') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that setting the device is required for debugging, that the name must match J-Link's exactly, and that it is a runtime setting. It does not cover every potential side effect, but the key behavioral requirements are well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly written and front-loaded with the core action and prerequisite. The exact-match instruction and examples all earn their place; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter setter with no output schema, the description covers everything an agent needs: what to set, when it is required, how to choose the correct value, and example values. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter at 100%, so the baseline is 3. The description adds meaningful value by emphasizing exact matching, recommending search_devices, and providing additional example values beyond the schema. This enriches the parameter semantics without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set the target device name') and the resource plus context ('at runtime'). It also establishes the tool's role as a prerequisite for debugging commands, 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 explicitly tells the agent when to use this tool ('Required before any debugging commands will work') and directs it to search_devices to find the correct value rather than guessing. This provides clear usage context and names the relevant alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_rtt_addressA
Tell the server where the firmware's RTT control block is (its _SEGGER_RTT symbol), at runtime. Without it RTT cannot be recovered after a reset or flash, and a stopped stream is indistinguishable from a quiet device. Mirrors set_device.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Hex address of _SEGGER_RTT, e.g. '0x20002050' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the consequence of not setting the address and notes it is a runtime action, but it does not describe side effects, persistence, or whether the setting affects the current session only. 'Mirrors set_device' is a useful hint but not a full behavioral explanation.
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 each sentence earning its place: a clear statement of purpose, a consequence that justifies importance, and a short cross-reference to a sibling tool. It is well-structured and front-loaded with the primary action.
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 configuration tool with no output schema, the description is reasonably complete: it identifies the parameter's meaning, explains why the tool is needed, and gives a usage context. It could mention whether the setting is volatile or persists across sessions, but this is a minor gap given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter, describing it as a hex address with an example. The description adds minimal extra meaning beyond naming the symbol and control block, so it does not significantly exceed what the schema already documents. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: telling the server the runtime location of the firmware's RTT control block, specifically the _SEGGER_RTT symbol. This is a specific verb plus resource and is not a tautology, though it does not explicitly contrast itself with related tools like rtt_search or rtt_connect.
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 valuable context about when this tool matters: 'Without it RTT cannot be recovered after a reset or flash.' This implies the tool should be used after such events, making the usage scenario clear. It does not, however, explicitly mention alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_svd_pathA
Point the server at a CMSIS-SVD file for the target at runtime, so peripheral reads come back with named fields and decoded values instead of raw hex. Mirrors set_device — you do not have to restart with SVD_PATH set.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a .svd or .svd.gz file for this exact part |
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 does reveal that the tool changes server state at runtime, affects subsequent peripheral reads, and avoids a restart. However, it does not mention validation behavior, whether an invalid path errors immediately, or whether the new path overrides an existing SVD setting. This leaves meaningful behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary purpose and effect are front-loaded, followed by a concise comparison to set_device. Every clause contributes useful information for an agent.
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 runtime setter with no output schema, the description covers the core behavioral contract: what it does, when to use it vs. set_device, and the benefit of runtime application. It stops short of explaining error/validation behavior, which would make it fully complete, but the essentials 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 100%, so the input schema fully documents the path parameter. The description's mention of 'CMSIS-SVD file' adds no new meaning beyond the schema's 'Path to a .svd or .svd.gz file for this exact part.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Point the server at a CMSIS-SVD file for the target at runtime.' It clearly states the intended effect on peripheral reads ('named fields and decoded values instead of raw hex') and explicitly distinguishes itself from set_device, making the tool's purpose and differentiation clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names the alternative (set_device) and gives the decisive usage condition: 'Mirrors set_device — you do not have to restart with SVD_PATH set.' This tells the agent when to use this runtime approach versus the alternative that requires a restart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotA
Capture complete device state: CPU registers (compact), fault status, recent RTT output, and stack dump.
| Name | Required | Description | Default |
|---|---|---|---|
| rttLines | No | RTT lines to include (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses what is captured but does not mention side effects (e.g., whether it halts the device), required device state, or performance impact. With no annotations, it carries the full burden but only partially meets it.
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?
Single sentence with verb upfront, lists key elements concisely. No superfluous words; every part 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?
Covers the main purpose and parameters adequately given the tool's complexity. Lacks details on output format or 'compact' register representation, but sufficient for basic 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 100% (rttLines defined with min, max, default). The description adds no new meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action ('Capture'), the resource ('complete device state'), and lists included components (registers, fault status, RTT output, stack dump). This clearly distinguishes it from sibling tools like 'read_registers' or 'gdb_backtrace' which have narrower scope.
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 explicit guidance on when to use this tool versus alternatives (e.g., for minimal debugging vs. detailed analysis). The description implies a comprehensive snapshot but does not define scenarios or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_debug_sessionA
One-call setup: starts GDB server via SEGGER J-Link, connects RTT (if supported), waits for initial output. This is the recommended first tool to call. If no device is configured, use list_devices and set_device first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description outlines main actions but does not disclose potential side effects (e.g., idempotency, blocking behavior, or what happens if already started). Still, the 'one-call' phrasing implies a safe initial action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the key purpose 'One-call setup', minimal and efficient wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description covers the setup steps and usage context well. Could briefly note if it blocks or returns immediately, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters with 100% coverage; description adds no parameter details as none exist. Baseline 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'One-call setup: starts GDB server via SEGGER J-Link, connects RTT (if supported), waits for initial output.' Differentiates from siblings like gdb_server_start by being a combined setup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'This is the recommended first tool to call' and provides conditional guidance: 'If no device is configured, use list_devices and set_device first.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stepA
Step one CPU instruction
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the basic action (step one instruction) but does not elaborate on its effect on execution state, such as whether the CPU halts after stepping or if any event is triggered. Without annotations, more detail would be beneficial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It is efficiently 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?
Given the simplicity of the tool (no parameters, no output schema), the description is mostly complete. It could mention the exact outcome after stepping, but what is provided is sufficient for basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema provides full coverage. The description is not required to add parameter information.
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 steps one CPU instruction, with a specific verb and resource. It distinguishes from sibling tools like halt, resume, or reset, providing a clear 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?
No guidance is provided on when to use this tool versus alternatives like halt or resume. There is no context or conditions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telnet_proxy_readC
Read raw data from telnet proxy buffer
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Lines (default 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description fails to disclose behavioral traits. Does reading clear the buffer? Is it non-destructive? What happens if buffer is empty? No error conditions mentioned. The description does not add value beyond stating the 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?
Single, short sentence front-loading the action and resource. Every word earns its place; no fluff. Highly efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and a single parameter, the description lacks completeness. It does not specify return format, side effects, or dependencies on other tools like telnet_proxy_start. An AI agent lacks sufficient context to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'lines' parameter having a description ('Lines (default 100)'). The tool description adds no additional semantic information beyond the schema. Baseline of 3 is appropriate as there is no extra value but also no contradiction.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'read' and resource 'raw data from telnet proxy buffer'. It distinguishes this tool from sibling tools like telnet_proxy_start or telnet_proxy_status by specifying buffer reading. However, 'raw data' is slightly ambiguous (e.g., lines of text, binary) but sufficient for basic understanding.
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. For example, when to use telnet_proxy_read vs telnet_proxy_status or rtt_read is not mentioned. No context on prerequisites (e.g., telnet proxy must be started) or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telnet_proxy_startA
Start a TCP relay that re-serves the RTT stream on another port, so an external decoder (Trice, Pigweed, or your own) can consume it alongside this server. It relays bytes; it does not decode them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It transparently states the side effect (starting a relay on another port), the relay nature, and the limitation that it does not decode bytes. It doesn't mention lifecycle details like how the port is chosen or reported, which 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 two tight sentences with the action and resource in the first clause and the rationale plus non-decoding caveat in the second. 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 parameterless start action, the description covers purpose, behavior, and key limitation. The only notable gaps are not mentioning how the proxy port is determined or pointing to telnet_proxy_status/stop for managing the started relay, which keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema imposes no naming or format burden. The description still adds useful meaning by explaining what the inputless tool accomplishes and why the relay exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Start'), a concrete resource ('TCP relay'), and explains the effect ('re-serves the RTT stream on another port'). It also explicitly states what the tool does not do ('It relays bytes; it does not decode them'), which helps distinguish it from decoding-related siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is clear: enable an external decoder such as Trice or Pigweed to consume the RTT stream alongside this server. It doesn't explicitly exclude alternatives or mention when not to use it, but the start/stop/status/read sibling structure makes the role fairly obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telnet_proxy_statusA
Get telnet proxy status
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only says 'Get status' without explaining what status entails (e.g., running/stopped, details like IP/port), leaving behavioral uncertainty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with no extraneous content, perfectly 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?
Despite being a simple tool, the lack of output schema and annotation means the description should explain what the status response contains. It fails to do so, leaving agents uninformed about return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema coverage is 100%, so the description adds no param info. Baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'telnet proxy status', distinctly differentiating it from sibling tools like start, stop, and read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing proxy status, but does not explicitly state when to use this over alternatives or provide any context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telnet_proxy_stopB
Stop telnet proxy
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description bears full burden. It only states the action, not what happens when stopped (e.g., connections terminated, state changes) or safety implications.
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?
Single sentence is concise and front-loaded, but could include additional context (e.g., effect on proxy state) without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple stop action with no parameters or output schema, the description is minimally adequate. However, it lacks context on relationship to telnet_proxy_start and expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The rubric sets baseline 4 for 0-param tools; description adds nothing about parameters but doesn't need to.
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 'Stop telnet proxy' clearly states the action (stop) and the resource (telnet proxy), distinguishing it from sibling tools like telnet_proxy_start and telnet_proxy_status.
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 or when to use alternatives like telnet_proxy_stop vs. other proxy commands. Does not mention prerequisites (e.g., proxy must be running).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_memoryB
Write a 32-bit value to memory
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Hex value (e.g., '0xDEADBEEF') | |
| address | Yes | Hex address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry behavioral burden. 'Write' implies mutation but no details on consequences, permissions, or risks. For a potentially destructive operation, this is insufficient.
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?
Single sentence, 37 characters, no fluff. Very concise, but could be slightly expanded without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no behavioral details. For a write operation, missing info on return values, error handling, and side effects. Incomplete given the tool's complexity.
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 100% with both parameters described as hex strings with example. The description adds no additional meaning beyond what the schema provides, so baseline 3 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 specific verb 'write' and resource 'memory' with bit width '32-bit', clearly distinguishing it from read tools like read_memory. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or context. The description only states what it does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.7.0- Added
check_setup - Added
decode_register - Added
list_peripherals - Added
read_peripheral - Changed
reset2 fields changed- changed
Input schema / properties / halt / descriptionPrevious value: -"Halt after reset (default: false)"New value: +"Halt at the reset vector after reset (default: false)" - added
Input schema / properties / strategyAdded value: +{ + "description": "J-Link reset type. Omit to let J-Link pick the right one for the device, which is what SEGGER recommends and is almost always correct. 0 = normal; 1 = core only, via VECTRESET, leaving peripherals running; 2 = drive the reset pin, which fails if that pin is not wired. See https://kb.segger.com/J-Link_Reset_Strategies", + "type": "number" +}
- Changed
rtt_read2 fields changed- changed
Input schema / properties / count / descriptionPrevious value: -"Lines to read (default 50)"New value: +"How many lines (default 50)" - added
Input schema / properties / oldestAdded value: +{ + "description": "Return the OLDEST lines instead of the newest — use this to see boot output", + "type": "boolean" +}
- Added
rtt_status - Added
search_devices - Added
set_rtt_address - Added
set_svd_path
39 tool updates
v0.3.2- First observed
clear_breakpoints - First observed
device_info - First observed
diagnose_crash - First observed
erase - First observed
flash - First observed
gdb_backtrace - First observed
gdb_command - First observed
gdb_connect - First observed
gdb_disconnect - First observed
gdb_load - First observed
gdb_server_start - First observed
gdb_server_status - First observed
gdb_server_stop - First observed
gdb_wait - First observed
get_config - First observed
halt - First observed
list_devices - First observed
probe_command - First observed
read_memory - First observed
read_register - First observed
read_registers - First observed
reset - First observed
resume - First observed
rtt_clear - First observed
rtt_connect - First observed
rtt_disconnect - First observed
rtt_read - First observed
rtt_search - First observed
rtt_send - First observed
set_breakpoint - First observed
set_device - First observed
snapshot - First observed
start_debug_session - First observed
step - First observed
telnet_proxy_read - First observed
telnet_proxy_start - First observed
telnet_proxy_status - First observed
telnet_proxy_stop - First observed
write_memory
TDQS
Most tools map cleanly to distinct actions (halt, resume, step, reset, read_memory, write_memory, flash), and descriptions explicitly separate list_devices from search_devices and rtt_status from rtt_read. Minor overlap exists between snapshot and diagnose_crash, and between device_info and read_registers, but the boundaries are generally discoverable.
Tool names consistently use lowercase snake_case and mostly follow verb_noun or domain-prefixed patterns (read_memory, set_device, rtt_read, gdb_command, telnet_proxy_start). A few outliers like snapshot, device_info, and gdb_server_start bend the pattern, but the naming remains predictable overall.
47 tools is well above the typical well-scoped range and even past the 16-25 'heavy' band, making operator selection harder. The set could be consolidated, especially the granular GDB server, telnet proxy, and session lifecycle tools.
The tool surface is extremely thorough for J-Link debugging: device setup, halt/resume/step, memory/flash, breakpoints, fault decoding, SVD peripherals, RTT, GDB server/client integration, telnet proxy, and raw probe commands are all covered. There are no obvious dead ends for typical debug workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Run, build, and validate firmware on virtual hardware from your AI agent. Hardware knowledge corpus.
Shared debugging memory for AI coding agents
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI to directly control SEGGER J-Link embedded debug probes via the Model Context Protocol for debugging and firmware management. Users can perform tasks like reading registers, analyzing memory, flashing firmware, and tracking RTT logs using natural language commands.211MIT
- AlicenseAqualityDmaintenanceEnables AI assistants like Claude to directly debug microcontrollers via JLink, supporting breakpoints, single-step, memory/register access, variable inspection, RTT logging, and firmware flashing.255MIT
- AlicenseAqualityCmaintenanceEnables LLMs to interact with embedded devices by reading and writing Segger RTT data through a J-Link debugger.91MIT
- AlicenseAqualityDmaintenanceEnables AI tools to perform full-featured embedded microcontroller debugging via pyOCD and CMSIS-DAP probes, including probe management, flashing, breakpoints, register/memory access, fault analysis, and RTT communication.581MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Klievan/jlink-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server