Skip to main content
Glama

RuntimeRunClass

Runs an ABAP class that implements if_oo_adt_classrun and returns its console output; enable profiling to capture a trace for performance analysis.

Instructions

[read-only] [runtime] Runs the ABAP class named by class_name, which implements if_oo_adt_classrun, and returns its console output. Set profile=true to also capture a profiler trace: schedules the trace, runs the class under it, then searches the profiler feed for the id this run produced (bounded by max_trace_attempts/trace_retry_delay_ms). If the trace appears only after that bound, the run still answers success with output and profiler_id, trace_id absent — the trace is then found later in the list of profiler trace files. When profile is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.

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": {
      "class_name": "<class_name>"
    },
    "name": "RuntimeRunClass"
  }
}

Input Schema

NameRequiredDescriptionDefault
profileNoWhen true, run with the profiler and search the profiler feed for the resulting traceId. Default false.
aggregateNo
sql_traceNo
amdp_traceNo
backgroundNoWhen true, the run goes on in the background on an ABAP session of its own and the call answers at once with a run_handle; read its answer later with GetBackgroundRun, and remove it with DiscardBackgroundRun. A started run cannot be stopped. No default: without it the call waits for the run to end.
class_nameYesABAP class name to execute.
descriptionNoProfiler trace description (only used when profile=true).
all_db_eventsNo
explicit_on_offNo
with_rfc_tracingNo
all_dynpro_eventsNo
trace_lookup_urisNoAccepted for backward compatibility; no longer affects trace lookup. adt-clients 19 lists the profiler feed as one endpoint, optionally filtered by user — there is nowhere to put a URI.
max_trace_attemptsNoMax attempts to poll the profiler feed for the trace this run produced (default 5). Only used when profile=true.
all_procedural_unitsNo
max_time_for_tracingNo
trace_retry_delay_msNoDelay in ms between profiler-feed polling attempts (default 2000). Only used when profile=true.
max_size_for_trace_fileNo
all_misc_abap_statementsNo
all_system_kernel_eventsNo
all_internal_table_eventsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv20.1.0
    • addedInput schema / properties / background
      Added value: +{
      +  "description": "When true, the run goes on in the background on an ABAP session of its own and the call answers at once with a run_handle; read its answer later with GetBackgroundRun, and remove it with DiscardBackgroundRun. A started run cannot be stopped. No default: without it the call waits for the run to end.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / max_trace_attempts / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / max_trace_attempts / minimum
      Added value: +1
    • changedInput schema / properties / max_trace_attempts / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / trace_retry_delay_ms / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / trace_retry_delay_ms / minimum
      Added value: +0
    • changedInput schema / properties / trace_retry_delay_ms / type
      Previous value: -"number"New value: +"integer"
  2. Changed4 schema fields changedv16.0.0
    • changedInput schema / properties / max_trace_attempts / description
      Previous value: -"Max polling attempts to resolve traceId after execution (default 5). Only used when profile=true."New value: +"Max attempts to poll the profiler feed for the trace this run produced (default 5). Only used when profile=true."
    • changedInput schema / properties / profile / description
      Previous value: -"When true, run with the profiler and resolve the resulting traceId. Default false."New value: +"When true, run with the profiler and search the profiler feed for the resulting traceId. Default false."
    • changedInput schema / properties / trace_lookup_uris / description
      Previous value: -"Additional URIs to consult when resolving the trace (advanced, profile=true)."New value: +"Accepted for backward compatibility; no longer affects trace lookup. adt-clients 19 lists the profiler feed as one endpoint, optionally filtered by user — there is nowhere to put a URI."
    • changedInput schema / properties / trace_retry_delay_ms / description
      Previous value: -"Delay in ms between trace polling attempts (default 2000). Only used when profile=true."New value: +"Delay in ms between profiler-feed polling attempts (default 2000). Only used when profile=true."
  3. Addedv6.7.0

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses profiler tracing behavior, polling bounds, partial-success return shape, and batch-mode recording, but it does not address the side-effect risk of executing arbitrary ABAP code and leaves most trace parameters' behavior unexplained. The '[read-only]' tag is also potentially misleading for a code-execution 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 front-loaded with purpose and avoids repeating the schema wholesale. The middle sentence is dense but earns its place by explaining the profiler polling edge case; the final batch-mode sentence is less clearly structured but still adds relevant behavior.

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 complex 20-parameter tool with no output schema and no annotations, the description covers the main execution flow, profiler tracing, and one batch-mode return behavior. However, it is not complete enough: it omits return-value structure for normal runs, many parameter interactions, and the side-effect profile of arbitrary class execution.

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 only 35% across 20 parameters, so the description needs to compensate for many undocumented parameters. It explains class_name, profile, max_trace_attempts, trace_retry_delay_ms, and alludes to batch mode, but says nothing meaningful about aggregate, sql_trace, amdp_trace, background, description, trace_lookup_uris, and the many all_* trace options.

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 gives a specific verb and resource: 'Runs the ABAP class named by class_name, which implements if_oo_adt_classrun, and returns its console output.' This clearly distinguishes it from RuntimeRunProgram and other siblings by naming the executable artifact and the expected interface.

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?

It states the prerequisite that the class implements if_oo_adt_classrun and explains when to set profile=true, but gives no explicit guidance on when to choose this tool over RuntimeRunProgram, RunUnitTest, or background-run variants. Usage is implied rather than routed against alternatives.

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

Deploy Server

Other Tools