Skip to main content
Glama

qwen-dap-mcp

Give coding agents a real native debugger.

qwen-dap-mcp is a local Debug Adapter Protocol (DAP) → Model Context Protocol (MCP) bridge for native crash debugging, hang/deadlock triage, crash dumps, differential runtime analysis, remote targets, and bounded fix/verify workflows.

Built for Qwen Code, usable from any stdio MCP client, and designed to expose debugger evidence without turning MCP into a general-purpose shell.

CI Release npm npm downloads MCP Registry License Node GitHub stars

Quick start · Capabilities · Debugger support · Safety · Docs · Contributing

Why this exists

Coding agents can read source and propose patches, but native failures often cannot be diagnosed reliably from source alone. The useful evidence lives at runtime: thread stacks, registers, locals, disassembly, exception state, modules, memory, wait states, symbols, and crash dumps.

qwen-dap-mcp makes that evidence available through MCP and adds agent-oriented workflows on top of raw debugger primitives:

  • Evidence first — inspect the actual failing process instead of guessing from source.

  • High-level workflows — crash, hang, differential, writer-tracing, dump, and verification tools are designed for agents rather than humans driving a debugger console.

  • Bounded automation — autonomous fix/verify state is explicit, serializable, iteration-limited, and re-checks the original reproduction.

  • Small default surface — the normal agent toolset stays compact while advanced low-level DAP tools remain opt-in.

  • Local by default — the MCP server communicates over stdio and debugger adapters run locally unless you explicitly configure a validated remote target.

Related MCP server: DebugPilot

Quick start

Qwen Code

Install directly from GitHub:

qwen extensions install SLP-DEV1/qwen-dap-mcp

Or install the published npm package:

qwen extensions install @slp-dev1/qwen-dap-mcp

Then verify the extension:

/mcp
/skills

You should see the qwen-dap-mcp server and the bundled native-runtime-debug skill.

Any stdio MCP client

npx -y @slp-dev1/qwen-dap-mcp

Typical configuration:

{
  "mcpServers": {
    "qwen-dap-mcp": {
      "command": "npx",
      "args": ["-y", "@slp-dev1/qwen-dap-mcp"]
    }
  }
}

CLI discovery is available without starting the stdio server:

qwen-dap-mcp --help
qwen-dap-mcp --version

30-second example

You: Debug why app.exe crashes with --repro

Coding agent
  ↓
qwen-dap-mcp starts a DAP debugger
  ↓
captures the native failure + project-controlled frame
  ↓
correlates stack + registers + locals + disassembly
  ↓
backtracks runtime evidence toward the likely producer
  ↓
agent applies a minimal source fix
  ↓
builds and repeats the original reproduction
  ↓
verifies whether the original crash fingerprint is gone

The MCP server supplies debugger evidence and bounded workflow state. Source editing, builds, tests, and source-control operations stay with the coding agent's normal authorized tools.

What it does

Problem

Agent-oriented capability

Native crash

Diagnose a stopped process, identify project frames, collect runtime evidence, and drive bounded fix/verify loops

Hang or deadlock

Observe, pause when needed, capture all-thread stacks, classify waits, and surface conservative deadlock candidates

Good run vs bad run

Compare stopped sessions semantically while suppressing raw ASLR/address noise

Suspicious value

Trace real writers with data breakpoints/watchpoints and bounded temporal tracing

Crash dump

Inspect Windows minidumps and supported LLDB/GDB postmortem targets without launching the failed program

Remote native target

Attach through validated gdbserver / lldb-server gdbserver endpoints with loopback-first policy

Multiple targets

Keep isolated DAP sessions and route requests by sessionId

Agent safety

Keep the default surface compact and optionally gate executable/mutating DAP actions with HOL Guard

Default agent tool surface

The default toolset intentionally exposes 14 high-signal tools:

Tool

Purpose

debug_this_crash

High-level native crash diagnosis and bounded autonomous verification

debug_this_hang

High-level hang/deadlock triage

debug_compare_runs

Semantic comparison of baseline and failing stopped sessions

debug_trace_value

Bounded temporal tracing of a suspicious value

debug_diagnose_stop

Diagnose the current debugger stop

debug_source_disassembly

Correlate source with nearby native instructions

debug_find_writer

Stop at the code that writes a watched value

debug_run_to_stop

Continue/launch toward a bounded meaningful stop

debug_open_dump

Open supported postmortem dump/core targets

debug_snapshot

Capture structured runtime evidence

debug_status

Inspect debugger/session state

debug_continue

Continue the active target

debug_disconnect

Cleanly end a debugger session

debug_sessions

Create, inspect, and remove isolated sessions

Need raw stacks, scopes, variables, memory, modules, breakpoints, evaluation, stepping, or adapter-specific controls? See the opt-in full toolset in docs/toolsets.md.

Debugger support

Adapter / target

Supported use

CodeLLDB

Local native launch/attach and Windows minidump workflows

LLVM lldb-dap

Native launch/attach, core-file inspection, and lldb-server gdbserver remote attach

GNU GDB 14+ DAP

Native launch/attach, core-file workflows, and hardened gdbserver remote attach

Adapter discovery, prerequisites, and platform-specific setup are documented in docs/README.md.

More than raw DAP

Raw DAP is intentionally low level. qwen-dap-mcp keeps raw debugger access available in the full toolset, but its default surface focuses on workflows an agent can reason about directly.

Source only

Raw DAP

qwen-dap-mcp agent tools

Runtime debugger evidence

High-level crash diagnosis

All-thread hang triage

manual

Good-vs-bad semantic diff

manual

Explicit bounded fix/verify state

Verification fingerprinting

Safety by design

A debugger can execute and mutate target state, so the bridge treats that power explicitly.

  • No arbitrary shell tool is exposed by the MCP server.

  • No source-writing primitive is exposed by the MCP server.

  • No general memory-write primitive is part of the default agent surface.

  • Remote endpoints are validated and non-loopback access requires explicit allowlisting.

  • Autonomous workflow state is explicit rather than hidden inside a background loop.

  • Optional HOL Guard 2.2+ integration can fail closed before protected adapter startup or executable/mutating DAP actions cross the debugger boundary.

Read the full policy and threat model in docs/hol-guard.md and SECURITY.md.

Repro labs and benchmark harness

The repository includes deterministic native fixtures so behavior can be tested instead of demonstrated only with screenshots:

npm run demo:build -- null-pointer
npm run demo:repro -- null-pointer

npm run demo:hang:build -- deadlock
npm run demo:hang:repro -- deadlock

benchmark/ also contains a reproducible comparison harness for source-only, dap-raw, and qwen-dap-mcp workflows. It deliberately ships without invented performance numbers; publishable results should record the exact model, settings, commit, reproduction, raw outcome, and verification status.

Documentation

Start with the documentation index.

Topic

Guide

CodeLLDB on Windows

docs/CODELLDB_WINDOWS.md

LLVM lldb-dap

docs/lldb-dap.md

GNU GDB DAP

docs/gdb-dap.md

Remote debugging

docs/remote-debugging.md

Hang/deadlock analysis

docs/hang-debugging.md

Differential debugging

docs/differential-debugging.md

Agent vs full toolsets

docs/toolsets.md

HOL Guard integration

docs/hol-guard.md

Publishing / releases

docs/publishing.md

Development

Requirements: Node.js 20+.

git clone https://github.com/SLP-DEV1/qwen-dap-mcp.git
cd qwen-dap-mcp
npm ci
npm run check

npm run check builds TypeScript, runs the test suite, and validates the self-contained Qwen extension package. CI additionally exercises native crash/hang fixtures, adapter-specific real smoke tests, package output, HOL Guard compatibility, and the container build.

See CONTRIBUTING.md before opening a pull request.

Distribution

Published as:

  • npm: @slp-dev1/qwen-dap-mcp

  • MCP Registry: io.github.SLP-DEV1/qwen-dap-mcp

  • Qwen Code extension: qwen extensions install SLP-DEV1/qwen-dap-mcp

  • GitHub Releases: self-contained extension archives

Current release details are in CHANGELOG.md and GitHub Releases.

Contributing

Bug reports, reproducible native failure cases, adapter compatibility findings, documentation fixes, and focused feature proposals are welcome. Please keep additions evidence-driven and prefer high-level agent workflows over expanding the default surface with raw debugger commands.

If this project saves you a debugging session, consider starring the repository — it helps other MCP and coding-agent users discover it.

License

Apache-2.0. See LICENSE and NOTICE.

Available Tools

14 tools
debug_compare_runsA
Read-onlyIdempotent

Compare bounded runtime evidence from two existing stopped DAP sessions. Use this for baseline or known-good versus candidate or failing differential debugging after both sessions have reached comparable stops. It compares stack identities, locals, registers, exception state, symbol health, and modules semantically; non-null raw address-only changes are marked unstable rather than causal evidence. Do not use it to launch, resume, or alter either target; prepare both runtime states with the normal lifecycle tools first.

ParametersJSON Schema
NameRequiredDescriptionDefault
snapshotNoBounded evidence capture settings applied independently to both sessions.
timeoutMsNoAggregate deadline for collecting both snapshots. Cancellation propagates to pending DAP requests/event waits in this operation context.
baselineSessionIdYesSession representing the known-good or baseline runtime state.
candidateSessionIdYesSession representing the failing or changed runtime state.

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
baselineYes
guidanceYes
candidateYes
evidenceBudgetYes
baselineSessionIdYes
candidateSessionIdYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond the readOnly/idempotent/non-destructive annotations: it discloses that comparison is semantic, that stack/locals/registers/exception/symbol/module evidence is compared, and that 'non-null raw address-only changes are marked unstable rather than causal evidence.' This tells the agent how results should be interpreted and reinforces that the tool observes rather than mutates sessions.

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

Conciseness5/5

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

The description is three focused sentences. The first states purpose, the second gives usage context and the comparative scope, and the third provides an exclusion and directs preparation. Every sentence earns its place with no repetition of schema or annotation content.

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

Completeness5/5

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

Given the rich input schema, output schema, and annotations, this description is complete for safe and correct invocation. It covers when to use, what is compared, how unstable address-only changes are treated, and what the tool must not be used for. No critical operational knowledge is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with both required session parameters and the nested snapshot object clearly documented. The prose description adds contextual framing but does not materially expand on the parameter meaning already present in the schema, so it stays at the baseline for high-coverage schemas.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Compare bounded runtime evidence from two existing stopped DAP sessions.' It then distinguishes the tool from single-session diagnostics by framing it for 'baseline or known-good versus candidate or failing differential debugging,' which cleanly separates it from sibling tools like debug_snapshot and debug_diagnose_stop.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool: for differential debugging 'after both sessions have reached comparable stops.' It also gives clear when-not guidance: 'Do not use it to launch, resume, or alter either target; prepare both runtime states with the normal lifecycle tools first.' This directs the agent to alternative lifecycle tooling without ambiguity.

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

debug_continueContinue ExecutionA
Destructive

Resume one paused thread in a live debug session. Use this after inspecting a stopped state when execution should proceed to the next stop or termination; do not use it for crash dumps because postmortem targets cannot resume. This changes debuggee execution state and may allow the target to perform normal application side effects before the next stop.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdYesDAP thread identifier to resume; obtain it from debug_snapshot, debug_status, or a stopped event.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
timeoutMsNoMaximum time in milliseconds to wait for the next stopped event when waitForStop is true.
waitForStopNoWhen true, wait for the next stopped event before returning; when false, return after the continue request is accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stoppedNo
responseNo
allThreadsContinuedNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark the tool as destructive and non-read-only, and the description reinforces this by disclosing that continuing can change debuggee execution state and allow normal application side effects before the next stop. This is exactly the kind of behavioral context that annotations alone do not provide.

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

Conciseness5/5

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

Three sentences, each with a distinct job: state the action, give usage rules, and warn of side effects. The core purpose is front-loaded and there is no redundant or filler prose.

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

Completeness5/5

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

Given that an output schema exists, return values need no explanation in the description. The description covers the live-session constraint, the postmortem exclusion, and the side-effect risk, leaving only details already present in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds little parameter-specific meaning—it only reinforces that exactly one thread is resumed, while all parameter details already live in the schema.

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

Purpose5/5

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

The first sentence states a specific verb and resource: resume one paused thread in a live debug session. It also explicitly excludes crash dumps, which distinguishes it from sibling dump-analysis tools without needing to open their schemas.

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

Usage Guidelines4/5

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

The description clearly says when to use it ('after inspecting a stopped state when execution should proceed to the next stop or termination') and when not to use it ('do not use it for crash dumps'). However, it does not name an alternative tool to use for crash dumps, so the routing guidance stops short of a full 5.

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

debug_diagnose_stopDiagnose Current Debug StopA
Read-onlyIdempotent

Diagnose an already stopped live or postmortem debug session without changing execution state. Use this when a debugger has captured the failure and you want project-frame selection, crash classification, operand/register/variable bindings, call-chain provenance, ranked hypotheses, and a fix/rebuild/reproduce/verify plan; use debug_snapshot instead when only raw evidence is needed. The tool is read-only and returns both the bounded snapshot and the derived diagnosis, including collection limitations when optional debugger evidence is unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
analysisNoHints used to distinguish project code from runtime, system, or third-party frames.
threadIdNoStopped DAP thread to inspect; omit to use the session-selected stopped thread.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
moduleCountNoMaximum loaded modules to include when module collection is enabled.
stackLevelsNoMaximum number of stack frames to inspect when collecting crash evidence.
includeModulesNoInclude a bounded list of loaded executable images and libraries.
disassembleAfterNoNumber of instructions after the selected instruction to request.
disassembleBeforeNoNumber of instructions before the selected instruction to request.
includeDisassemblyNoInclude best-effort disassembly around the selected instruction pointer when supported.
includeExceptionInfoNoRequest structured exception information for the stopped thread when supported.
maxVariablesPerScopeNoMaximum variables returned per inspected scope, bounding evidence size.

Output Schema

ParametersJSON Schema
NameRequiredDescription
snapshotYes
diagnosisYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the bar is lower. The description adds value beyond those by stating that it 'does not change execution state', that it returns both a bounded snapshot and a derived diagnosis, and that it discloses collection limitations when optional debugger evidence is unavailable. This gives useful behavioral context beyond the structured annotations.

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

Conciseness5/5

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

The description is dense but tightly structured: it front-loads the core purpose, lists the derived outputs, routes to the sibling alternative, and closes with read-only behavior and output scope. Every clause contributes, and there is no redundant repetition of the tool name or schema contents.

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

Completeness4/5

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

For a tool with 11 parameters, nested objects, no required parameters, and an output schema, the description covers the key operational context: the precondition ('already stopped'), the read-only guarantee, the distinction from debug_snapshot, and the bounded/limited nature of results. It does not enumerate parameter details, but the input schema fully covers those, so the description is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter in detail. The description does not add parameter-specific semantics, but it does contextualize the optional evidence gathering and bounded results, which relates to the parameters. 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.

Purpose5/5

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

The description names a specific verb ('Diagnose'), a precise resource ('already stopped live or postmortem debug session'), and a concrete set of outputs (project-frame selection, crash classification, bindings, provenance, ranked hypotheses, fix plan). It also explicitly differentiates itself from debug_snapshot, so an agent can distinguish it from siblings without opening schemas.

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

Usage Guidelines5/5

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

The description gives a clear when-to-use condition ('when a debugger has captured the failure and you want...') and names the alternative (debug_snapshot) with the condition that selects it ('when only raw evidence is needed'). This is explicit routing guidance rather than leaving the choice to inference.

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

debug_disconnectDisconnect DebuggerA
Destructive

End the active DAP session and stop its local adapter process. Use this when debugging is finished or the session must be reset; do not call it when more runtime evidence is still needed. With terminateDebuggee=true it may also terminate a live target process, so this operation can destroy the current runtime state and cannot be treated as read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
terminateDebuggeeNoWhether the debugger should terminate the live debuggee while disconnecting; set false to request detach/preserve behavior when the adapter supports it.

Output Schema

ParametersJSON Schema
NameRequiredDescription
disconnectedYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark the tool as destructive, but the description adds valuable context: it ends the session, stops the adapter process, may terminate a live target with terminateDebuggee=true, and explicitly warns that runtime state can be destroyed. This meaningfully exceeds the annotation signal.

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

Conciseness5/5

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

Three sentences, each earning its place: the first states the core operation, the second provides usage guidance, and the third warns about destructive behavior. No filler or redundant restatement.

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

Completeness5/5

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

With two well-documented optional parameters, an output schema, and annotations already covering safety traits, the description covers purpose, appropriate usage, and destructive consequences. Nothing needed to invoke the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description adds some interpretation around terminateDebuggee's destructive potential, but the schema already explains the detach/preserve behavior, so the description provides only marginal added value.

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

Purpose5/5

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

The description states a specific verb ('End') and resource ('active DAP session') plus the local adapter process, making the operation's scope unambiguous. It is clearly distinct from siblings like debug_continue or debug_snapshot even without naming them.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use and when-not-to-use guidance: use when debugging is finished or must be reset, and do not call when more runtime evidence is needed. It does not name an alternative tool, so it stops short of a full 5.

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

debug_find_writerFind Runtime WriterA
Destructive

Temporarily watch a variable or debugger expression, resume an authorized live target, and capture the first resulting stop to identify the immediate writer candidate. Use this after a stopped-state diagnosis suggests a value was corrupted and runtime provenance is needed; do not use it for crash dumps or when resuming is unsafe. Adapters with DAP data-breakpoint support use that protocol directly; GDB 14/15 uses a bounded watch/rwatch/awatch command through DAP REPL because those releases do not advertise native data breakpoints. The tool removes only the temporary watch it created and never automatically continues through an unrelated stop.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVariable child name or debugger expression to watch. Without variablesReference, the expression is resolved in frameId/current frame when supported. GDB fallback expressions must not contain control characters or line breaks.
frameIdNoOptional stopped frame used to resolve an expression; omit to use the current snapshot frame. Ignored by native DAP child resolution when variablesReference is supplied.
snapshotNoBounds for the evidence snapshot captured after execution stops.
threadIdNoStopped thread to resume and inspect; omit to use the debugger-selected stopped thread.
conditionNoOptional adapter-supported condition for native DAP data breakpoints. Intentionally rejected by the bounded GDB fallback.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
timeoutMsNoMaximum time in milliseconds to wait for a stop, exit, or termination after resuming.
accessTypeNoRequested watchpoint access mode. write is the normal choice when finding who corrupts a value; GDB maps these to watch/rwatch/awatch.write
hitConditionNoOptional adapter-supported hit-count condition for native DAP data breakpoints. Intentionally rejected by the bounded GDB fallback.
variablesReferenceNoOptional DAP variable-container reference when the adapter advertises native data breakpoints. Omit for the GDB watch-command fallback and pass a debugger-visible expression in name instead.
replaceExistingDataBreakpointsNoFor native DAP data breakpoints, temporarily replace existing MCP-managed watches when true. The GDB fallback never deletes unrelated CLI watchpoints and only removes its own temporary watch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
beforeYes
statusYes
outcomeYes
guidanceYes
snapshotNo
strategyYes
installedYes
resolutionYes
writerFrameNo
hitConfirmedYes
cleanupWarningNo
writerCorrelationNo
priorDataBreakpointCountYes
replaceExistingDataBreakpointsYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the annotations by explaining that the tool temporarily creates a watch, removes only that watch, never automatically continues through unrelated stops, and uses different mechanisms for DAP vs GDB 14/15. This gives the agent a clear model of side effects and safety boundaries.

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

Conciseness5/5

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

The description is three sentences with no filler: the first front-loads the core action, the second gives usage boundaries, and the third explains protocol behavior and cleanup guarantees. Every sentence adds distinct, necessary information.

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

Completeness5/5

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

The description is complete for a complex tool with 11 parameters: it covers purpose, safe usage, exclusions, protocol differences, cleanup behavior, and the nature of the resulting stop. The schema and output schema fill in remaining structured details, leaving no critical gap for an agent deciding whether and how to call it.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameter meanings. The description adds protocol-level context such as DAP vs GDB behavior and the bounded watch fallback, but most individual parameter semantics are already fully captured in the input schema itself.

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

Purpose5/5

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

The description states a specific action chain: temporarily watch a variable/expression, resume the target, and capture the first stop to identify the immediate writer candidate. It clearly distinguishes this from sibling tools by framing it as the corruption-provenance diagnostic and explicitly separating it from crash-dump use.

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

Usage Guidelines4/5

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

It gives explicit when-to-use guidance: after a stopped-state diagnosis suggests corruption and runtime provenance is needed. It also provides explicit when-not-to-use guidance: not for crash dumps or when resuming is unsafe, though it does not name a specific sibling alternative to use instead.

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

debug_open_dumpOpen Native Crash DumpA
Read-onlyIdempotent

Open a local native core/minidump with CodeLLDB, upstream LLVM lldb-dap, or GNU GDB DAP and capture bounded postmortem evidence. Use this when the failure is already recorded and no target process should execute; use debug_run_to_stop or debug_this_crash for a live reproduction instead. The tool starts only the selected local debugger adapter, never launches or resumes the crashed program, treats the dump as read-only, and returns the initial stack/locals/registers plus optional modules and disassembly.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the local debugger adapter process; this does not execute the crashed target.
adapterNoDebugger adapter used for postmortem inspection. lldb-dap and gdb use their native coreFile attach semantics.codelldb
programNoPath to the matching executable image. Optional for CodeLLDB/GDB, but required when adapter=lldb-dap because LLVM coreFile loading binds the dump to its program image.
dumpPathYesAbsolute or local path to the native core/minidump file to inspect.
threadIdNoSpecific dump thread to inspect; omit to use the debugger-selected stopped/crashed thread.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
sourceMapNoOptional mapping from source paths recorded in symbols to local source paths. Supported by CodeLLDB/lldb-dap; GDB currently rejects this field rather than guessing undocumented semantics.
adapterPathNoOptional explicit executable path for the selected debugger adapter; omit to use its normal discovery logic.
moduleCountNoMaximum number of modules to include when includeModules is true.
stackLevelsNoMaximum stack frames to include in the initial postmortem snapshot.
includeModulesNoInclude loaded executable images and libraries recorded in the dump.
requestTimeoutMsNoPer-request DAP timeout in milliseconds while opening and inspecting the dump.
includeDisassemblyNoInclude best-effort instructions around the selected crash frame.
maxVariablesPerScopeNoMaximum variables returned per scope in the initial snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
attachYes
adapterYes
programNo
dumpPathYes
guidanceYes
snapshotYes
adapterKindYes
capabilitiesYes
readOnlyTargetYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds important behavioral context beyond the annotations: it starts only the debugger adapter, never launches or resumes the crashed program, treats the dump as read-only, and returns a bounded initial snapshot. This complements the readOnlyHint/idempotentHint annotations and gives the agent a clear safety profile.

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

Conciseness5/5

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

The description is compact and front-loaded: the action comes first, followed by usage context, safety behavior, and return scope. Every sentence earns its place with no filler or repetition.

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

Completeness5/5

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

For a 14-parameter tool, the description covers the key decision points: when to use it, what it does not do, what it returns, and how it differs from live-debugging siblings. The output schema and rich input schema cover the remaining detail, so nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter in detail. The description adds some high-level context about adapters, modules, and disassembly, but it does not substantially go beyond what the input schema already provides.

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

Purpose5/5

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

The description clearly states the specific action: opening a local core/minidump with a local debugger adapter and capturing bounded postmortem evidence. It also explicitly distinguishes this tool from live-debugging siblings like debug_run_to_stop and debug_this_crash, so an agent can select it confidently.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: use it when the failure is already recorded and no target process should execute. It also names alternatives for live reproduction, leaving no ambiguity about when this tool is appropriate versus its siblings.

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

debug_run_to_stopRun Until Debug Stop or ExitA
Destructive

Run one live launch or attach through an already initialized DAP adapter until the first stopped, exited, or terminated event. Use this when you need deterministic runtime evidence from a reproduction; do not use it for a postmortem dump or when executing/attaching to the local target is not authorized. Launch mode executes application code and attach mode changes debugger control of an existing process, so normal target side effects may occur before the stop. Returns the request result, terminal/stopped outcome, session status, and a bounded snapshot only when a stopped event is captured.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestNoChoose launch to start a new target from configuration, or attach to connect to an existing authorized local target.launch
snapshotNoOptional bounds and evidence categories for the snapshot captured only when execution stops.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
timeoutMsNoMaximum milliseconds to wait for the first stopped, exited, or terminated event.
breakpointsNoOptional source breakpoint groups configured before the debugger completes launch/attach setup.
configurationYesAdapter-specific DAP launch or attach configuration.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusYes
outcomeYes
requestYes
snapshotNo
requestResultYes

TDQS

A4.7/5.0
Behavior5/5

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

It discloses target side effects beyond what annotations state: 'normal target side effects may occur before the stop,' and it explains the difference between launch and attach behavior. It also sets a boundary on the snapshot ('bounded snapshot only when a stopped event is captured') and states the 'already initialized DAP adapter' prerequisite. This aligns with and enriches the destructiveHint=true annotation.

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

Conciseness5/5

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

Four sentences, each earning its place: core action, selection guidance, side-effect warning, and return summary. The most important information is front-loaded before the exclusion and return-value details.

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

Completeness5/5

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

For a tool with 6 parameters, nested schema, and an output schema, the description covers the action, prerequisites, side effects, return categories, and exclusions. Missing details such as individual parameter bounds are already covered by the schema, so no critical selection or invocation context is absent.

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

Parameters4/5

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

With 100% schema description coverage, the schema already documents the parameters, so the baseline is 3. The description adds operational meaning for the request parameter (launch executes code, attach changes debugger control) and clarifies that snapshots are only produced on a stopped event, which is useful beyond the raw schema.

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

Purpose5/5

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

The description states a specific action ('Run one live launch or attach... until the first stopped, exited, or terminated event'), identifies the resource (already initialized DAP adapter), and scopes the use case to deterministic runtime evidence. It clearly contrasts with postmortem dumps, distinguishing it from sibling debug_open_dump.

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

Usage Guidelines4/5

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

The description explicitly says when to use ('when you need deterministic runtime evidence from a reproduction') and when not to use ('do not use it for a postmortem dump or when executing/attaching to the local target is not authorized'). It does not name a specific alternative tool, but the postmortem exclusion effectively routes the agent away from debug_open_dump.

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

debug_sessionsManage Debug SessionsA
Destructive

Use this tool to list, create, or close isolated DAP sessions before routing other debugger tools with sessionId. Omit sessionId on normal debug tools only when the backward-compatible default session is intended; do not use a global session selector for concurrent work.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoManagement action: list current sessions, create a new isolated session, or close one session.list
sessionIdNoRequested ID for create, or target ID for close. Omit on create to generate a bounded session-N identifier.
terminateDebuggeeNoFor close only: request debugger termination of the live target before resetting/removing the session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionYes
removedNo
sessionsYes
sessionIdNo
maxSessionsYes
defaultSessionIdYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already carry readOnlyHint=false and destructiveHint=true, so the description does not need to restate mutation/destruction. It adds useful behavioral context about session isolation and default-session backward compatibility. It does not spell out that closing can terminate the debuggee, but the schema's terminateDebuggee parameter covers that detail.

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

Conciseness5/5

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

The description is two tight sentences with no filler. The first sentence names the actions and context; the second adds the critical sessionId routing caveat. Every clause earns its place.

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

Completeness5/5

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

Given 100% schema coverage, an output schema, and annotations covering the destructive profile, the description is sufficient for an agent to select and invoke the tool correctly. The only behaviors not described in prose are already captured in the structured fields.

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

Parameters3/5

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

Schema description coverage is 100%, with meaningful descriptions for action, sessionId, and terminateDebuggee. The tool description adds routing context but no new parameter-level semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb set ('list, create, or close'), a specific resource ('isolated DAP sessions'), and positions the tool as the session-lifecycle manager that must be used before routing other debugger tools. This clearly distinguishes it from sibling debugger tools like debug_continue or debug_source_disassembly.

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

Usage Guidelines5/5

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

It explicitly says when to use the tool (managing DAP sessions before other tools), and gives concrete exclusion guidance: omit sessionId only for the backward-compatible default session and avoid a global session selector for concurrent work. The description tells the agent how to route between this and the other debug tools.

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

debug_snapshotCapture Runtime Debug SnapshotA
Read-onlyIdempotent

Capture bounded evidence from the current stopped debug state without resuming execution. Use this when an agent needs raw stack, locals, registers, exception details, modules, or nearby instructions; prefer debug_diagnose_stop when you also want ranked crash hypotheses and project-frame selection. This is read-only with respect to the debuggee and returns best-effort evidence plus collection errors for optional data that an adapter cannot provide.

ParametersJSON Schema
NameRequiredDescriptionDefault
threadIdNoStopped DAP thread to inspect; omit to use the session-selected stopped thread.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
moduleCountNoMaximum loaded modules to return when includeModules is true.
stackLevelsNoMaximum number of stack frames to include, from the selected thread top downward.
includeModulesNoInclude a bounded list of loaded executable images and libraries.
disassembleAfterNoNumber of instructions after the current instruction to request when disassembly is enabled.
disassembleBeforeNoNumber of instructions before the current instruction to request when disassembly is enabled.
includeDisassemblyNoInclude best-effort instructions around the selected frame instruction pointer when supported.
includeExceptionInfoNoInclude structured exception information for the stopped thread when the adapter supports it.
maxVariablesPerScopeNoMaximum variables returned per inspected scope, bounding output size.

Output Schema

ParametersJSON Schema
NameRequiredDescription
frameYes
stackYes
localsYes
scopesYes
threadYes
modulesNo
stoppedNo
exceptionNo
registersYes
postmortemNo
disassemblyNo
symbolHealthYes
collectionErrorsNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, but the description adds meaningful behavioral context: it is read-only with respect to the debuggee, returns best-effort evidence, and includes collection errors for optional data an adapter cannot provide. This clarifies failure behavior and optionality beyond what annotations express.

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

Conciseness5/5

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

Three sentences with no wasted words: the first states the core action and constraint, the second gives usage routing, and the third discloses read-only, best-effort, and error behavior. Information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

For a tool with 10 optional parameters and an output schema, the description covers the essential decision factors: what it returns, when to use it versus the closest sibling, that it is read-only, and how optional failures are reported. Return-value details are rightfully left to the output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema carries full parameter documentation. The description adds conceptual grouping by naming the kinds of evidence collected (stack, locals, registers, exception details, modules, nearby instructions), which maps to several parameters, but it does not add per-parameter semantics beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('Capture'), a specific resource ('bounded evidence from the current stopped debug state'), and a key constraint ('without resuming execution'). It also distinguishes itself from debug_diagnose_stop by describing the division of labor, so an agent can tell them apart without inspecting schemas.

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

Usage Guidelines5/5

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

Explicitly states when to use: when raw stack, locals, registers, exception details, modules, or nearby instructions are needed. It also names the alternative (debug_diagnose_stop) and gives the condition that should route to that sibling (ranked crash hypotheses and project-frame selection). No inference is required.

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

debug_source_disassemblyCorrelate Source and DisassemblyA
Read-onlyIdempotent

Correlate source locations, disassembly, registers, and pointer-like locals for the raw fault frame and the first likely project-controlled frame. Use this for low-level root-cause evidence when a crash is already stopped and instruction/operand provenance matters; prefer debug_diagnose_stop for a broader ranked diagnosis. This is read-only, does not resume the target, and returns frame-selection reasoning, both correlations, operand bindings, and any best-effort collection errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
analysisNoHints used to distinguish project code from runtime, system, or third-party frames.
threadIdNoStopped DAP thread to inspect; omit to use the session-selected stopped thread.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
stackLevelsNoMaximum stack frames considered while selecting the project-controlled frame.
disassembleAfterNoInstructions after the selected instruction included in each disassembly window.
disassembleBeforeNoInstructions before the selected instruction included in each disassembly window.

Output Schema

ParametersJSON Schema
NameRequiredDescription
projectFrameYes
frameSelectionYes
operandAnalysisYes
collectionErrorsNo
faultCorrelationYes
projectCorrelationYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, but the description adds meaningful behavior beyond that: it explicitly states the tool does not resume the target and describes what it returns, including frame-selection reasoning, correlations, operand bindings, and best-effort collection errors. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences pack the core action, usage conditions, explicit alternative, side-effect guarantee, and return-value summary with no filler. The most differentiating information is front-loaded, and every sentence earns its place.

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

Completeness5/5

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

The description is complete for an agent deciding whether and how to invoke this tool: it gives scope, use context, a sibling alternative, side-effect safety, and an outline of the return payload. Since an output schema exists, detailed return documentation is not required here.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all six parameters. The description itself adds little parameter-level semantics, but that is acceptable because the schema carries the weight; the baseline of 3 applies.

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

Purpose5/5

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

The description names a specific verb ('Correlate'), a precise resource set (source locations, disassembly, registers, pointer-like locals), and the frames involved (raw fault frame and first likely project-controlled frame). It explicitly distinguishes itself from debug_diagnose_stop, making the tool's niche clear.

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

Usage Guidelines5/5

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

The second sentence states exactly when to use this tool ('when a crash is already stopped and instruction/operand provenance matters') and names the preferred alternative for broader ranked diagnosis ('prefer debug_diagnose_stop'). This is explicit routing guidance with both inclusion and exclusion criteria.

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

debug_statusDebug Session StatusA
Read-onlyIdempotent

Inspect debugger lifecycle state, the selected stop, recent DAP events, and bounded adapter stderr without changing target execution. Use this to determine whether a session is initialized, running, stopped, postmortem, exited, or failed before choosing another debug tool; it is diagnostic only and does not resume, launch, attach, or terminate the debuggee.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
adapterIdNo
adapterPidNo
configuredYes
initializedYes
capabilitiesNo
recentEventsYes
activeRequestNo
adapterRunningYes
recentAdapterStderrYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds valuable context: it specifies what is inspected (lifecycle state, stop, DAP events, bounded stderr) and explicitly confirms no target execution change. The word 'bounded' also hints at output limits. This goes well beyond the structured annotations without contradicting them.

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

Conciseness5/5

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

Two sentences cover the full scope and intended usage with no filler. The first sentence front-loads the inspection target and side-effect-free nature, and the second provides concrete use cases and exclusions. Every clause adds value.

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

Completeness5/5

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

With no parameters, rich annotations, an existing output schema, and a description that explains both the contents inspected and the intended decision-making context, nothing essential is missing. The agent can safely call this tool based on the description alone.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics to clarify. The baseline of 4 applies because no parameter documentation is needed at all, and the description correctly omits any irrelevant parameter talk.

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

Purpose5/5

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

The description uses a specific verb ('Inspect') with an explicit resource list: debugger lifecycle state, selected stop, recent DAP events, and bounded adapter stderr. It also contrasts the tool with action-oriented siblings by stating it does not resume, launch, attach, or terminate, making its role within the sibling set clear.

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

Usage Guidelines4/5

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

The description gives explicit guidance on when to use the tool: to determine session state before choosing another debug tool. It also states what it is not for ('does not resume, launch, attach, or terminate'), but it does not name specific alternative tools, relying on 'another debug tool' as a generic reference. This is clear context with no named alternatives, so it fits a 4.

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

debug_this_crashDebug This CrashA
Destructive

Preferred high-level native crash workflow. Use mode=current for an already stopped session, dump for read-only postmortem analysis, codelldb to discover CodeLLDB, lldb-dap to discover upstream LLVM lldb-dap, gdb to discover GNU GDB built-in DAP interpreter, or live with an already initialized generic DAP adapter. Do not use codelldb/lldb-dap/gdb/live when executing or attaching to the target is not authorized: those modes can run application code and cause its normal side effects, while current/dump only inspect stopped evidence. workflow.stage selects initial diagnosis, verification against a prior baseline, or the bounded autonomous cycle. Returns runtime evidence, diagnosis, verification/autonomous metadata, and debugger status with deterministic fixed/blocked/budget-exhausted outcomes where applicable.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the selected debugger/target launch and a project-root hint for diagnosis.
envNoEnvironment variables supplied to the launched program in codelldb/lldb-dap/gdb modes.
argsNoCommand-line arguments passed to the launched program in codelldb/lldb-dap/gdb modes.
modeNocurrent inspects an existing stop; live uses an initialized generic DAP session; codelldb starts CodeLLDB; lldb-dap starts upstream LLVM lldb-dap; gdb starts GNU GDB with --interpreter=dap; dump opens a frozen core/minidump.current
programNoRequired for codelldb/lldb-dap/gdb launch modes; optional for CodeLLDB/GDB dumps but required when dumpAdapter=lldb-dap. Local path to the native executable.
requestNoFor mode=live, choose whether the initialized DAP adapter launches a target or attaches to an existing authorized target.launch
analysisNoHints used to distinguish project code from runtime, system, or third-party frames.
dumpPathNoRequired for mode=dump: local path to the native core/minidump file.
snapshotNoBounds and optional evidence categories for a runtime crash snapshot.
workflowNoControls one-shot diagnosis, explicit verification, or the bounded autonomous crash workflow.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
sourceMapNoFor mode=dump, map source paths stored in debug symbols to local source paths.
timeoutMsNoMaximum milliseconds to wait for the reproduction to stop, exit, or terminate.
adapterPathNoOptional explicit debugger executable/adapter path for codelldb/lldb-dap/gdb/dump modes; omit to auto-discover the selected adapter.
breakpointsNoOptional source breakpoints configured before a live/codelldb reproduction completes setup.
dumpAdapterNoFor mode=dump, choose CodeLLDB, upstream LLVM lldb-dap coreFile loading, or GNU GDB coreFile attach semantics.codelldb
stopOnEntryNoWhen true in codelldb/lldb-dap/gdb modes, request an initial debugger stop at program entry before normal execution.
configurationNoRequired for mode=live: adapter-specific DAP launch/attach configuration.
requestTimeoutMsNoPer-request DAP timeout in milliseconds for the selected debugger adapter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
statusYes
workflowNo
diagnosisNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint=true annotation, the description discloses mode-specific side effects: codelldb/lldb-dap/gdb/live 'can run application code and cause its normal side effects, while current/dump only inspect stopped evidence.' It also states the deterministic outcomes (fixed/blocked/budget-exhausted), which is valuable behavioral context an agent cannot infer from the schema alone.

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

Conciseness5/5

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

The description is about five dense sentences, each carrying a distinct job: purpose, mode routing, safety exclusion, workflow stage selection, and return content. It is front-loaded with the core purpose and avoids restating schema details, making it very efficient for a tool with 19 parameters and nested objects.

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

Completeness5/5

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

For a highly complex tool, the description covers the key decisions an agent must make: which mode to select, when execution is unsafe, which workflow stage to use, and what the tool returns. The remaining parameter details and return shape are handled by the rich input and output schemas, so nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter descriptions in the schema are already rich, so the baseline is 3. The tool description adds high-level grouping around mode safety and workflow stages but does not add meaningful per-parameter semantics beyond what the schema already provides.

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

Purpose4/5

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

The description clearly identifies the tool as a 'preferred high-level native crash workflow' and enumerates the concrete modes (current, dump, codelldb, lldb-dap, gdb, live), so an agent knows what operation it performs. It does not explicitly differentiate itself from sibling tools like debug_open_dump or debug_diagnose_stop by name, which keeps it from a 5.

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

Usage Guidelines5/5

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

The description gives explicit routing guidance for every mode, including an explicit exclusion: 'Do not use codelldb/lldb-dap/gdb/live when executing or attaching to the target is not authorized.' It also explains why those modes are risky and why current/dump are safer, and maps workflow.stage to diagnose, verify, and autonomous behaviors.

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

debug_this_hangDebug This HangA
Destructive

High-level native hang workflow for all-thread triage. Use it when a live process appears stuck, deadlocked, waiting forever, or spinning and you need bounded stacks from every thread, wait-state/deadlock heuristics, and cross-thread Pointer-Provenance v2. In current mode it inspects an existing configured session and pauses a running live target when necessary; codelldb, lldb-dap, gdb, and live modes can launch or attach to an authorized local target, observe it for a bounded interval, then pause it for evidence. Do not use executable/attach modes when target execution or debugger control is not authorized, and do not treat a deadlock-candidate as a proven lock cycle because generic DAP does not expose portable lock ownership.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for adapter-owned launches and a project-root hint for hang triage.
envNoEnvironment variables supplied to adapter-owned launched programs.
pidNoRequired for codelldb/lldb-dap/gdb attach modes; ignored for launch and generic live configuration.
argsNoCommand-line arguments for codelldb/lldb-dap/gdb launch modes.
modeNocurrent triages the configured session; live uses an already initialized generic DAP adapter; codelldb/lldb-dap/gdb discover and start that adapter before launch/attach.current
programNoRequired for codelldb/lldb-dap/gdb launch; optional executable image hint for adapter-specific attach.
requestNoFor live or adapter-owned modes, launch starts a program and attach connects to an existing authorized process.launch
analysisNoOptional project roots/modules used to recognize project-controlled frames across all threads.
observeMsNoBounded interval after launch/attach during which a normal stop or process exit prevents automatic hang-timeout classification.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
maxThreadsNoMaximum threads to collect for bounded all-thread triage.
adapterPathNoOptional explicit CodeLLDB, lldb-dap, or GDB executable path; omit to use adapter discovery.
stackLevelsNoMaximum stack frames collected per thread.
configurationNoRequired only for mode=live: adapter-specific DAP launch/attach configuration.
pauseBudgetMsNoAggregate wall-clock budget across thread enumeration and all pause requests. This prevents per-thread pause timeouts from multiplying across large thread sets.
pauseTimeoutMsNoMaximum time to wait for any single pause request used to freeze a suspected live hang.
captureTimeoutMsNoGlobal deadline for all-thread stack/scope/variable evidence collection after the pause phase. When it expires, remaining threads are retained as partial/unclassified evidence instead of extending the workflow per thread.
requestTimeoutMsNoPer-request timeout for starting and configuring an adapter-owned DAP session.
framesWithVariablesNoMaximum frames per thread whose locals/arguments are collected, prioritizing the top frame and first project-controlled frame.
maxVariablesPerFrameNoMaximum local/argument variables collected per selected frame scope for Pointer-Provenance v2.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
statusYes
evidenceNo
diagnosisNo
observationYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already carry destructiveHint=true, so the destructive nature is known. The description adds meaningful behavioral context beyond that: it can pause a running live target, launches or attaches via several adapters, observes for a bounded interval, and explicitly warns that generic DAP cannot prove lock ownership. This is valuable operational disclosure that annotations do not provide.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: the first sentence states purpose and trigger conditions, the second explains mode behavior, the third states a safety exclusion, and the fourth adds an important epistemic caveat about lock-cycle interpretation. Content is front-loaded and there is no filler.

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

Completeness4/5

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

For a tool this complex—20 parameters, nested objects, five modes, output schema present, and rich annotations—the description covers the essential workflow, mode distinctions, and safety boundaries. It could be more complete by explicitly contrasting with debug_this_crash, but an agent has enough to call it correctly given the exhaustive input schema and output schema.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter already documented in detail. The description adds workflow-level context but no per-parameter meaning beyond the schema, so the baseline 3 is appropriate: the structured field descriptions do the heavy lifting.

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

Purpose5/5

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

The description states a specific verb and resource: a 'high-level native hang workflow for all-thread triage.' It immediately names the triggering conditions (stuck, deadlocked, waiting forever, spinning) and the deliverable (bounded stacks from every thread, wait-state/deadlock heuristics, Pointer-Provenance v2), which clearly distinguishes it from the sibling crash-focused tools like debug_this_crash.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use criteria ('Use it when a live process appears stuck...') and a clear exclusion: do not use executable/attach modes when target execution or debugger control is not authorized. It does not explicitly name which sibling to use instead for crash triage, so it falls just short of full alternative routing, but the context is otherwise strong.

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

debug_trace_valueTrace Runtime Value WritesA
Destructive

Build a bounded temporal write timeline for one debugger-visible variable or expression. Use this after differential or crash evidence identifies a suspicious value and repeated live-target resume is safe. The tool installs one temporary data breakpoint or watchpoint at a time, resumes to the next confirmed writer, captures bounded runtime evidence, removes only its own temporary watch, and repeats. Do not use it for crash dumps, unsafe-to-resume targets, or as proof that an observed writer is the root cause; it stops on unrelated debugger events rather than continuing through them.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDebugger-visible variable or expression to watch. Control characters and line breaks are rejected by the GDB fallback.
maxStopsNoMaximum confirmed or unrelated writer-stop observations before the trace ends.
snapshotNoOptional bounded evidence settings for each observed writer stop.
threadIdNoInitial stopped thread; omit to use the debugger-selected stopped thread. Writer snapshots follow the actual stopped event thread.
sessionIdNoOptional DAP session ID. Omit to use the backward-compatible default session.
timeoutMsNoAggregate operation deadline across the entire write timeline.
accessTypeNoWatch writes only by default; readWrite may be used when read access is also relevant.write
perStopTimeoutMsNoMaximum bounded wait allocated to each individual writer observation, also capped by the aggregate deadline.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
eventsYes
statusYes
guidanceYes
stopReasonYes
finalSnapshotYes
terminalErrorNo

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses substantial behavioral detail beyond the annotations: it installs one temporary breakpoint/watchpoint at a time, resumes to the next confirmed writer, captures bounded evidence, removes only its own watch, and repeats. It also reveals a key limitation: the tool stops on unrelated debugger events rather than continuing through them. The destructiveHint and openWorldHint annotations are consistent with this live-target mutating behavior.

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

Conciseness5/5

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

The description is dense but efficient, front-loading the core purpose, then usage context, then operational behavior, then exclusions. Every sentence earns its place, and no content is repeated from the schema or annotations.

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

Completeness5/5

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

Given the tool's complexity, the description covers the essential operational model, safety preconditions, limitations, and unsupported uses. An output schema exists, so the description does not need to explain return values. The combination of schema, annotations, and description gives an agent enough context to decide when and how to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and each parameter already has a meaningful description, including defaults, bounds, and semantics such as aggregation deadline and per-stop timeout. The tool description reinforces general concepts like 'bounded' and 'writer stops' but does not add significant parameter-level meaning beyond what the schema already provides.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Build a bounded temporal write timeline for one debugger-visible variable or expression.' This directly states what the tool does and differentiates it from broader debugging or dump-analysis tools by focusing on a single variable/expression and a timeline of writes.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use guidance: after differential or crash evidence identifies a suspicious value and live-target resume is safe. It also gives clear when-not-to-use conditions: crash dumps, unsafe-to-resume targets, and as root-cause proof. However, it does not name alternative sibling tools to use in those excluded cases, so it falls one step short of the strongest guidance.

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.

  1. 14 tool updatesv0.17.0
    • Addeddebug_compare_runs
    • Changeddebug_continue2 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "allThreadsContinued": {
        +      "type": "boolean"
        +    },
        +    "response": {},
        +    "stopped": {}
        +  },
        +  "type": "object"
        +}
    • Changeddebug_diagnose_stop2 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "diagnosis": {},
        +    "snapshot": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "collectionErrors": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "message": {
        +                "type": "string"
        +              },
        +              "operation": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "operation",
        +              "message"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "disassembly": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "exception": {},
        +        "frame": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "column": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "id": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "line": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "source": {}
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "line",
        +            "column"
        +          ],
        +          "type": "object"
        +        },
        +        "locals": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "modules": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "postmortem": {
        +          "type": "boolean"
        +        },
        +        "registers": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "scopes": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "stack": {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "column": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "id": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "line": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "source": {}
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "line",
        +              "column"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "stopped": {},
        +        "symbolHealth": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "limitations": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "modules": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "collected": {
        +                  "type": "boolean"
        +                },
        +                "symbolsAvailable": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "symbolsMissing": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "symbolsUnknown": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "totalModules": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "withExplicitStatus": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "collected",
        +                "totalModules",
        +                "withExplicitStatus",
        +                "symbolsAvailable",
        +                "symbolsMissing",
        +                "symbolsUnknown"
        +              ],
        +              "type": "object"
        +            },
        +            "stack": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "namedFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "sourceMappedFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "topFrameNamed": {
        +                  "type": "boolean"
        +                },
        +                "topFrameSourceMapped": {
        +                  "type": "boolean"
        +                },
        +                "totalFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "totalFrames",
        +                "namedFrames",
        +                "sourceMappedFrames",
        +                "topFrameNamed",
        +                "topFrameSourceMapped"
        +              ],
        +              "type": "object"
        +            },
        +            "status": {
        +              "enum": [
        +                "good",
        +                "partial",
        +                "poor",
        +                "unknown"
        +              ],
        +              "type": "string"
        +            },
        +            "summary": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "status",
        +            "summary",
        +            "stack",
        +            "modules",
        +            "limitations"
        +          ],
        +          "type": "object"
        +        },
        +        "thread": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "id": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "thread",
        +        "stack",
        +        "frame",
        +        "scopes",
        +        "locals",
        +        "registers",
        +        "symbolHealth"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "snapshot",
        +    "diagnosis"
        +  ],
        +  "type": "object"
        +}
    • Changeddebug_disconnect2 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "disconnected": {
        +      "const": true,
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "disconnected"
        +  ],
        +  "type": "object"
        +}
    • Addeddebug_find_writer
    • Changeddebug_open_dump6 fields changed
      • changedInput schema / properties / adapter / description
        Previous value: -"Debugger adapter used for postmortem inspection. codelldb preserves existing behavior; lldb-dap uses upstream LLVM coreFile attach semantics."New value: +"Debugger adapter used for postmortem inspection. lldb-dap and gdb use their native coreFile attach semantics."
      • changedInput schema / properties / adapter / enum
        Previous value: -[
        -  "codelldb",
        -  "lldb-dap"
        -]New value: +[
        +  "codelldb",
        +  "lldb-dap",
        +  "gdb"
        +]
      • changedInput schema / properties / program / description
        Previous value: -"Path to the matching executable image. Optional for CodeLLDB, but required when adapter=lldb-dap because LLVM coreFile loading binds the dump to its program image."New value: +"Path to the matching executable image. Optional for CodeLLDB/GDB, but required when adapter=lldb-dap because LLVM coreFile loading binds the dump to its program image."
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedInput schema / properties / sourceMap / description
        Previous value: -"Optional mapping from source paths recorded in symbols to local source paths; converted to lldb-dap pair arrays when that adapter is selected."New value: +"Optional mapping from source paths recorded in symbols to local source paths. Supported by CodeLLDB/lldb-dap; GDB currently rejects this field rather than guessing undocumented semantics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "adapter": {},
        +    "adapterKind": {
        +      "enum": [
        +        "codelldb",
        +        "lldb-dap",
        +        "gdb"
        +      ],
        +      "type": "string"
        +    },
        +    "attach": {},
        +    "capabilities": {},
        +    "dumpPath": {
        +      "type": "string"
        +    },
        +    "guidance": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "blockedOperations": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "canInspect": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "cannotResume": {
        +          "type": "boolean"
        +        },
        +        "note": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "canInspect",
        +        "blockedOperations",
        +        "cannotResume",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "mode": {
        +      "const": "postmortem",
        +      "type": "string"
        +    },
        +    "program": {
        +      "type": "string"
        +    },
        +    "readOnlyTarget": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "snapshot": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "collectionErrors": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "message": {
        +                "type": "string"
        +              },
        +              "operation": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "operation",
        +              "message"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "disassembly": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "exception": {},
        +        "frame": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "column": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "id": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "line": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "source": {}
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "line",
        +            "column"
        +          ],
        +          "type": "object"
        +        },
        +        "locals": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "modules": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "postmortem": {
        +          "type": "boolean"
        +        },
        +        "registers": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "scopes": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "stack": {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "column": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "id": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "line": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "source": {}
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "line",
        +              "column"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "stopped": {},
        +        "symbolHealth": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "limitations": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "modules": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "collected": {
        +                  "type": "boolean"
        +                },
        +                "symbolsAvailable": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "symbolsMissing": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "symbolsUnknown": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "totalModules": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "withExplicitStatus": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "collected",
        +                "totalModules",
        +                "withExplicitStatus",
        +                "symbolsAvailable",
        +                "symbolsMissing",
        +                "symbolsUnknown"
        +              ],
        +              "type": "object"
        +            },
        +            "stack": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "namedFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "sourceMappedFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "topFrameNamed": {
        +                  "type": "boolean"
        +                },
        +                "topFrameSourceMapped": {
        +                  "type": "boolean"
        +                },
        +                "totalFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "totalFrames",
        +                "namedFrames",
        +                "sourceMappedFrames",
        +                "topFrameNamed",
        +                "topFrameSourceMapped"
        +              ],
        +              "type": "object"
        +            },
        +            "status": {
        +              "enum": [
        +                "good",
        +                "partial",
        +                "poor",
        +                "unknown"
        +              ],
        +              "type": "string"
        +            },
        +            "summary": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "status",
        +            "summary",
        +            "stack",
        +            "modules",
        +            "limitations"
        +          ],
        +          "type": "object"
        +        },
        +        "thread": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "id": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "thread",
        +        "stack",
        +        "frame",
        +        "scopes",
        +        "locals",
        +        "registers",
        +        "symbolHealth"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "mode",
        +    "readOnlyTarget",
        +    "adapterKind",
        +    "dumpPath",
        +    "adapter",
        +    "capabilities",
        +    "attach",
        +    "snapshot",
        +    "guidance"
        +  ],
        +  "type": "object"
        +}
    • Changeddebug_run_to_stop2 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "outcome": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "body": {},
        +        "event": {
        +          "enum": [
        +            "stopped",
        +            "exited",
        +            "terminated"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "event"
        +      ],
        +      "type": "object"
        +    },
        +    "request": {
        +      "enum": [
        +        "launch",
        +        "attach"
        +      ],
        +      "type": "string"
        +    },
        +    "requestResult": {},
        +    "snapshot": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "collectionErrors": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "message": {
        +                "type": "string"
        +              },
        +              "operation": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "operation",
        +              "message"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "disassembly": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "exception": {},
        +        "frame": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "column": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "id": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "line": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "source": {}
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "line",
        +            "column"
        +          ],
        +          "type": "object"
        +        },
        +        "locals": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "modules": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "postmortem": {
        +          "type": "boolean"
        +        },
        +        "registers": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "scopes": {
        +          "items": {},
        +          "type": "array"
        +        },
        +        "stack": {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "column": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "id": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "line": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "source": {}
        +            },
        +            "required": [
        +              "id",
        +              "name",
        +              "line",
        +              "column"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "stopped": {},
        +        "symbolHealth": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "limitations": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "modules": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "collected": {
        +                  "type": "boolean"
        +                },
        +                "symbolsAvailable": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "symbolsMissing": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "symbolsUnknown": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "totalModules": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "withExplicitStatus": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "collected",
        +                "totalModules",
        +                "withExplicitStatus",
        +                "symbolsAvailable",
        +                "symbolsMissing",
        +                "symbolsUnknown"
        +              ],
        +              "type": "object"
        +            },
        +            "stack": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "namedFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "sourceMappedFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "topFrameNamed": {
        +                  "type": "boolean"
        +                },
        +                "topFrameSourceMapped": {
        +                  "type": "boolean"
        +                },
        +                "totalFrames": {
        +                  "maximum": 9007199254740991,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "totalFrames",
        +                "namedFrames",
        +                "sourceMappedFrames",
        +                "topFrameNamed",
        +                "topFrameSourceMapped"
        +              ],
        +              "type": "object"
        +            },
        +            "status": {
        +              "enum": [
        +                "good",
        +                "partial",
        +                "poor",
        +                "unknown"
        +              ],
        +              "type": "string"
        +            },
        +            "summary": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "status",
        +            "summary",
        +            "stack",
        +            "modules",
        +            "limitations"
        +          ],
        +          "type": "object"
        +        },
        +        "thread": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "id": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "thread",
        +        "stack",
        +        "frame",
        +        "scopes",
        +        "locals",
        +        "registers",
        +        "symbolHealth"
        +      ],
        +      "type": "object"
        +    },
        +    "status": {}
        +  },
        +  "required": [
        +    "request",
        +    "requestResult",
        +    "outcome",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Addeddebug_sessions
    • Changeddebug_snapshot2 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "collectionErrors": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "operation": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "operation",
        +          "message"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "disassembly": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "exception": {},
        +    "frame": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "column": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "id": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "line": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "source": {}
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "line",
        +        "column"
        +      ],
        +      "type": "object"
        +    },
        +    "locals": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "modules": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "postmortem": {
        +      "type": "boolean"
        +    },
        +    "registers": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "scopes": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "stack": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "column": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "id": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "line": {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "source": {}
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "line",
        +          "column"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "stopped": {},
        +    "symbolHealth": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "limitations": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "modules": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "collected": {
        +              "type": "boolean"
        +            },
        +            "symbolsAvailable": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "symbolsMissing": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "symbolsUnknown": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "totalModules": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "withExplicitStatus": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "collected",
        +            "totalModules",
        +            "withExplicitStatus",
        +            "symbolsAvailable",
        +            "symbolsMissing",
        +            "symbolsUnknown"
        +          ],
        +          "type": "object"
        +        },
        +        "stack": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "namedFrames": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "sourceMappedFrames": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "topFrameNamed": {
        +              "type": "boolean"
        +            },
        +            "topFrameSourceMapped": {
        +              "type": "boolean"
        +            },
        +            "totalFrames": {
        +              "maximum": 9007199254740991,
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "totalFrames",
        +            "namedFrames",
        +            "sourceMappedFrames",
        +            "topFrameNamed",
        +            "topFrameSourceMapped"
        +          ],
        +          "type": "object"
        +        },
        +        "status": {
        +          "enum": [
        +            "good",
        +            "partial",
        +            "poor",
        +            "unknown"
        +          ],
        +          "type": "string"
        +        },
        +        "summary": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "status",
        +        "summary",
        +        "stack",
        +        "modules",
        +        "limitations"
        +      ],
        +      "type": "object"
        +    },
        +    "thread": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "id": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "name": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "name"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "thread",
        +    "stack",
        +    "frame",
        +    "scopes",
        +    "locals",
        +    "registers",
        +    "symbolHealth"
        +  ],
        +  "type": "object"
        +}
    • Changeddebug_source_disassembly2 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "collectionErrors": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "faultCorrelation": {},
        +    "frameSelection": {},
        +    "operandAnalysis": {},
        +    "projectCorrelation": {},
        +    "projectFrame": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "column": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "id": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "line": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "source": {}
        +      },
        +      "required": [
        +        "id",
        +        "name",
        +        "line",
        +        "column"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "frameSelection",
        +    "faultCorrelation",
        +    "projectCorrelation",
        +    "projectFrame",
        +    "operandAnalysis"
        +  ],
        +  "type": "object"
        +}
    • Changeddebug_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "activeRequest": {
        +      "enum": [
        +        "launch",
        +        "attach"
        +      ],
        +      "type": "string"
        +    },
        +    "adapterId": {
        +      "type": "string"
        +    },
        +    "adapterPid": {
        +      "exclusiveMinimum": 0,
        +      "maximum": 9007199254740991,
        +      "type": "integer"
        +    },
        +    "adapterRunning": {
        +      "type": "boolean"
        +    },
        +    "capabilities": {
        +      "additionalProperties": {},
        +      "properties": {},
        +      "type": "object"
        +    },
        +    "configured": {
        +      "type": "boolean"
        +    },
        +    "initialized": {
        +      "type": "boolean"
        +    },
        +    "recentAdapterStderr": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "recentEvents": {
        +      "items": {},
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "adapterRunning",
        +    "initialized",
        +    "configured",
        +    "recentEvents",
        +    "recentAdapterStderr"
        +  ],
        +  "type": "object"
        +}
    • Changeddebug_this_crash12 fields changed
      • changedInput schema / properties / adapterPath / description
        Previous value: -"Optional explicit debugger-adapter executable path for codelldb/lldb-dap/dump modes; omit to auto-discover the selected adapter."New value: +"Optional explicit debugger executable/adapter path for codelldb/lldb-dap/gdb/dump modes; omit to auto-discover the selected adapter."
      • changedInput schema / properties / args / description
        Previous value: -"Command-line arguments passed to the launched program in mode=codelldb or mode=lldb-dap."New value: +"Command-line arguments passed to the launched program in codelldb/lldb-dap/gdb modes."
      • changedInput schema / properties / dumpAdapter / description
        Previous value: -"For mode=dump, choose CodeLLDB compatibility behavior or upstream LLVM lldb-dap coreFile loading."New value: +"For mode=dump, choose CodeLLDB, upstream LLVM lldb-dap coreFile loading, or GNU GDB coreFile attach semantics."
      • changedInput schema / properties / dumpAdapter / enum
        Previous value: -[
        -  "codelldb",
        -  "lldb-dap"
        -]New value: +[
        +  "codelldb",
        +  "lldb-dap",
        +  "gdb"
        +]
      • changedInput schema / properties / env / description
        Previous value: -"Environment variables supplied to the launched program in mode=codelldb or mode=lldb-dap."New value: +"Environment variables supplied to the launched program in codelldb/lldb-dap/gdb modes."
      • changedInput schema / properties / mode / description
        Previous value: -"current inspects an existing stop; live runs launch/attach through an initialized DAP session; codelldb starts CodeLLDB; lldb-dap starts upstream LLVM lldb-dap; dump opens a frozen core/minidump."New value: +"current inspects an existing stop; live uses an initialized generic DAP session; codelldb starts CodeLLDB; lldb-dap starts upstream LLVM lldb-dap; gdb starts GNU GDB with --interpreter=dap; dump opens a frozen core/minidump."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "current",
        -  "live",
        -  "codelldb",
        -  "lldb-dap",
        -  "dump"
        -]New value: +[
        +  "current",
        +  "live",
        +  "codelldb",
        +  "lldb-dap",
        +  "gdb",
        +  "dump"
        +]
      • changedInput schema / properties / program / description
        Previous value: -"Required for mode=codelldb and mode=lldb-dap; optional for CodeLLDB dumps but required when dumpAdapter=lldb-dap. Local path to the native executable."New value: +"Required for codelldb/lldb-dap/gdb launch modes; optional for CodeLLDB/GDB dumps but required when dumpAdapter=lldb-dap. Local path to the native executable."
      • changedInput schema / properties / requestTimeoutMs / description
        Previous value: -"Per-request DAP timeout in milliseconds for CodeLLDB operations."New value: +"Per-request DAP timeout in milliseconds for the selected debugger adapter."
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Optional DAP session ID. Omit to use the backward-compatible default session.",
        +  "maxLength": 64,
        +  "minLength": 1,
        +  "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
        +  "type": "string"
        +}
      • changedInput schema / properties / stopOnEntry / description
        Previous value: -"When true in mode=codelldb or mode=lldb-dap, request an initial debugger stop at program entry before normal execution."New value: +"When true in codelldb/lldb-dap/gdb modes, request an initial debugger stop at program entry before normal execution."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "diagnosis": {},
        +    "mode": {
        +      "enum": [
        +        "current",
        +        "live",
        +        "codelldb",
        +        "lldb-dap",
        +        "gdb",
        +        "dump"
        +      ],
        +      "type": "string"
        +    },
        +    "status": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "activeRequest": {
        +          "enum": [
        +            "launch",
        +            "attach"
        +          ],
        +          "type": "string"
        +        },
        +        "adapterId": {
        +          "type": "string"
        +        },
        +        "adapterPid": {
        +          "exclusiveMinimum": 0,
        +          "maximum": 9007199254740991,
        +          "type": "integer"
        +        },
        +        "adapterRunning": {
        +          "type": "boolean"
        +        },
        +        "capabilities": {
        +          "additionalProperties": {},
        +          "properties": {},
        +          "type": "object"
        +        },
        +        "configured": {
        +          "type": "boolean"
        +        },
        +        "initialized": {
        +          "type": "boolean"
        +        },
        +        "recentAdapterStderr": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "recentEvents": {
        +          "items": {},
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "adapterRunning",
        +        "initialized",
        +        "configured",
        +        "recentEvents",
        +        "recentAdapterStderr"
        +      ],
        +      "type": "object"
        +    },
        +    "workflow": {}
        +  },
        +  "required": [
        +    "mode",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Addeddebug_this_hang
    • Addeddebug_trace_value
  2. 2 tool updatesv0.13.0
    • Changeddebug_open_dump5 fields changed
      • addedInput schema / properties / adapter
        Added value: +{
        +  "default": "codelldb",
        +  "description": "Debugger adapter used for postmortem inspection. codelldb preserves existing behavior; lldb-dap uses upstream LLVM coreFile attach semantics.",
        +  "enum": [
        +    "codelldb",
        +    "lldb-dap"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / adapterPath / description
        Previous value: -"Optional explicit CodeLLDB executable path; omit to use normal CodeLLDB discovery."New value: +"Optional explicit executable path for the selected debugger adapter; omit to use its normal discovery logic."
      • changedInput schema / properties / cwd / description
        Previous value: -"Working directory for the local CodeLLDB adapter process; this does not execute the crashed target."New value: +"Working directory for the local debugger adapter process; this does not execute the crashed target."
      • changedInput schema / properties / program / description
        Previous value: -"Optional path to the matching executable image, used by CodeLLDB to improve symbol/module resolution."New value: +"Path to the matching executable image. Optional for CodeLLDB, but required when adapter=lldb-dap because LLVM coreFile loading binds the dump to its program image."
      • changedInput schema / properties / sourceMap / description
        Previous value: -"Optional mapping from source paths recorded in symbols to local source paths."New value: +"Optional mapping from source paths recorded in symbols to local source paths; converted to lldb-dap pair arrays when that adapter is selected."
    • Changeddebug_this_crash9 fields changed
      • changedInput schema / properties / adapterPath / description
        Previous value: -"Optional explicit CodeLLDB executable path for codelldb/dump modes; omit to auto-discover it."New value: +"Optional explicit debugger-adapter executable path for codelldb/lldb-dap/dump modes; omit to auto-discover the selected adapter."
      • changedInput schema / properties / args / description
        Previous value: -"Command-line arguments passed to the launched program in mode=codelldb."New value: +"Command-line arguments passed to the launched program in mode=codelldb or mode=lldb-dap."
      • changedInput schema / properties / cwd / description
        Previous value: -"Working directory for CodeLLDB/target launch and a project-root hint for diagnosis."New value: +"Working directory for the selected debugger/target launch and a project-root hint for diagnosis."
      • addedInput schema / properties / dumpAdapter
        Added value: +{
        +  "default": "codelldb",
        +  "description": "For mode=dump, choose CodeLLDB compatibility behavior or upstream LLVM lldb-dap coreFile loading.",
        +  "enum": [
        +    "codelldb",
        +    "lldb-dap"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / env / description
        Previous value: -"Environment variables supplied to the launched program in mode=codelldb."New value: +"Environment variables supplied to the launched program in mode=codelldb or mode=lldb-dap."
      • changedInput schema / properties / mode / description
        Previous value: -"current inspects an existing stop; live runs launch/attach through an initialized DAP session; codelldb starts CodeLLDB and launches program; dump opens a frozen core/minidump."New value: +"current inspects an existing stop; live runs launch/attach through an initialized DAP session; codelldb starts CodeLLDB; lldb-dap starts upstream LLVM lldb-dap; dump opens a frozen core/minidump."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "current",
        -  "live",
        -  "codelldb",
        -  "dump"
        -]New value: +[
        +  "current",
        +  "live",
        +  "codelldb",
        +  "lldb-dap",
        +  "dump"
        +]
      • changedInput schema / properties / program / description
        Previous value: -"Required for mode=codelldb; optional for dump symbol resolution. Local path to the native executable."New value: +"Required for mode=codelldb and mode=lldb-dap; optional for CodeLLDB dumps but required when dumpAdapter=lldb-dap. Local path to the native executable."
      • changedInput schema / properties / stopOnEntry / description
        Previous value: -"When true in mode=codelldb, request an initial debugger stop at program entry before normal execution."New value: +"When true in mode=codelldb or mode=lldb-dap, request an initial debugger stop at program entry before normal execution."
  3. 8 tool updatesv0.12.1
    • Changeddebug_continue3 fields changed
      • addedInput schema / properties / threadId / description
        Added value: +"DAP thread identifier to resume; obtain it from debug_snapshot, debug_status, or a stopped event."
      • addedInput schema / properties / timeoutMs / description
        Added value: +"Maximum time in milliseconds to wait for the next stopped event when waitForStop is true."
      • addedInput schema / properties / waitForStop / description
        Added value: +"When true, wait for the next stopped event before returning; when false, return after the continue request is accepted."
    • Changeddebug_diagnose_stop13 fields changed
      • addedInput schema / properties / analysis / description
        Added value: +"Hints used to distinguish project code from runtime, system, or third-party frames."
      • addedInput schema / properties / analysis / properties / callerDepth / description
        Added value: +"How many project-controlled caller frames beyond the selected frame to inspect for provenance and root cause."
      • addedInput schema / properties / analysis / properties / projectModules / description
        Added value: +"Optional executable or library names treated as project-controlled modules during frame selection."
      • addedInput schema / properties / analysis / properties / projectRoots / description
        Added value: +"Optional local source-root paths used to recognize project-controlled stack frames."
      • addedInput schema / properties / disassembleAfter / description
        Added value: +"Number of instructions after the selected instruction to request."
      • addedInput schema / properties / disassembleBefore / description
        Added value: +"Number of instructions before the selected instruction to request."
      • addedInput schema / properties / includeDisassembly / description
        Added value: +"Include best-effort disassembly around the selected instruction pointer when supported."
      • addedInput schema / properties / includeExceptionInfo / description
        Added value: +"Request structured exception information for the stopped thread when supported."
      • addedInput schema / properties / includeModules / description
        Added value: +"Include a bounded list of loaded executable images and libraries."
      • addedInput schema / properties / maxVariablesPerScope / description
        Added value: +"Maximum variables returned per inspected scope, bounding evidence size."
      • addedInput schema / properties / moduleCount / description
        Added value: +"Maximum loaded modules to include when module collection is enabled."
      • addedInput schema / properties / stackLevels / description
        Added value: +"Maximum number of stack frames to inspect when collecting crash evidence."
      • addedInput schema / properties / threadId / description
        Added value: +"Stopped DAP thread to inspect; omit to use the session-selected stopped thread."
    • Changeddebug_disconnect1 field changed
      • addedInput schema / properties / terminateDebuggee / description
        Added value: +"Whether the debugger should terminate the live debuggee while disconnecting; set false to request detach/preserve behavior when the adapter supports it."
    • Changeddebug_open_dump12 fields changed
      • addedInput schema / properties / adapterPath / description
        Added value: +"Optional explicit CodeLLDB executable path; omit to use normal CodeLLDB discovery."
      • addedInput schema / properties / cwd / description
        Added value: +"Working directory for the local CodeLLDB adapter process; this does not execute the crashed target."
      • addedInput schema / properties / dumpPath / description
        Added value: +"Absolute or local path to the native core/minidump file to inspect."
      • addedInput schema / properties / includeDisassembly / description
        Added value: +"Include best-effort instructions around the selected crash frame."
      • addedInput schema / properties / includeModules / description
        Added value: +"Include loaded executable images and libraries recorded in the dump."
      • addedInput schema / properties / maxVariablesPerScope / description
        Added value: +"Maximum variables returned per scope in the initial snapshot."
      • addedInput schema / properties / moduleCount / description
        Added value: +"Maximum number of modules to include when includeModules is true."
      • addedInput schema / properties / program / description
        Added value: +"Optional path to the matching executable image, used by CodeLLDB to improve symbol/module resolution."
      • addedInput schema / properties / requestTimeoutMs / description
        Added value: +"Per-request DAP timeout in milliseconds while opening and inspecting the dump."
      • addedInput schema / properties / sourceMap / description
        Added value: +"Optional mapping from source paths recorded in symbols to local source paths."
      • addedInput schema / properties / stackLevels / description
        Added value: +"Maximum stack frames to include in the initial postmortem snapshot."
      • addedInput schema / properties / threadId / description
        Added value: +"Specific dump thread to inspect; omit to use the debugger-selected stopped/crashed thread."
    • Changeddebug_run_to_stop17 fields changed
      • addedInput schema / properties / breakpoints / description
        Added value: +"Optional source breakpoint groups configured before the debugger completes launch/attach setup."
      • addedInput schema / properties / breakpoints / items / description
        Added value: +"Source file and line breakpoints applied before configuration completes."
      • addedInput schema / properties / breakpoints / items / properties / lines / description
        Added value: +"One or more 1-based source line numbers to replace as breakpoints for this source file."
      • changedInput schema / properties / breakpoints / items / properties / source / description
        Previous value: -"Absolute or adapter-resolvable source file path"New value: +"Absolute or adapter-resolvable source file path."
      • addedInput schema / properties / configuration / description
        Added value: +"Adapter-specific DAP launch or attach configuration."
      • addedInput schema / properties / request / description
        Added value: +"Choose launch to start a new target from configuration, or attach to connect to an existing authorized local target."
      • addedInput schema / properties / snapshot / description
        Added value: +"Optional bounds and evidence categories for the snapshot captured only when execution stops."
      • addedInput schema / properties / snapshot / properties / disassembleAfter / description
        Added value: +"Instructions after the selected instruction to request."
      • addedInput schema / properties / snapshot / properties / disassembleBefore / description
        Added value: +"Instructions before the selected instruction to request."
      • addedInput schema / properties / snapshot / properties / includeDisassembly / description
        Added value: +"Whether to include best-effort disassembly near the selected frame."
      • addedInput schema / properties / snapshot / properties / includeExceptionInfo / description
        Added value: +"Whether to request structured exception information after a stop."
      • addedInput schema / properties / snapshot / properties / includeModules / description
        Added value: +"Whether to include a bounded loaded-module list."
      • addedInput schema / properties / snapshot / properties / maxVariablesPerScope / description
        Added value: +"Maximum variables to return per inspected scope."
      • addedInput schema / properties / snapshot / properties / moduleCount / description
        Added value: +"Maximum loaded modules to include."
      • addedInput schema / properties / snapshot / properties / stackLevels / description
        Added value: +"Maximum stack frames to collect after a stop."
      • addedInput schema / properties / snapshot / properties / threadId / description
        Added value: +"Stopped thread to snapshot; omit to use the thread from the stopped event."
      • addedInput schema / properties / timeoutMs / description
        Added value: +"Maximum milliseconds to wait for the first stopped, exited, or terminated event."
    • Changeddebug_snapshot9 fields changed
      • addedInput schema / properties / disassembleAfter / description
        Added value: +"Number of instructions after the current instruction to request when disassembly is enabled."
      • addedInput schema / properties / disassembleBefore / description
        Added value: +"Number of instructions before the current instruction to request when disassembly is enabled."
      • addedInput schema / properties / includeDisassembly / description
        Added value: +"Include best-effort instructions around the selected frame instruction pointer when supported."
      • addedInput schema / properties / includeExceptionInfo / description
        Added value: +"Include structured exception information for the stopped thread when the adapter supports it."
      • addedInput schema / properties / includeModules / description
        Added value: +"Include a bounded list of loaded executable images and libraries."
      • addedInput schema / properties / maxVariablesPerScope / description
        Added value: +"Maximum variables returned per inspected scope, bounding output size."
      • addedInput schema / properties / moduleCount / description
        Added value: +"Maximum loaded modules to return when includeModules is true."
      • addedInput schema / properties / stackLevels / description
        Added value: +"Maximum number of stack frames to include, from the selected thread top downward."
      • addedInput schema / properties / threadId / description
        Added value: +"Stopped DAP thread to inspect; omit to use the session-selected stopped thread."
    • Changeddebug_source_disassembly8 fields changed
      • addedInput schema / properties / analysis / description
        Added value: +"Hints used to distinguish project code from runtime, system, or third-party frames."
      • addedInput schema / properties / analysis / properties / callerDepth / description
        Added value: +"How many project-controlled caller frames beyond the selected frame to inspect for provenance and root cause."
      • addedInput schema / properties / analysis / properties / projectModules / description
        Added value: +"Optional executable or library names treated as project-controlled modules during frame selection."
      • addedInput schema / properties / analysis / properties / projectRoots / description
        Added value: +"Optional local source-root paths used to recognize project-controlled stack frames."
      • addedInput schema / properties / disassembleAfter / description
        Added value: +"Instructions after the selected instruction included in each disassembly window."
      • addedInput schema / properties / disassembleBefore / description
        Added value: +"Instructions before the selected instruction included in each disassembly window."
      • addedInput schema / properties / stackLevels / description
        Added value: +"Maximum stack frames considered while selecting the project-controlled frame."
      • addedInput schema / properties / threadId / description
        Added value: +"Stopped DAP thread to inspect; omit to use the session-selected stopped thread."
    • Changeddebug_this_crash36 fields changed
      • addedInput schema / properties / adapterPath / description
        Added value: +"Optional explicit CodeLLDB executable path for codelldb/dump modes; omit to auto-discover it."
      • addedInput schema / properties / analysis / description
        Added value: +"Hints used to distinguish project code from runtime, system, or third-party frames."
      • addedInput schema / properties / analysis / properties / callerDepth / description
        Added value: +"How many project-controlled caller frames beyond the selected frame to inspect for provenance and root cause."
      • addedInput schema / properties / analysis / properties / projectModules / description
        Added value: +"Optional executable or library names treated as project-controlled modules during frame selection."
      • addedInput schema / properties / analysis / properties / projectRoots / description
        Added value: +"Optional local source-root paths used to recognize project-controlled stack frames."
      • addedInput schema / properties / args / description
        Added value: +"Command-line arguments passed to the launched program in mode=codelldb."
      • addedInput schema / properties / breakpoints / description
        Added value: +"Optional source breakpoints configured before a live/codelldb reproduction completes setup."
      • addedInput schema / properties / breakpoints / items / description
        Added value: +"Source file and line breakpoints configured before a live reproduction runs."
      • addedInput schema / properties / breakpoints / items / properties / lines / description
        Added value: +"One or more 1-based source line numbers to replace as breakpoints for this source file."
      • changedInput schema / properties / breakpoints / items / properties / source / description
        Previous value: -"Absolute or adapter-resolvable source file path"New value: +"Absolute or adapter-resolvable source file path."
      • addedInput schema / properties / configuration / description
        Added value: +"Required for mode=live: adapter-specific DAP launch/attach configuration."
      • addedInput schema / properties / cwd / description
        Added value: +"Working directory for CodeLLDB/target launch and a project-root hint for diagnosis."
      • addedInput schema / properties / dumpPath / description
        Added value: +"Required for mode=dump: local path to the native core/minidump file."
      • addedInput schema / properties / env / description
        Added value: +"Environment variables supplied to the launched program in mode=codelldb."
      • addedInput schema / properties / mode / description
        Added value: +"current inspects an existing stop; live runs launch/attach through an initialized DAP session; codelldb starts CodeLLDB and launches program; dump opens a frozen core/minidump."
      • addedInput schema / properties / program / description
        Added value: +"Required for mode=codelldb; optional for dump symbol resolution. Local path to the native executable."
      • addedInput schema / properties / request / description
        Added value: +"For mode=live, choose whether the initialized DAP adapter launches a target or attaches to an existing authorized target."
      • addedInput schema / properties / requestTimeoutMs / description
        Added value: +"Per-request DAP timeout in milliseconds for CodeLLDB operations."
      • addedInput schema / properties / snapshot / description
        Added value: +"Bounds and optional evidence categories for a runtime crash snapshot."
      • addedInput schema / properties / snapshot / properties / disassembleAfter / description
        Added value: +"Number of instructions after the selected instruction to request."
      • addedInput schema / properties / snapshot / properties / disassembleBefore / description
        Added value: +"Number of instructions before the selected instruction to request."
      • addedInput schema / properties / snapshot / properties / includeDisassembly / description
        Added value: +"Include best-effort disassembly around the selected instruction pointer when supported."
      • addedInput schema / properties / snapshot / properties / includeExceptionInfo / description
        Added value: +"Request structured exception information for the stopped thread when supported."
      • addedInput schema / properties / snapshot / properties / includeModules / description
        Added value: +"Include a bounded list of loaded executable images and libraries."
      • addedInput schema / properties / snapshot / properties / maxVariablesPerScope / description
        Added value: +"Maximum variables returned per inspected scope, bounding evidence size."
      • addedInput schema / properties / snapshot / properties / moduleCount / description
        Added value: +"Maximum loaded modules to include when module collection is enabled."
      • addedInput schema / properties / snapshot / properties / stackLevels / description
        Added value: +"Maximum number of stack frames to inspect when collecting crash evidence."
      • addedInput schema / properties / snapshot / properties / threadId / description
        Added value: +"Stopped DAP thread to inspect; omit to use the session-selected stopped thread."
      • addedInput schema / properties / sourceMap / description
        Added value: +"For mode=dump, map source paths stored in debug symbols to local source paths."
      • addedInput schema / properties / stopOnEntry / description
        Added value: +"When true in mode=codelldb, request an initial debugger stop at program entry before normal execution."
      • addedInput schema / properties / timeoutMs / description
        Added value: +"Maximum milliseconds to wait for the reproduction to stop, exit, or terminate."
      • addedInput schema / properties / workflow / description
        Added value: +"Controls one-shot diagnosis, explicit verification, or the bounded autonomous crash workflow."
      • addedInput schema / properties / workflow / properties / agentState / description
        Added value: +"Opaque autonomous state returned by the previous autonomous call; pass it back unchanged to continue the bounded cycle."
      • addedInput schema / properties / workflow / properties / baseline / description
        Added value: +"Verification baseline returned by an earlier diagnosis; required when stage=verify."
      • addedInput schema / properties / workflow / properties / maxIterations / description
        Added value: +"Maximum autonomous fix/reproduce iterations allowed when starting stage=autonomous."
      • addedInput schema / properties / workflow / properties / stage / description
        Added value: +"diagnose creates initial evidence; verify compares against a prior verification baseline; autonomous advances the bounded agent state machine."
  4. 31 tool updatesv0.12.0
    • Removeddebug_attach
    • Removeddebug_attach_codelldb
    • Removeddebug_codelldb_info
    • Removeddebug_data_breakpoint_info
    • Addeddebug_diagnose_stop
    • Removeddebug_disassemble
    • Removeddebug_evaluate
    • Removeddebug_events
    • Removeddebug_exception_info
    • Removeddebug_launch
    • Removeddebug_launch_codelldb
    • Removeddebug_modules
    • Addeddebug_open_dump
    • Removeddebug_pause
    • Removeddebug_read_memory
    • Addeddebug_run_to_stop
    • Removeddebug_scopes
    • Removeddebug_set_breakpoints
    • Removeddebug_set_data_breakpoints
    • Removeddebug_set_exception_breakpoints
    • Removeddebug_set_function_breakpoints
    • Removeddebug_set_instruction_breakpoints
    • Removeddebug_set_source_breakpoints
    • Addeddebug_source_disassembly
    • Removeddebug_stack
    • Removeddebug_start
    • Removeddebug_start_codelldb
    • Removeddebug_step
    • Addeddebug_this_crash
    • Removeddebug_threads
    • Removeddebug_variables
  5. 30 tool updatesv0.6.0
    • First observeddebug_attach
    • First observeddebug_attach_codelldb
    • First observeddebug_codelldb_info
    • First observeddebug_continue
    • First observeddebug_data_breakpoint_info
    • First observeddebug_disassemble
    • First observeddebug_disconnect
    • First observeddebug_evaluate
    • First observeddebug_events
    • First observeddebug_exception_info
    • First observeddebug_launch
    • First observeddebug_launch_codelldb
    • First observeddebug_modules
    • First observeddebug_pause
    • First observeddebug_read_memory
    • First observeddebug_scopes
    • First observeddebug_set_breakpoints
    • First observeddebug_set_data_breakpoints
    • First observeddebug_set_exception_breakpoints
    • First observeddebug_set_function_breakpoints
    • First observeddebug_set_instruction_breakpoints
    • First observeddebug_set_source_breakpoints
    • First observeddebug_snapshot
    • First observeddebug_stack
    • First observeddebug_start
    • First observeddebug_start_codelldb
    • First observeddebug_status
    • First observeddebug_step
    • First observeddebug_threads
    • First observeddebug_variables

TDQS

A4.4/5.0

Scored across 14 tools

Disambiguation4/5

Each tool targets a distinct phase of debugging, but debug_this_crash, debug_diagnose_stop, and debug_snapshot overlap in stopped-crash analysis, and debug_find_writer/debug_trace_value are closely related. The detailed usage guidance largely prevents misselection.

Naming Consistency4/5

All tools share the debug_ prefix and most use verb_object forms like compare_runs or find_writer, but noun-style names such as debug_sessions, debug_status, and debug_source_disassembly, plus debug_this_crash/debug_this_hang, break the pattern. The naming is still predictable enough to infer the domain.

Tool Count5/5

14 tools is within the ideal range for a specialized debugging server, with each tool covering a distinct aspect: session management, run control, stopped-state inspection, postmortem analysis, and watch/trace workflows. No tool feels superfluous.

Completeness5/5

The surface provides strong coverage of the DAP debugging lifecycle: session creation/status/disconnect, run-to-stop and continue, snapshot and diagnosis, crash and hang workflows, dump analysis, differential comparison, and value-write tracking. For the evident native crash and hang diagnosis purpose, there are no critical missing operations.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers