netcoredbg-mcp
The netcoredbg-mcp server gives AI coding agents a full-featured .NET debugger and Windows UI automation suite via the Model Context Protocol (MCP), covering ~130 tools across debugging, inspection, UI automation, and runtime smoke testing.
Debug Control
Launch or attach to .NET processes; auto-build before launch
Control execution: continue, pause, step over/into/out, restart, stop, terminate
Long-poll pattern: execution tools block until a meaningful debugger event occurs
Breakpoints & Exceptions
Line breakpoints with optional conditions and hit counts
Function breakpoints by method name
Exception filters (all, user-unhandled, none)
List, remove, and clear breakpoints
Code Inspection
Inspect threads, call stacks, scopes, and local variables
Evaluate expressions in the current debug context;
quick_evaluatefor atomic pause-eval-resume while runningSet variable values at runtime
Get exception info (type, message, inner chain, locals) and full stop context in one call
List loaded modules and source files; disassemble instructions; resolve DAP location references
Tracepoints
Non-stopping tracepoints that log expression values on each hit
Read, filter, and clear the trace log
Snapshots & Object Analysis
Capture named snapshots of local variables; diff two snapshots
Analyze collections (count, nulls, min/max/avg, samples)
Summarize complex objects with flattened dot-notation paths and circular reference detection
Memory
Read raw memory from debugger memory references
Write bytes to debugger memory references (capability-gated)
Output & Build Diagnostics
Read, search (regex), and tail stdout/stderr from the debugged process
Get full build diagnostics including warnings
Runtime Smoke Testing
Hygiene preflight: clear stale debugger state before a run
Named instrumentation groups of breakpoints/tracepoints as smoke evidence
Output checkpoints and assertions (required/forbidden patterns since a checkpoint)
Verify debug session freshness (workspace, process, modules, artifacts)
Run bounded one-shot smoke scenario plans; durable lifecycle for longer runs
Windows UI Automation (WPF, WinForms, Avalonia) — 46 tools
Get full UI element tree; find elements by AutomationId, name, control type, or XPath
Click, double-click, right-click, invoke, toggle elements; click at screen coordinates
Send keyboard input with modifier support (Ctrl, Alt, Shift); batch key sequences
Drag and drop between elements or coordinates
Take plain or annotated screenshots (Set-of-Mark numbered labels for agent vision)
Select list/grid items; read text from elements; set focus; wait for elements (polling)
Window management: bring to front, switch, close, maximize, minimize, restore, move, resize
Expand/collapse tree nodes and dropdowns; set numeric values on sliders/spinners
Clipboard read/write; realize virtualized off-screen list items
WPF DataGrid: read, select, assert rows; complete file Open/Save dialogs in one call
Stealth mode: operate without stealing foreground focus
Code Search
Find symbols and references in the project
Get source context around a line; full-text search across source files
Edit-and-Continue
Apply live method-body edits to a stopped session without restarting (requires EnC-capable netcoredbg; rude edits rejected)
Multi-Agent Safety
Exclusive session ownership for debug control; other agents observe read-only
Inactivity-based ownership auto-release
Prompts & Resources
8 purpose-built prompts (general debugging, GUI debugging, exception investigation, visual workflows, etc.)
4 resources:
debug://state,debug://breakpoints,debug://output,debug://threads
Note: Windows is required for UI automation. Prefer
start_debugoverattach_debugdue to upstreamjustMyCodelimitations in attach mode. Only inspect variables when the app is stopped.
Provides debugging capabilities for .NET applications, including launching, attaching, setting breakpoints, stepping through code, inspecting variables, evaluating expressions, and GUI automation for WPF, WinForms, and Avalonia.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@netcoredbg-mcpSet a breakpoint in Program.cs, run the app, and inspect local variables when it stops."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
netcoredbg-mcp
Debug .NET applications from an MCP-capable coding agent without leaving the
agent workflow. netcoredbg-mcp combines netcoredbg, the Debug Adapter
Protocol, and Windows UI Automation so an agent can observe a running app,
stop it deliberately, and inspect the state that explains the behavior.
Python 3.10+ · Windows GUI automation · 135 tools · 8 prompts · 4 resources · v0.23.11
What it enables
Need | Use the MCP server to |
Understand a failure | Launch or attach to a .NET process, set breakpoints, inspect threads, stacks, scopes, variables, modules, output, and exceptions. |
Drive a desktop app | Find UI elements, read window trees, click, type, select, use the clipboard, and gather bounded WPF, WinForms, or Avalonia evidence. |
Keep evidence honest | Capture a preview for navigation or opt in to a lossless screenshot artifact with integrity metadata. |
Verify a repair | Run a bounded runtime-smoke plan with cleanup, output checkpoints, freshness checks, and recorded evidence. |
Search a project | Find C# symbols and references, read source context, or run a bounded |
The published Python package is the consumer entry point. The experimental .NET host and Native Scene Probe are source-only and do not add tools to this wheel.
Related MCP server: cdp-tools-mcp
Quick start
Install the package, let the setup wizard provision or discover the debugger, then register the public CLI with your MCP client. The command below is for Claude Code:
pipx install netcoredbg-mcp
netcoredbg-mcp --setup
claude mcp add --scope user netcoredbg -- netcoredbg-mcp --project-from-cwdRestart the MCP client after changing its configuration. From a .NET workspace, ask the agent:
Set a breakpoint in Program.cs, run the application, and show the local values when it stops.--project-from-cwd searches upward from the server's startup directory for a
solution or .NET project. Use --project instead when the server must be pinned
to one explicit project root.
Requirements
Python 3.10 or later.
pipx(recommended) orpipto install the package.A .NET SDK/runtime suitable for the application being debugged.
netcoredbg. The setup wizard can download or discover it and scans compatibledbgshim.dllfiles.An MCP client, such as Claude Code, Cursor, Cline, Roo Code, Windsurf, Continue, or Claude Desktop.
Windows for the GUI automation paths. Debugger functionality remains subject to the target runtime and
netcoredbgcapabilities.
Install and configure
Recommended installation
pipx keeps the command-line server isolated from project environments:
pipx install netcoredbg-mcp
netcoredbg-mcp --setup
netcoredbg-mcp --versionThe setup flow checks for a .NET SDK, provisions or finds netcoredbg, scans
dbgshim candidates, builds the FlaUI bridge on Windows when required, and
prints a client configuration snippet.
Package-managed installation
Use pip when your environment owns Python packages directly:
pip install --upgrade netcoredbg-mcp
$env:NETCOREDBG_PATH = "C:\Tools\netcoredbg\netcoredbg.exe"
netcoredbg-mcp --project C:\Work\MyDotNetAppRun netcoredbg-mcp --setup after an upgrade if the target runtime changed or
you need a new managed debugger or FlaUI bridge.
Client configuration
Use --project-from-cwd only when the client launches the server from the .NET
workspace or supplies local MCP roots. When no explicit --project or operator
environment pin is configured, local MCP roots take precedence. If there is
neither an operator pin nor a usable local root, the server searches its startup
directory for a solution, project, or Git marker and falls back to that startup
directory when no marker exists.
{
"mcpServers": {
"netcoredbg": {
"command": "netcoredbg-mcp",
"args": ["--project-from-cwd"]
}
}
}For a client that starts servers from a stable global location, pin the target project explicitly instead of relying on that server startup directory:
{
"mcpServers": {
"netcoredbg": {
"command": "netcoredbg-mcp",
"args": ["--project", "C:\\Work\\MyDotNetApp"]
}
}
}If the debugger is managed outside the setup flow, set its path in the client process environment rather than committing it to a repository. Use the same project-selection mode that fits the client; this globally launched example pins its target explicitly:
{
"mcpServers": {
"netcoredbg": {
"command": "netcoredbg-mcp",
"args": ["--project", "C:\\Work\\MyDotNetApp"],
"env": {
"NETCOREDBG_PATH": "C:\\Tools\\netcoredbg\\netcoredbg.exe"
}
}
}
}Keep .mcp.json, .netcoredbg-mcp.launch.json, credentials, and local project
paths out of source control.
Run from a source checkout
The installed CLI is the consumer route. Use a source checkout only while developing the server itself:
uv sync --locked --project C:\Work\netcoredbg-mcp
cd C:\Work\MyDotNetApp
uv run --no-sync --project C:\Work\netcoredbg-mcp netcoredbg-mcp --project-from-cwd--no-sync prevents a supervised server restart from changing the shared
virtual environment. Synchronize explicitly after changing dependencies or the
lockfile.
First debugging session
start_debug launches the debug session and normally returns with it running.
continue_execution, step_over, step_into, and step_out are long-poll
operations: they return when the debuggee stops, exits, terminates, or reaches
their timeout.
For console programs, use this sequence:
Add a breakpoint in the code path of interest.
Call
start_debugwith the program and, when appropriate,pre_build=true.Wait for
state=stopped.Read
get_call_stack,get_scopes, andget_variables.Evaluate or step only while stopped.
Continue or terminate the session.
For WPF, Avalonia, and WinForms targets, use the Desktop UI sequence below instead. It starts the application without breakpoints, waits for the window to load, and only then adds a breakpoint; a pre-launch breakpoint can make the window appear hung.
A representative launch request is:
{
"program": "bin/Debug/net8.0/MyApp.dll",
"build_project": "MyApp.csproj",
"pre_build": true,
"stop_at_entry": false
}For .NET 6+ targets, a built .exe is accepted when its matching .dll and
.runtimeconfig.json are present. Use
inspect_debug_launch_compatibility(program) before launch when you need to
inspect the selected runtime and shim without starting the process.
Desktop UI and visual evidence
While a GUI debuggee is RUNNING, use UI tools to observe and operate it. Once
the UI thread is stopped at a breakpoint or pause, stack and variable inspection
become available but the window will not respond normally until you continue.
start_debug(...)
ui_get_window_tree() # Wait for the application window to load.
add_breakpoint(file="MainWindow.xaml.cs", line=42)
ui_find_element(automation_id="saveButton")
ui_click(automation_id="saveButton")
# Trigger the breakpoint, then inspect state after it reports STOPPED.Screenshot modes
ui_take_screenshot() returns a WebP navigation preview with
evidence_grade=preview_only. It is useful for locating the next UI action,
not for asserting lossless visual evidence.
For an artifact that preserves the original raster and integrity metadata, opt in explicitly:
ui_take_screenshot(evidence=true)Normally this mode returns evidence_grade=lossless_raster, persists a session-scoped
PrintWindow PNG, and includes SHA-256 and geometry provenance. For a strict physical
target, a probable-black PrintWindow raster may make one verified BitBlt attempt.
That response is explicitly method=BitBlt, fallback=flash-focus,
fallback_reason=probable_black_printwindow, and
evidence_grade=typed_bitblt_fallback; it records the GetWindowDC authority,
ROP, target PID, stable geometry/DPI, and foreground activation/restoration proof.
Any malformed, black, unstable, mismatched, or incompletely proven fallback persists
nothing. Any raw-derived crop requires evidence=true; preview-only captures do not
provide it.
Without an expected target, persisted evidence reports
target_comparability.status=UNASSERTED: it is valid lossless evidence, but
does not prove a resize target. Supply all three physical target fields to
compare the raw raster, not a derivative:
ui_take_screenshot(evidence=true, expected_hwnd=..., expected_physical_width=..., expected_physical_height=...)The response reports MATCHED or MISMATCH; only MATCHED persists raw
evidence. max_width affects only the preview and HD derivative, never this
comparison. ui_resize_window() reports request-versus-readback
target_comparability.status as MATCHED, MISMATCH, or UNAVAILABLE;
resized=true confirms request completion, not target equality.
Use ui_take_annotated_screenshot() to receive Set-of-Mark labels, then invoke
ui_click_annotated(element_id=...). Use ui_bring_to_front() only when the
debuggee should intentionally leave stealth mode.
Tool map
The published MCP catalog has 135 tools.
Category | Count | Examples |
Debug control | 14 |
|
Breakpoints and exceptions | 7 | file/function breakpoints and exception configuration |
Inspection and DAP coverage | 15 | stacks, scopes, variables, modules, disassembly, source locations |
Tracepoints | 6 | add, read, clear, and cursor trace evidence |
Snapshots and object analysis | 5 | create, compare, list, and summarize captured state |
Memory and output | 6 | memory, debugger output, and build diagnostics |
Runtime smoke | 21 | hygiene, validation, execution, lifecycle, and cleanup evidence |
UI automation | 55 | windows, elements, focus, input, screenshots, grids, and monitors |
Code search | 4 | symbols, references, context, and regex search |
Edit-and-Continue | 1 |
|
Process management | 1 |
|
The server also exposes four resources: debug://state, debug://breakpoints,
debug://output, and debug://threads.
Eight prompts provide guided workflows: debug, debug-gui,
debug-exception, debug-visual, debug-mistakes, investigate,
debug-scenario, and dap-escape-hatch.
Code search boundary
find_code_symbol, find_code_references, and get_source_context execute
in the MCP server process. For search_source, source-file enumeration and the
synchronous wait remain in that process; per-file source reading/scanning and
regex matching run in a bounded dedicated Python subprocess, with a default
five-second timeout and a maximum of 1,000 results. It honors only the project
root .gitignore; nested ignore files are not consulted.
Runtime-smoke verification
Use runtime-smoke tools when you need a bounded, replayable verification rather
than an ad hoc debugging conversation. Start with
debug_hygiene_preflight, create an output checkpoint, run a validated plan,
and close the run with its cleanup contract. verify_debug_freshness can prove
that the live process still matches the expected workspace and artifacts.
For long-lived orchestration, use the lifecycle family:
runtime_smoke_start, runtime_smoke_tail_events,
runtime_smoke_get_result, and runtime_smoke_stop. See the
production testing playbook for the
consumer-mode release gate and the examples in docs/examples/
for WPF workflow, WPF DataGrid drag/drop, and diagnostic-plan shapes.
Input provenance
Runtime-smoke plans can distinguish the runner's own input from operator or
foreign input. For an operator-free product verdict, set both
input_policy.no_global_input=true and run_confidence.no_operator=true.
The first setting prevents runner-controlled global input; the second requires
input-monitor confidence evidence for the action window.
The resulting run_confidence classification is CLEAN_PROVEN when the
monitor proves no operator input, DIRTY_UNPROVEN when it observes physical or
foreign input or receives malformed/unattributable input evidence, or UNPROVEN
when monitor evidence is unavailable or incomplete. Only CLEAN_PROVEN permits a
product verdict.
When a plan permits runner-controlled global input, such as ui.drag, set
input_policy.no_global_input=false and retain run_confidence.no_operator=true
when a product verdict needs confidence evidence. Every covered input event must
carry runner_injected provenance. A foreign_injected or physical event
yields DIRTY_UNPROVEN; the caller must not treat that run as a product verdict.
Command-line reference
Command or option | Purpose |
| Print the installed package version. |
| Provision or discover debugger prerequisites, then print a client configuration snippet. |
| Install the default prebuilt Edit-and-Continue debugger with |
| Pin all debug operations to one project root. |
| Resolve the project from the startup directory and compatible local MCP roots. |
--project and --project-from-cwd are mutually exclusive. --enc must be
used with setup or --setup.
Configuration reference
Variable | Purpose |
| Explicit path to |
| Authoritative project-root fallback. |
| Additional comma-separated path prefixes the server may access. |
| Explicit FlaUI bridge executable path. |
| Inline preview dimensions and WebP quality. |
| Multi-agent ownership inactivity timeout. |
| Server diagnostic logging controls. |
An explicit --project or project-root environment variable takes precedence
over MCP client roots. Network/UNC client roots are rejected.
Architecture
graph TB
Client[MCP client] --> Server[netcoredbg-mcp stdio server]
Server --> Tools[Debug, inspection, UI, smoke, and search tools]
Tools --> Session[Session manager and process registry]
Session --> DAP[DAP client]
DAP --> Debugger[netcoredbg]
Debugger --> App[.NET debuggee]
Tools --> UI[Windows UI automation bridge]The public console script starts a FastMCP stdio server. Its tool modules share
one session manager, which owns debugger state, validated project scope,
process cleanup, output, snapshots, and trace evidence. The DAP client talks to
netcoredbg; Windows UI operations use the FlaUI bridge when available, with a
pywinauto fallback for supported operations.
Troubleshooting
netcoredbg is not found
Symptom: startup or start_debug reports that the debugger cannot be found.
Cause: setup did not install a managed debugger and NETCOREDBG_PATH is not
set.
Fix: run netcoredbg-mcp --setup, or set NETCOREDBG_PATH to the full
netcoredbg.exe path in the MCP client environment.
Verify: run netcoredbg-mcp --setup again and confirm its output reports a
found or provisioned debugger. Then confirm that the MCP client can list the
server tools.
A breakpoint remains unverified
Symptom: the process does not stop at the requested source line.
Cause: common causes include stale build output, a wrong target DLL, optimized Release binaries, or a line without executable IL.
Fix: use pre_build=true, debug a Debug build, verify that source and
assembly match, and inspect list_breakpoints() for DAP-adjusted locations.
Verify: the response reports verified=true or gives the adjusted line.
A GUI appears frozen
Symptom: a WPF, WinForms, or Avalonia window stops repainting after a debug command.
Cause: its UI thread is stopped at a breakpoint or pause.
Fix: inspect state while stopped, then call continue_execution() before
expecting the window to accept UI input.
Verify: get_debug_state() reports running and fresh screenshots update.
A worktree path is rejected
Symptom: launch or build reports a path-validation error.
Cause: the server resolved a different project root, or the worktree lies outside the allowed path set.
Fix: start the server from that worktree with --project-from-cwd, or add
its prefix to NETCOREDBG_ALLOWED_PATHS.
Verify: start_debug accepts the build and program paths under the
worktree.
Limitations
GUI automation is Windows-focused.
netcoredbgand DAP behavior depends on the target runtime and debugger support.Memory tools require valid adapter-supported memory references.
Native debugging, browser automation, and non-.NET runtimes are out of scope.
Contributing
See CONTRIBUTING.md for development setup, test expectations, sensitive-data rules, and pull-request requirements.
License
MIT. See LICENSE.
Available Tools
135 toolsadd_breakpointAIdempotent
Add a breakpoint at a specific line.
IMPORTANT TIMING:
Breakpoints set BEFORE start_debug only work for debugging app startup.
For UI apps (WPF/WinForms): remove breakpoints before launch, then add them AFTER the UI is fully loaded. Otherwise the app may hang during initialization.
When debugging UI issues: wait for app to be fully interactive before setting breakpoints in event handlers.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: file: Absolute path to source file line: Line number (1-based) condition: Optional condition expression hit_condition: Optional hit count condition
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| line | Yes | ||
| condition | No | ||
| hit_condition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: warns about potential app hangs during UI initialization, and explains idempotent nature implicitly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then detailed timing info. Slightly verbose but every sentence adds value; could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, timing, parameters, and alternatives; sufficient for a simple breakpoint tool without output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Describes each parameter with meaning (absolute path, 1-based line, optional conditions), compensating for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Add a breakpoint at a specific line.' Distinguishes from siblings like add_function_breakpoint and add_tracepoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit timing instructions (before/after start_debug, UI app details) and escape hatch reference, guiding when to use or not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_function_breakpointAIdempotent
Set a breakpoint on a function by name.
Breaks when the named function is entered. This is useful when you know the method name but not the exact line number.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Persists across restart cycles. Remove via remove_function_breakpoint or clear via clear_breakpoints (no file arg).
Args: function_name: Full or partial function name to break on condition: Optional condition expression hit_condition: Optional hit count condition
| Name | Required | Description | Default |
|---|---|---|---|
| condition | No | ||
| function_name | Yes | ||
| hit_condition | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint=true, openWorldHint=false), the description reveals that breakpoints persist across restart cycles, how to remove them, and when the break triggers (on function entry), adding valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: main purpose first, then situational guidance, escape hatch, persistence info, and parameter details. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward function breakpoint tool, the description covers purpose, usage, behavior, parameters, and lifecycle, making it fully self-contained despite lacking an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description's Args section explains each parameter (function_name: 'Full or partial function name to break on', condition: 'Optional condition expression', hit_condition: 'Optional hit count condition'), adding meaning beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Set a breakpoint on a function by name,' which clearly states the verb and resource. It distinguishes from siblings like add_breakpoint (line-based) and remove_function_breakpoint by explaining when to use (when method name is known but not line number).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when you know the method name but not the exact line number'), provides escape hatch reference, and explains persistence and removal options, guiding the agent to appropriate alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tracepointA
Set a non-stopping tracepoint that logs expression values.
State: Works in any state. The tracepoint fires automatically on each hit.
The tracepoint evaluates the expression each time the line is hit, without visibly pausing the program. Results are stored in a trace buffer accessible via get_trace_log.
Async state machines: when the target line is inside an async method, the
C# compiler moves the first executable instruction to the line after the
await. netcoredbg reports the adjusted line via DAP, and netcoredbg-mcp
tracks both the user-requested and adjusted lines — tracepoint matching
works for both. No user action required; get_trace_log will contain entries
and the program will NOT pause.
Args: file: Source file path line: Line number (1-based) expression: Expression to evaluate on each hit
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| line | Yes | ||
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With minimal annotations (only openWorldHint: false), the description fully discloses behavioral traits: the tracepoint does not pause the program, logs values to a trace buffer accessible via get_trace_log, and handles async method adjustments automatically. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with paragraphs explaining behavior, state, and async handling, followed by an args list. It is efficient and front-loaded but could be slightly more concise by merging some sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and 3 required parameters, the description covers key aspects: purpose, state applicability, async behavior, and result storage. It could mention the return type or success indication, but overall it is sufficient for an agent to understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides brief explanations for each parameter (file: source file path, line: line number 1-based, expression: expression to evaluate) but lacks details like file path format or expression syntax rules, so it adds only minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Set a non-stopping tracepoint that logs expression values.' It uses specific verb+resource and distinguishes from sibling tools like add_breakpoint and add_function_breakpoint by highlighting the non-stopping behavior and logging purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'State: Works in any state' and addresses async state machines, providing context for when to use the tool. However, it does not explicitly state when not to use it or compare directly with alternatives like breakpoints, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_collectionARead-onlyIdempotent
Analyze a collection variable in one call.
State: STOPPED required. Get variables_reference from get_variables() response.
Returns count, element type, null count, first/last N items, and numeric stats (min/max/sum/average) for numeric collections.
Args: variables_reference: Variable reference from get_variables response sample_size: Number of first/last items to include (default 5)
| Name | Required | Description | Default |
|---|---|---|---|
| sample_size | No | ||
| variables_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds context about the required state (STOPPED) and the return values, which is helpful. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a clear header, prerequisites, return list, and argument definitions. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers inputs, outputs, and prerequisites adequately for a tool with two parameters. Minor omissions like error handling for empty collections don't significantly impact completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description effectively explains both parameters: variables_reference (from get_variables response) and sample_size (default 5, number of first/last items). This adds necessary meaning beyond type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a collection variable, specifies what it returns (count, element type, null count, first/last N items, numeric stats), and distinguishes it from sibling debugging and UI tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a necessary precondition (STOPPED state and get variables_reference from get_variables) but does not offer guidance on when to use this tool versus alternatives like summarize_object or other analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_code_changeBDestructive
Apply source edits to a stopped debug session using Edit-and-Continue.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| edits | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true, and the description confirms the tool edits source code, aligning with that hint. However, the description lacks additional behavioral context such as whether changes are permanent, affect the original file, or require specific permissions. Given annotations cover the destructive nature, a 3 is appropriate for adding minimal extra context (stopped session).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is appropriately brief given the context, though it could benefit from a bit more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown), the description fails to fully describe the tool's behavior given its complexity and the many sibling tools. It does not explain the expected format of edits, what happens after applying (e.g., does the session continue?), or any limitations. The tool requires deeper guidance for proper use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no information about the parameters 'file' or 'edits'. For 'edits', which is an array of objects with additionalProperties: true, there is no guidance on required structure (e.g., line numbers, new text). This is a critical gap that renders the tool difficult to use correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies source edits to a stopped debug session using Edit-and-Continue. It specifies both the action (apply source edits) and the context (stopped debug session), and distinguishes it from sibling tools like set_variable or evaluate_expression which operate on runtime values rather than source code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the tool is for a stopped debug session, providing clear context for when to use it. It does not explicitly state when not to use alternatives, but the specificity of 'Edit-and-Continue' implies it's for modifying source code during debugging, which is distinct from other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_debugA
AVOID - Use start_debug instead. Attach to already-running process (LIMITED).
LIMITATION: netcoredbg does NOT support justMyCode in attach mode (only in launch). This is an UPSTREAM limitation that CANNOT be fixed by this MCP server. Result: stack traces will be incomplete/empty, debugging will be unreliable.
ONLY use this if you MUST debug an already-running process that you cannot restart (e.g., production service, container you cannot control).
For normal debugging, ALWAYS use start_debug which has full functionality. If start_debug fails with build errors, fix the build - don't switch to attach.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: process_id: PID of an already-running .NET process (NOT for normal debugging)
| Name | Required | Description | Default |
|---|---|---|---|
| process_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses significant limitation: netcoredbg does not support justMyCode in attach mode, leading to unreliable debugging and incomplete stack traces. Notes this is an upstream limitation. Annotations only include openWorldHint:false, so description adds valuable behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured with strong front-loaded warning, then limitation, then usage conditions, then parameter. Every sentence adds value; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the tool's purpose, limitations, and parameter completely for a single-param tool with no output schema. Could mention that after attaching, other debug tools become usable, but the context of sibling tools makes this implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
For the only parameter process_id, description explains it is a PID of an already-running .NET process and emphasizes NOT for normal debugging. This adds meaning beyond the schema (which only defines it as integer).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool attaches to an already-running .NET process for debugging, distinguishing it from start_debug. Verb 'attach' and resource 'debug process' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises against using this tool ('AVOID - Use start_debug instead'), details when it might be necessary (must debug an already-running process that cannot be restarted), and warns against using it when start_debug fails. Also references escape hatch for further options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_processesADestructive
View or terminate tracked debug processes.
Without force: shows all tracked processes and their status (alive/dead). With force=True: terminates all tracked processes (netcoredbg + debuggees).
Use this instead of manual taskkill. The server tracks which processes it spawned — no risk of killing unrelated processes.
Args: force: If True, terminate all tracked processes. If False, just show status.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true. The description adds specific behavioral details: without force shows status, with force terminates all tracked processes (netcoredbg + debuggees) with no risk of killing unrelated processes. This goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (a few sentences) and well-structured: it starts with a summary, explains both modes, includes a usage tip, and explicitly lists the argument. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one optional parameter and no output schema, the description adequately covers behavior and safety. However, it does not specify the exact return format (e.g., whether status output is a list or text). This minor gap prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no description for the 'force' parameter (0% coverage). The description fully explains its semantics: 'If True, terminate all tracked processes. If False, just show status.' This completely compensates for the missing schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'View or terminate tracked debug processes.' It distinguishes between two modes (with and without force) and explicitly contrasts with manual taskkill, making the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this tool instead of manual taskkill and explains when to use force (terminate) vs. not (status view). It does not explicitly mention sibling alternatives like terminate_debug, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_breakpointsADestructive
Clear breakpoints. With file: that file's line bps. Without file: all line AND function bps. For one function bp use remove_function_breakpoint.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description goes beyond destructiveHint annotation by specifying scope: line breakpoints per file vs all line and function breakpoints. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the main action, no filler. Escape hatch note is concise and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a straightforward tool with one parameter and existing annotations. It could be more explicit about the debugging domain, but the sibling list makes it clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage and one optional parameter. Description adds meaning: with file clears line bps for that file, without clears all line and function bps. This compensates well for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action: clear breakpoints, with distinction based on file parameter. Explicitly distinguishes from sibling for removing a single function breakpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when to use with vs without file, and points to an alternative for single function breakpoints. Lacks explicit exclusion for other cases but provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_trace_logB
Clear the tracepoint evaluation log.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal annotations (only openWorldHint=false). The description says 'Clear' implying destruction but doesn't disclose irreversibility or scope. Does not specify if it affects only the log or also traces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence with no wasted words. Could add a bit more context, but for a no-param tool it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Sufficient for a simple tool with no parameters, but lacks details on whether the action is reversible or what exactly gets cleared. Given the many sibling debug tools, a brief behavioral note would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description doesn't need to cover them. The tool is straightforward with zero arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Clear') and the resource ('tracepoint evaluation log'). It distinguishes itself from siblings like clear_breakpoints or remove_tracepoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Does not mention prerequisites, side effects, or cases where it would be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_exceptionsAIdempotent
Configure which exceptions should pause the debugger.
Controls exception breakpoints — when the debugger should stop on exceptions. By default, no exception filters are set (exceptions don't pause unless uncaught).
Common filters supported by netcoredbg:
"all": Break on all exceptions (caught and uncaught)
"user-unhandled": Break on exceptions not handled in user code
Pass an empty list to disable all exception breakpoints.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: filters: List of exception filter names. Pass [] to disable.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotent and open world hints. Description adds context about default behavior and effect of empty list. Does not contradict annotations and provides useful additional behavioral info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Starts with a one-line summary, followed by detailed explanation, examples, and escape hatch note. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with good annotations, the description covers purpose, usage, parameter, and defaults. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'filters' is thoroughly described with examples ('all', 'user-unhandled') and instruction to pass [] to disable. Schema coverage is 0%, so description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool configures exception breakpoints for the debugger. The verb 'configure' and resource 'exceptions' are distinct from sibling breakpoint tools that add specific breakpoints. Differentiates well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains default behavior (no filters set) and how to disable (empty list). Lists common filters. Could be more explicit about when to use this vs add_breakpoint, but the purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
continue_executionA
Continue program execution. Blocks until the program stops again or timeout.
State: STOPPED required. Blocks until next stop or timeout.
This tool uses the long-poll pattern: it waits for the debugger to report a stopped event (breakpoint hit, exception, step complete) before returning.
The response includes the new state, stop reason, and next_actions so you know exactly what happened and what to do next.
IMPORTANT: While waiting, the program is RUNNING — do not call get_variables or get_call_stack until this tool returns with state=stopped.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly explains the long-poll pattern, blocking behavior, and the state changes. It adds significant context beyond the minimal annotation (openWorldHint=false), covering the response contents and the danger of calling state-reading tools during execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized and front-loaded with key information. It is efficient but slightly verbose in the middle section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers preconditions, behavior, response, and important caveats. It does not mention timeout or error handling, but given the complexity, it is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage for the only parameter (thread_id). The description does not explain what thread_id means or how to use it, leaving the agent with no guidance on this optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool continues program execution and blocks until the program stops again. It distinguishes itself from stepping tools (step_into, step_over) which perform single steps, and from other execution control tools like restart_debug or stop_debug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the precondition 'State: STOPPED required' and warns against calling get_variables or get_call_stack while waiting. It provides guidance on when to use (when resuming execution) and what not to do, but does not explicitly compare with alternatives or mention when to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snapshotA
Capture all local variables at the current frame as a named snapshot.
State: STOPPED required.
Must be called when the program is stopped at a breakpoint. Max 20 snapshots per session (oldest evicted when full).
Args: name: Unique name for this snapshot
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only have openWorldHint: false. Description adds behavioral details: captures local variables at current frame, requires STOPPED state, and eviction policy. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each adds essential information without redundancy. Front-loaded with purpose and key prerequisites.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with one parameter and no output schema, description covers purpose, prerequisites, capacity limit, and parameter semantics completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter 'name' with no schema description. Description adds 'Unique name for this snapshot', specifying uniqueness constraint beyond basic type info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the action (capture), resource (local variables at current frame), and result (named snapshot). Clearly distinguishes from siblings like list_snapshots and diff_snapshots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly requires STOPPED state and breakpoint context, and mentions max snapshot capacity. Does not explicitly state when not to use or provide alternatives, but conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debuggee_activityCRead-onlyIdempotent
Observe adapter-owned debuggee activity during one bounded window.
| Name | Required | Description | Default |
|---|---|---|---|
| window_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint and idempotentHint. The description adds the bounded window aspect, but does not disclose return format, blocking behavior, or whether activity accumulation is reset. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, conveying the core purpose with no unnecessary text. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description should clarify what 'activity' means and what is returned. Without an output schema, the return value is opaque. The description is too brief to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the window_ms parameter or its effect. The schema has no description for the parameter, so the agent must infer meaning from the parameter name alone. A description of how to choose the window size would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Observe' and resource 'adapter-owned debuggee activity', clearly indicating it monitors debuggee activity. The phrase 'during one bounded window' distinguishes it from continuous monitoring tools like get_output or get_trace_delta, but the exact nature of 'activity' is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the numerous sibling tools (e.g., get_output, get_trace_delta, run_runtime_smoke_*). It does not mention prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_hygiene_preflightADestructive
Clear stale debugger state and report a compact hygiene result.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | ||
| clear_trace_log | No | ||
| clear_breakpoints | No | ||
| clear_exception_filters | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true, so the destructive nature is known. The description adds that it clears 'stale debugger state' and reports a 'hygiene result', but does not detail what state is affected or what the hygiene result contains, offering only marginal added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core action and result without extraneous words, achieving maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and is destructive, the description is insufficient. It fails to explain what constitutes 'stale debugger state', what the hygiene result looks like, or how it differs from related tools like clear_breakpoints, making it incomplete for reliable agent selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description should explain parameter roles, but it only mentions the overall action. It does not describe how the boolean parameters (clear_breakpoints, clear_trace_log, clear_exception_filters) or the optional file parameter influence behavior, leaving the agent to infer from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Clear') and resource ('stale debugger state') and mentions the output ('compact hygiene result'), which clearly distinguishes it from sibling tools like clear_breakpoints or clear_trace_log.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for cleaning up debugger state before debugging, but does not explicitly mention when to use this preflight tool versus individual clear tools like clear_breakpoints or clear_trace_log, nor does it specify prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diff_snapshotsARead-onlyIdempotent
Compare two snapshots and show variable differences.
Args: name1: First snapshot name (before state) name2: Second snapshot name (after state)
| Name | Required | Description | Default |
|---|---|---|---|
| name1 | Yes | ||
| name2 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, and the description does not contradict these. However, the description adds minimal behavioral context beyond the annotations, such as not mentioning error conditions or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one main sentence and two parameter lines. It is front-loaded with the primary action and contains no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 string parameters, no output schema), the description adequately covers purpose and parameters. It lacks details on error handling or exact output format, but for a straightforward diff tool, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must fully explain parameters. It does: name1 is 'First snapshot name (before state)' and name2 is 'Second snapshot name (after state),' providing clear roles beyond the schema's simple type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Compare two snapshots and show variable differences,' which specifies the verb (compare) and resource (snapshots). The sibling tools include list_snapshots and create_snapshot, so this tool's function is distinct and not overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like list_snapshots or create_snapshot. It is implied in the context of debugging, but no explicit guidelines or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disassembleBRead-onlyIdempotent
Disassemble machine instructions around a memoryReference.
Capability-gated on supportsDisassembleRequest. Use a stack frame's instructionPointerReference or an executable memoryReference from a variable.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| resolve_symbols | No | ||
| memory_reference | Yes | ||
| instruction_count | No | ||
| instruction_offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's mention of capability gates adds some context. But it omits details about output format, error behavior, or side effects, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the primary action. The escape hatch note is useful but not essential. However, the lack of parameter details reduces efficiency, as the agent may need to infer from context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and 0% schema coverage, the description is incomplete. It does not explain the meaning of parameters or the return value, which is critical for correct invocation in a debug context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mentions 'memoryReference' but does not explain offset, instruction_offset, instruction_count, or resolve_symbols, leaving the agent without crucial parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Disassemble') and resource ('machine instructions around a memoryReference'). It uniquely identifies the tool's purpose among debug siblings, as no other tool performs disassembly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to use a stack frame's instructionPointerReference or executable memoryReference, and mentions the capability gate. The escape hatch hint provides a fallback. However, it does not explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_expressionC
Evaluate an expression in the current debug context.
State: STOPPED required.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| frame_id | No | ||
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral traits like side effects, permissions, or rate limits. With only openWorldHint: false annotation, the description carries the burden but fails to mention if evaluating is read-only or has side effects, leading to inadequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, each serving a clear purpose: stating the tool's function and a necessary precondition. No redundant information exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and low schema coverage, the description should provide more context about return values, errors, or usage details. It only mentions the required state and an escape hatch, missing critical information for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters (expression, frame_id) beyond stating the tool's purpose. No details on format, semantics, or constraints are provided, leaving parameter understanding entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool evaluates an expression in the debug context, with a specific verb (evaluate) and resource (expression). However, it does not distinguish from similar siblings like 'quick_evaluate', so it's not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly requires State: STOPPED, providing a clear precondition. But it offers no guidance on when to use this vs. other evaluation tools or alternatives, missing the 'when-not' or 'alternatives' criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_code_referencesBRead-onlyIdempotent
Find literal symbol references across project files.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds no behavioral context beyond what annotations provide, offering minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no waste, but it is under-specified for a tool with 2 parameters and no parameter explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite annotations and output schema, the description lacks details on search scope, symbol type, and result interpretation, making it incomplete for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate but fails to explain 'name' (exact match? partial?) or 'max_results' behavior, leaving agents underinformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Find literal symbol references across project files' uses a specific verb (Find) and resource (literal symbol references) with clear scope, distinguishing it from siblings like find_code_symbol.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when or when not to use this tool vs alternatives. The purpose is implied but not differentiated from siblings like search_source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_code_symbolARead-onlyIdempotent
Find a C# symbol definition by name and optional kind.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds that it finds a definition specifically, but does not disclose additional behavioral traits such as case sensitivity, search scope, or behavior on not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that front-loads the purpose. It is concise with no unnecessary words, though it could be slightly more structured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description is moderately complete. However, it omits context like search scope (e.g., entire workspace) and what happens if no symbol is found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description only states 'by name and optional kind', adding no details about valid values for 'kind' or format constraints. It fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Find') and resource ('C# symbol definition'), clearly distinguishing it from the sibling 'find_code_references' which locates references, not definitions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'find_code_references'. The implied context is searching for a definition, but no when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_diagnosticsARead-onlyIdempotent
Get full build diagnostics including all warnings.
Build warnings are hidden by default in start_debug/restart_debug responses to reduce context noise. Call this tool when:
Build succeeds but the app crashes or behaves unexpectedly
Investigating assembly loading or compatibility issues
Checking nullable reference, deprecation, or platform warnings
Debugging "it compiles but doesn't work" situations
Args: include_warnings: Include warning details (default True, the point of this tool)
| Name | Required | Description | Default |
|---|---|---|---|
| include_warnings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds valuable behavioral context: that warnings are hidden by default and this tool retrieves them. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured: short intro, bulleted usage list, and argument explanation. No filler, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 optional param, no output schema), the description covers all necessary context: purpose, why this tool exists, when to use, and parameter meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'include_warnings' has default true and is described as 'the point of this tool', adding meaning beyond the schema. With 0% schema description coverage, the description compensates well, though it could clarify the default behavior more explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get full build diagnostics including all warnings' with a specific verb and resource. It distinguishes itself from sibling debug tools by focusing on build diagnostics that are hidden elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists four scenarios for use (e.g., 'Build succeeds but the app crashes', 'Investigating assembly loading issues') and explains why warnings are hidden by default in other tools, providing clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_call_stackARead-onlyIdempotent
Get the call stack for a thread.
State: STOPPED required. Returns frame_id values needed for get_scopes().
Diagnostic: Set NETCOREDBG_STACKTRACE_DELAY_MS env var to add delay before stackTrace request. This helps diagnose timing issues with ICorDebugThread3. Example: NETCOREDBG_STACKTRACE_DELAY_MS=300
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| levels | No | ||
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent. Description adds that the thread must be in STOPPED state, describes a diagnostic env var, and an escape hatch. Does not contradict annotations. Adds valuable behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is extremely concise: one sentence for purpose, three bullet points for state, diagnostic, and escape hatch. Every sentence adds value, and it's well-structured with headings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return values, but only mentions 'Returns frame_id values needed for get_scopes()'. Missing parameter explanations and comprehensive return format. Despite annotations, the description is insufficient for a tool with undocumented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 2 parameters (thread_id, levels) with 0% description coverage. Description does not explain what these parameters mean or how they affect the call stack retrieval. Without any explanation, the agent cannot infer correct usage beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get the call stack for a thread' with a specific verb and resource. It distinguishes itself by noting that it returns frame_id values needed for get_scopes, and references diagnostic env var and escape hatch, making the purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'State: STOPPED required', which is a critical usage prerequisite. Also mentions the dependency on get_scopes for further use of returned frame IDs. Provides an escape hatch reference. Lacks explicit 'when not to use' or alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_debug_stateARead-onlyIdempotent
Get the current debug session state.
Returns state, execState, threads, transition timestamps, debuggee liveness, current position, and exception info. The user cannot see this directly - summarize important info for them.
IMPORTANT: Always check state before asking user to interact with the app GUI! If the app is paused at a breakpoint, the user cannot interact with UI. Call continue_execution first if state shows stopped/paused.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds valuable context: the user cannot see this directly and should summarize for them, and it explains the importance of checking state before UI interaction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, front-loaded with core purpose, then details, then important usage notes. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description covers the key return fields and critical usage context. It could be slightly more detailed about the exact format of returned data, but it is sufficient for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the schema fully describes them. The description does not need to add parameter meaning; baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets the current debug session state and lists returned fields. However, it does not explicitly differentiate from sibling tools like get_call_stack or get_scopes, which also return state-related data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: check state before UI interaction, call continue_execution if paused, and mentions an escape hatch for unwrapped DAP requests. This covers when to use and when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exception_contextARead-onlyIdempotent
Get full exception context in one call (exception autopsy).
State: STOPPED required (stopped on exception).
Returns exception type/message, inner exception chain, stack frames with source locations, and local variables for the top N frames — all in a single response. Use this FIRST when the debugger stops on an exception.
This replaces the manual sequence of: get_exception_info → get_call_stack → get_scopes → get_variables
Args: max_frames: Maximum stack frames to return (default 10) include_variables_for_frames: Include locals for top N frames (default 1) max_inner_exceptions: Max inner exception chain depth (default 5)
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| max_frames | No | ||
| max_inner_exceptions | No | ||
| include_variables_for_frames | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses required state: 'State: STOPPED required (stopped on exception).' It details the return content: exception type/message, inner exception chain, stack frames with source locations, and local variables. This goes well beyond the annotations (readOnlyHint, idempotentHint) and provides full behavioral context. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three focused paragraphs: purpose and state requirement, return content and usage guidance, followed by a clear parameter list. Every sentence adds value, and it is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of exception context retrieval and the absence of an output schema, the description covers all essential aspects: what is returned, required state, parameter effects, and usage precedence. It is complete for an agent to understand and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 0% (no parameter descriptions in the input schema), the description fully compensates by listing all three parameters with defaults and explaining their roles (max_frames, include_variables_for_frames, max_inner_exceptions). This adds meaning that the schema alone lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get full exception context in one call (exception autopsy).' It specifies the verb 'get' and resource 'exception context', and distinguishes it from the manual sequence of multiple calls. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this FIRST when the debugger stops on an exception.' It also describes that this tool replaces the manual sequence (get_exception_info → get_call_stack → get_scopes → get_variables), and mentions an escape hatch for DAP requests. This provides clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exception_infoBRead-onlyIdempotent
Get information about the current exception.
State: STOPPED required (stopped on exception).
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds the state requirement beyond annotations (readOnlyHint, idempotentHint). Provides an escape hatch hint, adding behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, three sentences each serving a purpose: purpose, state requirement, escape hatch hint. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks description of return value or how thread_id affects results. With no output schema, the agent cannot anticipate what information is returned, reducing completeness for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must clarify the thread_id parameter, but it does not. No additional meaning is provided beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get information about the current exception' with a specific verb and resource. It is clear what the tool does, but does not explicitly differentiate from siblings like get_exception_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies required state 'STOPPED required (stopped on exception)', providing clear context for when to use. However, no mention of when not to use or comparison with alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_loaded_sourcesARead-onlyIdempotent
List sources currently loaded by the debug adapter.
Capability-gated on supportsLoadedSourcesRequest. Also refreshes the session's live loadedSource event view on success.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), it discloses capability-gating and a refresh side effect, adding meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with two sentences and a brief note, front-loaded with core purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool with no output schema, the description covers capability gate, side effect, and escape hatch, making it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description adds no param info; schema coverage is 100%, baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List sources currently loaded by the debug adapter' with a specific verb and resource, and differentiates from sibling tools by focusing on loaded sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions capability-gating on supportsLoadedSourcesRequest and a side effect of refreshing the session view, providing context for when to use but no explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_locationsARead-onlyIdempotent
Resolve a DAP locationReference into source coordinates.
Capability-gated on supportsLocationsRequest. A locationReference can be returned by variables or stack frames in adapters that implement DAP 1.68+.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| location_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds behavioral context: it resolves into source coordinates, is capability-gated, and works only with adapters supporting DAP 1.68+. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, each serving a distinct purpose: core function, context, and escape hatch reference. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema, rich annotations), the description adequately covers what the tool does, when it can be used, and where inputs come from. It lacks explicit output behavior but references an escape hatch for advanced needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required integer parameter (location_reference) with 0% schema description coverage. The description explains it is a DAP location reference and hints at its origin, but does not fully specify its expected format or constraints, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves a DAP locationReference into source coordinates, specifying the verb 'resolve' and the resource 'locationReference'. This distinguishes it from sibling tools, which include other debug operations but none that specifically convert location references.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is capability-gated on supportsLocationsRequest and notes that location references come from variables or stack frames in DAP 1.68+ adapters. It also provides an escape hatch reference for unwrapped DAP requests. However, it does not explicitly contrast with alternatives or state when not to use it, though no direct alternative exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_modulesARead-onlyIdempotent
List loaded assemblies/modules in the debug session.
Returns module name, path, version, optimization status, and symbol loading state. Useful for diagnosing assembly loading failures and version conflicts.
Note: Data comes from module load/unload events tracked during the session.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: 'Data comes from module load/unload events tracked during the session.' Annotations indicate read-only and idempotent, which align with the description. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three sentences covering purpose, return values, data source, and an escape hatch note. It is front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists return fields (module name, path, version, optimization status, symbol loading state), making the tool's output clear. With no parameters, the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. With 0 parameters, baseline is 4. The description does not need to add parameter information, and it doesn't.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List loaded assemblies/modules in the debug session.' It uses a specific verb ('List') and resource ('assemblies/modules'), and distinguishes itself from sibling tools that focus on other debugging aspects like call stacks or variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool: 'Useful for diagnosing assembly loading failures and version conflicts.' It does not explicitly state when not to use it or compare to alternatives, but the purpose is clear enough among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_outputA
Get stdout/stderr output from the debugged program.
IMPORTANT: The user cannot see this output directly. YOU must read it and summarize relevant information for the user. Never tell the user to "check the console" or "look at output".
Call periodically during debugging to catch log messages and errors.
Args: clear: Clear the output buffer after reading (default False) category: Filter by category: "stdout", "stderr", or "console" (default: all)
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (destructiveHint=false), description adds behavioral context: output retrieval, no user visibility, and filter options. Does not mention side effects of clearing buffer, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with clear sections: purpose, important note, usage advice, and parameter docs. Could be slightly trimmed, but well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage, parameters, and important behavioral notes. No output schema, but hints at summarizing output. Sibling list shows many debug tools, but this one is unique. Adequate for its role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, description fully documents both parameters: 'clear' (boolean, default false) and 'category' (stdout, stderr, console, default all). Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves stdout/stderr output from the debugged program, distinguishing it from siblings like get_output_tail and search_output. It also emphasizes that the user cannot see the output directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use (periodically during debugging) and how (read and summarize for user). Provides important instruction not to tell user to check console. Lacks explicit alternatives, but implied by siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_output_tailARead-onlyIdempotent
Get the last N lines of program output.
Useful for checking recent output without loading everything. The user cannot see this - summarize relevant info for them.
Args: lines: Number of lines to return (default 50) category: Filter by category: "stdout", "stderr", or "console" (default: all)
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds critical behavioral guidance: the raw output is not visible to the user and must be summarized. This is valuable context for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 lines), front-loaded with purpose, then usage note, then parameter descriptions. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameters, no output schema, and rich annotations, the description covers all necessary aspects: purpose, usage, parameter semantics, and output handling. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains both parameters: 'lines' (number, default 50) and 'category' (filter by stdout/stderr/console, default all). This compensates completely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool retrieves the last N lines of program output, which differentiates it from sibling tools like get_output (likely full output) and search_output (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage context: useful for checking recent output without loading everything, and instructs the agent to summarize relevant info for the user since the user cannot see it directly. No explicit when-not or alternatives, but sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_progressARead-onlyIdempotent
List active debugger progress operations.
Poll this during long adapter operations to see current progressId, title, message, percentage, cancellability, and start timestamp.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint) already declare safety and idempotency; description adds polling context but doesn't contradict or significantly extend behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, usage with details, and escape hatch reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, no output schema, and annotations covering safety, the description fully informs the agent about purpose, usage, and return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%; baseline 4 applies, and description adds no parameter detail (none needed).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List active debugger progress operations', providing a specific verb and resource that distinguishes it from sibling tools like breakpoint or stepping tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly advises polling during long adapter operations and mentions an 'escape hatch' for unwrapped DAP requests, offering clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scopesARead-onlyIdempotent
Get variable scopes for a stack frame.
State: STOPPED required. Call get_call_stack() first to get frame_id. Returns variables_reference for get_variables().
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| frame_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations (readOnlyHint, idempotentHint). It reveals required debug state (STOPPED), needed prior call (get_call_stack), and the return value's role (variables_reference for get_variables). This helps the AI understand the workflow and preconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with only 4 sentences. It front-loads the primary purpose, then provides prerequisites, return behavior, and an escape hatch mention. Every sentence adds value, and the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description should fully explain the return value. It states 'Returns variables_reference for get_variables()' but does not describe the structure of the scopes themselves (e.g., an array of scope objects with names). This omission makes the description less complete for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by explaining the parameter's origin: frame_id comes from get_call_stack(). However, it does not describe the parameter's nature (e.g., null allowed, integer format) or its non-required status beyond the schema, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Get variable scopes for a stack frame.' It uses a specific verb ('Get') and resource ('variable scopes'), and distinguishes from sibling tools like get_variables (which uses the returned reference) and get_call_stack (which provides the frame_id).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit prerequisites: 'State: STOPPED required. Call get_call_stack() first to get frame_id.' It also indicates the next step: the returned variables_reference is for get_variables(). This gives clear usage context, though it does not explicitly mention when not to use this tool or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_contextBRead-onlyIdempotent
Read source lines around a project-scoped location.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| line | Yes | ||
| radius | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds the 'project-scoped' detail but does not disclose additional behavioral traits like symmetry of radius or permission needs. Adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, efficient and front-loaded, but risks under-specification for a tool with three parameters and an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing details about return format, edge cases, and behavior of radius. Despite output schema existing, the description should provide more context for a tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description does not explain parameters (file, line, radius) beyond their names. The agent must infer meaning, e.g., radius as line count, without further clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb 'Read' and resource 'source lines around a project-scoped location', clearly distinguishing from siblings like 'search_source' or 'get_locations'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'search_source' or 'get_stop_context'. The description does not provide context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_step_in_targetsARead-onlyIdempotent
Get available step-in targets for the current stack frame.
State: STOPPED required. Call before step_into(target_id=N) to choose target.
When multiple function calls exist on one line, this returns each one so you can choose which to enter via step_into(target_id=...).
Args: frame_id: Stack frame ID (uses current frame if omitted)
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| frame_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds behavioral context: it requires STOPPED state and is used to choose a target. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear structure: purpose, state requirement, usage, args, and escape hatch. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what the tool returns (list of targets) and when it is useful. Also includes state dependency and alternative access via escape hatch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains the parameter 'frame_id' with default behavior: 'Stack frame ID (uses current frame if omitted)'. This adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get available step-in targets for the current stack frame.' This is a specific verb+resource tuple and distinguishes it from sibling tools like step_into, step_out, step_over.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use the tool ('Call before step_into(target_id=N)') and prerequisites ('State: STOPPED required'). Also mentions an escape hatch for advanced use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stop_contextARead-onlyIdempotent
Get rich context when stopped at any breakpoint — one call replaces many.
Returns stop reason, stack trace with source, locals in the top frame, hit count for the current breakpoint, and recent output lines.
Call this FIRST when execution stops. It gives you everything you need to understand the stop without multiple sequential tool calls.
Args: include_variables: Include local variables for top frame (default True) include_output_tail: Include last N output lines (default 10, 0 to skip)
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| include_variables | No | ||
| include_output_tail | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating safety. The description adds detailed behavioral context: returns stop reason, stack trace with source, locals in the top frame, hit count, and recent output lines. It also explains parameter defaults and effects, fully disclosing behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a short summary, a bullet-like list of returned items, usage guidance, and parameter descriptions. It is concise but could be slightly more compressed; however, every sentence serves a purpose and the structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description adequately explains what the tool returns (stop reason, stack trace, locals, hit count, output lines). It covers the two optional parameters fully. While it doesn't detail nested structures, the tool name and context imply standard debug information. Overall, it is sufficiently complete for an aggregator tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must provide parameter meaning. It does so explicitly: 'include_variables: Include local variables for top frame (default True)' and 'include_output_tail: Include last N output lines (default 10, 0 to skip)'. This adds significant semantic value beyond the schema's bare defaults and titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and resource 'rich context when stopped at any breakpoint'. It distinguishes itself from siblings by claiming it replaces many other calls, and explicitly advises 'Call this FIRST when execution stops', making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance to call this tool first when execution stops, positioning it as a primary aggregator. While it doesn't explicitly list alternatives, the instruction to use it FIRST effectively conveys when to use it. The mention of an escape hatch for unwrapped DAP requests adds context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_threadsARead-onlyIdempotent
Get all threads in the debugged process.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to repeat that. However, it adds no further behavioral context (e.g., whether threads are returned sorted, or if it reflects current snapshot). Adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are very concise. The first sentence hits the core purpose; the second provides an escape hatch reference. Could be slightly more focused if the escape hatch were integrated into guidance, but no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with annotations covering safety, the description is mostly adequate. However, it omits what the return value contains (e.g., thread IDs, names). Without an output schema, this missing context could require the agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100% (vacuous). The description correctly implies it's an unrestricted list operation. No additional parameter details needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all threads in the debugged process.' It uses a specific verb and resource, and the scope is well-defined. No sibling tool directly competes, so differentiation is inherent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The escape hatch mention hints at an alternative for raw DAP requests but doesn't clarify usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trace_deltaARead-onlyIdempotent
Get tracepoint log entries appended after a cursor.
State: Works in any state.
Args: cursor: Cursor returned by mark_trace_cursor or a raw monotonic timestamp limit: Maximum number of entries to return tracepoint_id: Optional tracepoint filter overriding the cursor filter
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | Yes | ||
| tracepoint_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and idempotentHint, ensuring safe and repeatable calls. The description adds context beyond annotations: working in any state and explaining cursor alternatives (mark_trace_cursor or raw timestamp). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one line for purpose, one line for state, and three lines for parameters. Every sentence adds value with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing output schema, so description should explain what gets returned (e.g., format of log entries). It does not describe the return value or error conditions. With only 3 parameters and simple behavior, the absence of output details makes it marginally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description compensates fully: cursor is explained as 'Cursor returned by mark_trace_cursor or a raw monotonic timestamp', limit as 'Maximum number of entries to return', and tracepoint_id as 'Optional tracepoint filter overriding the cursor filter'. This adds critical meaning beyond the schema's type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'tracepoint log entries' with the mechanism 'after a cursor'. It distinguishes from sibling tools like get_trace_log (which returns full log) and mark_trace_cursor (which creates cursors).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'State: Works in any state' but does not explicitly state when to use this tool over alternatives like get_trace_log. The cursor parameter implies prior use of mark_trace_cursor but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trace_logARead-onlyIdempotent
Get tracepoint evaluation log.
State: Works in any state.
Args: since: Only return entries after this timestamp (monotonic) tracepoint_id: Filter to specific tracepoint
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| tracepoint_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds the state constraint ('Works in any state'), which is useful context beyond annotations. No contradictions or omissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences for purpose and two lines for parameters, no wasted words. Information is front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and annotations, the description covers purpose, state, and parameter meanings. However, it lacks details about return format or pagination, which could aid completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description fully compensates by explaining both parameters: 'since' for timestamp filtering and 'tracepoint_id' for specific tracepoint filtering. This adds meaning beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get tracepoint evaluation log,' which is a specific verb and resource. It is distinct from sibling tools like 'add_tracepoint' or 'clear_trace_log'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Works in any state,' providing minimal usage context. However, it lacks when-to-use or alternatives, and does not differentiate from similar tools like 'clear_trace_log' or 'list_breakpoints'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variablesARead-onlyIdempotent
Get variables for a scope or structured variable.
State: STOPPED required. Call get_scopes() first to get variables_reference.
Supports paging for large collections (e.g. arrays, lists).
Args: variables_reference: Reference from get_scopes or a nested variable filter: Filter to "indexed" (array elements) or "named" (properties only) start: Index of first variable to fetch (for paging) count: Maximum number of variables to return (for paging)
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| start | No | ||
| filter | No | ||
| variables_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is known. The description adds valuable context beyond annotations: the required stopped state, paging support, and a note about the escape hatch. It does not repeat the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. It uses a clear structure: brief intro, state requirement, paging mention, parameter details, escape hatch. Every sentence adds value without redundancy. It is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the essential aspects: what the tool does, preconditions, paging, and parameter meanings. It could be improved by describing the return format (e.g., an array of variable objects), but the current level is sufficient for an agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. The 'Args:' section explains each parameter (variables_reference, filter, start, count) with meaningful descriptions, including the allowed values for filter ('indexed' or 'named'). This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get variables for a scope or structured variable,' which is a specific verb and resource. It distinguishes itself from siblings like get_scopes (which returns scopes) and set_variable (which modifies) by mentioning the prerequisite call to get_scopes and the stopped state requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'State: STOPPED required. Call get_scopes() first to get variables_reference,' providing clear when-to-use guidance and a prerequisite. It could improve by explicitly contrasting with set_variable or other alternatives, but the context is sufficient for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_debug_launch_compatibilityARead-onlyIdempotent
Inspect target/dbgshim compatibility without building or launching.
| Name | Required | Description | Default |
|---|---|---|---|
| program | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds behavioral context that the tool does not build or launch, which is useful. No contradiction, but no further behavioral details provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 7 words, front-loaded with the verb 'Inspect'. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 param, no output schema), the description covers the core purpose but lacks details about what compatibility is checked or what the return value means. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required parameter 'program', and the description does not describe the parameter at all. It fails add meaning beyond the schema's bare name and type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects target/dbgshim compatibility without building or launching. It uses a specific verb and resource, and distinguishes from sibling tools that perform building or launching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use (when checking compatibility without side effects) by stating 'without building or launching'. However, it does not explicitly mention when not to use or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instrumentation_group_clearCDestructive
Remove a named instrumentation group with leak detection.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true, so the destructive nature is known. The description adds 'with leak detection,' providing a behavioral trait beyond annotations. However, it does not explain what leak detection entails or other behaviors like error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the action. It wastes no words but lacks details expected for a destructive tool. It is efficient but could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is destructive with a single parameter and no output schema, the description omits critical context: what happens on success/error, leak detection specifics, reversibility, and prerequisites. It is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only generically references 'named' without elaborating on the 'name' parameter's format, constraints, or how to obtain it. It does not compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Remove a named instrumentation group with leak detection,' clearly indicating the action and resource. It distinguishes from siblings like 'instrumentation_group_create' and 'instrumentation_group_inspect.' However, it could be more explicit that the group is identified by the 'name' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives (e.g., when to remove vs create or inspect). There are no usage scenarios, prerequisites, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instrumentation_group_createBDestructive
Create a named breakpoint/tracepoint group for smoke evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| breakpoints | No | ||
| tracepoints | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint=true already indicates state modification. The description confirms creation but adds no additional behavioral context (e.g., side effects, permissions, or reversibility).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, concise but lacking essential details. It is front-loaded but provides minimal information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two complex optional parameters, no output schema), the description is insufficient for an agent to understand how to correctly invoke the tool. Missing parameter structure and return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and three parameters, the description only hints at the 'name' parameter but provides no details about the breakpoints and tracepoints objects, leaving agents to guess their structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a named group for breakpoints/tracepoints with a specific use case (smoke evidence). It distinguishes from sibling tools like add_breakpoint and instrumentation_group_clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for smoke testing but provides no explicit guidance on when to use this tool versus adding individual breakpoints or tracepoints. No mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instrumentation_group_inspectCRead-only
Inspect grouped breakpoint hits and trace logs.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true, so the description does not need to restate that. However, the description adds no additional behavioral context, such as what happens if the name is invalid, or if data is truncated. It provides minimal added value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise and front-loaded. However, it may be too brief; a slightly more informative sentence would be warranted without reducing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema), the description still lacks completeness. It does not explain what the inspection produces (e.g., a list of hits, detailed logs) or how to interpret the results. The agent is left guessing about the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'name' has no description in the schema (0% coverage). The description does not clarify what 'name' refers to (presumably the group name), nor does it explain acceptable values. The description fails to compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Inspect' and specifies the resource 'grouped breakpoint hits and trace logs', making the tool's purpose clear. It implicitly distinguishes from siblings like 'instrumentation_group_clear' and 'instrumentation_group_create' by focusing on inspection rather than modification. However, it could more explicitly differentiate from other inspection tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as get_trace_log or list_breakpoints. No prerequisites or exclusion criteria are mentioned. The description lacks any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_breakpointsARead-onlyIdempotent
List breakpoints (line + function). Per-file filter scopes only line bps.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent. Description adds that per-file filtering only affects line breakpoints, which is useful but does not significantly expand beyond annotation information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus a note: no fluff, every sentence adds value. Front-loaded with the main action and key constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no mention of return format or structure. For a list tool, agents may need to know what fields are returned. The escape hatch partially covers advanced needs, but overall completeness is average.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so description must compensate. It clarifies the 'file' parameter: provides a file to filter only line breakpoints in that file. This adds meaning beyond the schema, though format details are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists breakpoints (line and function), and specifies that the per-file filter only applies to line breakpoints. This distinguishes it from siblings like add_breakpoint or clear_breakpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The escape hatch mentions DAP requests for unwrapped details, but does not compare to other listing tools or explain scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_snapshotsARead-onlyIdempotent
List all captured snapshots with metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the agent knows it is a safe read operation. The description adds that it lists metadata but does not disclose any further behavioral traits like pagination or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is appropriately concise and directly states the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (no parameters, no output schema) and the presence of good annotations, the description is mostly complete. However, it could mention what metadata is included or any ordering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description need not add parameter information, so a baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists snapshots with metadata, using a specific verb and resource. However, it does not explicitly differentiate from sibling tools like create_snapshot or diff_snapshots, which would improve clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Given the large number of sibling tools, explicit usage context would help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_trace_cursorARead-onlyIdempotent
Mark the current tracepoint log boundary for later delta reads.
State: Works in any state.
Args: tracepoint_id: Optional tracepoint filter to bind into the cursor
| Name | Required | Description | Default |
|---|---|---|---|
| tracepoint_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true (safe) and idempotentHint=true (repeatable). The description adds that it works in any state, which is useful. It does not describe return behavior or side effects beyond marking, but annotations cover safety adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no wasted words. The main purpose is front-loaded, followed by state info and parameter description. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter and no output schema, the description covers essential aspects. It could explicitly mention the relationship to get_trace_delta for a more complete lifecycle context, but it is sufficient for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for parameter descriptions, but the description explains 'Optional tracepoint filter to bind into the cursor', adding meaning about the parameter's role as a filter and its effect on the cursor. This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Mark the current tracepoint log boundary for later delta reads', specifying the verb 'mark' and resource 'tracepoint log boundary'. It distinguishes itself from siblings like get_trace_delta (reads the delta) and clear_trace_log (clears the log). The 'State: Works in any state' adds context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before calling get_trace_delta (for later delta reads), providing clear context. It does not explicitly state when not to use or mention alternatives like runtime_smoke_mark_event_cursor, but the purpose is clear for the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
output_assert_sinceBRead-only
Assert required and forbidden output patterns since a checkpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| regex | No | ||
| required | No | ||
| forbidden | No | ||
| checkpoint | Yes | ||
| max_matches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description aligns with a non-mutating operation. However, the description adds no further behavioral context such as side effects, error conditions, or limitations beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loads the action, contains no filler, and is appropriately sized for the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and zero schema description coverage, the description is too minimal to be fully complete. It lacks details on parameter usage, expected patterns, and behavior, making it insufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description explains none of the five parameters individually. It hints at 'required' and 'forbidden' but omits 'checkpoint', 'regex', and 'max_matches'. This fails to compensate for the missing schema descriptions, leaving parameter meaning ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb 'assert' and clearly identifies the resource 'required and forbidden output patterns since a checkpoint'. It distinguishes from sibling tools like search_output and get_output by focusing on assertion rather than retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for verifying output patterns relative to a checkpoint but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
output_checkpointBIdempotent
Mark the current output buffer position for later assertions.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and openWorldHint=false. The description adds minimal behavioral context ('Mark the current output buffer position') which is consistent but does not elaborate on side effects or state changes beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it concise, but it does not earn its place fully as it lacks crucial parameter details. It could be improved by integrating parameter explanation without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one parameter, the description should fully explain the tool's purpose and parameter. It fails to cover the parameter's role, making the description incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter 'name' with no description and 0% schema coverage. The description does not explain what the name parameter represents or how to use it, leaving the agent with no guidance on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb-resource pair ('Mark the current output buffer position for later assertions') that clearly states the tool's function and distinguishes it from siblings like output_assert_since.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to later assert about output) but does not explicitly state when to use or when not to, nor mention alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_executionAIdempotent
Pause program execution.
State: RUNNING required. Returns immediately (does not block like step tools). Use get_call_stack() after pause to inspect the stopped state.
Unlike continue/step tools, this returns immediately after sending the pause command — it does not wait for a stopped event.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and openWorldHint=false. Description adds crucial behavioral info: that it returns immediately and does not wait for a stopped event, unlike step tools. This goes beyond annotations, though annotations already indicate it's safe to retry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place. No fluff. Front-loaded with the core action. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional param and no output schema, the description covers the main behavioral aspects: required state, non-blocking nature, recommended follow-up, and escape hatch. Minor missing detail about thread_id, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the thread_id parameter. While the parameter name and type are self-evident, the description fails to add context (e.g., what happens when null). This is a gap given low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Pause program execution' with a specific verb and resource. It distinguishes itself from sibling step/continue tools by noting it returns immediately and does not block. The required state 'RUNNING' is also specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'State: RUNNING required.' and suggests using get_call_stack() after pause. Contrasts with continue/step tools and provides an escape hatch reference, offering clear when-to-use and when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_evaluateAIdempotent
Evaluate an expression while the program is running (atomic pause-eval-resume).
Pauses execution for ~5ms, evaluates the expression, then resumes. Use this instead of manually pausing, evaluating, and continuing.
IMPORTANT: Only works when program is RUNNING. If stopped, use evaluate_expression instead.
Args: expression: Expression to evaluate (e.g., "myVariable", "list.Count") frame_id: Optional stack frame ID for evaluation context
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| frame_id | No | ||
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes atomic pause-eval-resume with ~5ms pause. Annotations already indicate idempotent and not read-only, and description adds detail without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured: concise summary, key details, usage note, and args. Each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, parameters, and behavioral details. Minor gap: no mention of return value format, but acceptable given standard debugger behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage), but description provides clear parameter explanations with examples for expression and context for frame_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool evaluates an expression while the program is running via atomic pause-eval-resume. Distinguishes from sibling 'evaluate_expression' for stopped programs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (program running) and when not to (stopped: use evaluate_expression). Also provides escape hatch reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_memoryARead-onlyIdempotent
Read raw memory bytes from a debugger memoryReference.
Capability-gated: current netcoredbg builds usually return an unsupported error unless they advertise supportsReadMemoryRequest.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: memory_reference: DAP memoryReference from a variable or stack frame offset: Byte offset from the memory reference count: Number of bytes to read; count=0 returns empty data locally
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| offset | No | ||
| memory_reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond annotations: capability limitations, error conditions, and count=0 behavior. Annotations already indicate idempotent and read-only, but description enriches understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief header and parameter list, but includes some verbose context about capability-gating and escape hatch that could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations and presence of output schema, the description covers purpose, parameters, behavioral quirks, and limitations, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully explains each parameter's meaning and behavior, including DAP source for memory_reference and count=0 edge case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads raw memory bytes from a DAP memoryReference, using specific verb and resource. It distinguishes from sibling tools like write_memory and evaluate_expression.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on capability-gating and an escape hatch for unsupported cases, but does not explicitly contrast with alternative tools for reading memory data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_breakpointBIdempotent
Remove a breakpoint from a specific line.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| line | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and openWorldHint=false, which partially inform behavior. The description adds no further behavioral details (e.g., what happens if breakpoint doesn't exist). With annotations, a score of 3 is appropriate as baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no fluff. The first sentence directly states the purpose, and the second adds relevant escape hatch information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool, the description is minimally sufficient but lacks details on error handling (e.g., non-existent breakpoint) and return value. With no output schema and 0% parameter coverage, more context would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the parameters 'file' or 'line', leaving the agent without additional context on expected format or constraints. The description fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove a breakpoint from a specific line.' The verb 'Remove' and resource 'breakpoint' are specific. It distinguishes from sibling tools like 'add_breakpoint' and 'list_breakpoints' by focusing on removal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like clearing all breakpoints with 'clear_breakpoints'. It only mentions an escape hatch for unwrapped DAP requests, which does not clarify usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_function_breakpointAIdempotent
Remove function breakpoint by name (exact match used at add time).
Args: function_name: Name passed to add_function_breakpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| function_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint: true and openWorldHint: false, which cover safety and repeatability. The description adds the 'exact match' detail but does not discuss behavior when breakpoint does not exist. It aligns with annotations, no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence plus a minimal Args note. It is front-loaded and contains no extraneous information, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is largely complete. It could mention the effect of calling on a non-existent breakpoint, but the idempotent annotation covers that. Output schema absence is acceptable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema by noting that function_name must match exactly what was passed to add_function_breakpoint. With 0% schema coverage, this helps the agent understand the parameter's role and format requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it removes a function breakpoint by name, distinguishing it from siblings like remove_breakpoint (which likely handles other breakpoint types). The phrase 'exact match used at add time' adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for removing function breakpoints, but does not explicitly state when to avoid this tool (e.g., for non-function breakpoints use remove_breakpoint). It provides context but lacks clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tracepointB
Remove a tracepoint by ID.
Args: tracepoint_id: Tracepoint ID (e.g., "tp-1")
| Name | Required | Description | Default |
|---|---|---|---|
| tracepoint_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Does not disclose behavioral traits beyond the basic action; no mention of error handling, side effects, or requirements. Annotations are minimal and do not compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with two short sentences; no unnecessary words, but could benefit from a structured format or bullet points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple one-parameter tool, but lacks information about return values, error conditions, or prerequisites. Minimal annotations do not supplement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds value to the schema by providing a concrete example ('tp-1') for the tracepoint_id parameter, which is missing from the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Remove a tracepoint' and specifies the method 'by ID', distinguishing it from sibling tools like add_tracepoint and clear_tracepoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_debugA
Restart the current debug session with the same configuration.
Stops the current session, optionally rebuilds, and relaunches. Use this after code changes to debug the updated version.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: rebuild: Whether to rebuild before restarting (default: True)
| Name | Required | Description | Default |
|---|---|---|---|
| rebuild | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes basic steps (stop, optionally rebuild, relaunch) but lacks detail on side effects like breakpoint retention or state preservation. Annotations are minimal, so description could do more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: main action first, then steps, usage, escape hatch, parameter. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers action, parameter, usage context, and an advanced option. Complete and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'rebuild' is fully explained with purpose and default value, adding meaning beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'restart', specific resource 'current debug session', and scope 'with same configuration'. Distinct from siblings like start_debug or stop_debug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'after code changes'. Mentions an escape hatch for advanced cases, but does not detail when not to use or fully compare alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_runtime_smokeC
Run a bounded runtime smoke scenario plan with cleanup evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only openWorldHint: false, offering little behavioral context. The description mentions 'with cleanup evidence' but does not specify what cleanup entails, whether it is destructive, or what side effects occur. No readOnlyHint is present, so the agent cannot assess safety. The description adds minimal transparency beyond the verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded with the essential action. However, it sacrifices necessary detail, which might be acceptable if the tool is well-known, but for an AI agent, it is borderline under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a smoke test scenario plan and the lack of an output schema, the description is incomplete. It does not describe return values, success indicators, or error conditions. Combined with the vague parameter semantics, the agent lacks sufficient context to use the tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, so the description must explain the 'plan' parameter. It describes it as a 'scenario plan' and mentions 'bounded' and 'cleanup evidence', but does not define the expected structure, allowed fields, or constraints. The schema has additionalProperties: true, offering no guidance, and the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Run' and identifies the resource as a 'bounded runtime smoke scenario plan', which distinguishes it from sibling tools like 'add_breakpoint' or 'start_debug'. However, the jargon 'bounded runtime smoke scenario plan' may be unclear to an agent unfamiliar with the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The sibling list contains many debug and UI tools, but no analog to 'run_runtime_smoke', leaving the agent to infer context. The description does not indicate prerequisites, ordering, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_cleanup_contractADestructiveIdempotent
Clear runtime-smoke contamination after failed or timed-out cleanup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true. The description adds context about the specific scenario (failed/timed-out cleanup) and the action ('Clear contamination'), which is useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose without any wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and annotations that cover destructive/idempotent behavior, the description fully explains the tool's purpose and context of use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. The description does not need to add parameter details, and zero parameters merit a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Clear') and resource ('runtime-smoke contamination') and provides context ('after failed or timed-out cleanup'), clearly distinguishing it from sibling runtime_smoke tools like start, stop, or validate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool (after failed or timed-out cleanup), providing clear context. It does not mention when not to use it or alternatives, but the use case is narrow and well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_evidence_bundleCRead-only
Return a compact evidence packet for a durable runtime smoke run.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| agent_mode | No | ||
| event_limit | No | ||
| after_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, making the read-only nature clear. The description adds no extra behavioral context beyond 'Return', such as what the evidence packet contains or potential side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence. It is front-loaded and to the point, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and many sibling tools, the description fails to adequately inform the agent about return format, pagination, or how to effectively use the parameters. The tool's behavior in different scenarios is opaque.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain any of the 4 parameters (run_id, after_cursor, event_limit, agent_mode). The agent receives no help understanding parameter meaning or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a compact evidence packet for a smoke run, using specific verb and resource. However, it does not differentiate this from sibling tools like runtime_smoke_get_result or runtime_smoke_get_event_delta.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like runtime_smoke_get_result. The description does not mention prerequisites or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_get_event_deltaCRead-only
Return bounded lifecycle events after a cursor token.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | Yes | ||
| agent_mode | No | ||
| event_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, indicating safe read operation. The description adds that events are 'bounded' and 'lifecycle' and uses a cursor token, providing some behavioral context beyond annotations. However, it does not explain what 'bounded' means or how cursors work.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core action. It is concise but could include additional context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters (including a nested cursor object), no output schema, and many siblings, the description is minimal. It does not explain 'lifecycle events', cursor semantics, return format, or error conditions, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema), so the description must compensate. It only mentions 'cursor token' but fails to explain event_limit (default 50, max events) or agent_mode (default false, purpose unclear). The cursor object is left opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('bounded lifecycle events') with condition ('after a cursor token'). It is clear about what the tool does but does not differentiate from siblings like 'get_trace_delta' or 'runtime_smoke_tail_events'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. There are many sibling tools with similar themes (e.g., runtime_smoke_tail_events, get_trace_delta, runtime_smoke_mark_event_cursor) but the description gives no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_get_resultBRead-only
Return the final runtime smoke envelope when a durable run completes.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true, indicating a safe read operation. Description adds that it returns the 'final' envelope upon completion, but does not disclose behaviors like whether it blocks or requires a valid run state. With annotations present, the description contributes marginally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, one sentence. Front-loaded with key information. However, it could be slightly improved by including parameter context without major length increase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, no output schema, and many sibling runtime_smoke tools, the description is incomplete. It does not explain what a 'runtime smoke envelope' is, how to obtain a valid run_id, or the expected sequence of calls. Lacks sufficient context for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter 'run_id'. The description does not explain what run_id refers to (e.g., from runtime_smoke_start) or any constraints. For a parameter with no schema description, the tool description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns the final runtime smoke envelope when a durable run completes. Verb 'Return' and specific resource 'final runtime smoke envelope' are identifiable, but it does not differentiate from sibling tools like runtime_smoke_validate_probe or runtime_smoke_wait_for_result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage when a durable run completes, but does not explicitly state when to call it (e.g., after runtime_smoke_run_plan) or when not to use it. No alternatives or exclusions mentioned, leaving ambiguity among the many runtime_smoke siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_mark_event_cursorBRead-only
Return a compact cursor token for the current durable run event position.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| agent_mode | No | ||
| include_debug_output | No | ||
| include_trace_source | No | ||
| include_app_diagnostics | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description adds limited behavioral detail. It describes the output as a compact cursor token, providing some context beyond the annotation. However, it does not disclose any other behaviors like side effects or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that delivers the core purpose immediately. While efficient, it could be slightly expanded to cover parameters without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five parameters (one required) and no output schema, the description is insufficient. It does not explain the purpose of optional parameters or the format of the returned cursor token, leaving the agent underinformed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain any of the five parameters. The agent receives no guidance on the meaning or usage of 'run_id', 'agent_mode', 'include_debug_output', 'include_trace_source', or 'include_app_diagnostics'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and specifies the resource as 'compact cursor token for the current durable run event position.' It clearly distinguishes from sibling tools like 'mark_trace_cursor' by focusing on durable run events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of prerequisites, scenarios, or when not to use it. The description only states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_run_planCDestructive
Validate then start a durable runtime smoke run.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | ||
| plan_path | No | ||
| agent_mode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's 'start' matches that. The word 'durable' hints at persistence, but no further behavioral traits (e.g., side effects, reversibility) are disclosed beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It could be expanded slightly to include key details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 opaque parameters, the description fails to provide sufficient context. It does not clarify return values, parameter selection criteria, or the meaning of 'durable'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for 3 parameters. The description omits any explanation of 'plan', 'plan_path', or 'agent_mode', leaving the agent without guidance on how to populate these fields or their relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates then starts a 'durable runtime smoke run', using specific verbs and resource. This distinguishes it from siblings like runtime_smoke_start (just start) and runtime_smoke_validate_plan (just validate).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the separate validate or start tools. There are no prerequisites, exclusions, or context given for selection among the many runtime smoke related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_run_probeCDestructive
Validate then start a durable runtime-smoke v2 run for one probe.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| phase | No | after | |
| probe | Yes | ||
| budgets | No | ||
| agent_mode | No | ||
| debug_preflight | No | ||
| tracepoint_guard | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the destructiveHint annotation by mentioning 'durable' and the two-step process ('validate then start'). However, it does not explain what 'durable' entails, what happens on validation failure, or other side effects. Given annotations already signal destructiveness, the description provides some but limited additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is short and front-loaded with the action. It uses no unnecessary words. However, for the tool's complexity (7 parameters, no schema descriptions), it could benefit from a structured format like bullet points to aid reading. Overall, it is concise but slightly under-specific.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects, no output schema, 0% schema coverage), the description is far from complete. It omits details on validation criteria, return values, and parameter effects. A more comprehensive description is needed for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 7 parameters, the description adds almost no parameter semantics. It only implies the 'probe' parameter is a single probe, but other parameters like 'name', 'phase', 'budgets', etc., remain unexplained. The tool's purpose suggests parameter context, but the description fails to provide it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates and starts a durable runtime-smoke v2 run for one probe. It specifies the action (validate then start) and the resource (run for one probe). However, it does not explicitly differentiate from sibling tools like runtime_smoke_start or runtime_smoke_validate_probe, which may cause confusion among the many smoke-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or comparisons to other runtime_smoke_* tools are mentioned, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_startBDestructive
Start a durable runtime smoke run and return a run id.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true, so the description's 'Start' is consistent. The description adds that it returns a run id, but does not disclose side effects or behaviors beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 10 words, no filler. Efficiently communicates the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a complex nested object parameter and many sibling tools, the description is too terse. It does not explain what a 'durable runtime smoke run' entails, how to structure the plan, or how the returned run id is used.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'plan' (object with additionalProperties) has no description in the schema (0% coverage). The tool description provides no details about what the plan should contain, leaving the agent uninformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Start'), the resource ('durable runtime smoke run'), and the outcome ('return a run id'). This verb+resource combination distinguishes it from sibling tools like runtime_smoke_run_plan or runtime_smoke_run_probe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as runtime_smoke_run_plan or runtime_smoke_run_probe. No mention of prerequisites or postconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_stopCDestructiveIdempotent
Idempotently stop a durable runtime smoke run and return cleanup evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint and idempotentHint. The description adds 'idempotently stop' and 'return cleanup evidence', adding some behavioral context. No contradiction, but missing details on error states or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is excessively brief. It lacks essential information about the parameter and usage, making it underspecified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of durable runtime smoke runs, many sibling tools, and no output schema, the description is incomplete. It omits what 'cleanup evidence' means, prerequisites, and error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no explanation of the run_id parameter beyond its name. The agent receives no guidance on how to obtain or format this required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stops a durable runtime smoke run and returns cleanup evidence. It uses a specific verb and resource, but does not differentiate from sibling tools like runtime_smoke_cleanup_contract or runtime_smoke_get_result.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It does not mention prerequisites, when not to use it, or provide any context about its role among many runtime_smoke_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_tail_eventsCRead-only
Tail bounded lifecycle events for a durable runtime smoke run.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| run_id | Yes | ||
| after_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, making safety clear. The description adds 'tail' and 'bounded' but does not explain behavior like pagination, blocking, or what constitutes 'bounded.' No conflicts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks essential structure. It omits parameter explanations and usage context, making it too sparse for a tool with 3 parameters and no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 0% parameter documentation, the description should explain the return format and parameter semantics. It fails to provide enough context for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no parameter details. It does not explain run_id, after_cursor, or limit, leaving the agent to infer from schema names alone. This is insufficient for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Tail' and resource 'bounded lifecycle events' clearly indicate the tool's function. It distinguishes itself from sibling tools like runtime_smoke_get_event_delta by implying continuous/paginated retrieval rather than a single snapshot. However, the term 'bounded' is ambiguous without context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., runtime_smoke_get_event_delta or runtime_smoke_get_result). The description does not mention prerequisites, context, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_validate_planARead-only
Validate a runtime-smoke plan without launching or touching a target app.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | ||
| plan_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds that the tool does not launch or touch the app, reinforcing the safe, non-destructive behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous information, perfectly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 optional params, no output schema, safe annotations), the description is nearly sufficient but lacks any indication of the return value or validation result format, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description completely ignores the two parameters (plan and plan_path) despite 0% schema description coverage. It adds no meaning beyond what the schema provides (names and types), failing to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('validate') and resource ('runtime-smoke plan') and clearly distinguishes from siblings by emphasizing it does not launch or touch the target app, differentiating it from active tools like runtime_smoke_run_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for pre-run validation but does not explicitly state when not to use it or mention alternative tools. It provides basic context but lacks comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_validate_probeCRead-only
Validate one generated probe plan and return agent-mode run guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| phase | No | after | |
| probe | Yes | ||
| budgets | No | ||
| agent_mode | No | ||
| debug_preflight | No | ||
| tracepoint_guard | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description's mention of 'validate' and 'return guidance' is consistent. However, it provides no additional behavioral context beyond the annotations, such as side effects or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that clearly states the main action and output. It is front-loaded but lacks structured layout. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description is insufficient for an agent to use the tool correctly. It omits parameter details, return values, and contextual information about validation results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the 7 parameters (e.g., probe, name, phase, budgets). The agent cannot determine parameter roles from the description alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a generated probe plan and returns agent-mode run guidance, distinguishing it from similar siblings like runtime_smoke_validate_plan by specifying the output type. However, it does not explicitly differentiate from all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as runtime_smoke_validate_plan or runtime_smoke_run_probe. No prerequisites or context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_smoke_wait_for_resultCRead-only
Wait for a durable runtime smoke run and return compact evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| agent_mode | No | ||
| timeout_ms | No | ||
| event_limit | No | ||
| after_cursor | No | ||
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is consistent with a waiting/observing tool, but the description adds minimal behavioral context. It does not explain the polling mechanism, timeout behavior, or what 'compact evidence' entails, leaving important behavior undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), but it sacrifices informativeness for brevity. While concise, it omits critical details about usage, parameters, and return value, making it under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 0% parameter documentation, the description is severely incomplete. The agent cannot infer the return format, behavior, or parameter meanings, which is insufficient for reliable tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation of any parameters. Key parameters like run_id, timeout_ms, and agent_mode remain completely opaque, forcing the agent to rely solely on parameter names or external knowledge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (wait) and the resource (durable runtime smoke run). However, it does not differentiate from closely related sibling tools like runtime_smoke_get_result or runtime_smoke_tail_events, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The sibling set includes many smoke test tools, and the description lacks any hints about selection criteria or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_outputARead-onlyIdempotent
Search program output for a pattern (regex supported).
Use this instead of get_output when looking for specific messages, errors, or log entries in large output. Returns matching lines with context.
Args: pattern: Regex pattern to search for (case-insensitive) context_lines: Number of lines before/after each match (default 2) category: Filter by category: "stdout", "stderr", or "console" (default: all)
Returns: List of matches with line numbers and context
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| category | No | ||
| context_lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds that regex is case-insensitive, returns matching lines with context, and explains parameter behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly concise: a one-line summary, followed by usage guidance, then parameter descriptions. Every sentence adds value; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully explains the tool's purpose, usage, parameters, and return value. Without output schema, the description of 'List of matches with line numbers and context' is sufficient. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining pattern (regex, case-insensitive), context_lines (number, default 2), and category (filter by 'stdout', 'stderr', or 'console', default all). Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Search program output for a pattern (regex supported)' and distinguishes from get_output by specifying when to use it for looking for specific messages/errors/log entries in large output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends 'Use this instead of get_output when looking for specific messages, errors, or log entries in large output,' providing clear context for when to choose this tool over its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sourceCRead-onlyIdempotent
Run a bounded regex search across project source files.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | ||
| file_glob | No | ||
| max_results | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe, read-only operation. The description adds 'bounded' but does not elaborate on behavioral traits beyond what annotations convey, such as how bounds are enforced or what the search scope entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but overly minimal. It sacrifices essential details for brevity, resulting in a structure that is too terse to be fully useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, an output schema, and moderate complexity, the description fails to explain key aspects like the role of 'file_glob', the behavior of 'bounded', or the format of results. The output schema may cover return values, but parameter guidance is severely lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning no parameter explanations exist in the schema. The description provides no additional meaning for parameters like 'pattern', 'file_glob', 'timeout_seconds', or 'max_results', leaving the agent without critical usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run') and resource ('bounded regex search across project source files'), and it distinguishes from siblings like 'search_output' which targets output instead of source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives (e.g., 'search_output'). Usage is implied by the name and context, but no guidance on exclusions or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_variableA
Set a variable's value during debugging.
State: STOPPED required.
Modifies a variable in the current scope. The program must be stopped. Use get_variables first to find the variables_reference for the scope.
Args: variables_reference: Reference from get_scopes or get_variables name: Variable name to modify value: New value as a string expression
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes | ||
| variables_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool modifies a variable, requires a stopped state, and expects parameters from related tools. It includes an escape hatch for advanced use. Annotations provide only openWorldHint, so the description carries full responsibility, and it covers the key behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear first line stating the purpose, followed by required state and parameter details. Every sentence serves a purpose, and the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's functionality and parameter usage for a debugging context. It mentions the escape hatch for advanced cases. However, it could be improved by noting potential error conditions or the scope of variable modification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must add meaning. It explains each parameter: variables_reference as from get_scopes or get_variables, name as variable name, value as a string expression. This adds necessary context beyond mere types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Set a variable's value during debugging.' It specifies the resource (a variable in the current scope) and distinguishes it from other debug tools like get_variables or evaluate_expression.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit prerequisites: 'State: STOPPED required' and 'The program must be stopped.' It also advises to use get_variables first to obtain the variables_reference. However, it does not explicitly mention alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_debugA
Start debugging a .NET program. RECOMMENDED for most debugging scenarios.
This is the preferred method for debugging .NET applications. It launches a new process under the debugger with full feature support including:
Complete call stack visibility
Full variable inspection
All breakpoint features
SMART RESOLUTION: For .NET 6+ apps (WPF/WinForms), automatically resolves .exe to .dll to avoid "deps.json conflict" errors. You can pass either App.exe or App.dll - the correct target will be selected automatically.
PRE-BUILD: By default, builds the project before launching to ensure you're debugging the latest code. Provide build_project path to .csproj file. Set pre_build=False to skip building (e.g., for pre-built binaries).
BUILD WARNINGS: Hidden by default to reduce noise. If the build succeeds but the app behaves unexpectedly, call get_build_diagnostics() to see all warnings — they may reveal the issue.
Use attach_debug only for already-running processes (e.g., ASP.NET services).
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: program: Path to the .NET executable or DLL to debug (auto-resolved) cwd: Working directory for the program args: Command line arguments env: Environment variables launch_profile: Optional project launch profile name stop_at_entry: Stop at entry point pre_build: Build project before launching (default: True). Requires build_project. build_project: Path to .csproj file (required when pre_build=True) build_configuration: Build configuration (Debug/Release) stealth_mode: Avoid foreground-stealing UI actions for GUI debugging
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| env | No | ||
| args | No | ||
| program | Yes | ||
| pre_build | No | ||
| stealth_mode | No | ||
| build_project | No | ||
| stop_at_entry | No | ||
| launch_profile | No | ||
| build_configuration | No | Debug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: launches new process under debugger with full features, automatic .dll resolution for .NET 6+, default pre-build, hidden build warnings with option to retrieve via get_build_diagnostics, and stealth mode. Does not contradict annotations (openWorldHint=false). Could mention that launching a process is not read-only, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with named sections (SMART RESOLUTION, PRE-BUILD, BUILD WARNINGS). Each sentence adds value. Concise yet informative, front-loaded with main purpose and key features.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers smart resolution, pre-build, build warnings, stealth mode, and alternatives. Given 10 parameters and no output schema, description provides sufficient context for agent to use tool correctly. Could mention error handling or session management, but references sibling tools for diagnostics and stopping.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains all parameters in the Args section, including auto-resolution for 'program', defaults and conditions for 'pre_build' and 'build_project', and purpose of 'stealth_mode'. Adds meaning beyond parameter names, though not all parameters have detailed constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the tool as starting debugging for .NET programs. Uses specific verb 'Start debugging' and resource '.NET program'. Distinguishes from sibling 'attach_debug' by stating it's for launching new processes, not attaching to running ones. Includes recommendations like 'RECOMMENDED' and 'preferred method'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('most debugging scenarios'), when to use alternatives ('Use attach_debug only for already-running processes'), and provides conditional guidance (pre_build, build_project required). Also mentions escape hatch for DAP requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_intoA
Step into the next function call. Blocks until the step completes.
State: STOPPED required.
Enters the function being called on the current line. Use this when you need to investigate what happens inside a called function.
When multiple calls exist on one line, call get_step_in_targets first and pass the desired target's id via target_id.
IMPORTANT: After this returns with state=stopped, you are inside the called function. Use step_out to return to the caller.
Args: thread_id: Thread to step (uses current thread if omitted) target_id: Specific step-in target ID from get_step_in_targets
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | No | ||
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes blocking behavior, required state (STOPPED), and result state (stopped inside function). No annotations to contradict, and description adds valuable behavioral context beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections for purpose, state requirement, usage, arguments, and escape hatch. Each sentence is informative, though slightly verbose; could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects: blocking, state management, argument usage, and relation to sibling tools. Lacks return value details due to no output schema, but this is acceptable given the tool's nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains both parameters: thread_id (optional, uses current thread) and target_id (optional, derived from get_step_in_targets). Adds meaning beyond the schema's titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Step into the next function call' and explains it enters the called function. Distinguishes from sibling tools like step_out and step_over by mentioning when to use them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: use when investigating inside a called function, recommends get_step_in_targets for multiple calls on one line, and advises step_out to return. Does not explicitly state when not to use, but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_outB
Step out of the current function. Blocks until the step completes.
State: STOPPED required.
Continues execution until the current function returns, then stops at the caller. Use this to exit a function you stepped into.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no read/write hints. The description adds some behavioral context: blocks until complete, continues execution then stops at caller. But it does not disclose side effects or what happens to the state beyond the required STOPPED state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise (5 lines) and front-loaded with the core purpose. The 'Escape hatch' line is slightly extraneous but does not significantly harm conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the one optional parameter, no output schema, and minimal annotations, the description covers the basic operation but misses parameter explanation and potential side effects. It does not contrast with sibling tools beyond mentioning stepping into.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional parameter (thread_id) with no description in the schema. The tool description does not mention this parameter at all, leaving the agent uninformed about when or why to provide it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Step out of the current function' with a specific verb and resource. It distinguishes from siblings like step_into and step_over by explaining it exits a function you stepped into.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance: 'Use this to exit a function you stepped into' and mentions required state ('State: STOPPED required'). However, it does not explicitly state when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_overA
Step over to the next line. Blocks until the step completes.
State: STOPPED required.
Executes the current line without entering function calls. Returns the new stopped location with source context.
IMPORTANT: After this returns with state=stopped, inspect variables at the new location before deciding the next action.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes blocking behavior, state requirement, effect of not entering functions, and return of new location. With minimal annotations (only openWorldHint=false), this adds significant behavioral insight, though it doesn't cover potential side effects like variable changes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized: action, requirement, behavior, important note, escape hatch. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core stepping behavior, state requirement, and return info. Lacks explanation of thread_id parameter, but given optional nature and presence of sibling step tools, it is largely complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter thread_id is not mentioned in the description (0% schema coverage). While its purpose may be inferred, the description does not clarify its role or default behavior, leaving ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Step over to the next line' and 'Executes the current line without entering function calls', clearly defining the action and distinguishing it from step_into and step_out among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prerequisite 'State: STOPPED required' is given, and the post-action instruction to inspect variables provides usage context. However, it does not explicitly compare with step_into/step_out or mention when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_debugBDestructive
Stop the current debug session.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the destructive nature is clear. The description adds that it stops the session but does not elaborate on side effects (e.g., whether breakpoints are cleared, state is lost). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences. The first sentence states the action, the second provides a helpful pointer to an alternative (DAP escape hatch). No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and annotations, the description is adequate but could be improved by specifying which debug session is affected (e.g., the session started by start_debug). It does not explain input-output expectations, but it's a simple stop action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description does not need to add parameter details. Baseline score of 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Stop the current debug session.' This is a specific verb-resource pair. However, among siblings there are similar tools like 'terminate_debug' and 'restart_debug', and the description does not explicitly differentiate from them, though the verb 'stop' is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance. It only mentions an 'escape hatch' for DAP requests but does not indicate when to use this tool versus alternatives (e.g., terminate_debug, pause_execution). There is no explicit advice on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_objectARead-onlyIdempotent
Produce a flattened summary of a complex object.
State: STOPPED required. Get variables_reference from get_variables() response.
Returns property paths (dot notation), values, and types up to the configured depth. Detects circular references.
Args: variables_reference: Variable reference from get_variables response max_depth: Maximum nesting depth (default 2, max 5) max_properties: Maximum total properties to return (default 50)
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | ||
| max_properties | No | ||
| variables_reference | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds returns format (dot notation), circular reference detection, and depth/property limits. Annotations already confirm read-only/idempotent; description enriches beyond.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose sentence first, then critical state requirement, then output format, then parameter list. No redundancy, efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All necessary context: state requirement, parameter sources, limits, and output format. No output schema needed given description clarity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description compensates fully with clear meaning for each parameter, including defaults and max values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Produce a flattened summary' specifies exact output. Distinguished from siblings like evaluate_expression by focusing on flattening complex objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies prerequisite: State STOPPED and source for variables_reference. Could mention alternatives for simple evaluations but otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terminate_debugADestructive
Gracefully terminate the debugged program.
Sends DAP terminate request for clean shutdown. Falls back to forced disconnect if adapter doesn't support terminate.
Use this instead of stop_debug when you want a graceful exit.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true, but description adds value: it sends DAP terminate request, falls back to forced disconnect, and is graceful. No contradictions. However, it could be more explicit about consequences like state loss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each adds value. Front-loaded with main action. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Input schema is empty, no output schema. Description covers behavior (graceful, DAP, fallback) adequately. Could mention requirement for active debug session, but it's implied. Fairly complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so baseline 4. The description does not need to explain parameters, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool terminates the debugged program gracefully, using DAP terminate request with fallback. It distinguishes from stop_debug by specifying 'graceful exit'. The verb 'terminate' and resource 'debugged program' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this instead of stop_debug when you want a graceful exit.' Also mentions 'Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.' Provides clear when-to-use and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_bring_to_frontA
Bring the debuggee window to the foreground and exit stealth mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the sparse annotations (only openWorldHint: false). It reveals that the tool exits stealth mode, which is a key side effect. Without annotations covering this, the description carries the burden and does so adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the essential purpose and behavior concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the action (no parameters, no output schema), the description is fully complete. It covers what the tool does and the key behavioral change (exiting stealth mode). No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description does not need to explain parameter semantics. Baseline for zero parameters is 4. The description does not add any param-related information because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: bring the debuggee window to the foreground and exit stealth mode. It uses specific verbs ('bring', 'exit') and a clear resource ('debuggee window', 'stealth mode'). This distinguishes it from sibling UI tools like ui_click or ui_set_focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (when you need the debuggee window visible and no longer in stealth mode), but it does not explicitly state when not to use it or mention alternatives. No guidance on exclusions or conflict with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_clickA
Click on a UI element.
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Tries cached coordinates first (from last ui_get_window_tree call), then falls back to pywinauto element search.
Args: automation_id: AutomationId property name: Element's Name/Title property control_type: Control type
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide openWorldHint=false, and the description adds caching and fallback details. No contradictions. However, the description does not disclose other behaviors like side effects, error handling, or waiting conditions beyond what is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear header, note, and explanation. It uses bullet points for parameters, which aids readability. No unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters with no schema descriptions, no output schema, and moderate complexity. The description fails to cover all parameters, does not explain return behavior, error cases, or preconditions beyond the breakpoint note. This leaves the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains 3 of 5 parameters (automation_id, name, control_type), but omits root_id and xpath entirely. Given 0% schema description coverage, the description partially compensates but leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Click on a UI element', which is a specific action on a specific resource. The name 'ui_click' and siblings like 'ui_double_click', 'ui_right_click', 'ui_click_annotated' help distinguish it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a note about resuming execution if app is stopped. It also explains the caching and fallback behavior, providing implicit guidance on when this tool is appropriate. However, it does not explicitly contrast with sibling tools or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_click_annotatedA
Click an element by its ID from ui_take_annotated_screenshot.
Uses the numbered element from the last annotated screenshot. Call ui_take_annotated_screenshot first to get element IDs.
Args: element_id: Element ID number from the annotated screenshot generation: Generation counter from the screenshot response (optional, warns if stale)
| Name | Required | Description | Default |
|---|---|---|---|
| element_id | Yes | ||
| generation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the prerequisite and the optional generation parameter for staleness warnings. Combined with the openWorldHint: false annotation, the agent understands this is a safe UI interaction without external side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear summary sentence followed by two short paragraphs. No redundant or vague statements. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters, and the description covers the essential process. It lacks error handling details but is sufficient for correct invocation given the annotated screenshot context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 0%, the description compensates by explaining element_id as 'Element ID number from the annotated screenshot' and generation as 'Generation counter from the screenshot response (optional, warns if stale)'. This adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'click' and the resource 'element by its ID from ui_take_annotated_screenshot'. It distinguishes from sibling tools like ui_click and ui_click_at by specifying annotated identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to call ui_take_annotated_screenshot first, and explains the purpose of the generation parameter. However, it does not contrast with alternatives such as ui_click or ui_click_at.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_click_atA
Click at absolute screen coordinates.
Use with ui_get_window_tree rectangle data when element search fails. Get coordinates from the 'rectangle' field in tree output. Click goes to the center: x = (left + right) / 2, y = (top + bottom) / 2
Args: x: Screen X coordinate y: Screen Y coordinate
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the single annotation (openWorldHint: false), the description reveals that the click goes to the center of the rectangle using the formula x = (left + right) / 2, y = (top + bottom) / 2. This adds meaningful behavioral context not present in annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no wasted words. It front-loads the purpose, then provides usage context, coordinate calculation, and parameter list in a structured format. Every sentence is necessary and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no output schema, no complex parameters), the description covers the essential use case, coordinate calculation, and parameter meaning. It does not discuss error behavior or return values, but those are likely obvious for a click action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description labels the parameters as 'Screen X coordinate' and 'Screen Y coordinate', which adds a bit of meaning beyond the schema's title fields. However, with 0% schema description coverage and only 2 parameters, more detail would have been beneficial, such as coordinate range or behavior outside bounds. The center calculation is behavioral, not strictly parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'click' and the resource 'absolute screen coordinates'. It distinguishes itself from sibling tools like ui_click and ui_click_annotated by specifying that it uses coordinates obtained from ui_get_window_tree rectangle data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use the tool with ui_get_window_tree rectangle data when element search fails, providing clear context for when to use it. It does not mention when not to use it or alternative tools, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_clipboard_readARead-only
Read text content from the system clipboard.
Executes on an STA thread inside the FlaUI bridge (required by System.Windows.Clipboard). Returns {text: "...", has_text: bool}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds value by disclosing the STA thread requirement and the exact return structure ({text, has_text}). This goes beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second adds technical context and return format. No filler; highly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with readOnly annotations, the description covers purpose, execution constraints, and return structure. Could mention behavior with empty clipboard or non-text content, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description correctly omits param details; baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads text from the system clipboard and provides the return format. The name 'ui_clipboard_read' is self-explanatory and distinguishes it from the sibling 'ui_clipboard_write'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidance when to use this tool versus alternatives. While the purpose is clear, the description lacks context such as 'use when you need to retrieve clipboard text'. The STA thread detail is technical, not usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_clipboard_writeA
Write text to the system clipboard.
Executes on an STA thread inside the FlaUI bridge (required by System.Windows.Clipboard). Supports full Unicode including emoji and CJK.
Args: text: The text to write to the clipboard.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it mentions execution on an STA thread via FlaUI bridge, and full Unicode support including emoji and CJK. Annotations only provide openWorldHint: false, offering no behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences plus an args section. It is front-loaded with the purpose, followed by technical detail, and then parameter documentation. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple write tool with one parameter and no output schema, the description covers purpose, technical constraints, and input format. However, it lacks information about return value or error conditions, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description repeats the parameter name 'text' with a minimal explanation ('The text to write to the clipboard'), adding little beyond the schema. While it mentions Unicode support, it does not specify length limits or special encoding requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Write text to the system clipboard', using a specific verb and resource. It clearly distinguishes from sibling tool ui_clipboard_read which reads clipboard content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit when-to-use or when-not-to-use guidance, nor does it reference alternatives like ui_clipboard_read. However, the purpose is self-evident, so it remains adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_close_windowA
Close a top-level window via WindowPattern.
After closing, subsequent ui_* calls return an error if the closed window was the active session window. Use window_title to target a specific window (e.g. a modal dialog); omit to close the main application window.
Args: window_title: Optional partial title match to target a specific window. Omit to target the main connected window.
| Name | Required | Description | Default |
|---|---|---|---|
| window_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses an important behavioral trait: after closing, subsequent ui_* calls return an error if the closed window was the active session window. This adds significant transparency beyond the annotations (openWorldHint false) and no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear purpose statement, a behavioral note, and a dedicated 'Args' section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description is complete. It covers the operation, side effects, and parameter usage sufficiently for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description fully explains the single parameter window_title: it is an optional partial title match, and omitting it targets the main connected window. This compensates completely for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Close a top-level window' and specifies the mechanism 'via WindowPattern'. It distinguishes from sibling tools by being the dedicated close operation for windows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use the optional window_title parameter: to target a specific window like a modal dialog, and to omit to close the main application window. However, it does not explicitly mention when not to use the tool or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_collapseA
Collapse a TreeView node, ComboBox dropdown, or other collapsible element.
Uses ExpandCollapsePattern. Collapsing an already-collapsed element is safe and returns {collapsed: true, was_already: true}.
Args: automation_id: AutomationId of the element to collapse.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the minimal annotations: it specifies the use of ExpandCollapsePattern, the safety of collapsing already-collapsed elements, and the return object structure. This is helpful for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences that cover purpose, key behavioral detail, and parameter. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one required parameter, no output schema, no nested objects), the description is fully complete. It covers the core functionality, safe usage, parameter definition, and return value shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the single parameter 'automation_id' as 'AutomationId of the element to collapse', adding meaning beyond the schema which only defines its type. With 0% schema description coverage, this compensation is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool collapses TreeView nodes, ComboBox dropdowns, or other collapsible elements. It uses a specific verb and resource, and distinguishes itself from sibling tools like ui_expand.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions that collapsing an already-collapsed element is safe, which is a useful guideline. However, it does not explicitly compare with alternatives like ui_expand or ui_toggle, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_diffCRead-only
Diff two named UI snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| after | Yes | ||
| before | Yes | ||
| fields | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, so the description adds no further behavioral context. It does not explain what 'Diff' entails (e.g., output format, side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only one sentence, which is too brief to convey necessary information. It sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and parameter descriptions, the description is severely incomplete. It fails to explain the return value or the role of 'fields', leaving the agent with insufficient information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no parameter explanations in the description, the meaning of 'before', 'after', and especially 'fields' is unclear. The description adds no value beyond parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb 'Diff' and resource 'two named UI snapshots', making the purpose understandable. However, it does not differentiate from the sibling tool 'diff_snapshots'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'diff_snapshots', nor any exclusions or contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_double_clickC
Double-click on a UI element.
Tries cached coordinates first, then falls back to pywinauto element search.
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Args: automation_id: AutomationId property name: Element's Name/Title property control_type: Control type
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only openWorldHint). The description mentions caching and fallback search, but does not disclose destructiveness, focus requirements, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is short and to the point, with a breakpoint note. The Args listing is clear but could integrate remaining parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 optional parameters and no output schema, the description leaves gaps: no info on waiting, timeouts, or element not found behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It lists only 3 of 5 parameters in Args, omitting root_id and xpath. No explanation of how parameters interact or which are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a double-click on a UI element. It mentions fallback behavior but does not explicitly differentiate from sibling tools like ui_click or ui_right_click.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a note about resuming the app if stopped at a breakpoint, but lacks explicit guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_dragA
Drag from one position to another.
Two modes:
By AutomationId: from_automation_id + to_automation_id (uses cached rectangles)
By coordinates: from_x, from_y, to_x, to_y (absolute screen coords)
For mode 1, call ui_get_window_tree first to populate cache.
Args: from_automation_id: Source element AutomationId to_automation_id: Target element AutomationId from_x: Source X coordinate (screen absolute) from_y: Source Y coordinate to_x: Target X coordinate to_y: Target Y coordinate speed_ms: Total drag duration in milliseconds. Minimum 20 ms so the gesture always emits enough waypoints to cross common WPF drag thresholds reliably. hold_modifiers: Optional modifier names to hold for the full drag. Accepted values: ctrl, shift, alt, win.
Notes: - Identical from/to coordinates are rejected. - Short drags that stay below the system drag threshold should use ui_click instead of ui_drag.
| Name | Required | Description | Default |
|---|---|---|---|
| to_x | No | ||
| to_y | No | ||
| from_x | No | ||
| from_y | No | ||
| speed_ms | No | ||
| hold_modifiers | No | ||
| to_automation_id | No | ||
| from_automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors beyond the minimal annotation (openWorldHint: false): rejects identical coordinates, enforces minimum speed_ms of 20 ms for reliable drag thresholds, and describes optional modifier support. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (modes, args, notes). No redundant or irrelevant information. Each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, no output schema, and extensive sibling tools, the description is complete: covers prerequisites, edge cases (identical coordinates, short drags), and alternatives. An agent can use this tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must explain all parameters. It does so comprehensively: defines each coordinate and automation ID, explains speed_ms minimum and purpose, and lists accepted modifier values. Adds essential context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Drag from one position to another' and defines two distinct modes (By AutomationId and By coordinates). It differentiates from sibling tools like ui_click by specifying when to use that alternative (short drags).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: when to use each mode, prerequisite for mode 1 (call ui_get_window_tree first), and conditions to use ui_click instead. This helps the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_eventsC
Start, read, or stop a bounded selector-scoped UI event buffer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| action | Yes | ||
| fields | No | ||
| root_id | No | ||
| buffer_id | Yes | ||
| max_events | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'bounded' and 'selector-scoped' but does not disclose side effects, whether events are persistent, or requirements (e.g., running UI session). With minimal annotations, the description should provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but too sparse for a complex tool. It front-loads the key actions but omits essential details, sacrificing clarity for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, and no enum hints, the description is grossly incomplete. An agent cannot infer how to specify the selector (e.g., via root_id/xpath) or interpret return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description does not explain any of the 9 parameters. 'action' and 'buffer_id' are required but their allowed values are not specified. Parameters like 'fields', 'automation_id', 'root_id' are unexplained, making correct invocation unlikely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as managing a 'bounded selector-scoped UI event buffer' with three actions (start, read, stop). It distinguishes from sibling tools that perform individual UI actions. However, it lacks definition of 'selector-scoped' and what events are captured.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ui_query or ui_snapshot. No prerequisites or context provided for starting/reading/stopping a buffer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_expandA
Expand a TreeView node, ComboBox dropdown, or other collapsible element.
Uses ExpandCollapsePattern. Expanding an already-expanded element is safe and returns {expanded: true, was_already: true}.
Args: automation_id: AutomationId of the element to expand.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it uses ExpandCollapsePattern, that it's safe to call on already-expanded elements, and the return format. However, it does not specify if the element must be visible or enabled, or any other side effects. Annotations are minimal (only openWorldHint), so description carries burden but has gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence for purpose, one for safety and return, and a clear Args section. Every sentence adds value, and it is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the operation, safety, and return format. It provides enough context for an agent to use it correctly. Minor missing details (e.g., visibility requirements) are not critical given its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, automation_id, is described as 'AutomationId of the element to expand.' This adds meaning beyond the schema (which only provides title and type), but given the schema coverage is 0%, the description provides necessary context. Adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: expand a TreeView node, ComboBox dropdown, or other collapsible element. It uses a specific verb and resource, and distinguishes from siblings like ui_collapse and ui_toggle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that expanding an already-expanded element is safe, but does not explicitly state when to use this tool over alternatives like ui_toggle or ui_invoke. No contraindications or usage context beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_file_dialogA
Complete a standard Windows Open/Save file dialog in a single call.
Enters the file path and clicks the accept button. Handles the standard Win32 dialog layout (File name ComboBox + Open/Save button) with multi-strategy fallback for different dialog variants.
Args: path: Full file path to enter (e.g. "C:/data/test.txt") accept_button: Name of accept button (default "Open", use "Save" for save dialogs)
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| accept_button | No | Open |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the action (enters path, clicks accept) and the multi-strategy fallback for different dialog variants. Since annotations only provide openWorldHint=false (no readOnlyHint/destructiveHint), the description fully discloses the mutating UI interaction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (three short sentences) and front-loads the main purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a simple UI interaction, the description covers purpose, parameters, and behavioral fallback. It lacks explicit error handling or success/failure conditions, but is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds essential meaning: example path format, explanation of accept_button default and usage ('Open' vs 'Save'). This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it completes a standard Windows Open/Save file dialog in a single call by entering the file path and clicking the accept button. This distinguishes it from sibling UI tools that require multiple steps, like ui_click or ui_send_keys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates it is designed for standard Win32 file dialogs and mentions a default button value of 'Open' with 'Save' for save dialogs. It implies when to use but does not explicitly exclude alternative approaches or non-standard dialog variants.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_find_elementARead-onlyIdempotent
Find a UI element by AutomationId, name, control type, or XPath.
At least one search criterion must be provided. Use ui_get_window_tree first to discover available elements.
Args: automation_id: AutomationId property (most reliable for WPF) name: Element's Name/Title property control_type: Type like "Button", "TextBox", "MenuItem" root_id: Optional AutomationId to scope search to a subtree xpath: Optional XPath expression (FlaUI backend only)
Returns: Element info if found
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true and idempotentHint=true, so the description's additional context about requiring at least one criterion and returning element info supplements these. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a single introductory sentence followed by bullet-point arguments. It front-loads the primary action and constraints without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema), the description covers the main return behavior ('Element info if found') and mentions prerequisites. It could specify search priority or error cases, but is adequate for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all five parameters with brief explanations (e.g., 'automation_id: AutomationId property (most reliable for WPF)'). This adds essential meaning, though some details (e.g., XPath backend) are omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and resources: 'Find a UI element by AutomationId, name, control type, or XPath.' It clearly distinguishes from siblings like ui_click (action) and ui_get_window_tree (tree retrieval) by focusing on locating elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It advises using ui_get_window_tree first to discover elements and states that at least one search criterion is required. While it doesn't explicitly list alternatives, the guidance is clear and contextual.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_focusARead-only
Read bounded focus evidence for a selector without moving focus.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| action | Yes | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description confirms no side effects with 'without moving focus', and the readOnlyHint annotation already indicates safety. No additional behavioral details are provided, such as what 'bounded focus evidence' means or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is efficiently front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema, UI context), the description fails to explain what 'bounded focus evidence' is or how to use parameters. The agent lacks guidance for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 6 parameters with 0% description coverage, and the tool description does not explain any parameters, including the required 'action' field. This leaves the agent guessing about valid values and usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read bounded focus evidence for a selector without moving focus', specifying the action (read) and the resource (focus evidence). This distinguishes it from sibling tools like ui_set_focus and ui_get_focused_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that the tool is read-only and does not move focus, but does not explicitly state when to use it over alternatives or when not to use it. The readOnlyHint annotation reinforces the non-destructive nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_get_focused_elementARead-onlyIdempotent
Get information about the currently focused UI element.
Returns the focused element's automationId, name, controlType, and value. Useful for verifying focus state after ui_set_focus or tab navigation.
Note: Returns focus within the app window, not always OS-level dialogs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return fields (automationId, name, controlType, value) and scope limitation (app window vs. OS dialogs). Annotations already indicate readOnly and idempotent, but description adds valuable context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no waste. Front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple (0 params), and description covers return values and a key limitation. No output schema needed given the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Description correctly does not add param info, earning baseline 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Get information about the currently focused UI element.' Distinguishes from sibling UI tools like ui_set_focus and ui_find_element.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it's useful for verifying focus after ui_set_focus or tab navigation. Also notes limitation about OS-level dialogs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_get_held_modifiersARead-onlyIdempotent
Inspect currently held modifiers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description adds minimal value. It confirms the tool is read-only but doesn't disclose return format or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded, no wasted words. Perfectly concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal description with no output schema; agent may lack details on what 'modifiers' includes (e.g., list of strings). Adequate for a simple read but could specify return type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters with 100% schema coverage; the description adds no parameter details, which is acceptable. Baseline 4 for no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Inspect currently held modifiers' clearly states the action (inspect) and the resource (currently held modifiers). It distinguishes from siblings like ui_hold_modifiers and ui_release_modifiers by focusing on inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention checking modifiers before interactions or any context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_get_selected_itemARead-onlyIdempotent
Get the currently selected item in a list/grid control.
Returns the selected item's name, index, and properties. Useful for verifying selection state after clicks or keyboard navigation.
Note: FlaUI backend returns selection for the first item only. Use ui_find_element to inspect individual items for full multi-selection state.
Args: automation_id: AutomationId of the list/grid/combobox control root_id: Optional AutomationId to scope search to a subtree xpath: Optional XPath expression (FlaUI backend only)
| Name | Required | Description | Default |
|---|---|---|---|
| xpath | No | ||
| root_id | No | ||
| automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds a critical backend-specific limitation ('FlaUI backend returns selection for the first item only'), which is valuable beyond annotations. However, it does not specify behavior when no item is selected or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (5 sentences plus argument list) and front-loaded with the primary purpose. Every sentence adds value without redundancy. The arguments are clearly listed with inline definitions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 params, no output schema), the description covers the core functionality and parameter semantics. It mentions what is returned (name, index, properties) but omits details on handling empty selections or errors, which would be helpful for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to all three parameters: automation_id is the AutomationId of a list/grid/combobox control; root_id scopes the search; xpath is an optional XPath expression available only in FlaUI backend. Since the input schema has 0% description coverage, the description fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'currently selected item in a list/grid control'. It distinguishes from sibling tools like ui_find_element by explicitly noting that it returns only the first item in multi-selection, whereas ui_find_element can inspect individual items for full state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use ('useful for verifying selection state after clicks or keyboard navigation') and when not to use ('Use ui_find_element to inspect individual items for full multi-selection state'). This directly addresses alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_get_window_treeARead-onlyIdempotent
Get the visual tree of the debugged application — ALL top-level windows.
Covers the main app window and any sibling windows (modal dialogs, popups, file pickers) owned by the same process. Modal dialogs created via WPF Window.ShowDialog() are sibling top-level windows, not descendants of the main window — they appear in the "windows" array alongside the main window.
Call after start_debug and wait for the application window to appear.
Args: max_depth: Maximum depth to traverse within each window (default 3) max_children: Maximum children per element (default 50)
Returns: FlaUI backend: {"windows": [tree, ...], "count": N, "primary": "Main App"} Each tree entry carries automationId, controlType, name, rect, children, etc. Use ui_switch_window to retarget subsequent calls at a specific window (e.g. a modal dialog).
pywinauto fallback backend: a single-window tree dict with
automationId/name/rect/children at the root (no windows array,
no count, no primary). Callers that need to support both
backends should probe for the "windows" key and fall back to
treating the response itself as a single-window tree.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | ||
| max_children | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give readOnlyHint and idempotentHint. Description adds significant context: explains window hierarchy (modal dialogs are siblings), details return format differences between FlaUI and pywinauto backends, and notes that 'windows' array includes main window and siblings. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structured with paragraphs: main purpose, behavioral nuance, prerequisite, parameters, return format. Front-loaded with key info. Slightly long but every sentence adds value; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites, parameters, return details for two backends, and related tool. No output schema but description compensates. Could mention error conditions (e.g., no debug session) but overall complete given tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (coverage 0%). Description clearly explains both parameters: max_depth (default 3) and max_children (default 50), adding meaning beyond schema. Could further clarify edge cases (e.g., depth=0), but adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the visual tree of the debugged application, explicitly noting it covers ALL top-level windows. It distinguishes from siblings by explaining that modal dialogs from ShowDialog() are sibling top-level windows, not descendants, which differentiates it from tools like ui_find_element that target specific elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage guidance: call after start_debug and wait for window. Mentions using ui_switch_window to retarget later calls. Lacks explicit alternatives or when-not-to-use, but the description of backend differences and focused purpose compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_gridC
Read, select, or assert WPF DataGrid row evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| rows | No | ||
| phase | No | ||
| xpath | No | ||
| action | Yes | ||
| column | No | ||
| expect | No | ||
| columns | No | ||
| root_id | No | ||
| row_key | No | ||
| identity | No | ||
| end_index | No | ||
| row_index | No | ||
| probe_name | No | ||
| max_scrolls | No | ||
| start_index | No | ||
| control_type | No | ||
| automation_id | No | ||
| ensure_visible | No | ||
| scroll_settle_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include openWorldHint=false, which is not explained or expanded upon. The description does not disclose side effects, permissions, or whether operations are read-only or destructive beyond implying multiple modes (read/select/assert).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no fluff, but it may be too terse given the tool's complexity. While concise, it sacrifices necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 20 parameters, no output schema, and high complexity, the description is severely incomplete. It does not explain actions, row identifiers, or behavior, leaving the agent unable to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 20 parameters and 0% schema description coverage, the description fails to explain any parameter's meaning or relation to the actions. The agent receives no assistance on how to populate action, row_index, columns, or other critical fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb-action ('Read, select, or assert') and the resource ('WPF DataGrid row evidence'), distinguishing it from sibling UI tools which handle generic clicks, selections, or property reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like ui_find_element, ui_select_items, or other grid-specific tools. The description does not mention exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_hold_modifiersB
Hold modifiers across subsequent UI input calls.
| Name | Required | Description | Default |
|---|---|---|---|
| modifiers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that modifiers are held across subsequent calls, which is a key behavioral aspect. However, it does not address overlapping calls, state persistence, or edge cases. The sparse annotations (only openWorldHint) leave the description to carry the burden, which it partially does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with a clear verb and context. It could be slightly expanded with more detail without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of parameter guidance, no output schema, and minimal annotations, the description is insufficient for an agent to use the tool correctly. It does not provide enough context about valid inputs or the tool's effect on other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain what the 'modifiers' array should contain (e.g., valid strings like 'ctrl', 'shift'). The agent has no guidance on allowable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Hold modifiers across subsequent UI input calls' clearly states the verb 'hold' and resource 'modifiers', and distinguishes from sibling tools like 'ui_release_modifiers' and 'ui_get_held_modifiers'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Missing when-not-to-use or tips about releasing modifiers after use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_hoverB
Move the real pointer over one uniquely resolved foreground UI element.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| timeout_ms | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: 'real pointer' indicates actual cursor movement (not simulated), and 'uniquely resolved' implies it will fail if the element is ambiguous. Although annotations (openWorldHint: false) suggest no outside impact, the description adds nuance about physical pointer movement. It could be more explicit about hover duration or side effects, but overall adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, front-loading the core action. It wastes no words, but could be slightly expanded to include critical context without harming conciseness. It is appropriately sized given the tool's relative simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has six parameters, no output schema, and minimal annotations, the description is incomplete. It does not explain how to resolve an element, what happens on failure, return behavior, or timeout semantics. The tool's behavior for multiple matches or error states is omitted, leaving significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has six parameters with no descriptions (0% coverage), and the description does not mention any parameter meanings or constraints. For example, it does not explain that 'name' or 'xpath' are used to identify the element, nor the role of 'timeout_ms'. This forces the agent to rely solely on parameter names, which may be insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'move' and resource 'real pointer', clearly indicating the action. It distinguishes from sibling tools like ui_click or ui_focus by specifying 'hover' and 'uniquely resolved foreground UI element', making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios like triggering hover effects or when not to use it (e.g., avoid if click is needed). Implicit differentiation may be inferred from sibling names, but no explicit usage advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_invokeA
Invoke a UI element using UIA InvokePattern (no mouse movement).
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Preferred over ui_click for buttons, menu items, and hyperlinks because it works reliably even when the element is off-screen or partially obscured. Falls back to Click() if InvokePattern is not supported.
WPF top-level MenuItem headers: scope the native ENTER key to the parent, then rediscover the popup child and call ui_invoke separately for that exact child. Do not add a fixture-specific key handler. Invoking the parent alone does not guarantee submenu peers materialize. Use pre/post UI oracles; a child missing after verified expansion is a harness observation, not automatically a product defect.
Args: automation_id: AutomationId property name: Element's Name/Title property control_type: Control type (Button, MenuItem, Hyperlink, etc.) root_id: Optional AutomationId to scope search to a subtree xpath: Optional XPath expression (FlaUI backend only)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits beyond annotations: it uses InvokePattern, avoids mouse movement, falls back to Click() if needed, and has a special note about WPF menu headers. It also warns about a common gotcha (breakpoint pause). While it doesn't mention side effects or error behavior, the description adds valuable insight into how the tool operates, which is not contradicted by the sparse annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a mix of general guidance and very specific troubleshooting (the WPF MenuItem paragraph). While accurate, the WPF section is somewhat tangential and could be shortened or moved to a note, as it is likely a rare edge case. The breakpoint note is useful but interrupts the flow. Overall, it delivers valuable information but could be more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five optional parameters and no output schema, the description covers critical usage constraints such as the InvokePattern vs Click fallback, breakpoint interaction, and nested menu handling. However, it omits details like how multiple selectors (e.g., name + automation_id) are combined (AND vs OR), behavior when no elements match, or timeout defaults. It addresses common pitfalls but leaves the agent guessing on some execution semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden for parameter semantics. It lists each parameter with a concise purpose: 'root_id: Optional AutomationId to scope search to a subtree' and 'xpath: Optional XPath expression (FlaUI backend only)' adds implementation-specific context. This goes beyond a bare list, though it could benefit from examples or selector precedence logic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Invoke a UI element using UIA InvokePattern (no mouse movement).' It distinguishes itself from the sibling 'ui_click' by explicitly noting it is 'Preferred over ui_click for buttons, menu items, and hyperlinks' and explains the advantage (works when off-screen or obscured). This makes the purpose unambiguous and differentiates it from similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Preferred over ui_click for buttons, menu items, and hyperlinks because it works reliably even when the element is off-screen or partially obscured.' It also gives a direct alternative (ui_click) and a prerequisite ('If app is STOPPED at breakpoint, resume with continue_execution() first'), offering clear direction on when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_key_sequenceA
Send keys while holding modifiers and report cleanup evidence.
For WPF top-level MenuItem headers, scope the native ENTER key to the
parent, then rediscover the popup child after expansion and invoke its exact
child through a separate ui_invoke. Do not add a fixture-specific key
handler. Invoking the parent menu alone does not ensure submenu peers
materialize. Use pre/post UI oracles; a missing child after verified expansion
is a harness observation, not automatically a product defect.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| modifiers | Yes | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the minimal openWorldHint annotation, the description discloses that the tool reports cleanup evidence and explains nuanced behavioral traits around WPF submenu materialization. It also warns about the limitations of invoking parent menus. However, it does not clarify what the cleanup evidence is or how modifiers are released, leaving some behavioral aspects opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose statement, followed by a dense but relevant usage paragraph. Each sentence contributes value, though the second paragraph is lengthy and could be considered too specific, but it is structured logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 unannotated parameters, no output schema, minimal annotations), the description is incomplete. It covers the WPF menu scenario in depth but omits general use cases, parameter semantics, and the meaning of cleanup evidence. This leaves significant gaps for an agent trying to use the tool outside the described scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate, but it does not explain any parameter meanings. It mentions 'keys' and 'modifiers' generically but provides no details about the array formats, locator parameters (name, xpath, root_id, automation_id), or control_type. The description is entirely focused on a special case and ignores parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the tool sends keys while holding modifiers and reports cleanup evidence. This distinguishes it from simple key senders like ui_send_keys by adding modifier holding and cleanup reporting, though it does not explicitly name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance for a specific scenario (WPF MenuItem headers), including scoping the ENTER key to the parent, rediscovering popup children, invoking through ui_invoke, and avoiding fixture-specific handlers. It also advises using pre/post UI oracles and clarifies that a missing child after expansion is a harness observation, not a product defect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_maximize_windowA
Maximize a top-level window via WindowPattern.
Args: window_title: Optional partial title match. Omit to target main window.
| Name | Required | Description | Default |
|---|---|---|---|
| window_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations for readOnlyHint or destructiveHint, so description should disclose behavior. 'Maximize' implies mutation, but no details on side effects, permissions, or error conditions. Minimal disclosure beyond the action itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose. No wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and parameter usage adequately. Lacks details on failure modes (e.g., window not found) or return values. No output schema. Acceptable for a simple tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage (no descriptions), so description compensates by explaining window_title as 'Optional partial title match. Omit to target main window.' Adds clear meaning and default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Maximize a top-level window via WindowPattern' - specific verb (maximize) and resource (window). Distinguishes from sibling tools like ui_minimize_window and ui_restore_window by name and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on parameter: 'Optional partial title match. Omit to target main window.' However, no explicit when to use vs alternatives or prerequisites are given. Implied usage but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_minimize_windowA
Minimize a top-level window via WindowPattern.
Args: window_title: Optional partial title match. Omit to target main window.
| Name | Required | Description | Default |
|---|---|---|---|
| window_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include openWorldHint: false, which is minimally informative. The description adds that it uses WindowPattern (UIA), indicating it interacts with native UI. However, it does not disclose behavior in edge cases (e.g., window not found), whether it supports non-top-level windows, or system permissions required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the primary action and then briefly explains the parameter. This structure is efficient for an agent to quickly understand the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool and the set of siblings, the description is fairly complete but lacks details on error handling, return behavior, and explicit differentiation from related tools like ui_close_window or ui_restore_window. For an agent to handle all scenarios, more context on failure modes would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does so effectively by explaining that 'window_title' is an optional partial title match and omitting targets the main window. This adds meaning beyond the schema's type and default, though it could clarify matching rules (e.g., case sensitivity).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Minimize a top-level window via WindowPattern.' It uses a specific verb and resource, and the tool name aligns with this. Among siblings like ui_maximize_window, ui_restore_window, ui_close_window, this tool's purpose is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on the optional 'window_title' parameter: 'Optional partial title match. Omit to target main window.' This clarifies when to provide a title vs not, but it does not explicitly state when to use this tool over alternatives (e.g., minimizing vs closing a window) or mention any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_monitor_eventsCRead-only
Return retained semantic UI monitor history without polling.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | ||
| after_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds that it returns retained history without polling, providing some behavioral context beyond annotations, but it does not discuss authentication, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very brief (one sentence), but it is under-specified and omits critical parameter information. It achieves conciseness at the expense of completeness, which reduces its usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and 0% parameter coverage, the description is incomplete. The agent lacks information about return values, parameter roles, and how this tool fits with siblings like ui_monitor_start or ui_monitor_poll.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the tool description does not mention the parameters monitor_id or after_cursor. The agent receives no guidance on what these parameters represent or how to use them, making the tool difficult to invoke correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns retained semantic UI monitor history without polling, which distinguishes it from polling and waiting tools. However, it does not explicitly name sibling tools for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without polling' hints at usage context, but the description lacks explicit guidance on when to use this tool versus alternatives like ui_monitor_poll or ui_monitor_wait. No when-not or alternative tool names are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_monitor_pollA
Poll a semantic UI monitor once and return cursor-filtered events.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | ||
| after_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool polls once (not continuous) and uses cursor filtering. Annotations only include openWorldHint=false, which is consistent. It adds context by specifying the return behavior, though it does not mention side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that front-loads key information. Every word is necessary and adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description covers the core behavior (poll once, cursor-filtered). It does not detail event types or error conditions, but given the limited complexity, it is relatively complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'cursor-filtered events', which explains the after_cursor parameter's purpose, but does not describe monitor_id. Schema description coverage is 0%, so the description partially compensates but is not fully informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool polls a semantic UI monitor once and returns cursor-filtered events. The verb 'poll' and resource 'semantic UI monitor' are specific, and it distinguishes from sibling tools like ui_monitor_start or ui_monitor_wait by emphasizing a one-time operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for one-time polling rather than continuous monitoring, but it does not explicitly state when to use this tool versus alternatives like ui_monitor_events or ui_monitor_start. No exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_monitor_startC
Start a selector-scoped semantic UI monitor.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| fields | No | ||
| root_id | No | ||
| max_events | No | ||
| monitor_id | Yes | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include only openWorldHint=false, providing minimal behavioral cues. The description adds no further details on side effects, whether starting a monitor is destructive, or what cleaning is required, leaving significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, but it sacrifices essential information. Every word counts, but key details about parameters and behavior are missing, making it under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, no parameter descriptions), the description is severely incomplete. It does not explain how to configure the monitor or what happens when it starts, leaving the agent without critical operational knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 8 parameters with 0% description coverage, and the description adds no meaning to any parameter. The term 'selector-scoped' hints at some parameters but fails to clarify which ones or their formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Start' and resource 'UI monitor' with qualifiers 'selector-scoped' and 'semantic', giving a clear purpose. However, it does not distinguish from sibling tools like ui_monitor_events or ui_monitor_poll, which are also UI monitoring tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no indication of prerequisites, appropriate contexts, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_monitor_waitC
Wait for a semantic UI monitor event or return a bounded timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | ||
| timeout_ms | No | ||
| after_cursor | No | ||
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions a 'bounded timeout,' adding some behavioral insight beyond annotations, but fails to disclose what happens on timeout, event semantics, or whether it blocks. Annotations are minimal, so more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 9 words, which is too brief. It sacrifices necessary details for brevity, resulting in under-specification rather than conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and minimal annotations, the description is grossly incomplete. It fails to explain parameters, return values, or behavioral nuances, leaving the agent without sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description provides no explanation of any parameter (monitor_id, after_cursor, timeout_ms, poll_interval_ms), leaving the agent to infer meaning solely from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a UI monitor event or returns on timeout. However, it does not differentiate from similar sibling tools like ui_monitor_poll or ui_monitor_events, lacking specificity about what constitutes a 'semantic' event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_move_windowA
Move a window to screen coordinates (x, y) via TransformPattern.
Returns {moved: false, reason: "..."} if the window cannot be moved (CanMove = false). Does NOT raise an exception in that case.
Args: x: Target screen X coordinate for the window's top-left corner. y: Target screen Y coordinate for the window's top-left corner. window_title: Optional partial title match. Omit to target main window.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| window_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool returns a structured error object when the window cannot be moved (CanMove=false) and that it does not raise an exception. This adds behavioral context beyond the annotations, which only include openWorldHint=false. It does not detail side effects or permissions, but is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a brief sentence for the action, a clear line about the return format, and a structured Args section. Every sentence adds value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers the action, return value on failure, and parameter semantics completely. It provides enough context for effective selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly defines all three parameters: x and y as target screen coordinates, and window_title as optional with a hint to omit for main window. Since schema description coverage is 0%, this adds critical meaning beyond type/title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Move a window to screen coordinates (x, y)') and the resource ('window'), with specification of the underlying pattern (TransformPattern). It is specific and distinguishes from sibling tools like ui_resize_window or ui_maximize_window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when it returns the error object and emphasizes that no exception is raised. However, it does not explicitly state when to use this tool vs alternatives (e.g., ui_switch_window) or note when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_propertyCRead-only
Read bounded UI property evidence without mutation side effects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| action | Yes | ||
| root_id | No | ||
| property | No | ||
| control_type | No | ||
| automation_id | No | ||
| property_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's statement of 'no mutation side effects' is redundant. It adds 'bounded' but does not explain what bounds exist (e.g., scope, limitations). No additional behavioral traits disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but at the expense of informativeness. It front-loads the core purpose but lacks necessary details, making it barely adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and no output schema, the description should compensate with parameter explanations and return value hints. It does not, leaving the tool's usage unclear and incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 8 parameters with 0% description coverage. The description does not explain any parameter meanings, such as 'action', 'property', 'automation_id', etc., leaving the agent to infer from names alone. This is inadequate for a tool with many parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Read bounded UI property evidence' which clearly indicates a read operation on UI properties. 'Without mutation side effects' further clarifies it is non-destructive. However, 'bounded' is vague and the term 'property evidence' is not standard, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing to read UI properties safely, but it does not specify when not to use it or how it differs from similar read tools like ui_query or ui_text. No explicit alternatives or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_queryBRead-only
Read selected UI fields without dumping the full tree.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| fields | Yes | ||
| root_id | No | ||
| max_results | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true; description adds only 'Read selected UI fields,' which aligns but provides no additional behavioral context beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loads the purpose with no wasted words, though it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no output schema, and no parameter guidance, the description is too minimal to fully support correct invocation for complex UI queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no explanation of the 7 parameters (e.g., how automation_id, name, etc., are used to identify elements).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads selected UI fields without dumping the full tree, distinguishing it from tree-dumping siblings like ui_get_window_tree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for selective reading vs full tree dump, but no explicit when-to-use, when-not-to-use, or alternative tools named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_read_textARead-onlyIdempotent
Read text content from a UI element using multi-strategy extraction.
Tries 5 strategies in order: ValuePattern → TextPattern → Name → LegacyIAccessible → visible text descendants. The response includes which strategy provided the text (source field).
When the primary text looks like a CLR type name (e.g., "Namespace.Class"), automatically falls back to visible descendant text.
Args: automation_id: AutomationId property name: Element's Name/Title property root_id: Optional AutomationId to scope search to a subtree xpath: Optional XPath expression (FlaUI backend only)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and idempotentHint annotations, the description details the 5 strategies tried in order, the automatic fallback for CLR type names, and the inclusion of a 'source' field in the response. This adds valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences plus a parameter list), front-loaded with the main purpose, and every sentence adds value. No extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no output schema, and annotations present, the description covers the extraction strategy and fallback behavior. However, it omits details about error cases (e.g., element not found) and the full output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds minimal meaning to each parameter (e.g., 'AutomationId property', 'Element's Name/Title property'). It does not clarify mutual exclusivity, optionality, or how parameters interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Read text content from a UI element using multi-strategy extraction', providing a specific verb (read), resource (text content from UI element), and methodology. Distinguishes from sibling UI tools that perform other actions like clicking or querying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for reading text from UI elements but lacks explicit guidance on when not to use, prerequisites, or alternatives among siblings. While it describes the extraction strategy, it does not help the agent decide between this and similar tools like ui_get_selected_item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_realize_virtualized_itemAIdempotent
Realize a virtualized list or grid item so it enters the visual tree.
Virtualized lists (VirtualizingStackPanel with VirtualizationMode=Recycling) only create UI elements for visible rows. Items outside the viewport are "virtualized" — they exist in the data source but have no AutomationElement. This tool forces the item into the visual tree so subsequent ui_click or ui_find_element calls can reach it.
Operation is idempotent: re-realizing an already-realized item is safe and returns {realized: true} without error.
Returns: {realized: true, element_id: "...", bounding_rect: {x, y, width, height}} on success. {realized: false, reason: "item not found"} if the item is not in the data source. {realized: false, reason: "container does not support ItemContainerPattern"} if the container is not a virtualizing list.
Args: container_automation_id: AutomationId of the list/grid container. prop_name: Property to search by. Supported: "AutomationId", "Name", "ClassName". value: Value to match against the chosen property.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| prop_name | Yes | ||
| container_automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description details the operation's effect (forces into visual tree), idempotency, error cases (item not found, container not virtualizing), and the exact return object structure. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose first, then background, then idempotency, return values, and parameters. All sentences are necessary and informative. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the virtualization concept, multiple return cases, and error conditions. Lacks a concrete example or guidance on obtaining the container_automation_id, but overall is sufficient for the tool's complexity. Minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists the three parameters and specifies supported values for prop_name (AutomationId, Name, ClassName). This adds value but could provide more detail or examples. Baseline 3 is appropriate given partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: realizing a virtualized list/grid item. It explains the context of virtualized lists and that this tool forces an item into the visual tree, distinguishing it from sibling UI tools that operate on already-realized elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: before ui_click or ui_find_element on virtualized lists. It mentions idempotency and safe re-realization. While it doesn't explicitly list when not to use it or alternatives, the context is clear and implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_release_modifiersB
Release held modifiers or all held modifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| modifiers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lacks details about behavior beyond the core action. It does not explain what 'all held modifiers' means, potential side effects, or any restrictions, and the annotation only provides openWorldHint=false without additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded and immediately conveys the tool's purpose. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description omits important context such as prerequisites (must have held modifiers), return behavior, and error conditions. It is incomplete for a tool with no output schema and minimal annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds some meaning by indicating the parameter can accept a list or a single string and mentions 'all held modifiers', but it does not explain valid values or how to specify 'all', leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (release) and the resource (held modifiers), and it distinguishes itself from sibling tools like ui_hold_modifiers and ui_get_held_modifiers by focusing on release.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives or provide prerequisites (e.g., modifiers must be held first). The usage context is implied but not clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_resize_windowA
Resize a window to the given dimensions via TransformPattern.
Returns {resized: false, reason: "..."} if the window cannot be resized (CanResize = false). Does NOT raise an exception in that case.
Args: width: Target window width in pixels. height: Target window height in pixels. window_title: Optional partial title match. Omit to target main window.
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| window_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral details beyond annotations: returns {resized: false...} on failure, does not raise exception. Annotations only have openWorldHint: false, so description adds useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences plus Args list, no wasted words. Front-loaded with main purpose and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return value on failure and parameter semantics. Missing details on dimension constraints or behavior when window_title doesn't match, but sufficient for simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, description explains each parameter: width and height as pixels, window_title as optional partial match with default behavior to target main window. Adds critical meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool resizes a window to given dimensions, using 'Resize' and 'window'. It distinguishes from siblings like ui_maximize_window by specifying dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage via the action but does not explicitly state when to use vs alternatives like move, minimize, or maximize. No guidance on when to omit window_title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_restore_windowA
Restore a minimized or maximized window to normal state via WindowPattern.
Args: window_title: Optional partial title match. Omit to target main window.
| Name | Required | Description | Default |
|---|---|---|---|
| window_title | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include openWorldHint:false, so the description carries the burden. It mentions 'via WindowPattern' but does not explain what this entails, any side effects, failure conditions, or required window state. Behavioral disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first states the purpose, the second explains the parameter. No redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the main aspects: purpose and parameter semantics. However, it lacks usage guidelines and behavioral transparency, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds critical meaning: it clarifies that window_title is a partial match and omitting it targets the main window. This goes beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (restore a window to normal state) and the method (via WindowPattern). It also distinguishes from sibling tools like ui_minimize_window and ui_maximize_window by specifying the target state (normal).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a window is minimized or maximized) but does not provide explicit guidance on alternatives or prerequisites. It mentions an omission strategy for the parameter but lacks broader usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_right_clickB
Right-click on a UI element to open context menu.
Tries cached coordinates first, then falls back to pywinauto element search.
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Args: automation_id: AutomationId property name: Element's Name/Title property control_type: Control type
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only include openWorldHint: false, so the description bears the burden of disclosure. It mentions cached coordinates and fallback search, and alerts about breakpoints. However, it does not describe failure modes, success criteria, or whether the tool interacts with the UI state (e.g., opening context menus) beyond the click.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise but structurally flawed: it mixes a usage note with a partial parameter list. The arg section is incomplete (missing two params) and uses bullet-like formatting. Could be more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no output schema, and minimal annotations, the description leaves significant gaps. It does not explain element identification logic, behavior on multiple matches, or return value. The breakpoint note is helpful but not enough to make the tool well-documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists only 3 of 5 parameters (automation_id, name, control_type) and merely repeats their property names without explaining how to use them (e.g., which are required, how they interact). Parameters root_id and xpath are omitted entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Right-click on a UI element to open context menu,' which conveys the core action and result. However, it does not differentiate from sibling tools like ui_click or ui_double_click, which limits clarity when choosing among them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a behavior note (caching and fallback) and a prerequisite (resume if stopped at breakpoint). But it lacks explicit guidance on when to use this tool versus other click variants, nor does it mention any restrictions or best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_scrollA
Scroll a UI control.
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Args: automation_id: AutomationId of the scrollable control direction: "up", "down", "left", "right" amount: Number of scroll units (default 3)
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | ||
| direction | No | down | |
| automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations beyond openWorldHint=false, which the description does not contradict. The description lacks details on side effects, error behavior, or whether scrolling is synchronous. Provides minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two lines plus args list) and front-loaded with purpose. The note about breakpoints is relevant. Could be slightly more structured but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool without output schema, the description covers basic usage but lacks details on failure modes or prerequisites for scrollable controls. It is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds meaning by explaining automation_id, direction (listing values), and amount (noting default). However, it omits the default value for direction (which is 'down' in schema), leaving a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Scroll a UI control' with a specific verb and resource. Among numerous sibling UI tools (e.g., ui_click, ui_drag), it uniquely identifies scrolling behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear prerequisite: if the app is stopped at a breakpoint, resume with continue_execution() first. Does not explicitly distinguish from alternatives like ui_collapse or ui_expand, but the context is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_select_itemsA
Select items by index in a list/grid control (DataGrid, ListView, ListBox).
With FlaUI backend: uses SelectionItemPattern (reliable for virtualized lists). With pywinauto backend: two strategies (tries both):
UIA SelectionItemPattern — works for non-virtualized lists
Coordinate click fallback — clicks items using cached rectangles (Ctrl+click for multi-select, plain click for first item)
For WPF virtualized lists (VirtualizingStackPanel), strategy 1 may fail because off-screen items don't have UI containers. Strategy 2 uses visible item coordinates from the cache. FlaUI backend handles this natively.
Args: automation_id: AutomationId of the list/grid control indices: List of 0-based item indices to select mode: "replace" (clear existing, select these) or "add" (add to existing selection)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | replace | |
| indices | Yes | ||
| automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly covers behavioral details: two backend strategies with fallback mechanisms, multi-select behavior (Ctrl+click), and limitations with virtualized lists. This goes well beyond the sparse annotation (only openWorldHint: false), providing the agent with essential operational knowledge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear intro, backend details, and args list. It is front-loaded with the core purpose. However, it is somewhat lengthy; some backend implementation details could be shortened without losing essential guidance for the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description should mention the return value or outcome (e.g., success/failure, selected items). It also lacks error handling or prerequisite conditions (e.g., control must exist). This leaves an incomplete picture for the agent, though the behavioral details are strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaning by explaining the three parameters (automation_id, indices, mode) in an 'Args' section. It clarifies that indices are 0-based and mode options are 'replace' or 'add', though it does not enumerate all possible mode values or provide additional constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Select items by index in a list/grid control (DataGrid, ListView, ListBox).' This is a specific verb+resource pair, and it distinguishes itself from sibling tools like ui_get_selected_item which only retrieves selection, not modifies it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed backend-specific strategies and addresses virtualized list edge cases. It implies usage context (e.g., for reliable selection in virtualized lists, FlaUI backend is preferred) but does not explicitly state when not to use it or name alternatives for different selection needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_send_keysB
Send keyboard input to a UI element.
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Tries cached coordinates first (click to focus, then send keys), then falls back to pywinauto element search.
Key syntax (modifiers are PREFIX characters, special keys in braces):
Regular text: "hello world"
Modifiers: ^ = Ctrl, % = Alt, + = Shift
Alt+Z: "%z" Alt+F4: "%{F4}"
Ctrl+C: "^c" Ctrl+Shift+S: "^+s"
Shift+Tab: "+{TAB}"
Special keys: {ENTER} {TAB} {ESC} {DELETE} {BACKSPACE}
Arrow keys: {LEFT} {RIGHT} {UP} {DOWN}
Navigation: {HOME} {END} {PGUP} {PGDN}
Function keys: {F1} {F2} ... {F12}
Combined: Ctrl+End = "^{END}", Alt+Z = "%z"
IMPORTANT: Modifier prefixes (^%+) apply to the NEXT character or {KEY}. For Alt+Z send "%z" (NOT "{ALT}z" or "Alt+Z").
Args: keys: Keys to send (see syntax above) automation_id: Target element's AutomationId name: Target element's Name control_type: Target element's control type
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses fallback behavior: tries cached coordinates first, then pywinauto element search. Also explains key syntax modifiers in detail. Adds value beyond sparse annotations (only openWorldHint). Missing: side effects on window focus, waiting behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and front-loaded note, but the key syntax section is extensive and could be condensed. Overall adequate but verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and low schema coverage, the description is incomplete. It covers 'keys' well but ignores other parameters, return value, error conditions, and prerequisites. Sibling tools exist but no explicit differentiation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only the 'keys' parameter is described in depth with syntax examples. The other 5 parameters (automation_id, name, control_type, root_id, xpath) are merely listed without explanation. Schema has 0% description coverage, so the description carries full burden but fails to add meaning for most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Send keyboard input to a UI element' and explains the fallback mechanism and key syntax. It does not differentiate from sibling tools like ui_send_keys_focused, but the purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a crucial 'Note' about resuming execution if app is at breakpoint, providing clear when-not-to-use guidance. Does not explicitly compare to alternatives like ui_send_keys_batch, but the context is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_send_keys_batchA
Send a batch of key sequences in a single call, holding focus throughout.
Solves the race condition where the terminal steals focus between individual send_keys calls. The bridge holds foreground + element focus for the entire batch, sending keys with configurable delay.
Use this for: arrow navigation (20x DOWN), typing sequences, keyboard shortcuts.
Args: keys: List of key strings, each sent separately with delay. Example: ["{DOWN}", "{DOWN}", "{DOWN}"] for 3 arrow presses. automation_id: Target element to focus before sending. delay_ms: Milliseconds between each key (default 50ms).
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | ||
| delay_ms | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (only openWorldHint=false). The description adds behavioral details (holds focus, configurable delay) but does not cover error handling, permissions, or side effects. Adequate given the tool's simplicity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: purpose, problem, use cases, then parameter list. Each sentence is valuable and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters and no output schema, the description covers purpose, parameters, and use cases. It could mention error scenarios or response behavior, but it is largely complete for its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description thoroughly explains all three parameters: keys (with example), automation_id (target element), delay_ms (default and unit). This fully compensates for schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a batch of key sequences while holding focus, distinguishing it from single-key tools like ui_send_keys. It also gives specific use cases (arrow navigation, typing sequences).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the problem (race condition) and when to use the tool (batch key sequences). It implicitly contrasts with individual send_keys calls but does not explicitly list when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_send_keys_focusedA
Send keyboard input to the currently focused element.
Use this AFTER ui_set_focus to avoid re-searching for complex elements like DataGrid that may timeout on repeated searches.
Workflow:
ui_set_focus(automation_id="MyElement") # Focus the element
ui_send_keys_focused(keys="^{END}") # Send keys without re-search
Key syntax (modifiers are PREFIX characters, special keys in braces):
^ = Ctrl, % = Alt, + = Shift
Alt+Z: "%z" Ctrl+C: "^c" Shift+Tab: "+{TAB}"
Special: {ENTER} {TAB} {ESC} {DELETE} {BACKSPACE}
Arrows: {LEFT} {RIGHT} {UP} {DOWN}
Navigation: {HOME} {END} {PGUP} {PGDN}
Combined: Ctrl+End = "^{END}", Ctrl+Home = "^{HOME}"
IMPORTANT: For Alt+Z send "%z" (NOT "{ALT}z").
Args: keys: Keys to send (see syntax above)
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only include openWorldHint: false, so the description carries the burden of explaining behavior. It does so well by detailing key syntax, modifiers, and special keys. It explains that modifiers are prefix characters and gives examples. No contradictions with annotations. However, it does not mention potential side effects like state changes or whether the key sending is synchronous, which keeps it from a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured, with a clear workflow section and a detailed key reference. Every sentence adds value, though the key syntax section could be slightly more compact. Still, it is efficient and front-loaded with the core usage instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that sends keyboard input to a focused element, the description covers everything needed: when to use (after ui_set_focus), the key syntax comprehensively, and an example workflow. No output schema exists, but the tool's return is implicit (performs action). The description is complete given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'keys' with no description (0% coverage). The description compensates fully by providing an extensive key syntax guide, including modifier prefixes (^%=Ctrl/Alt/Shift), special keys in braces, and examples. This adds essential meaning that the schema alone lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Send keyboard input to the currently focused element,' clearly identifying the verb 'send' and resource 'keyboard input.' It distinguishes from sibling tools like ui_send_keys by emphasizing that it targets the currently focused element and should be used after ui_set_focus, which avoids re-searching for elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use this tool after ui_set_focus to avoid re-searching for complex elements that may timeout. It provides a workflow with steps and examples. While it doesn't explicitly state when not to use it, the context implies it is for cases where focus has already been set, which is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_send_system_eventC
Send a supported system event through the active UI backend.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | toggle | |
| event | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose side effects or behavioral traits beyond the minimal annotation (openWorldHint: false). It does not indicate if the event is sent synchronously, whether it requires specific UI state, or what the impact is on the UI backend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it lacks detail. It is appropriately front-loaded but does not earn its place due to insufficient information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 params, no output schema), the description should provide enough context for correct usage. However, it fails to specify what events are supported, how the mode parameter works, or the result of sending an event, making it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds no meaning to the two parameters. 'event' and 'mode' are not explained; possible values or semantics are missing, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies 'send a system event' which is a clear action, but 'supported system event' is vague and does not differentiate from many other UI interaction sibling tools. It lacks specificity about what constitutes a system event.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like ui_send_keys or ui_invoke. There is no context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_set_focusAIdempotent
Set keyboard focus to a UI element.
Uses UIA-based Focus() for FlaUI backend (monitor/DPI-agnostic), or element search + set_focus for pywinauto backend.
Call this before ui_send_keys to ensure keys go to the right element.
Args: automation_id: AutomationId property (FlaUI + pywinauto) name: Element's Name/Title property (FlaUI + pywinauto) control_type: Control type (pywinauto only) root_id: Optional AutomationId to scope search (pywinauto only) xpath: Optional XPath expression (pywinauto only)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true. Description adds backend-specific behavior (FlaUI vs pywinauto) and the link to ui_send_keys. No contradictions; adds useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: purpose, backend behavior, usage note, and parameter list. No unnecessary text, but could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description lacks details on return values or error handling (e.g., if element not found). For a simple set operation, it's mostly adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 5 parameters with 0% coverage. Description explains each parameter's purpose and which backend applies (e.g., control_type for pywinauto only). Adds meaning beyond bare schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Set' and the resource 'keyboard focus to a UI element'. It distinguishes itself from sibling tools like ui_click and ui_send_keys by specifically addressing focus setting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Call this before ui_send_keys to ensure keys go to the right element.' This clarifies a common use case. Lacks explicit when-not-to-use, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_set_valueA
Set a numeric value on a slider, spinner, or progress bar via RangeValuePattern.
Returns {set: false, reason: "value X out of range [min..max]"} if the value is outside the element's Min/Max bounds — does NOT raise an exception.
Args: automation_id: AutomationId of the RangeValue element (slider, spinner, etc.) value: The numeric value to set. Must be within element's [Minimum, Maximum].
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| automation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that out-of-range values return a structured failure response instead of an exception, adding behavioral insight beyond the minimal annotation (openWorldHint: false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured description with a clear purpose line followed by note on error handling and parameter list. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description covers purpose, behavior, and parameters completely, leaving no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage), so the description adds essential meaning: automation_id is the element's identifier and value must be within the element's range. Could be more explicit about obtaining automation_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool sets a numeric value on specific UI elements (slider, spinner, progress bar) via RangeValuePattern, distinguishing it from other UI interaction tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies the intended elements and pattern, implying usage context. Lacks explicit when-not-to-use or alternative tools but provides sufficient guidance for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_snapshotBRead-only
Capture a named field-limited UI snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| fields | Yes | ||
| root_id | No | ||
| snapshot | Yes | ||
| max_results | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and deterministic. The description adds that it is 'field-limited' and 'named', but does not explain side effects like whether snapshots are stored or overwrite existing ones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words. While it could benefit from slightly more detail, it is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 8 parameters and no output schema, the description is too brief. It does not explain the purpose of many parameters, the scope of the snapshot, or how it integrates with other tools in the UI/debugging context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by explaining two parameters ('name' and 'fields') but leaves the other six parameters (automation_id, control_type, etc.) undocumented. This insufficiently aids an agent in using all parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('capture'), resource ('UI snapshot'), and qualifiers ('named field-limited'). This distinguishes it from sibling tools like 'ui_take_screenshot' (visual screenshot) and 'create_snapshot' (likely without field filtering).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives (e.g., 'create_snapshot', 'list_snapshots'). No explicit context or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_switch_windowAIdempotent
Retarget the UI backend at a different top-level window of the same process.
Use this to enter modal dialogs, file pickers, or popups that appear as sibling windows of the app's main window. After switching, all subsequent ui_* calls (find_element, click, send_keys, etc.) operate inside the new window's subtree.
Typical flow:
ui_get_window_tree() → inspect "windows" array
ui_switch_window(name="Create collection") → enter dialog
ui_find_element(control_type="Edit") → locate dialog TextBox
ui_send_keys_batch(keys=["Characters", "{ENTER}"]) → type + submit
After dialog closes, ui_switch_window(name="Main App Title") to return to the original window
Requires the FlaUI bridge backend; the pywinauto fallback raises NotImplementedError. At least one of name or automation_id must be provided; automation_id is matched first.
Args: name: Window title (e.g., the dialog's Title/Name property) automation_id: Window's AutomationId property (if any)
Returns: {"switched": True, "title": "...", "automationId": "..."} on success
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant context beyond annotations: requires FlaUI backend, raises NotImplementedError with pywinauto, describes post-dialog behavior, and explains the return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections (purpose, usage flow, backend note, parameters, returns), no redundant text, and essential information front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a tool with 2 parameters: includes purpose, prerequisite, return format, and integration with other ui_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Explains the meaning of 'name' and 'automation_id' (window title and AutomationId), gives examples, and notes matching priority, compensating for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('retarget') and resource ('top-level window'), and differentiates it from siblings by specifying use cases like entering modal dialogs, file pickers, or popups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use scenarios and a typical flow, but does not explicitly state when not to use or contrast with other window-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_take_annotated_screenshotARead-onlyIdempotent
Take a screenshot with numbered UI elements overlaid (Set-of-Mark pattern).
Returns annotated WebP image + compact element index. Each interactive element gets a numbered label on the screenshot.
Use ui_click_annotated(element_id) to interact with elements by number.
Args: max_depth: How deep to traverse the UI tree (default 3) interactive_only: Only interactive elements (default True) max_width: Max image width (default 1024) format: Image format: "webp" (smallest), "jpeg", "png" compact: Compact element index — id+name only (default True, saves ~60KB)
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | webp | |
| compact | No | ||
| max_depth | No | ||
| max_width | No | ||
| interactive_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and read-only behavior. Description adds detail: returns WebP image with compact index, and explains compact mode saves ~60KB. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured: purpose sentence, return info, usage tip, then parameter list. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers return format and key behavioral details. No output schema, but description sufficiently describes outputs. Could mention image encoding, but not critical for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters are described with their effect (max_depth, interactive_only, max_width, format, compact). Schema coverage is 0%, so description compensates fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool's purpose: taking a screenshot with numbered UI elements overlaid (Set-of-Mark pattern). Distinguishes from sibling tools like ui_take_screenshot and ui_click_annotated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: obtain annotated screenshot, then use ui_click_annotated to interact. Does not explicitly exclude alternative tools, but the use case is well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_take_screenshotARead-onlyIdempotent
Take a screenshot of the debugged application's window.
Returns inline ImageContent (WebP at max_width resolution) directly to your vision pipeline, plus TextContent with metadata and HD file path.
Set evidence to retain a raw PNG for the active debug session. With strict
physical assertions, a probable-black PrintWindow raster may make one
independently verified BitBlt attempt. Its explicit
typed_bitblt_fallback evidence grade is a distinct capture authority.
Crop coordinates require evidence mode and are applied to the accepted raw PNG.
Args: max_width: Maximum image width. Default 1280; max useful is 1568. format: Image format: "webp" (smallest), "jpeg", "png" evidence: Persist the raw PNG as session-scoped evidence. crop_x: Raw-image crop origin X; requires all crop arguments. crop_y: Raw-image crop origin Y; requires all crop arguments. crop_width: Raw-image crop width; requires all crop arguments. crop_height: Raw-image crop height; requires all crop arguments. expected_hwnd: Require this HWND and physical raster size before persisting evidence. expected_physical_width: Required raw raster width in physical pixels with expected_hwnd. expected_physical_height: Required raw raster height in physical pixels with expected_hwnd.
| Name | Required | Description | Default |
|---|---|---|---|
| crop_x | No | ||
| crop_y | No | ||
| format | No | webp | |
| evidence | No | ||
| max_width | No | ||
| crop_width | No | ||
| crop_height | No | ||
| expected_hwnd | No | ||
| expected_physical_width | No | ||
| expected_physical_height | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing persistence side effects ('retain a raw PNG for the active debug session'), the fallback BitBlt behavior with a distinct evidence grade, and constraints such as 'Crop coordinates require evidence mode and are applied to the accepted raw PNG.' These behaviors are not visible in the schema or annotations and give the agent a realistic picture of what invoking the tool will do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but structured: main behavior, output shape, evidence behavior, and an Args list that matches all 10 parameters. The fallback BitBlt sentence is long and has an overly technical wording, but it still adds material behavioral information. No sentence feels purely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description sufficiently describes both outputs: ImageContent and TextContent with metadata and file path. It explains return format, edge-case fallback, evidence persistence, crop behavior, and all parameter constraints. For a 10-parameter tool with zero schema descriptions, this is a near-complete operational specification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself is empty of descriptions, so all parameter meaning is supplied by the description's Args section. It explains relationships, constraints, and ranges (crop arguments must all be provided, expected_hwnd requires matching physical raster, max useful width is 1568). It loses some credit because the description says 'Default is 1280; max useful is 1568' while the schema default for max_width is 1568, creating a direct conflict for an agent that relies on the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states exactly what the tool does: 'Take a screenshot of the debugged application's window.' It is a specific verb+resource statement and the following sentences clarify the output delivery. However, it does not explicitly differentiate this tool from the sibling ui_take_annotated_screenshot, so the distinction is left to the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its main use case: when raw visual state is needed, via 'Returns inline ... directly to your vision pipeline.' It also gives conditional usage guidance such as 'Set evidence to retain a raw PNG' and crop-requires-evidence-mode. It never explicitly says when not to use it or names a better alternative, such as using ui_take_annotated_screenshot when visual labels are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_textC
Read or safely replace bounded TextBox/text evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| text | No | ||
| xpath | No | ||
| action | Yes | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No | ||
| selection_end | No | ||
| selection_start | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions 'safely' but doesn't explain what that entails. No details on boundary behavior, permissions, or side effects. Annotations only provide openWorldHint: false, so description carries the burden but fails to disclose behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), which is concise but at the cost of necessary detail. It could be restructured to front-load the purpose and include more context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters and no output schema, the description is inadequate. It does not explain how to identify the target textbox, what action values are valid, or what 'safe replace' means. The tool's complexity requires more detailed guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. Description only hints at action parameter values (read/replace) but doesn't clarify other 8 parameters like automation_id, xpath, selection_start, etc. No parameter descriptions are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states it reads or safely replaces text in a bounded TextBox, which is specific. However, it doesn't fully distinguish from sibling tools like ui_read_text and ui_set_value, which may have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like ui_read_text or ui_set_value. No context on selecting between read and replace actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_toggleA
Toggle a CheckBox or ToggleButton using UIA TogglePattern.
Returns the new toggle state after the operation: "On", "Off", or "Indeterminate". Use this instead of ui_click for checkboxes to get reliable state feedback.
Note: If app is STOPPED at breakpoint, resume with continue_execution() first.
Args: automation_id: AutomationId property name: Element's Name/Title property control_type: Control type (CheckBox, ToggleButton, etc.) root_id: Optional AutomationId to scope search to a subtree xpath: Optional XPath expression (FlaUI backend only)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses use of TogglePattern, return values (On/Off/Indeterminate), and the need to resume execution if app is stopped. Annotations are minimal (only openWorldHint), so description adds value. No contradictions. Could elaborate on side effects or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections: purpose, return value, usage tip, and parameter list. Each sentence serves a purpose. No redundancy. Front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality, return value, and a critical usage note (breakpoint state). Lacks information on error handling, what happens if element not found, or parameter combination rules. Output schema absent but return value is explained. Good for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions (0% coverage). Description provides one-line explanations for each parameter (e.g., 'AutomationId property', 'Optional XPath expression'). This adds basic meaning but lacks detail on formats, examples, or interrelationships. Adequate compensation for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it toggles CheckBox/ToggleButton using UIA TogglePattern and returns new state. It distinguishes itself from sibling ui_click for checkboxes, providing specific verb+resource and differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this over ui_click for checkboxes for reliable state feedback. Also notes prerequisite to resume execution if app is stopped. Could mention other alternatives like ui_invoke, but guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_wait_forARead-onlyIdempotent
Wait for a UI element to appear within timeout.
Polls every 500ms until the element is found or timeout expires. Useful for waiting for dialogs, popups, or dynamically created elements.
Args: automation_id: AutomationId to wait for name: Element name to wait for control_type: Control type to wait for timeout: Maximum wait time in seconds (default 5) root_id: Optional AutomationId to scope search to a subtree xpath: Optional XPath expression (FlaUI backend only)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| xpath | No | ||
| root_id | No | ||
| timeout | No | ||
| control_type | No | ||
| automation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and idempotentHint, and the description confirms polling behavior and timeout, adding useful detail without contradiction. The description enhances transparency by explaining the polling interval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and polling details, followed by a clean bullet list of parameters. Every sentence adds value, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, use cases, and parameters, but fails to explain return values or behavior on timeout (e.g., returns null or raises error). Given the lack of output schema, this gap reduces completeness. Overall adequate but missing critical details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description provides brief parameter descriptions. However, most are just repeating parameter names (e.g., 'automation_id: AutomationId to wait for'), adding little meaning. Timeout gets a default value note, and xpath notes backend limitation. This is adequate but not enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool waits for a UI element within a timeout, with polling behavior. It distinguishes from siblings like ui_find_element by focusing on waiting rather than immediate search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit use cases ('dialog, popups, or dynamically created elements'), but does not specify when not to use or mention alternatives like ui_find_element. Still, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_debug_freshnessCRead-only
Verify that the debug session matches expected runtime evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| expected_modules | No | ||
| expected_sources | No | ||
| expected_artifacts | No | ||
| expected_workspace | No | ||
| expected_process_id | No | ||
| expected_process_name | No | ||
| require_active_process | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While the readOnlyHint annotation correctly signals a read-only operation, the description adds no behavioral context beyond that. It does not explain what 'verify' entails (e.g., checks specific fields, possible outcomes), nor does it disclose any side effects or requirements. With annotations present, the description fails to provide additional value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, achieving high conciseness with no redundant words. It is front-loaded and easy to parse. However, the extreme brevity sacrifices meaningful information, which prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, all optional, and no output schema, the description is notably incomplete. It does not explain the verification process, expected return values, error conditions, or the meaning of 'freshness'. The agent will struggle to use this tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about the 7 parameters, despite the input schema having 0% description coverage. Although the schema titles hint at meaning (e.g., 'Expected Process Id'), the description does not clarify how these parameters are used or their relationships. This forces the agent to rely solely on schema titles, which may be insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: verifying that a debug session matches expected runtime evidence. It uses a specific verb (verify) and resource (debug session freshness). However, it does not differentiate itself from sibling tools like 'debug_hygiene_preflight' or 'run_runtime_smoke' which might have overlapping functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not specify prerequisites, scenarios, or exclusions. It leaves the agent to infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_memoryADestructive
Write base64-encoded bytes to a debugger memoryReference.
DESTRUCTIVE: this mutates debuggee memory and can corrupt process state. Capability-gated: current netcoredbg builds usually return an unsupported error unless they advertise supportsWriteMemoryRequest.
Escape hatch: see the dap-escape-hatch prompt for unwrapped DAP requests.
Args: memory_reference: DAP memoryReference from a variable or stack frame data: Base64-encoded bytes to write offset: Byte offset from the memory reference allow_partial: Let the adapter perform a partial write if needed
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| offset | No | ||
| allow_partial | No | ||
| memory_reference | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set destructiveHint=true, and the description adds context about corrupting process state and capability restrictions, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lean and well-structured, front-loading the action, followed by critical warnings and parameter details, with no unnecessary sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers essential behavioral and parameter context, but could hint at typical use cases or failure modes for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description compensates by detailing each parameter's source and role, e.g., 'DAP memoryReference from a variable or stack frame' and 'Byte offset from the memory reference.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Write base64-encoded bytes to a debugger memoryReference,' specifying the verb and resource distinctly from siblings like read_memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit warnings about destructiveness, capability gating, and an escape hatch alternative provide clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v0.23.8- Changed
ui_take_screenshot3 fields changed- added
Input schema / properties / expected_hwndAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Expected Hwnd" +} - added
Input schema / properties / expected_physical_heightAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Expected Physical Height" +} - added
Input schema / properties / expected_physical_widthAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Expected Physical Width" +}
1 tool update
v0.23.6- Changed
ui_take_screenshot5 fields changed- added
Input schema / properties / crop_heightAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Crop Height" +} - added
Input schema / properties / crop_widthAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Crop Width" +} - added
Input schema / properties / crop_xAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Crop X" +} - added
Input schema / properties / crop_yAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Crop Y" +} - added
Input schema / properties / evidenceAdded value: +{ + "default": false, + "title": "Evidence", + "type": "boolean" +}
3 tool updates
v0.23.0- Added
debuggee_activity - Added
inspect_debug_launch_compatibility - Added
ui_hover
1 tool update
v0.22.0- Added
remove_function_breakpoint
1 tool update
v0.19.0- Changed
runtime_smoke_mark_event_cursor3 fields changed- added
Input schema / properties / include_app_diagnosticsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Include App Diagnostics" +} - added
Input schema / properties / include_debug_outputAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Include Debug Output" +} - added
Input schema / properties / include_trace_sourceAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Include Trace Source" +}
1 tool update
v0.18.8- Changed
ui_grid1 field changed- added
Input schema / properties / ensure_visibleAdded value: +{ + "default": false, + "title": "Ensure Visible", + "type": "boolean" +}
1 tool update
v0.18.5- Changed
ui_grid3 fields changed- added
Input schema / properties / expectAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Expect" +} - added
Input schema / properties / phaseAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Phase" +} - added
Input schema / properties / probe_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Probe Name" +}
23 tool updates
v0.18.1- Added
get_trace_delta - Added
mark_trace_cursor - Added
runtime_smoke_cleanup_contract - Added
runtime_smoke_evidence_bundle - Added
runtime_smoke_get_event_delta - Added
runtime_smoke_get_result - Added
runtime_smoke_mark_event_cursor - Added
runtime_smoke_run_plan - Added
runtime_smoke_run_probe - Added
runtime_smoke_start - Added
runtime_smoke_stop - Added
runtime_smoke_tail_events - Added
runtime_smoke_validate_plan - Added
runtime_smoke_validate_probe - Added
runtime_smoke_wait_for_result - Added
ui_focus - Changed
ui_grid8 fields changed- added
Input schema / properties / columnAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Column" +} - added
Input schema / properties / columnsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Columns" +} - added
Input schema / properties / identityAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Identity" +} - added
Input schema / properties / max_scrollsAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Max Scrolls" +} - added
Input schema / properties / row_indexAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Row Index" +} - added
Input schema / properties / row_keyAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Row Key" +} - added
Input schema / properties / rowsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Rows" +} - added
Input schema / properties / scroll_settle_msAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Scroll Settle Ms" +}
- Added
ui_monitor_events - Added
ui_monitor_poll - Added
ui_monitor_start - Added
ui_monitor_wait - Added
ui_property - Added
ui_text
109 tool updates
v0.17.2- First observed
add_breakpoint - First observed
add_function_breakpoint - First observed
add_tracepoint - First observed
analyze_collection - First observed
apply_code_change - First observed
attach_debug - First observed
cleanup_processes - First observed
clear_breakpoints - First observed
clear_trace_log - First observed
configure_exceptions - First observed
continue_execution - First observed
create_snapshot - First observed
debug_hygiene_preflight - First observed
diff_snapshots - First observed
disassemble - First observed
evaluate_expression - First observed
find_code_references - First observed
find_code_symbol - First observed
get_build_diagnostics - First observed
get_call_stack - First observed
get_debug_state - First observed
get_exception_context - First observed
get_exception_info - First observed
get_loaded_sources - First observed
get_locations - First observed
get_modules - First observed
get_output - First observed
get_output_tail - First observed
get_progress - First observed
get_scopes - First observed
get_source_context - First observed
get_step_in_targets - First observed
get_stop_context - First observed
get_threads - First observed
get_trace_log - First observed
get_variables - First observed
instrumentation_group_clear - First observed
instrumentation_group_create - First observed
instrumentation_group_inspect - First observed
list_breakpoints - First observed
list_snapshots - First observed
output_assert_since - First observed
output_checkpoint - First observed
pause_execution - First observed
quick_evaluate - First observed
read_memory - First observed
remove_breakpoint - First observed
remove_tracepoint - First observed
restart_debug - First observed
run_runtime_smoke - First observed
search_output - First observed
search_source - First observed
set_variable - First observed
start_debug - First observed
step_into - First observed
step_out - First observed
step_over - First observed
stop_debug - First observed
summarize_object - First observed
terminate_debug - First observed
ui_bring_to_front - First observed
ui_click - First observed
ui_click_annotated - First observed
ui_click_at - First observed
ui_clipboard_read - First observed
ui_clipboard_write - First observed
ui_close_window - First observed
ui_collapse - First observed
ui_diff - First observed
ui_double_click - First observed
ui_drag - First observed
ui_events - First observed
ui_expand - First observed
ui_file_dialog - First observed
ui_find_element - First observed
ui_get_focused_element - First observed
ui_get_held_modifiers - First observed
ui_get_selected_item - First observed
ui_get_window_tree - First observed
ui_grid - First observed
ui_hold_modifiers - First observed
ui_invoke - First observed
ui_key_sequence - First observed
ui_maximize_window - First observed
ui_minimize_window - First observed
ui_move_window - First observed
ui_query - First observed
ui_read_text - First observed
ui_realize_virtualized_item - First observed
ui_release_modifiers - First observed
ui_resize_window - First observed
ui_restore_window - First observed
ui_right_click - First observed
ui_scroll - First observed
ui_select_items - First observed
ui_send_keys - First observed
ui_send_keys_batch - First observed
ui_send_keys_focused - First observed
ui_send_system_event - First observed
ui_set_focus - First observed
ui_set_value - First observed
ui_snapshot - First observed
ui_switch_window - First observed
ui_take_annotated_screenshot - First observed
ui_take_screenshot - First observed
ui_toggle - First observed
ui_wait_for - First observed
verify_debug_freshness - First observed
write_memory
TDQS
Many tools have overlapping purposes (e.g., multiple click methods, multiple output retrieval tools), and the vast number of tools (131) makes it hard to distinguish between similar ones. Descriptions help but are sometimes lengthy, and some tools like runtime_smoke_* are unclear.
Tool names follow predictable patterns: verb_noun for debug tools, ui_verb for UI tools, runtime_smoke_verb for smoke test tools. Some deviations like 'debug_hygiene_preflight' exist, but overall pattern is consistent within groups.
131 tools is excessive for a debugger/UI testing server. Many tools are redundant or could be combined (e.g., multiple click methods, breakpoint management tools). The count far exceeds typical well-scoped servers (3-15 tools).
The tool set covers debugging (breakpoints, stepping, variables, modules, memory) and UI automation (click, keyboard, window management) comprehensively. However, there are notable gaps like lack of source editing tools and some runtime_smoke tools appear experimental. Overall, the surface is broad but not fully polished.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Agent Replay Debugger MCP — record every agent step + deterministic replay. Step-debugger for
Debug, build, and manage Power Automate cloud flows with AI agents
Related MCP Servers
- AlicenseCqualityAmaintenanceEnables AI agents to perform step-through debugging of Python, JavaScript/Node.js, and Rust programs using the Debug Adapter Protocol, with support for breakpoints, variable inspection, and stack traces.21160MIT
- AlicenseBqualityCmaintenanceEnables AI agents to debug code and automate browsers using Chrome DevTools Protocol, supporting breakpoints, variable inspection, and replayable interaction recording.3533916MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to debug code inside VS Code by setting breakpoints, stepping through execution, inspecting variables, and evaluating expressions across multiple languages.491MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI coding agents to automate Windows desktop applications through semantic UI Automation instead of brittle coordinate clicks, with tools for discovering windows, finding controls by stable identifiers, and verifying actions.1MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thebtf/netcoredbg-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server