Skip to main content
Glama
dronsv
by dronsv

jdwp-mcp

Отладка работающих JVM через JDWP — из любого MCP-совместимого агента.

License: MIT

Подключайтесь к запущенному Java-процессу, приостанавливайте потоки, исследуйте стеки и объекты, устанавливайте точки останова и оценивайте состояние — с помощью естественного языка. Один промпт запускает цикл диагностики под управлением агента с использованием данных о работе программы в реальном времени.

Работает с Claude Code, Codex, Cursor или любым другим MCP-совместимым агентом.

Посмотрите на это в действии

Сервисный запрос завис. Найдите первопричину:

> Attach to localhost:5005 and find out why a query is stuck.

Агент подключается, приостанавливает все потоки и сканирует их на наличие проблемы:

connected localhost:5005
paused
24 threads, 2 blocked

Thread pool-3-thread-7 is waiting for a monitor lock:
#0 RolapResult.loadMembers:142
  monitor=@3f2a  state=BLOCKED
#1 RolapResult.execute:89

Lock is held by pool-3-thread-2, which is running:
#0 SqlStatement.execute:218
  sql="SELECT ... FROM fact_table"   -- full scan on 36M rows

Root cause: the query bypassed the aggregate table and fell back to
a full fact-table scan. Thread-7 is waiting for thread-2 to finish.

Один промпт. Шесть вызовов инструментов. Конфликт блокировок и первопричина выявлены.

Related MCP server: karellen-jdb-mcp

Быстрый старт

1. Установка

pip install jdwp-mcp
# Pre-built binary
curl -fsSL https://raw.githubusercontent.com/dronsv/jdwp-mcp/main/install.sh | sh

# Cargo (requires Rust)
cargo install --git https://github.com/dronsv/jdwp-mcp

# From source
git clone https://github.com/dronsv/jdwp-mcp && cd jdwp-mcp && cargo build --release

2. Настройка вашего агента

claude mcp add jdwp jdwp-mcp

Для Codex, Cursor или других MCP-совместимых агентов добавьте в .mcp.json:

{
  "mcpServers": {
    "jdwp": {
      "command": "jdwp-mcp"
    }
  }
}

3. Запустите ваше Java-приложение с JDWP

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar app.jar

4. Отладка

Attach to localhost:5005 and set a breakpoint at com.example.MyService line 42

5. Автоматическое подтверждение (опционально)

Отладка включает множество быстрых вызовов инструментов. Автоматическое подтверждение устраняет запросы на подтверждение:

# Allow all jdwp tools for this project
claude config set --project allowedTools 'mcp__jdwp__*'
claude config set allowedTools 'mcp__jdwp__*'

Включайте только для проектов, которым вы доверяете — инструменты jdwp могут приостанавливать потоки, изменять переменные и вызывать методы в целевой JVM.

Пакеты промптов

Выберите пакет, соответствующий вашей ситуации:

Приложение зависает или работает медленно

Attach to localhost:5005
Pause the JVM and find all blocked or waiting threads
Show the stack for the blocked thread with variables
Who holds the lock? Show their stack too

Исключение в логах

Attach to localhost:5005
Set an exception breakpoint for NullPointerException
Wait for the exception to fire
Show the stack and all local variables at the throw site

Нужно понять путь выполнения кода

Attach to localhost:5005
Trace method calls on com.example.service
[send your HTTP request]
Show the trace result — which methods were called?

Отладка с использованием точек останова

Attach to localhost:5005
Find classes matching UserService
List methods of UserService with line numbers
Set a breakpoint at UserService line 45
When it hits, show the stack with all variables
Step over to the next line

Команды Claude Code

Если вы клонируете этот репозиторий, вы получите готовые команды с косой чертой:

  • /investigate-hang — диагностика зависшей JVM (приостановка, поиск заблокированных потоков, отслеживание блокировок)

  • /investigate-exception — перехват активного исключения и исследование места его возникновения

  • /trace-request — отслеживание методов, через которые проходит запрос

А также автономный агент-исследователь (.claude/agents/jdwp-investigator.md), который можно запустить для диагностики зависаний, взаимных блокировок, исключений и неожиданных путей выполнения кода.

См. .claude/settings.example.json для рекомендуемой конфигурации автоматического подтверждения и проверки обновлений.

Лучшие сценарии использования

  • Зависшие запросы и взаимные блокировки

  • Заблокированные пулы потоков

  • Подозрительный SQL или несоответствие состояния во время выполнения

  • Диагностика с помощью точек останова без доступа к IDE

  • Удаленная отладка через kubectl port-forward

Почему это лучше, чем jstack или IDE?

  • Работает внутри вашего агента — нет переключения между инструментами, нет отдельного окна отладчика

  • Объединяет подключение + инспекцию + рассуждение в одном цикле — агент сам решает, что исследовать дальше

  • Разговорный интерфейс — опишите проблему, агент запустит сеанс отладки

  • Источник истины для больших кодовых баз — в сложных проектах с глубокими стеками фреймворков (Spring, Hibernate, OLAP-движки) агенты могут запутаться при статическом отслеживании путей кода. Живая отладка дает агенту фактическое состояние во время выполнения: какой поток удерживает блокировку, какой SQL был сгенерирован, какое значение переменная имеет прямо сейчас

Инструменты

Подключение и управление attach, disconnect, pause, continue, step into/over/out

Точки останова и события set_breakpoint (с условиями), clear, list, exception_breakpoint, watch (модификация поля), wait_for_event

Инспекция get_stack (автоматическое разрешение объектов), get_variable, inspect, eval, set_value, snapshot, find_class, list_methods, list_threads, vm_info

Трассировка trace (включение трассировки на уровне методов в пакете), trace_result (получение пути вызова)

Не используйте для

  • Посмертного анализа кучи (heap analysis)

  • Постоянного наблюдения за продуктовой средой

  • Сред, где подключение JDWP или приостановка потоков операционно небезопасны

Операционное примечание

JDWP изменяет поведение во время выполнения. Приостановка потоков и установка точек останова могут нарушить работу. Используйте осторожно в продуктовой среде; отдавайте предпочтение промежуточным средам (staging) или контролируемым окнам обслуживания.

Сценарии развертывания

См. docs/deploy.md для настройки с Maven, Gradle, Tomcat, Docker, Kubernetes (port-forward) и SSH-туннелями.

Примеры

Архитектура

Agent  -->  MCP Server  -->  JDWP Client  -->  TCP  -->  JVM
              |
        Translates tool calls to JDWP,
        tracks session state, summarizes
        runtime objects for the agent.

Сборка из исходного кода

cargo build --release
cargo test

Лицензия

MIT

Available Tools

28 tools
debug.attachC

Connect to JVM via JDWP

ParametersJSON Schema
NameRequiredDescriptionDefault
allow_remoteNo
hostYeslocalhost
portYes
timeout_msNo

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose all behavioral traits. It only states 'Connect' but does not mention side effects (e.g., blocking, state changes, requirements for JVM flags), failure modes, or what happens if already connected. The timeout parameter is not explained.

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

Conciseness2/5

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

The description is extremely short (5 words), but this is under-specification rather than effective conciseness. It fails to convey essential information, so the brevity is detrimental to usability. The structure is lacking.

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

Completeness1/5

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

Given the lack of annotations, output schema, and parameter descriptions, the description is severely incomplete. It omits return values, behavioral details, prerequisites, and interaction with sibling tools. A comprehensive description is needed for this complex connection tool.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to any of the four parameters (allow_remote, host, port, timeout_ms). The agent must infer their purpose solely from names and defaults, which is insufficient for precise invocation.

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

Purpose5/5

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

The description 'Connect to JVM via JDWP' clearly states the exact action (connect) and target (JVM via JDWP). It distinguishes this tool from sibling tools like debug.disconnect or debug.set_breakpoint, which serve different purposes.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not tell the agent when to use attach (e.g., before other debug operations) or when to avoid it (e.g., if already connected). Sibling tools like debug.disconnect imply a workflow, but no explicit advice is given.

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

debug.clear_breakpointB

Remove a breakpoint by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
breakpoint_idYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as error handling (e.g., if breakpoint_id is invalid) or 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.

Conciseness5/5

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

Extremely concise, one phrase, no wasted words. Front-loaded with key information.

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

Completeness3/5

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

Adequate for a simple tool with one parameter and no output schema, but lacks any details on return type or error conditions.

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

Parameters2/5

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

Single parameter 'breakpoint_id' with 0% schema description coverage. Description adds 'by ID' but no additional meaning like format or validation rules.

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

Purpose5/5

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

Clearly states the verb 'remove' and the resource 'breakpoint by ID'. Distinguishes from sibling tools like set_breakpoint and list_breakpoints.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., list_breakpoints, set_breakpoint) or prerequisites (e.g., breakpoint must exist).

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

debug.continueA

Resume all threads

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description should disclose side effects or prerequisites. It only states the action without mentioning resumption context or impact on breakpoints.

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

Conciseness5/5

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

A single, clear sentence with no unnecessary words.

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

Completeness3/5

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

Given the simplicity of the tool (no params, no output schema), the description is adequate but could benefit from usage context.

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

Parameters4/5

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

No parameters exist, so the description does not need to add parameter details. The baseline for 0 params is 4.

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

Purpose5/5

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

The description 'Resume all threads' clearly states the action and target, distinguishing it from sibling tools like 'pause' or 'step_into'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool (e.g., after pausing or hitting a breakpoint) vs alternatives like stepping or disconnecting.

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

debug.disconnectA

End debug session

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must carry full burden. While 'End debug session' is straightforward, it does not disclose potential behaviors like whether it can be called on an already disconnected session, any side effects, or if it requires authentication.

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

Conciseness5/5

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

The description is two words, perfectly concise and front-loaded with all necessary information. Every word earns its place.

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

Completeness5/5

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

Given zero parameters and no output schema, the description is fully adequate for a disconnect action. It completely describes the tool's effect without missing information.

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

Parameters4/5

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

Tool has zero parameters and 100% schema coverage, so baseline is 4. Description adds no parameter info, but none is needed.

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

Purpose5/5

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

The description 'End debug session' uses a specific verb ('End') and resource ('debug session'), clearly distinguishing it from sibling tools like debug.attach, debug.pause, or debug.continue that involve other actions.

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

Usage Guidelines3/5

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

The description implies usage is to terminate a debugging session, but provides no explicit guidance on when to use it versus alternatives (e.g., debug.pause) or any prerequisites like having an active session.

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

debug.evalC

Invoke a method on an object. Supports args: list.get(0), map.get("key")

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNomethod arguments: [0], ["key"], [true]
methodNotoString
object_idYeshex e.g. 0x1a3f
thread_idNohex, optional

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility. It fails to disclose whether invoking a method can mutate state, produce side effects, or what happens on failure (e.g., method not found, exception). The behavior is under-specified.

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

Conciseness4/5

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

The description is short (two sentences), no redundant information, and to the point. It could be more structured (e.g., listing parameters), but the brevity is acceptable for a simple tool.

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

Completeness2/5

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

Given 4 parameters and no output schema, the description should clarify what the tool returns (e.g., return value of the method). It does not explain the evaluation context, error handling, or how object_id relates to the debug session. Incomplete for a complex debugging tool.

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

Parameters3/5

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

Schema coverage is 75%, so the description adds limited value. The description provides an example of how to pass arguments for args, reinforcing the schema's description. However, the method parameter lacks schema description and is not elaborated in the description.

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

Purpose4/5

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

The description clearly states 'Invoke a method on an object' with specific examples for arguments, making the purpose reasonably clear. However, it does not differentiate from sibling tools like debug.inspect or debug.get_variable, which might also involve method calls or evaluations.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as debug.get_variable or debug.inspect. There are no mentions of prerequisites or context (e.g., requires a running debug session with a paused thread).

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

debug.exception_breakpointA

Break on exceptions (caught/uncaught, optionally by class)

ParametersJSON Schema
NameRequiredDescriptionDefault
caughtNo
class_patternNoexception class, omit for all
uncaughtNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It minimally states 'Break on exceptions' but does not explain what happens upon break (e.g., debugger pauses), prerequisites (e.g., attached debug session), or lifecycle. This is adequate but insufficient for full transparency.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the core function without any extraneous words. Every part earns its place.

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

Completeness2/5

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

For a debug tool with side effects and dependencies, this description is too brief. It does not mention required setup (e.g., debug session via debug.attach), expected return values, or interaction with other tools like debug.list_breakpoints. An agent would likely need additional context to use it correctly.

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

Parameters2/5

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

The input schema has 3 parameters with only 33% description coverage (class_pattern described). The description adds 'optionally by class' but does not clarify the boolean semantics of 'caught' and 'uncaught' (e.g., default true means break on all caught/uncaught exceptions). Thus, it adds minimal value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Break on exceptions (caught/uncaught, optionally by class)'. This specifies the verb 'break', the resource 'exceptions', and the filtering options, distinguishing it from other breakpoint tools like line breakpoints.

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

Usage Guidelines4/5

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

While no explicit when-to-use or alternatives are given, the purpose and sibling tools (e.g., debug.set_breakpoint for line breakpoints) make the context clear. The description implies usage for setting exception breakpoints, but lacks direct guidance on 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.

debug.find_classB

Search loaded classes by name pattern

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYese.g. UserService or com.example.User

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, description must disclose behavioral traits. It only states 'Search loaded classes' implying read-only, but fails to specify match behavior (case sensitivity, glob vs regex), return format, 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.

Conciseness5/5

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

Single short sentence, front-loaded, no wasted words. Efficient for the tool's simplicity.

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

Completeness3/5

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

Given the tool's simplicity (1 param, no output schema, no annotations), the description provides minimal context. Missing details about what 'loaded classes' means and what the search result contains, but still adequate for a straightforward search.

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

Parameters3/5

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

Schema already covers the single parameter 'pattern' with an example. Description adds no extra semantic details beyond schema, baseline 3 is appropriate due to high schema coverage.

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

Purpose4/5

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

Description clearly states verb 'Search' and resource 'loaded classes' with criterion 'by name pattern'. It distinguishes itself from siblings like debug.inspect and debug.list_classes, though no explicit differentiation is given.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Description lacks context such as prerequisites or alternative tool suggestions.

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

debug.get_last_eventB

Show last breakpoint/step event

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose whether the operation is read-only, what the return value contains, or any side effects. The minimal description leaves the agent guessing.

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

Conciseness5/5

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

Single sentence, no extraneous words. The description is appropriately sized for a simple retrieval tool.

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

Completeness3/5

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

Simple tool with no parameters and no output schema; description suffices for basic understanding but could mention return type or event structure for better completeness.

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

Parameters4/5

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

Input schema has zero parameters, so schema coverage is 100%. Baseline for no parameters is 4; description adds no further parameter info but that is acceptable given no parameters exist.

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

Purpose4/5

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

Description uses specific verb 'Show' and resource 'last breakpoint/step event', clearly indicating the tool retrieves the most recent debugging event. It distinguishes from sibling tools like get_stack or get_variable by focusing on events.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as wait_for_event or get_stack. The description does not provide context on typical scenarios or exclusions.

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

debug.get_stackC

Get stack frames with variables

ParametersJSON Schema
NameRequiredDescriptionDefault
include_variablesNo
max_framesNo
max_variable_depthNo
thread_idNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It only states it gets stack frames, implying a read operation, but lacks details on performance, thread requirements, 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.

Conciseness4/5

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

Very concise, one sentence front-loaded with verb and resource. Every word adds value, though slightly more structure could aid readability.

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

Completeness1/5

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

Given the tool has 4 parameters, no output schema, and no annotations, the description is far too minimal. It does not cover usage context, return format, or parameter effects, making it incomplete.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the 4 parameters. 'With variables' hints at include_variables, but it's insufficient for correct invocation.

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

Purpose4/5

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

The description clearly states the tool retrieves stack frames with variables, which is precise. However, it doesn't differentiate from siblings like inspect or get_variable, which also deal with debug state.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. The description does not mention prerequisites, context, or scenarios where this tool is appropriate.

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

debug.get_variableB

Read one local variable by name

ParametersJSON Schema
NameRequiredDescriptionDefault
frame_indexNo
nameYes
thread_idNohex, optional

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description must carry the burden. 'Read' implies safety but lacks details on state requirements or side effects. Adequate but minimal.

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

Conciseness5/5

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

One sentence, directly stating the purpose. No fluff, front-loaded with the core action.

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

Completeness2/5

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

For a 3-parameter tool with no output schema and no annotations, the description omits return format, error conditions, and usage context (e.g., paused thread). Incomplete.

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

Parameters2/5

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

Schema description coverage is 33% (only thread_id described). Description does not explain frame_index or add meaning beyond schema, failing to compensate for low coverage.

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

Purpose5/5

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

Description states 'Read one local variable by name' with a clear verb and resource, and it distinguishes from siblings like debug.eval or debug.inspect.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like debug.eval or debug.inspect, nor prerequisites like requiring a paused state.

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

debug.inspectB

Inspect object fields by object ID

ParametersJSON Schema
NameRequiredDescriptionDefault
object_idYeshex e.g. 0x1a3f

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not mention whether the operation is read-only, what happens on invalid object_id, or if it requires an active debug session. The description is too minimal.

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

Conciseness5/5

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

The description is a single sentence with no extraneous words, efficiently conveying the core purpose.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description is minimally adequate but lacks usage guidelines and behavioral details that would help an agent select and use it correctly among many siblings.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter object_id, which already has a description. The tool description adds no further meaning to parameters, meeting the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb 'Inspect' and resource 'object fields', clearly indicating the tool's function. It distinguishes from sibling tools like debug.get_variable which retrieves a single variable, while debug.inspect likely returns all fields of an object.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_variable or get_stack. The description lacks context on prerequisites, such as the object needing to exist or be accessible.

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

debug.list_breakpointsB

List active breakpoints

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only states the action without disclosing behavioral traits such as side effects, performance implications, or whether it returns all breakpoints. The read-only nature is implied but not explicit.

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

Conciseness4/5

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

The description is a single, concise sentence with no wasted words. However, it is extremely brief and could benefit from slightly more context without losing conciseness.

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

Completeness2/5

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

Given the lack of output schema, the description does not indicate what the tool returns (e.g., list of breakpoint IDs, full objects?). The tool is simple, but the description is incomplete for an agent to fully understand the response format.

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

Parameters4/5

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

The input schema has no parameters and schema coverage is 100%. The description adds no parameter info because none are needed, which is appropriate. Baseline 4 applies for zero-parameter tools.

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

Purpose5/5

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

The description clearly states 'List active breakpoints' with a specific verb 'list' and resource 'breakpoints', distinguishing it from sibling tools like set_breakpoint (sets) and clear_breakpoint (clears).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., when to list vs. inspect). The description is minimal and does not provide context or exclusions.

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

debug.list_methodsB

List methods of a class with line ranges

ParametersJSON Schema
NameRequiredDescriptionDefault
class_patternYese.g. com.example.MyClass

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It lacks details on what happens if the class is not found, any required debug session state, or side effects. Only states basic action.

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

Conciseness5/5

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

Extremely concise: a single sentence conveying the core functionality without any unnecessary words. Well-structured and front-loaded.

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

Completeness3/5

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

Adequately describes the main function but lacks contextual details such as whether the class must be loaded, output format, or requirements like an active debug session. No output schema provided to clarify return values.

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

Parameters3/5

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

Schema coverage is 100% with a clear parameter description including an example. The tool description adds no further meaning beyond the schema, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: listing methods of a class, and specifies it includes line ranges. It distinguishes from sibling tools like debug.list_breakpoints or debug.list_threads.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no prerequisites or typical scenarios mentioned. While the context of debugging implies its use, explicit guidance is missing.

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

debug.list_threadsB

List all threads

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as side effects, permissions, or behavior when no threads exist. This is insufficient for safe agent usage.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that is appropriately sized for the tool's simplicity. No unnecessary words.

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

Completeness2/5

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

For a debug tool with many siblings and no output schema, the description lacks context about what threads are listed, how they relate to other debug operations, and possible outputs.

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

Parameters4/5

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

The tool has no parameters, and schema description coverage is 100% (no params). The description adds no parametric meaning, but baseline is 4 for zero-param tools.

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

Purpose4/5

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

The description 'List all threads' clearly states the action and resource. It distinguishes from sibling tools like debug.select_thread and debug.get_stack, but could be more specific about the context (e.g., threads in the debug session).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings. For example, it does not explain that this tool is useful before calling debug.select_thread or debug.get_stack.

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

debug.pauseB

Suspend all threads

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It only states the action without clarifying side effects, reversibility, or whether the operation is safe (e.g., does it lock the debugger?). This is insufficient for a tool that suspends execution.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the purpose. No wasted words; it is appropriately front-loaded for a no-parameter tool.

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

Completeness2/5

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

Given the absence of annotations, output schema, and parameters, the description is too sparse. It does not mention dependencies like being attached to a target (implied by sibling 'debug.attach') or the effect on subsequent steps. A complete description would provide more operational context.

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

Parameters4/5

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

There are zero parameters, and the input schema is fully covered. The description adds no extra parameter information, but none is needed. Baseline of 4 is appropriate.

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

Purpose5/5

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

The description 'Suspend all threads' uses a clear verb and specific resource, unambiguously stating the tool's action. It distinguishes itself from siblings like 'continue' or 'step_into' by focusing on suspension of all threads.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as 'debug.step_into' or 'debug.continue'. The description lacks context about prerequisites (e.g., being attached to a process) or scenarios where pausing is appropriate.

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

debug.select_threadB

Set default thread for inspection

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idYeshex e.g. 0x1a2b

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden. It fails to disclose side effects (e.g., state changes, idempotency, error handling on invalid thread_id). The brief text offers no behavioral insights 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.

Conciseness3/5

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

At three words, the description is extremely concise and front-loaded. However, it sacrifices informational value; every sentence does not earn its place because it omits critical usage and behavior details.

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

Completeness2/5

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

Given the single required parameter, no output schema, and the debug context, the description is incomplete. It does not explain what 'default thread' entails or how it affects other debug operations, leaving the agent with insufficient context.

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

Parameters3/5

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

The input schema already describes the parameter format ('hex e.g. 0x1a2b') with 100% coverage. The description adds no additional meaning, so it meets the baseline but does not enhance understanding.

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

Purpose5/5

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

The description 'Set default thread for inspection' clearly states the verb (set), resource (default thread), and purpose (for inspection). It distinguishes from sibling tools like debug.list_threads (listing) and debug.attach (attaching), making its role unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for inspection but does not explicitly state when to use it versus alternatives (e.g., after listing threads but before inspecting variables). No exclusions or context on prerequisites are provided.

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

debug.set_breakpointB

Set breakpoint at class:line, optionally conditional

ParametersJSON Schema
NameRequiredDescriptionDefault
class_patternYese.g. com.example.MyClass
conditionNoe.g. count==5 — auto-resumes if false
lineYes
methodNooptional, disambiguates

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, description must disclose behaviors. Only mentions optional condition. Lacks details on overwriting existing breakpoints, persistence, 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.

Conciseness5/5

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

Single concise sentence with essential information. No wasted words. Front-loaded purpose.

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

Completeness2/5

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

Missing return value description, no details on behavior when breakpoint already exists, and no integration guidance with sibling tools. Incomplete for a debugging context.

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

Parameters3/5

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

Schema already describes 3 of 4 parameters. Description adds no new semantic information beyond schema, meeting baseline for 75% coverage.

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

Purpose5/5

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

Description clearly states the action (set breakpoint) and location (class:line). Distinguishes from sibling tools like clear_breakpoint or list_breakpoints.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other breakpoint-related siblings (e.g., exception_breakpoint, watch). Lacks context for selection.

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

debug.set_valueB

Set a local variable value in a stack frame

ParametersJSON Schema
NameRequiredDescriptionDefault
frame_indexNo
nameYes
thread_idNohex, optional
valueYesnew value (int/bool/float/string/null)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It does not disclose side effects, prerequisites (e.g., must be attached to debugger), or failure conditions when variable doesn't exist.

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

Conciseness5/5

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

Single sentence, no wasted words, perfectly front-loaded.

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

Completeness2/5

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

Given no annotations, no output schema, and 4 parameters, the description is too sparse. It omits details on optional parameters, return type, and operational context like thread and frame requirements.

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

Parameters2/5

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

Schema coverage is 50% for thread_id and value, but the description adds no additional meaning for 'frame_index' or 'name'. It fails to explain that frame_index defaults to 0 and the role of name.

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

Purpose5/5

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

Description clearly states 'Set a local variable value in a stack frame' – a specific verb and resource that distinguishes it from siblings like debug.eval or debug.set_breakpoint.

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

Usage Guidelines2/5

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

No guidance on when to use this tool or when to avoid it; no comparison to alternatives despite many sibling debugging tools with overlapping contexts.

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

debug.snapshotA

Combined dump: last event + breakpoints + stack with vars

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose side effects, permissions, read-only nature, output format, or any potential impact on debug state. For a zero-parameter tool, more context on what 'dump' entails would be beneficial.

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

Conciseness5/5

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

The description is a single concise sentence that efficiently conveys the tool's purpose with no wasted words.

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

Completeness4/5

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

For a tool with no parameters and no output schema, the description covers the key components of the snapshot. However, it lacks explicit mention of the operation's side effects (likely none) and output format, leaving some ambiguity.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100%. The description adds meaning by clarifying the tool's output components (last event, breakpoints, stack with vars), which is valuable beyond the empty schema.

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

Purpose5/5

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

The description clearly states it's a combined dump of three specific debug states: last event, breakpoints, and stack with variables. This distinguishes it from sibling tools that provide individual components.

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

Usage Guidelines3/5

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

The description implies it should be used when a combined view is needed rather than calling separate tools, but it does not explicitly state when to use or avoid this tool, nor does it name alternatives.

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

debug.step_intoB

Step into next line

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idNohex e.g. 0x1a2b, optional

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral transparency, but it only states the basic action. It omits details such as requiring a paused state, that stepping into a function call will enter it, and how the optional thread_id parameter affects behavior.

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

Conciseness3/5

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

The description is a single sentence and very concise, but it sacrifices necessary content. It is not overly verbose, but could benefit from expanding to cover essential usage context.

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

Completeness2/5

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

Given the complex debugging context and sibling tools, the description is too sparse. It does not mention that the debugger must be in a paused state, what 'next line' means in terms of function calls, or how the optional thread_id is used.

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

Parameters3/5

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

Schema coverage is 100% with one parameter (thread_id) described in the schema. The description adds no information about parameters, so it does not supplement the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description 'Step into next line' clearly states the verb ('Step into') and the resource ('next line'). It unambiguously indicates the tool's action and distinguishes from sibling tools like 'step_over' or 'step_out'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., debugger must be paused) or comparison with other step operations.

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

debug.step_outC

Step out of current frame

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idNohex e.g. 0x1a2b, optional

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It fails to mention that stepping out resumes execution until the current function returns, that the debugger will pause at the caller, or any side effects like frame destruction. This is a significant gap for a mutation tool.

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

Conciseness4/5

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

The description is a single, concise sentence that gets the point across without unnecessary words. However, it could be slightly expanded without losing conciseness to improve completeness.

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

Completeness2/5

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

Given the simplicity of the tool (1 optional param, no output schema), the description lacks essential context such as the requirement for the debugger to be paused, the effect on execution flow, and the expected state after the step. This incompleteness could lead an agent to misuse the tool.

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

Parameters3/5

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

The input schema has one optional parameter (`thread_id`) with a description, giving 100% coverage. The tool description adds no further meaning about the parameter, so it meets the baseline of 3 but does not exceed it.

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

Purpose4/5

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

The description 'Step out of current frame' uses a standard debugging verb and resource, clearly indicating the action. It distinguishes from sibling tools like 'step_into' and 'step_over' without needing elaboration, though a slightly more explicit explanation could improve clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., step_into, step_over). The description does not mention prerequisites like the debugger being in a paused state or what to expect after stepping out.

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

debug.step_overB

Step over next line

ParametersJSON Schema
NameRequiredDescriptionDefault
thread_idNohex e.g. 0x1a2b, optional

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It fails to mention preconditions like a paused state, what happens when stepping over function calls, or any side effects. The minimal phrase 'Step over next line' provides insufficient transparency.

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

Conciseness4/5

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

The description is extremely concise, only four words. While it lacks structure, it is appropriately short for a well-known operation. However, a bit more context would improve it slightly.

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

Completeness2/5

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

For a debug step operation, the description is too brief. It omits important context like required debugger state, error conditions, and return values (no output schema). Given the richness of sibling tools, more detail is needed for a complete picture.

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

Parameters3/5

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

The input schema covers 100% of parameters (thread_id with description). The main description adds no additional meaning beyond the schema, meeting the baseline of 3.

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

Purpose5/5

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

The description 'Step over next line' uses a specific verb and resource, clearly distinguishing from siblings like step_into and step_out. In a debugger context, this is a standard and unambiguous action.

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

Usage Guidelines2/5

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

No guidance is provided on when to use step_over versus alternatives such as step_into or step_out. The description assumes the user already knows the appropriate context, leaving the agent without explicit usage cues.

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

debug.traceA

Trace method calls on a class/package. Returns immediately; use debug.trace_result to get the call path.

ParametersJSON Schema
NameRequiredDescriptionDefault
aggregateNoaggregate mode: count calls + wall-clock time per method
class_patternYese.g. com.example.service (appends * automatically)
include_argsNocapture method args (slower)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description discloses that it returns immediately and that results are obtained elsewhere, but lacks details on concurrency, statefulness, 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.

Conciseness5/5

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

The description is extremely concise with two short sentences, front-loading the core purpose and necessary workflow.

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

Completeness4/5

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

Given the absence of an output schema, the description adequately explains the workflow and what the tool does, though it could mention the return type or side effects.

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

Parameters3/5

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

Schema coverage is 100% with each parameter already described; the definition adds no additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it traces method calls on a class/package and immediately returns, distinguishing it from the sibling tool debug.trace_result which retrieves the call path.

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

Usage Guidelines4/5

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

The description explicitly mentions using debug.trace_result to obtain results, giving clear context on alternative usage, though it does not specify 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.

debug.trace_resultA

Get collected trace after debug.trace. Shows call path with depth.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNostop tracing after retrieval
min_msNoaggregate mode: only show methods >= this ms

TDQS

A3.9/5.0
Behavior3/5

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

No annotations; description mentions output but not default clearing behavior (clear parameter true). Partially transparent.

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

Conciseness5/5

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

Two sentences, front-loaded, no filler.

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

Completeness3/5

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

No output schema; description vague on result details (e.g., how min_ms affects output). Could explain more.

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

Parameters3/5

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

Schema coverage 100%, description adds minimal value beyond schema (only 'Shows call path with depth').

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

Purpose5/5

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

Description clearly states 'Get collected trace after debug.trace' with verb and resource, and distinguishes from sibling debug.trace.

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

Usage Guidelines4/5

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

Implied usage after debug.trace, but no explicit when-not-to-use or alternatives.

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

debug.vm_infoA

Get JVM version info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description must convey behavioral traits. It implies a read-only operation, which is consistent with the resource. However, it does not explicitly state safety or lack of side effects, though the simplicity mitigates the need.

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

Conciseness4/5

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

The description is a single sentence front-loaded with the intent. It is appropriately brief for a tool with no parameters, though it could add more detail about the return format.

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

Completeness2/5

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

No output schema exists, so the description should describe what is returned. 'JVM version info' is vague; it does not specify if it returns a string, object, or structured data. A more complete description would mention the format or structure of the info.

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

Parameters4/5

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

There are no parameters (0 params), so baseline is 4. The description correctly does not need to elaborate on parameters.

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

Purpose5/5

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

The description 'Get JVM version info' clearly identifies the action (get) and the resource (JVM version info). It distinguishes itself from sibling tools which are focused on debugging actions like breakpoints, evaluation, and stack inspection.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as debug.inspect or debug.get_variable. There is no mention of context or exclusions.

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

debug.wait_for_classA

Wait for a class to be loaded by the JVM. Use when set_breakpoint says class not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_patternYese.g. com.example.MyService or *MyService
timeout_msNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It states the tool 'waits', implying blocking, and the timeout parameter is documented in the schema. However, it does not explain what happens after the wait (e.g., return value, error behavior, or impact on breakpoints). Adding such details would improve transparency.

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

Conciseness5/5

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

The description is two sentences with no unnecessary words. It front-loads the core action and then provides usage context. Every sentence adds value, achieving high conciseness.

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

Completeness3/5

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

Given the tool's complexity (a blocking wait with two parameters and no output schema), the description covers basic purpose and usage trigger. However, it is incomplete regarding post-wait outcomes (e.g., does it return a boolean? set breakpoint automatically?). Additional details would improve completeness.

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

Parameters2/5

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

The schema description coverage is 50% (only class_pattern has a description). The tool description does not add any meaning to the parameters; it neither explains class_pattern format nor the timeout_ms purpose. Without this, the agent must rely solely on the sparse schema example for class_pattern and infer timeout semantics from the type.

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

Purpose5/5

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

The description clearly states the tool's function: 'Wait for a class to be loaded by the JVM.' It also provides a specific usage scenario ('Use when set_breakpoint says class not found'), which distinguishes it from sibling tools like find_class or wait_for_event.

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

Usage Guidelines4/5

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

The description explicitly tells when to use this tool: when set_breakpoint says class not found. This provides clear context. However, it does not mention when not to use it or list alternatives, though the condition is specific enough to guide correct invocation.

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

debug.wait_for_eventC

Wait for next event with timeout

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_msNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not specify what happens on timeout, whether it blocks, or what it returns (e.g., null, event object). The description is too sparse to inform an agent of important behavior.

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

Conciseness3/5

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

The description is very short (one sentence), which is concise but not sufficiently informative. It lacks structure or front-loading of key information. However, it is not verbose.

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

Completeness2/5

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

Given no output schema, no annotations, and many siblings, the description lacks details about the event type, return values, and error conditions. An agent would 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.

Parameters2/5

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

Only one parameter (timeout_ms) with default in schema but no description. Schema coverage is 0%. The description only mentions 'timeout' generically, adding no extra meaning beyond the schema's existence of a timeout parameter.

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

Purpose3/5

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

The description states it waits for an event with timeout, but 'event' is vague. In the context of debug tools, it likely refers to debug events, but it does not differentiate from siblings like 'get_last_event' or 'wait_for_class' which have more specific purposes.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., get_last_event, wait_for_class). No exclusions or context provided. The description only states the basic action without usage context.

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

debug.watchB

Watchpoint: break when a field is modified

ParametersJSON Schema
NameRequiredDescriptionDefault
class_patternYese.g. com.example.MyClass
fieldYesfield name to watch

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description is too brief to disclose behavioral traits such as side effects, persistence, or triggers. It fails to inform the agent about what happens when the watchpoint is hit or any prerequisites.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. It is concise, though it lacks structure or front-loading of key information. Given the simplicity, it suffices.

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

Completeness2/5

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

Despite the tool's simplicity and full schema coverage, the description omits essential contextual details like what happens when the watchpoint triggers, potential performance impacts, or limitations. It is not fully complete for an agent to reliably use.

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

Parameters3/5

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

The input schema already provides descriptions for both parameters (class_pattern with example, field with field name). The tool description adds no additional meaning, so the baseline score of 3 is appropriate given 100% schema coverage.

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

Purpose5/5

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

The description clearly states the tool sets a watchpoint that triggers when a field is modified, which is a specific verb+resource combination. It implicitly distinguishes from line-based breakpoints (e.g., debug.set_breakpoint) through the name and description.

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

Usage Guidelines2/5

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

No guidance on when to use a watchpoint versus alternatives like debug.set_breakpoint or debug.exception_breakpoint. The description does not provide context for usage decisions.

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. 28 tool updatesv0.2.0
    • First observeddebug.attach
    • First observeddebug.clear_breakpoint
    • First observeddebug.continue
    • First observeddebug.disconnect
    • First observeddebug.eval
    • First observeddebug.exception_breakpoint
    • First observeddebug.find_class
    • First observeddebug.get_last_event
    • First observeddebug.get_stack
    • First observeddebug.get_variable
    • First observeddebug.inspect
    • First observeddebug.list_breakpoints
    • First observeddebug.list_methods
    • First observeddebug.list_threads
    • First observeddebug.pause
    • First observeddebug.select_thread
    • First observeddebug.set_breakpoint
    • First observeddebug.set_value
    • First observeddebug.snapshot
    • First observeddebug.step_into
    • First observeddebug.step_out
    • First observeddebug.step_over
    • First observeddebug.trace
    • First observeddebug.trace_result
    • First observeddebug.vm_info
    • First observeddebug.wait_for_class
    • First observeddebug.wait_for_event
    • First observeddebug.watch

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose, covering breakpoints, stepping, variable inspection, evaluation, tracing, and thread control. No two tools have overlapping functionality that would cause confusion.

Naming Consistency5/5

All tools use the 'debug.' prefix and follow a consistent verb_noun or action_noun pattern in lowercase with underscores. Verbs like get, set, list, clear, step, wait are used uniformly.

Tool Count4/5

With 28 tools, the count is slightly above the typical 3-15 range but still reasonable for a comprehensive JDWP debugger covering many operations. The tools are not redundant.

Completeness4/5

The tool surface covers major debugging workflows: attach, breakpoints, stepping, variable inspection, evaluation, tracing, and thread management. Minor gaps like modifying object fields or 'run to cursor' are absent but workable.

Maintenance

ActivityInactive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    Enables 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.
    21
    160
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to debug Java applications using JDB, supporting breakpoints, stepping, expression evaluation, thread analysis, and more.
    3
    Apache 2.0
  • F
    license
    Not graded
    quality
    A
    maintenance
    Bridges agentic coding tools and live Java runtime behavior through a lightweight sidecar agent. Attaches directly to a running JVM to provide bytecode-level runtime signals for probe-verified inspection and deterministic debugging.
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Bridges AI agents with VS Code's debugger, enabling breakpoint management, step execution, variable inspection, and stack tracing via CLI commands.
    24
    GPL 3.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dronsv/jdwp-mcp'

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