Skip to main content
Glama

ABAP Debug Session

abap_debug_session

Start, check, or end an external ABAP debugger listener for a user; listen blocks until a breakpoint hit or timeout and returns debuggee details for inspection.

Instructions

Start, check or end the external ABAP debugger listener for a user. 'listen' registers a listener and then blocks until a program of that user hits a breakpoint (set one first with abap_debug_set_breakpoint) or the listener times out, and returns the debuggee details; then use abap_debug_step, abap_debug_variable and abap_debug_stack. 'status' shows the listener this server holds for the connection; 'detach' removes it. Reports a conflict if another debugger is already attached for that user. Does not change any object.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "<action>"
    },
    "name": "abap_debug_session"
  }
}

Input Schema

NameRequiredDescriptionDefault
actionYeslisten: wait for a breakpoint hit (blocks); detach: remove the listener; status: show terminal id, IDE id and user of the current listener, if any
usernameNoSAP user whose programs to debug (listen only; default: the connected user)
connectionIdNoSAP system connection ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.16.2
    • changedInput schema / properties / action / description
      Previous value: -"listen: wait for breakpoint hit; detach: end session; status: show current state"New value: +"listen: wait for a breakpoint hit (blocks); detach: remove the listener; status: show terminal id, IDE id and user of the current listener, if any"
    • changedInput schema / properties / username / description
      Previous value: -"SAP username to debug (listen action, default: connected user)"New value: +"SAP user whose programs to debug (listen only; default: the connected user)"
  2. First observedv1.16.0

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the critical blocking behavior, the timeout exit condition, the conflict error when another debugger is attached, and that the call returns debuggee details. The closing 'Does not change any object' adds a useful safety signal consistent with destructiveHint=false. It stops short of covering permissions/auth requirements or what happens to a live debuggee if 'detach' is called mid-session.

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 opening sentence front-loads the purpose and the rest is organized action-by-action with no filler. It is dense but every clause carries operational meaning; only the final 'Does not change any object' feels slightly appended rather than integrated.

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?

With no output schema, the description correctly compensates by stating that 'listen' returns debuggee details, and it explains the blocking/conflict semantics an agent needs before invoking a long-running call. For a three-action tool with full schema coverage, this is close to complete; only auth/prerequisite system requirements are unstated.

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

Parameters3/5

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

Schema coverage is 100%, so the action enum values and their meanings are already documented in the schema. The description adds only that 'username' applies to listen and defaults to the connected user, which the schema also says; no extra syntax, format, or constraint information is provided beyond structured fields.

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

Purpose5/5

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

The description names a specific verb set and resource ('Start, check or end the external ABAP debugger listener for a user') and then enumerates the three actions with their distinct effects. It clearly separates this tool from the breakpoint-setting and stepping siblings by describing the listener lifecycle rather than breakpoint or variable operations.

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

Usage Guidelines5/5

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

Explicit sequencing guidance is given: set a breakpoint first with abap_debug_set_breakpoint, call 'listen', then continue with abap_debug_step, abap_debug_variable and abap_debug_stack. It also states the preconditions ('blocks until a program of that user hits a breakpoint ... or the listener times out') and the failure case ('Reports a conflict if another debugger is already attached'), so an agent knows both when to call it and what must happen before.

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