Skip to main content
Glama

SAPDiagnose

Diagnose SAP ABAP objects, analyze runtime errors, SQL traces, and OData performance, and get quick-fix proposals.

Instructions

Run diagnostics on ABAP objects and analyze runtime errors. Actions:

  • "syntax": syntax-check (name+type; optional version; optional source = pre-write dry-run, nothing written).

  • "unittest": harmless ABAP Unit for CLAS/PROG/FUGR or DEVC (exact; includeSubpackages recurses).

  • "atc": run ATC checks (name+type; optional variant). "atc_variants": list variants + the system default (variant = name filter; read-only).

  • "cds_testcases": SAP-suggested ABAP Unit test cases for a CDS entity (name; read-only; SAP_BASIS 8.16+).

  • "object_state": compare active vs inactive source versions (name+type; CLAS compares all includes). Returns ETags/hashes/divergence flags.

  • "quickfix": get quick-fix proposals at a position (name+type+source+line; optional column, sourceUri).

  • "apply_quickfix": apply one proposal, return text deltas, no write (name+type+source+line+proposalUri+proposalUserContent; pass proposalUserContent through exactly).

  • "dumps": list/read ST22 short dumps (no id = list; id = read; includeFullText, sections).

  • "traces": list/analyze profiler traces (id+analysis: hitlist=hot spots, statements=call tree, dbAccesses=DB stats).

  • "trace_start": arm a profiler trace for the NEXT matching execution, then reproduce and read via "traces" (write scope; defaults: next HTTP request, SQL on).

  • "trace_requests": list armed trace requests. "trace_cancel": cancel one by id (write scope).

  • "system_messages": list SM02 messages. "gateway_errors": list /IWFND/ERROR_LOG (on-prem; detailUrl or id+errorType for detail).

  • "odata_perf": diagnose why an OData call is slow (url = host-relative path); returns the sap-statistics timing split (DB/ABAP/framework/auth). Read-only; needs allowDataPreview.

  • "authorization_trace": read the on-prem STUSERTRACE auth trace (SUAUTHVALTRC); needs SAP_ALLOW_DATA_PREVIEW.

  • "cds_sql": show the native SQL a CDS view compiles to (name; read-only).

  • "sql_trace_state" / "set_sql_trace_state" (sqlOn; needs SAP_ALLOW_WRITES) / "sql_trace_directory": ST05 SQL-trace control. Quickfix workflow: syntax/ATC → quickfix → apply_quickfix → write via SAPWrite. Full action reference: docs_page SAPDiagnose.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoDump or trace ID (for dumps/traces actions); also the trace-request id to cancel (for trace_cancel). Omit to list, provide to get details.
toNoOptional upper time boundary for feed-based diagnostics actions (system_messages/gateway_errors).
urlNoFor odata_perf: the host-relative OData path to probe, from the Fiori app's Network tab (e.g. "/sap/opu/odata4/sap/.../Entity?$filter=…"). Must be a path on the connected system — absolute URLs are rejected.
fromNoOptional lower time boundary for feed-based diagnostics actions (system_messages/gateway_errors).
lineNoSource line number for quickfix evaluation (required for quickfix/apply_quickfix).
nameNoObject name (for syntax/unittest/atc/object_state); the CDS entity / DDLS source name for cds_testcases and cds_sql
typeNoObject type; unittest accepts CLAS, PROG, FUGR, or DEVC.
userNoSAP-user filter for dumps, feeds, or authorization_trace.
sqlOnNoFor action="set_sql_trace_state": true to arm the ST05 SQL trace, false to disarm. Combine with user to filter the trace to one SAP user.
actionYes
columnNoSource column number for quickfix evaluation (default 0 for quickfix actions).
sourceNoCurrent source code (required for quickfix/apply_quickfix).
variantNoatc: check variant; atc_variants: name filter (*=all)
versionNoSource version for syntax check (default "active"). Use "inactive" to validate pending changes.
analysisNoTrace analysis type (for traces action with id). hitlist = execution hot spots, statements = call tree, dbAccesses = database access stats.
coverageNounittest only: collect statement/branch/procedure coverage and methodsBelowFull. Unavailable measurements do not discard test results. Default false.
sectionsNoDump chapter IDs to include for dumps detail mode (for example ["kap0","kap3","kap8"]). Omit to use focused defaults.
sqlTraceNoFor trace_start: capture SQL/DB accesses (default true — required for analysis="dbAccesses").
aggregateNoFor trace_start: aggregate the trace (default true).
detailUrlNoCanonical host-relative /sap/bc/adt/gw/errorlog/... path for detail mode; absolute URLs are rejected.
errorTypeNoGateway error type for gateway_errors detail by id (for example "Frontend Error"). Required when using id without detailUrl.
sourceUriNoExact ADT source URI for quickfix/apply_quickfix. Defaults to the type/name main source; use this for class includes such as /includes/definitions.
traceUserNoFor trace_start/trace_requests: the SAP user whose matching execution is traced/listed. Defaults to the connected user.
authObjectNoAuthorization object filter, e.g. S_TCODE.
maxResultsNoMaximum results for dumps/system_messages/gateway_errors (default 50) or authorization_trace (default 100); bounded to a safe cap.
objectTypeNoFor trace_start: what to match within the process. Defaults to the valid type for the process type (http→url, dialog→transaction, batch→report, rfc→functionModule).
descriptionNoFor trace_start: optional label for the trace request.
processTypeNoFor trace_start: the kind of work process to capture. Default "http" (OData/Gateway). dialog = SAP GUI transaction, batch = background job, rfc = RFC call.
proposalUriNoQuickfix proposal URI from quickfix action (required for apply_quickfix).
expiresHoursNoFor trace_start: hours until the armed request auto-expires (default 24).
onlyFailuresNoFor authorization_trace: return only denied checks (RC<>0), similar to the SU53 failure view.
resultFormatNounittest: legacy|structured|junit; atc: legacy|structured; other actions reject it.
maxExecutionsNoFor trace_start: how many matching executions to capture before the request is consumed (default 1).
timeoutSecondsNounittest/atc timeout: 1-3600s; default 300.
includeFullTextNoFor dumps detail mode only: include full formattedText blob. Default false to reduce token usage.
includeSubpackagesNo
proposalUserContentNoOpaque userContent from quickfix action (required for apply_quickfix). May be an empty string; pass through exactly.
proposalAffectedObjectsNoOptional affectedObjects array from quickfix action. Include content for each affected source unit when applying multi-object quickfixes.
Install Server

TDQS

A3.9/5.0
Behavior2/5

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

The annotations readOnlyHint=false and destructiveHint=false do not clarify side effects. The description inconsistently labels some actions as 'read-only' (e.g., atc_variants, cds_testcases, odata_perf) but leaves write actions like apply_quickfix, trace_start, and set_sql_trace_state ambiguous. Notably, apply_quickfix is described as 'apply one proposal... no write', which is confusing and could mislead about its actual system impact.

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 bullet-like list of actions and their parameters, which is efficient and scannable. Although lengthy (covers 20+ actions), it avoids redundancy and maintains a consistent structure (action: description, parameters). It earns a 4 rather than 5 due to the density of information that could overwhelm without the schema reference.

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 tool's complexity (38 parameters, 20+ actions), the description covers all actions and their required/optional parameters, notes read-only status for some, and points to a full reference. It lacks details on return formats or error handling, but since there is no output schema, this is acceptable. It is complete enough for an agent to select and invoke correctly in most scenarios.

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

Parameters4/5

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

With 95% schema coverage, the baseline is 3. The description enriches parameters with context: it explains defaults (e.g., version defaults to 'active', sourceUri defaults to main source), required relationships (e.g., proposalUri needed for apply_quickfix), and per-action constraints (e.g., 'read-only' flags, 'needs allowDataPreview'). This adds meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the tool 'Run diagnostics on ABAP objects and analyze runtime errors' and enumerates specific actions (syntax, unittest, ATC, dumps, traces, etc.). This distinguishes it from sibling tools like SAPRead or SAPLint, which have different scopes.

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

Usage Guidelines4/5

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

The description gives clear context for each action (e.g., 'syntax-check', 'read-only', 'needs allowDataPreview') but does not explicitly compare against alternatives or state when to prefer this tool over SAPRead/SAPSearch. The implied usage is clear enough for diagnostics scenarios.

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

Other Tools

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/arc-mcp/arc-1'

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