Skip to main content
Glama

mcp-abap-adt: Your Gateway to ABAP Development Tools (ADT)

Stand With Ukraine

mcp-abap-adt is an MCP server for ABAP ADT in SAP ECC/S/4HANA (on-premise) and SAP BTP ABAP Cloud systems. It gives agents controlled access to real ABAP repositories through ADT, so analysis and changes are grounded in system data instead of assumptions. It is built for AI-assisted pair programming (AIPNV: AI Pairing, Not Vibing), not autopilot vibe coding.

Primary workflows:

  • Deep ABAP analysis: where-used, object metadata, repository navigation, object structure, semantic analysis, dependency and impact exploration.

  • High-level ABAP development: rapid CRUD and iterative updates for RAP and classic ABAP artifacts (classes, interfaces, function groups/modules, programs, DDIC, CDS/view/service artifacts), validated through ADT flows.

Why teams use it:

  • Full CRUD (not read-only): create, read, update, and delete ABAP artifacts

  • Works with On-Premise (ECC/S/4HANA), ABAP Cloud (BTP), and Legacy systems (BASIS < 7.50)

  • JWT/XSUAA, service key (destination-based), and RFC authorization

  • Multiple transports: stdio, HTTP, SSE

  • Rich tool surface for ABAP objects, metadata, transports, and search

Authorization & Destinations (Important): A destination is the filename of a service key stored locally. You place service keys in the service-keys directory, and use --mcp=<destination> to select which one to use. This is the primary auth model for on‑prem and BTP systems. See Authentication & Destinations.

You can configure MCP clients either manually (JSON/TOML) or via the configurator CLI (@mcp-abap-adt/configurator, repo: mcp-abap-adt-conf).

Table of Contents

  1. Getting Started

  2. Architecture

  3. Quick Start

  4. Use Cases

  5. Target Users

  6. Capabilities (High-Level Focus)

  7. Terminology

  8. Authorization & Destinations

  9. Registries

  10. Features

  11. Documentation

  12. Dependencies

  13. Running the Server

Related MCP server: ABAP-ADT-API MCP-Server

Getting Started

Install the server and configure your client using the configurator:

npm install -g @mcp-abap-adt/core
npm install -g @mcp-abap-adt/configurator

# stdio (destination)
mcp-conf --client cline --name abap --mcp TRIAL

# HTTP (streamable HTTP)
mcp-conf --client copilot --name abap --transport http --url http://localhost:3000/mcp/stream/http --mcp trial

Full configurator usage (separate repo): CLIENT_INSTALLERS.md.

Terminology

Destination: a local service key filename. You store service keys in the standard service-keys directory, and pass the filename (without extension) via --mcp=<destination> to select which system to use.

See docs/user-guide/TERMINOLOGY.md for the full list.

Authorization & Destinations

Destination-based auth is the default. Drop service keys into the standard platform folder and use the filename as your destination:

mcp-abap-adt --transport=stdio --mcp=TRIAL

Standard service key paths:

  • Unix (Linux/macOS): ~/.config/mcp-abap-adt/service-keys/<destination>.json

  • Windows: %USERPROFILE%\\Documents\\mcp-abap-adt\\service-keys\\<destination>.json

For full details (paths, .env, direct headers), see Authentication & Destinations.

Architecture

The project provides two main usage patterns:

1. Standalone MCP Server (Default)

Run as a standalone MCP server with stdio, HTTP, or SSE transport:

mcp-abap-adt                           # stdio (default)
mcp-abap-adt --transport=http          # HTTP mode
mcp-abap-adt --transport=sse           # SSE mode

2. Embeddable Server (For Integration)

Embed MCP server into existing applications (e.g., SAP CAP/CDS, Express):

import {
  EmbeddableMcpServer,
  ReadVsGetDedupStrategy, // optional: hide Read<X> when Get<X> also exposed
} from '@mcp-abap-adt/core/server';

const server = new EmbeddableMcpServer({
  connection,              // Your AbapConnection instance
  logger,                  // Optional logger
  exposition: ['readonly', 'high'],  // Handler groups to expose
  // Optional; default: no dedup — existing consumers see no change.
  readOnlyDedupStrategy: new ReadVsGetDedupStrategy(),
});
await server.connect(transport);

See Handlers Management → EmbeddableMcpServer dedup strategies for opt-in dedup of readonly tools against high/low/compact, including how to plug a custom IReadOnlyDedupStrategy for role-based rules.

Quick Start

  1. Install server: See Installation Guide

  2. Configure client (auto): Use mcp-conf from @mcp-abap-adt/configurator (repo: mcp-abap-adt-conf, docs: CLIENT_INSTALLERS.md)

  3. Configure client (manual): See Client Configuration

  4. Use:

Use Cases

  • Impact analysis / where-used before changes: map object usage and probable blast radius.

  • Dependency audit: inspect links across classes, interfaces, DDIC, CDS/views, and RAP artifacts.

  • Migration and cleanup prep: extract repository facts to plan refactoring or cloud-readiness work.

  • RAP and ABAP iterative development: create/update artifacts quickly with ADT-backed operations.

  • Automated documentation and RAG ingestion: pull structured facts from ABAP systems for downstream tooling.

Target Users

  • ABAP developers and ABAP architects

  • RAP developers

  • Team leads and tech leads who need fast repository visibility

  • Teams building RAG/agent workflows for SAP landscapes

Capabilities (High-Level Focus)

Key examples of high-value workflows and tools:

  • Repository and impact analysis: GetWhereUsed, DescribeByList, GetObjectStructure, GetObjectInfo, SearchObject, GetPackageTree, GetPackageContents

  • Code and semantic introspection: GetAbapAST, GetAbapSemanticAnalysis, GetIncludesList, GetProgFullCode

  • RAP development: CreateBehaviorDefinition, UpdateBehaviorDefinition, CreateBehaviorImplementation, UpdateBehaviorImplementation, CreateServiceDefinition, UpdateServiceDefinition, CreateMetadataExtension, UpdateMetadataExtension

  • CDS/View development: CreateView, UpdateView, GetView, DeleteView

  • ABAP OO CRUD: CreateClass, UpdateClass, GetClass, DeleteClass, CreateInterface, UpdateInterface, GetInterface, DeleteInterface

  • Function module/group CRUD: CreateFunctionGroup, UpdateFunctionGroup, GetFunctionGroup, DeleteFunctionGroup, CreateFunctionModule, UpdateFunctionModule, GetFunctionModule, DeleteFunctionModule

  • Transport and activation support: CreateTransport, GetTransport, ActivateObject

Registries

Published in the official MCP Registry and listed on Glama.ai.

Features

  • 🏗️ Domain Management: GetDomain, CreateDomain, UpdateDomain - Create, retrieve, and update ABAP domains

  • 📊 Data Element Management: GetDataElement, CreateDataElement, UpdateDataElement - Create, retrieve, and update ABAP data elements

  • 📦 Table Management: GetTable, CreateTable, GetTableContents - Create and retrieve ABAP database tables with data preview

  • 🏛️ Structure Management: GetStructure, CreateStructure - Create and retrieve ABAP structures

  • 👁️ View Management: GetView, CreateView, UpdateView - Create and manage CDS Views and Classic Views

  • 🎓 Class Management: GetClass, CreateClass, UpdateClass - Create, retrieve, and update ABAP classes

  • 📝 Program Management: GetProgram, CreateProgram, UpdateProgram - Create, retrieve, and update ABAP programs

  • 🔧 Behavior Definition (BDEF) Management: GetBehaviorDefinition, CreateBehaviorDefinition, UpdateBehaviorDefinition - Create and manage ABAP Behavior Definitions with support for Managed, Unmanaged, Abstract, and Projection types

  • 📋 Metadata Extension (DDLX) Management: CreateMetadataExtension, UpdateMetadataExtension - Create and manage ABAP Metadata Extensions

  • ⚡ Activation: ActivateObject - Universal activation for any ABAP object

  • 🚚 Transport Management: CreateTransport, GetTransport - Create and retrieve transport requests

  • 🔍 Enhancement Analysis: GetEnhancements, GetEnhancementImpl, GetEnhancementSpot - Enhancement discovery and analysis

  • 📋 Include Management: GetIncludesList - Recursive include discovery

  • 🔍 System Tools: GetInactiveObjects - Monitor inactive objects waiting for activation

  • 🧪 Runtime Diagnostics: RuntimeCreateProfilerTraceParameters, RuntimeListProfilerTraceFiles, RuntimeGetProfilerTraceData, RuntimeGetDumpById - Profiling and dump analysis with JSON payloads

  • 📡 Runtime Feeds: RuntimeListFeeds, RuntimeListSystemMessages, RuntimeGetGatewayErrorLog - Feed reader (dumps, system messages, gateway errors), SM02 system messages, Gateway error log

  • 🚀 SAP BTP Support: JWT/XSUAA authentication with browser-based token helper

  • 🔑 Destination-Based Authentication: Service key-based authentication with automatic token management (see Client Configuration)

  • 💾 Freestyle SQL: GetSqlQuery - Execute custom SQL queries via ADT Data Preview API

ℹ️ ABAP Cloud limitation: Direct ADT data preview of database tables is blocked by SAP BTP backend policies. The server returns a descriptive error when attempting such operations. On-premise systems continue to support data preview.

Documentation

For Users

For Administrators

For Developers

Dependencies

This project uses two npm packages:

These packages are automatically installed via npm install and are published to npm.


Running the Server

After installing globally with npm install -g, you can run from any directory:

# Show help
mcp-abap-adt --help

# Default HTTP mode (works without .env file)
mcp-abap-adt

# HTTP mode on custom port
mcp-abap-adt --http-port=8080

# Use stdio mode (for MCP clients, requires .env file or --mcp parameter)
mcp-abap-adt --transport=stdio

# Use stdio mode with auth-broker (--mcp parameter)
mcp-abap-adt --transport=stdio --mcp=TRIAL

# Use env destination from platform sessions store
mcp-abap-adt --env=trial

# Use explicit .env file path
mcp-abap-adt --env-path=/path/to/my.env

# SSE mode (requires .env file or --mcp parameter)
mcp-abap-adt --transport=sse --sse-port=3001

# SSE mode with auth-broker (--mcp parameter)
mcp-abap-adt --transport=sse --mcp=TRIAL

Development Mode

# Build and run locally
npm run build
npm start

# HTTP mode
npm run start:http

# SSE mode
npm run start:sse

# Legacy v1 server (for backward compatibility)
npm run start:legacy

Environment Configuration

Env resolution:

  1. --env-path=<path|file> (or MCP_ENV_PATH) for explicit .env file.

    • Absolute path: used as-is.

    • Relative path or file name only (e.g. my.env): resolved from current working directory.

  2. --env=<destination> for destination file in standard sessions store:

    • Unix: ~/.config/mcp-abap-adt/sessions/<destination>.env

    • Windows: %USERPROFILE%\\Documents\\mcp-abap-adt\\sessions\\<destination>.env

  3. Fallback to .env in current working directory.

Example .env file:

SAP_URL=https://your-sap-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your-username
SAP_PASSWORD=your-password

For JWT authentication (SAP BTP):

SAP_URL=https://your-btp-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=jwt
SAP_JWT_TOKEN=your-jwt-token

For RFC connection:

SAP_URL=https://your-legacy-system.com
SAP_CLIENT=100
SAP_AUTH_TYPE=basic
SAP_USERNAME=your-username
SAP_PASSWORD=your-password
SAP_CONNECTION_TYPE=rfc

See RFC Setup Guide for prerequisites (SAP NW RFC SDK).

Generate .env from Service Key (JWT):

# Install the connection package globally (one-time setup)
npm install -g @mcp-abap-adt/connection

# Generate .env file from service key JSON
mcp-auth auth -k path/to/service-key.json

This will automatically create/update .env file with JWT tokens and connection details.

.env comments rule: only full-line comments are supported (lines that start with #).
Inline comments are not parsed, so keep comments on separate lines.

Claude recommendation: place the service key in the service-keys directory and use --mcp=<destination> (avoid manual JWT tokens).

Command-Line Options

Authentication:

  • --auth-broker - Force use of auth-broker (service keys), ignore .env file

  • --auth-broker-path=<path> - Custom path for auth-broker service keys and sessions

  • --browser-auth-port=<port> - Override OAuth browser callback port (default: 5000 for HTTP, 4000 for SSE, 4001 for stdio)

  • --connection-type=<http|rfc> - SAP connection transport: http (default) or rfc

  • --unsafe - Enable file-based session storage (persists tokens to disk). By default, sessions are stored in-memory (secure, lost on restart)

When --mcp=<destination> is specified, automatic fallback loading of ./.env is skipped.

Examples:

# Use auth-broker with file-based session storage (persists tokens)
mcp-abap-adt --auth-broker --unsafe

# Use auth-broker with in-memory session storage (default, secure)
mcp-abap-adt --auth-broker

# Custom path for service keys and sessions
mcp-abap-adt --auth-broker --auth-broker-path=~/prj/tmp/ --unsafe

See Client Configuration for complete configuration options.

Handler logging switches

  • AUTH_LOG_LEVEL=error|warn|info|debug — sets base log level for handler logger; DEBUG_AUTH_LOG=true also enables debug.

  • HANDLER_LOG_SILENT=true — fully disables handler logging.

  • DEBUG_CONNECTORS=true — verbose connection logging in high-level handlers.

  • DEBUG_HANDLERS=true — enables verbose logs for selected read-only/system handlers.

Development

Testing

npm test

Test logging switches

  • TEST_LOG_LEVEL=error|warn|info|debug — controls test logger verbosity (DEBUG_TESTS/DEBUG_ADT_TESTS/DEBUG_CONNECTORS force debug).

  • TEST_LOG_FILE=/tmp/adt-tests.log — writes test logs to a file (best-effort).

  • TEST_LOG_SILENT=true — disables test logging pipeline (console output muted).

  • TEST_LOG_COLOR=true — adds colored/prefixed tags to test log lines.

  • All console.* in tests are routed through the test logger with a [test] prefix.

Building

npm run build

Developer Tools

# Generate tool documentation
npm run docs:tools

# See tools/README.md for more developer utilities

Contributors

Thank you to all contributors! See CONTRIBUTORS.md for the complete list.


Acknowledgment: This project was originally inspired by mario-andreschak/mcp-abap-adt. We started with the core concept and then evolved it into an independent project with our own architecture and features.

Available Tools

256 tools
ActivateBehaviorDefinitionA

Activates the RAP behavior definition named by name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
nameYesBehavior definition name (root entity).
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ActivateClassA

Activates the ABAP class named by class_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesClass name.
ActivateDataElementB

Activates the ABAP data element named by data_element_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
data_element_nameYesData element name.
ActivateDdlA

Activates the CDS view (DDL source) named by ddl_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ddl_nameYesDDL source name.
ActivateDomainA

Activates the ABAP domain named by domain_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
domain_nameYesDomain name.
ActivateFunctionGroupA

Activates the ABAP function group named by function_group_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
function_group_nameYesFunction group name.
ActivateFunctionModuleB

Activates the ABAP function module named by function_module_name in the function group named by function_group_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
function_group_nameYesFunction group name.
function_module_nameYesFunction module name.
ActivateInterfaceA

Activates the ABAP interface named by interface_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
interface_nameYesInterface name.
ActivateMetadataExtensionA

Activates the CDS metadata extension named by name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
nameYesMetadata Extension name.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ActivateObjectsB

Activates the repository objects named by objects (each a name and a type) together, in one activation: any object type, related objects such as domains, data elements and tables at once. Runs outside batch mode.

NameRequiredDescriptionDefault
objectsYesArray of objects to activate. Each object must have 'name' and 'type'.
preauditNoRequest pre-audit before activation. Default: true
ActivateProgramB

Activates the ABAP program (report) named by program_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
program_nameYesProgram name.
ActivateServiceBindingA

Activates the OData service binding named by name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
nameYesService binding name.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ActivateServiceDefinitionA

Activates the service definition named by name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
nameYesService definition name.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ActivateStructureA

Activates the ABAP structure named by structure_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
structure_nameYesStructure name.
ActivateTableA

Activates the ABAP database table named by table_name, so its inactive version is in force. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
table_nameYesTable name.
AddTransportObjectB

Adds the existing object named by object_name and object_type to the transport task named by transport_number, so it travels with the task's request. 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.

NameRequiredDescriptionDefault
pgmidNoProgram id. Defaults to R3TR, a workbench object's.R3TR
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
object_nameYesObject name.
object_typeYesObject-directory type — CLAS, FUGR, TABL, DOMA — not an ADT type code like CLAS/OC.
transport_numberYesNumber of the transport task the object is added to.
AmdpDebugCancelA

[read-only] [debug] Cancels the stopped AMDP debuggee's execution. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
AmdpDebugGetTableA

[read-only] [debug] Rows of a table variable at the AMDP stop, up to 100; optionally through a SELECT over it. Runs outside batch mode.

NameRequiredDescriptionDefault
queryNoA SELECT over the variable.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
variableYesThe table variable to read.
state_handleYesOpaque handle identifying the server-held state this operation works on.
AmdpDebugSetBreakpointsB

[read-only] [debug] Sets the AMDP breakpoints of a debug session to the set given, as confirmed by the system. Catches every request of the connected SAP user, from this server and from anywhere else. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
breakpointsYesLines in SQLScript methods of a class.
state_handleYesOpaque handle identifying the server-held state this operation works on.
AmdpDebugStartA

[read-only] [debug] Opens an AMDP debug session of the connected SAP user with breakpoints on lines in SQLScript methods; a background run, when given, starts once the system confirmed the breakpoints. Catches every request of the connected SAP user, from this server and from anywhere else. Runs outside batch mode.

NameRequiredDescriptionDefault
runNoA class (as a console application) or a report started in the background once listening; its outcome is reported as the end of the session.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
breakpointsYesLines in SQLScript methods of a class.
stop_existingNoEnds an AMDP debug session of this user left behind.
AmdpDebugStepA

[read-only] [debug] Steps the stopped AMDP debuggee over a statement or on to the next stop. Runs outside batch mode.

NameRequiredDescriptionDefault
actionYesover runs the current statement, continue runs to the next stop.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
AmdpDebugStopA

[read-only] [debug] Ends the AMDP part of a debug session, releasing a suspended debuggee first; when the whole debug session ends with it, the kept answers of its debugger batch go too. A part that failed to undo is reported and kept with the answers. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
AmdpDebugWaitB

[read-only] [debug] AMDP events of a debug session after waiting up to hold_seconds. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
hold_secondsNoLongest wait for a change, at most 30 seconds.
state_handleYesOpaque handle identifying the server-held state this operation works on.
BatchAnswersA

[read-only] Answers the calls of the last executed batch by number: for each number asked, the tool's answer, built from the call's parts of SAP's response when the number is first read and kept for later reads; the numbers asked are processed in parallel. Takes one number or a list of numbers; an unknown number answers as unknown.

NameRequiredDescriptionDefault
numberNoOne batch number to read (an integer of at least 1); give this or numbers, not both.
numbersNoSeveral batch numbers to read, answered in the order given; give this or number, not both.
BatchBeginA

[read-only] Starts batch mode on this server. In batch mode each call of a tool marked recordable is recorded under the next number, starting at 1, and answers with empty content. Answers the state_handle: over Streamable HTTP send it as the state_handle argument of every call of the batch (or in the x-mcp-state-handle header).

NameRequiredDescriptionDefault

No parameters

BatchEndB

[read-only] Sends the recorded calls in one envelope with the credentials in force and ends batch mode. Splits SAP's answer into each call's parts and answers the number of recorded calls, of requests sent and of parts received; when sending fails, the parts received differ from the requests sent or the answer fails to split, answers that error, and every number of the batch then answers it.

NameRequiredDescriptionDefault

No parameters

CheckBehaviorDefinitionA

[read-only] Runs a syntax check on the RAP behavior definition (BDEF) named by name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
nameYesBehaviorDefinition name.
versionNoWhich version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write.
CheckClassA

[read-only] Runs a syntax check on the ABAP class named by class_name. Can check existing class (active/inactive) or validate hypothetical source code. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoVersion to check: 'active' (last activated) or 'inactive' (current unsaved). Default: active.
class_nameYesClass name.
source_codeNoOptional: source code to validate. If provided, validates hypothetical code without creating object. Must include complete CLASS DEFINITION and IMPLEMENTATION sections.
CheckDataElementA

[read-only] Runs a syntax check on the ABAP data element named by data_element_name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoWhich version to check. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write.
data_element_nameYesData element name.
CheckDdlA

[read-only] Runs a syntax check on the CDS view named by ddl_name. Can check existing view (active/inactive) or validate hypothetical DDL source. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoVersion to check: 'active' or 'inactive'. Without `version` the active version is checked.
ddl_nameYesCDS view name to check, passed as ddl_name.
ddl_sourceNoOptional: DDL source code to validate instead of the saved version.
CheckDomainA

[read-only] Runs a syntax check on the ABAP domain named by domain_name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoWhich version to check. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write.
domain_nameYesDomain name.
CheckFunctionGroupA

[read-only] Runs a syntax check on the ABAP function group named by function_group_name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoWhich version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write.
function_group_nameYesFunction group name.
CheckFunctionModuleA

[read-only] Runs a syntax check on the ABAP function module named by function_module_name in the function group named by function_group_name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoVersion to check: 'active' or 'inactive'. Default: active.
function_group_nameYesFunction group name containing the function module.
function_module_nameYesFunction module name.
CheckInterfaceA

[read-only] Runs a syntax check on the ABAP interface named by interface_name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoWhich version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write.
interface_nameYesInterface name.
CheckMetadataExtensionA

[read-only] Runs a syntax check on the CDS metadata extension (DDLX) named by name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
nameYesMetadata extension name.
versionNoWhich version to check: 'active' (default) or 'inactive', the unsaved one right after a write. This endpoint does not fall back to whichever exists.active
CheckPackageA

[read-only] Runs a syntax check on the ABAP package named by package_name. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
package_nameYesPackage name.
super_packageNoOptional, and not read by the check endpoint — see CheckPackageLow. Requiring it refused the call before any request was made, for a package with no parent.
CheckProgramA

[read-only] Runs a syntax check on the ABAP program (report) named by program_name. Returns syntax errors, warnings, and messages. Available on premise. 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.

NameRequiredDescriptionDefault
versionNoWhich version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write.
program_nameYesProgram name.
CheckStructureA

[read-only] Runs a syntax check on the ABAP structure named by structure_name. Can check existing structure (active/inactive) or validate hypothetical DDL code. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoVersion to check: 'active' or 'inactive'. Without `version` the active version is checked.
ddl_codeNoOptional: DDL source code to validate instead of the saved version.
structure_nameYesStructure name.
CheckTableA

[read-only] Runs a syntax check on the ABAP database table named by table_name. Can check existing table (active/inactive) or validate hypothetical DDL code. Returns syntax errors, warnings, and messages. 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.

NameRequiredDescriptionDefault
versionNoVersion to check: 'active', 'inactive', or 'new'. Without `version` the active version is checked.
ddl_codeNoOptional: DDL source code to validate instead of the saved version.
table_nameYesTable name.
CreateBehaviorDefinitionB

Create a new ABAP Behavior Definition (BDEF) in SAP system. Creates the behavior definition object in initial state. Runs outside batch mode.

NameRequiredDescriptionDefault
nameYesBehavior Definition name (usually same as Root Entity name)
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate after creation. Default: true
descriptionNoDescription
root_entityYesRoot Entity name (CDS View name)
package_nameYesPackage name
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task
implementation_typeYesImplementation type: 'Managed', 'Unmanaged', 'Abstract', 'Projection'
CreateBehaviorImplementationB

Creates the RAP behavior implementation class named by class_name for the behavior definition named by behavior_definition, in initial state: the FOR BEHAVIOR OF main source and the implementations include are written afterwards, the main source as a class source and the implementations include under the class lock. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesBehavior Implementation class name.
descriptionNoClass description. If not provided, class_name will be used.
package_nameYesPackage name
transport_requestNoTransport request number, not a task. Required for transportable packages.
behavior_definitionYesBehavior Definition name. The behavior definition must exist. Accepted for compatibility; not forwarded to the create request — the shipped create endpoint posts a metadata document (name/description/package) only. The class is bound to this behavior definition when its FOR BEHAVIOR OF main source is written, separately, via UpdateClass.
CreateCdsUnitTestB

Creates the ABAP Unit test class named by class_name for the CDS view named by cds_view_name, from test_class_source. The view is checked to support CDS test doubles, the test class holding the local test classes is created in the package named by package_name, and it is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesName of the new global class that holds the tests.
package_nameYesPackage of the new test class.
cds_view_nameYesCDS view under test (DDL source). Must be active and testable with test doubles.
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING.
transport_requestNoTransport request, not a task. Required for a transportable package.
CreateClassA

Creates the ABAP class named by class_name in the package named by package_name, in initial state: the class object alone; its source code is written by an update of the class. 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.

NameRequiredDescriptionDefault
finalNoMark class as final. Default: false
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
abstractNoMark class as abstract. Default: false
class_nameYesClass name.
superclassNoOptional superclass name.
descriptionNoClass description (defaults to class_name).
package_nameYesPackage name.
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
create_protectedNoProtected constructor. Default: false
transport_requestNoTransport request number (required for transportable packages), not a task.
CreateDataElementB

Create a new ABAP data element in SAP system. Creates the data element object in initial state. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
lengthNoData type length. Usually inherited from domain.
decimalsNoDecimal places. Usually inherited from domain.
data_typeNoData type (e.g., CHAR, NUMC) or domain name when type_kind is 'domain'.CHAR
type_kindNoType kind: 'domain' (default), 'predefinedAbapType', 'refToPredefinedAbapType', 'refToDictionaryType', 'refToClifType'. If not specified, defaults to 'domain'.domain
type_nameNoType name: domain name (when type_kind is 'domain'), data element name (when type_kind is 'refToDictionaryType'), or class name (when type_kind is 'refToClifType')
long_labelNoLong field label (max 40 chars). Applied during update step after creation.
descriptionNoData element description. If not provided, data_element_name will be used.
search_helpNoSearch help name. Applied during update step after creation.
short_labelNoShort field label (max 10 chars). Applied during update step after creation.
medium_labelNoMedium field label (max 20 chars). Applied during update step after creation.
package_nameYesPackage name
heading_labelNoHeading field label (max 55 chars). Applied during update step after creation.
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
data_element_nameYesData element name.
set_get_parameterNoSet/Get parameter ID. Applied during update step after creation.
transport_requestNoTransport request number, not a task. Required for transportable packages.
search_help_parameterNoSearch help parameter. Applied during update step after creation.
CreateDdlA

Creates the CDS view or classic DDL view named by ddl_name in the package named by package_name, in initial state: the DDL source object, its DDL source code written afterwards. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ddl_nameYesDDL source name.
descriptionNoOptional description (defaults to ddl_name).
package_nameYesPackage name
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number (required for transportable packages), not a task.
CreateDomainB

Create a new ABAP domain in SAP system. Creates the domain object in initial state. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
lengthNo(optional) Field length (max depends on datatype)
activateNo(optional) Activate domain after creation (default: true)
datatypeNo(optional) Data type: CHAR, NUMC, DATS, TIMS, DEC, INT1, INT2, INT4, INT8, CURR, QUAN, etc.CHAR
decimalsNo(optional) Decimal places (for DEC, CURR, QUAN types)
lowercaseNo(optional) Allow lowercase input
descriptionNo(optional) Domain description. If not provided, domain_name will be used.
domain_nameYesDomain name.
sign_existsNo(optional) Field has sign (+/-)
value_tableNo(optional) Value table name for foreign key relationship
fixed_valuesNo(optional) Array of fixed values for domain value range
package_nameNo(optional) Package name
conversion_exitNo(optional) Conversion exit routine name (without CONVERSION_EXIT_ prefix)
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNo(optional) Transport request number, not a task. Required for transportable packages.
CreateFunctionGroupA

Create a new ABAP function group in SAP system. Function groups serve as containers for function modules. When activate is false, 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate function group after creation. Default: true. Set to false for batch operations.
descriptionNoFunction group description. If not provided, function_group_name will be used.
package_nameYesPackage name
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task. Required for transportable packages.
function_group_nameYesFunction group name. Up to 26 characters.
CreateFunctionGroupUnitTestA

Creates the ABAP Unit test classes of the function group named by function_group_name, from test_class_source. They are written to a test include, which is activated with the group. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
function_group_nameYesFunction group that gets the tests. Must already exist.
CreateFunctionIncludeA

Create a new ABAP include within an existing function group. Creates the include in initial state. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionNoOptional description for the include
include_nameYesInclude name.
transport_requestNoTransport request number, not a task. Required for transportable packages.
function_group_nameYesParent function group name
CreateFunctionModuleA

Create a new ABAP function module within an existing function group. Creates the function module in initial state. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionNoOptional description for the function module
transport_requestNoTransport request number, not a task. Required for transportable packages.
function_group_nameYesParent function group name
function_module_nameYesFunction module name. Up to 30 characters.
CreateInterfaceB

Create a new ABAP interface in SAP system. Creates the interface object in initial state. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionNoInterface description. If not provided, interface_name will be used.
package_nameYesPackage name
interface_nameYesInterface name.
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task. Required for transportable packages.
CreateMessageClassA

Creates the ABAP message class (T100) named by message_class_name, with its description, in the package named by package_name: a shell whose messages are added afterwards. A message class is in effect once saved. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionNo(optional) Short description. If not provided, message_class_name is used.
package_nameYesPackage name.
master_languageNo(optional) Master/original language (e.g. "EN", "DE"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNo(optional) Transport request number, not a task. Required for transportable packages.
message_class_nameYesMessage class name.
CreateMessageClassMessageB

Adds the message numbered msgno, with the text msgtext, to the existing ABAP message class (T100) named by message_class_name. Runs outside batch mode.

NameRequiredDescriptionDefault
msgnoYesMessage number (e.g., "001").
msgtextYesMessage text. May contain placeholders &1 &2 &3 &4 (or &).
descriptionNo(optional) Long description for the message.
self_explanatoryNo(optional) Mark the message as self-explanatory (no long text needed). Default: false.
transport_requestNo(optional) Transport request number, not a task. Required for transportable objects.
message_class_nameYesParent message class name.
CreateMetadataExtensionB

Create a new ABAP Metadata Extension (DDLX) in SAP system. Creates the metadata extension object in initial state. Runs outside batch mode.

NameRequiredDescriptionDefault
nameYesMetadata Extension name
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate after creation. Default: true
descriptionNoDescription
package_nameYesPackage name
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task
CreatePackageB

Create a new ABAP package in SAP system. Packages are containers for development objects and are essential for organizing code. When the connection is HTTP, 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionNoPackage description. If not provided, package_name will be used.
package_nameYesPackage name.
package_typeNoPackage type: 'development' (default) or 'structure'development
super_packageYesParent package name. Required for structure packages.
record_changesNoEnable change recording for the package. Required for transportable packages. Default: false.
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_layerNoTransport layer. Required for transportable packages.
transport_requestNoTransport request number, not a task. Required if the package is transportable.
software_componentNoSoftware component. If not provided, SAP will set a default.
application_componentNoApplication component (optional, e.g., BC-ABA)
CreateProgramA

Create a new ABAP program (report) in SAP system. Creates the program object in initial state. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
applicationNoApplication area (e.g., 'S' for System, 'M' for Materials Management). Default: '*'
descriptionNoProgram description. If not provided, program_name will be used.
package_nameYesPackage name
program_nameYesProgram name.
program_typeNoProgram type: 'executable' (Report), 'include', 'module_pool', 'function_group', 'class_pool', 'interface_pool'. Default: 'executable'
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task. Required for transportable packages.
CreateProgramUnitTestA

Creates the ABAP Unit test classes of the report named by program_name, from test_class_source. They are written to a test include, which is included into the report, and the report is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
program_nameYesReport that gets the tests. Must already exist.
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
CreateServiceBindingA

Create an OData service binding (V2 or V4, UI or Web API) for a service definition, in initial state. When activate is false, 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate the service binding after create, then read its service group. Default: true.
descriptionNoOptional description. Defaults to service_binding_name when omitted.
package_nameYesABAP package name.
service_nameNoPublished service name. Default: service_binding_name if omitted.
binding_variantNoService binding variant. ODATA_V4_UI = OData V4 for Fiori Elements, ODATA_V4_WEB_API = OData V4 Web API, ODATA_V2_UI = OData V2 for Fiori Elements, ODATA_V2_WEB_API = OData V2 Web API.ODATA_V4_UI
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
response_formatNoAccepted for backward compatibility; no longer affects the answer, which is always the structured write result.xml
service_versionNoPublished service version. Default: 0001.
transport_requestNoOptional transport request for transport checks.
service_binding_nameYesService binding name.
service_definition_nameYesReferenced service definition name.
CreateServiceDefinitionA

Create a service definition that exposes CDS views as an OData service, in initial state. When activate is false and source_code is absent, 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate service definition after creation. Default: true.
descriptionNoService definition description. If not provided, service_definition_name will be used.
source_codeNoService definition source code (optional). If not provided, a minimal template will be created.
package_nameYesPackage name
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task. Required for transportable packages.
service_definition_nameYesService definition name.
CreateStructureC

Create a new ABAP structure in SAP system. Creates the structure object in initial state. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
fieldsYesDoes not reach creation — the shipped create endpoint posts a metadata document only. Use UpdateStructure (with ddl_code) after creating to set the fields.
activateNoActivate structure after creation. Default: true. Set to false for batch operations (activate multiple objects later).
includesNoDoes not reach creation — see `fields`. Use UpdateStructure (with ddl_code) after creating to set includes.
descriptionNoStructure description. If not provided, structure_name will be used.
package_nameYesPackage name
structure_nameYesStructure name.
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task. Required for transportable packages.
CreateTableB

Create a new ABAP table in SAP system. Creates the table object in initial state. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
table_nameYesTable name.
descriptionNoDoes not reach creation — the shipped create endpoint has no description field of its own. Use UpdateTable (with ddl_code) after creating to set the DDL source, which carries the description.
package_nameYesPackage name
master_languageNoOptional master/original language for the created object (e.g. "EN", "DE", "ZH"). Defaults to the session language (SAP_LANGUAGE) or EN.
transport_requestNoTransport request number, not a task. Required for transportable packages.
CreateTransportB

Create a new ABAP transport request in SAP system for development objects. 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.

NameRequiredDescriptionDefault
ownerNoTransport owner (optional, defaults to current user)
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionYesTransport request description (mandatory)
target_systemNoTarget system for transport (optional, e.g., 'PRD', 'QAS'). If not provided or empty, uses 'LOCAL'
transport_typeNoTransport type: 'workbench' (cross-client) or 'customizing' (client-specific)workbench
CreateTransportTaskA

Creates a task under the existing transport request named by transport_number, owned by the user named by target_user, of the type task_type. The task is itself a request resource — it reads, writes and releases like one — and is what adding and removing an object entry address, since a request's objects live on its tasks. target_user is required: it names the task's owner, and an empty owner is refused with SCTS_ADT_MSG 009. The task is typed Development/Correction (S) by default, because an Unclassified task refuses an added object on premise with SCTS_ADT_MSG 009 / TK127. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
task_typeNoS — Development/Correction (default), R — Repair of an object this system does not own, X — leave it Unclassified, as the server creates it. An Unclassified task refuses AddTransportObject on premise (TK127).S
target_userYesThe user the task belongs to: an SAP user id (sent in upper case), e.g. DEVELOPER. Required — the server will not choose one, and naming another user is how a task is made for somebody else.
transport_numberYesThe REQUEST to create the task under — never another task. The number that comes back is the task, and that is what AddTransportObject, RemoveTransportObject and ReadTransportObjects address afterwards.
CreateUnitTestA

Creates the ABAP Unit test classes of the ABAP class named by class_name, from test_class_source. They are written as the class's local test classes, and the class is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesClass that holds the tests. Must already exist.
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
DebugBatchBeginA

[read-only] [debug] Starts the debugger batch on the stopped ABAP debuggee, else at the AMDP break. In the debugger batch each call of step, step to line, stack, variables, child variables, stack position or setting a variable at the ABAP debuggee, and of step over, continue or the data preview of a table variable at the AMDP break, is recorded under the next number, starting at 1, and answers with empty content. Answers the state_handle: over Streamable HTTP send it as the state_handle argument of every call of the batch (or in the x-mcp-state-handle header).

NameRequiredDescriptionDefault

No parameters

DebugBatchEndB

[read-only] [debug] Sends the recorded calls of the stopped debuggee in one envelope on the session the batch started on — the ABAP debuggee's session, or the AMDP session's command session — and ends the debugger batch. Splits SAP's answer into each call's parts and answers the number of recorded calls, of requests sent and of parts received; when sending fails, the parts received differ from the requests sent or the answer fails to split, answers that error, and every number of the batch then answers it.

NameRequiredDescriptionDefault

No parameters

DebugCreateMemorySnapshotA

[read-only] [debug] Writes a memory snapshot of the stopped debuggee and answers the file written. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugCreateWatchpointA

[read-only] [debug] Watches a variable of the stopped debuggee: it stops when the variable changes, optionally under a condition. Runs outside batch mode.

NameRequiredDescriptionDefault
nameYesVariable to watch; a path reaches a component.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
conditionNoStops only when this ABAP condition holds.
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugDeleteBreakpointA

[read-only] [debug] Removes one breakpoint of a debug session by its id; the rest of the set stays armed. An id outside the session's set is refused. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
breakpoint_idYesBreakpoint id.
DebugDeleteWatchpointB

[read-only] [debug] Removes a watchpoint. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
watchpoint_idYesWatchpoint id.
DebugGetMemorySizesA

[read-only] [debug] Memory the stopped debuggee uses. Needs a stopped debuggee. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugGetStackA

[read-only] [debug] Call stack of the stopped debuggee of the debug session named by state_handle, each frame with its ADT object address and its technical place. Needs a stopped debuggee. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugGetVariablesA

[read-only] [debug] Variables of the stopped debuggee, by name or as members of a parent. Needs a stopped debuggee. Runs outside batch mode.

NameRequiredDescriptionDefault
namesNoVariables by name; a path reads a component or a table row.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
parentsNoInstead of names: members of these scopes, objects or tables.
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugListBreakpointsB

[read-only] [debug] Breakpoints a debug session armed. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugListWatchpointsB

[read-only] [debug] Watchpoints of the stopped debuggee. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugSetBreakpointsA

[read-only] [debug] Adds breakpoints to a debug session — a line, an exception class, an ABAP statement or a message; a line breakpoint may carry a condition — and answers the whole set placed, this call's refusals each with its breakpoint and reason, earlier breakpoints that dropped out of the set, and any answer row left unpaired with a breakpoint. Its breakpoints are one set, shared by every IDE of the same SAP user (in user mode, debugging the same request user; in terminal mode, whatever its ids), and each change rewrites that set as a whole. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
breakpointsYesBreakpoints: a line, an exception class, an ABAP statement or a message; a line breakpoint may carry a condition.
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugSetSettingsA

[read-only] [debug] Changes the debugger settings at the current stop and answers the settings in force; a field left out keeps its value. The debug session applies them again after each later attach. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
background_rfcNoDebugs background RFC calls.
system_debuggingNoSteps into system programs and stops at breakpoints there.
update_debuggingNoDebugs update tasks.
create_exception_objectNoCreates the exception object even where a CATCH does not ask for it.
shared_object_debuggingNoDebugs shared objects.
DebugSetStackPositionA

[read-only] [debug] Selects the stack frame variables are read in; execution goes on from the same point. Needs a stopped debuggee. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
positionYesFrame position as the stack numbers it; the stopped frame has the highest position.
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugSetVariableB

[read-only] [debug] Sets a variable of the stopped debuggee. Needs a stopped debuggee. Runs outside batch mode.

NameRequiredDescriptionDefault
nameYesVariable to set; a path reaches a component.
valueYesNew value; converted to the type by the system.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugStartListenerA

[read-only] [debug] Opens a debug session: arms breakpoints, listens for a debuggee and attaches the first one caught; refused before anything is placed while another debugger listens for that user. Needs at least one breakpoint. Takes whose requests are caught, the debugging mode and the debugger settings. In user mode it catches every request of the request user (the connected SAP user, or the one named), from this server and from anywhere else. Its breakpoints are one set, shared by every IDE of the same SAP user (in user mode, debugging the same request user; in terminal mode, whatever its ids), and each change rewrites that set as a whole. Runs outside batch mode.

NameRequiredDescriptionDefault
runNoA class (as a console application) or a report started in the background once listening; its outcome is reported as the end of the session.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
settingsNoDebugger settings, applied after each attach; a field left out keeps its value.
breakpointsYesBreakpoints, at least one: a line, an exception class, an ABAP statement or a message; a line breakpoint may carry a condition.
request_userNoUser mode: the SAP user whose requests are caught; the connected user when omitted. Debugging another user's requests needs the debug authorization for that user. Not taken in terminal mode.
debugging_modeNouser (when omitted) catches the requests of the request user; terminal catches the requests that carry this debug session's ids and needs no configuration: the run it starts carries them, so without run it catches only requests carrying the same ids.
DebugStepB

[read-only] [debug] Moves the stopped debuggee into a call, over it, out of the current one or on to the next stop; or leaves it running, the listener and the breakpoints kept, by detaching or by freeing the debugger. Runs outside batch mode.

NameRequiredDescriptionDefault
actionYesinto enters the call, over runs it, return leaves the current one, continue runs to the next stop; detach lets the program run on, the listener and the breakpoints kept; release_debugger frees the debugger and the program runs on. detach and release_debugger apply to ABAP only.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugStepToLineB

[read-only] [debug] Runs or jumps the stopped debuggee to a line. Runs outside batch mode.

NameRequiredDescriptionDefault
lineYesFor a line: the line in the object source.
modeYesrun executes up to the line; jump moves there without executing what lies between.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
includeNoFor a class: definitions, implementations, macros or testclasses; the main source when omitted.
object_nameYesFor a line: the object holding it.
object_typeYesFor a line: CLAS, PROG, INCL or FUNC.
parent_nameNoFor a function module: its function group.
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugStopA

[read-only] [debug] Ends a debug session, ABAP and AMDP: releases a stopped debuggee, removes the breakpoints, stops listening, closes the connections and lets the kept answers of its debugger batch go; a part that failed to undo is reported and kept with the answers. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugTakeOverListenerA

[read-only] [debug] Opens a debug session: arms breakpoints, listens for a debuggee and attaches the first one caught. Displaces another debugger listening for the same user. Needs at least one breakpoint. Takes whose requests are caught, the debugging mode and the debugger settings. In user mode it catches every request of the request user (the connected SAP user, or the one named), from this server and from anywhere else. Its breakpoints are one set, shared by every IDE of the same SAP user (in user mode, debugging the same request user; in terminal mode, whatever its ids), and each change rewrites that set as a whole. Runs outside batch mode.

NameRequiredDescriptionDefault
runNoA class (as a console application) or a report started in the background once listening; its outcome is reported as the end of the session.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
settingsNoDebugger settings, applied after each attach; a field left out keeps its value.
breakpointsYesBreakpoints, at least one: a line, an exception class, an ABAP statement or a message; a line breakpoint may carry a condition.
request_userNoUser mode: the SAP user whose requests are caught; the connected user when omitted. Debugging another user's requests needs the debug authorization for that user. Not taken in terminal mode.
debugging_modeNouser (when omitted) catches the requests of the request user; terminal catches the requests that carry this debug session's ids and needs no configuration: the run it starts carries them, so without run it catches only requests carrying the same ids.
DebugTerminateB

[read-only] [debug] Ends the stopped debuggee and its program where it stands. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
state_handleYesOpaque handle identifying the server-held state this operation works on.
DebugWaitA

[read-only] [debug] State of a debug session after waiting up to hold_seconds; a debugger that took the user over is an error carrying the system's message. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
hold_secondsNoLongest wait for a change, at most 30 seconds.
state_handleYesOpaque handle identifying the server-held state this operation works on.
DeleteBehaviorDefinitionA

Delete an ABAP behavior definition from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
behavior_definition_nameYesBehaviorDefinition name.
DeleteBehaviorImplementationB

Delete an ABAP behavior implementation from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
behavior_implementation_nameYesBehaviorImplementation name.
DeleteCdsUnitTestB

Deletes the CDS view test class named by class_name, with the ABAP Unit test classes it holds. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesTest class of the CDS view.
transport_requestNoTransport request, not a task. Required for a transportable object.
DeleteClassB

Delete an ABAP class from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesClass name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteDataElementB

Delete an ABAP data element from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
data_element_nameYesData element name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteDdlA

Delete a DDL source from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
ddl_nameYesDDL source name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteDomainA

Delete an ABAP domain from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
domain_nameYesDomain name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteFunctionGroupB

Delete an ABAP function group from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
function_group_nameYesFunctionGroup name.
DeleteFunctionIncludeA

Delete an ABAP function group include from the SAP system via ADT deletion API. Note: function module includes must be deleted via the Function Builder; the backend rejects such deletions. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
include_nameYesInclude name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
function_group_nameYesFunction group name containing the include.
DeleteFunctionModuleB

Delete an ABAP function module from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
function_group_nameYesFunctionGroup name containing the function module.
function_module_nameYesFunctionModule name.
DeleteInterfaceB

Delete an ABAP interface from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
interface_nameYesInterface name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteLocalDefinitionsA

Delete local definitions from an ABAP class by clearing the definitions include. Manages lock, update, unlock, and optional activation. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
transport_requestNoTransport request number, not a task.
activate_on_deleteNoActivate parent class after deleting. Default: false
DeleteLocalMacrosA

Delete local macros from an ABAP class by clearing the macros include. Manages lock, update, unlock, and optional activation. Note: Macros belong to older ABAP versions. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
transport_requestNoTransport request number, not a task.
activate_on_deleteNoActivate parent class after deleting. Default: false
DeleteLocalTestClassA

Clears the local test classes include of the ABAP class named by class_name. The include is cleared under the class lock; with activate_on_delete the class is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
transport_requestNoTransport request number (required for transportable objects), not a task.
activate_on_deleteNoActivate parent class after deleting test class. Default: false
DeleteLocalTypesA

Delete local types from an ABAP class by clearing the implementations include. Manages lock, update, unlock, and optional activation. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
transport_requestNoTransport request number, not a task.
activate_on_deleteNoActivate parent class after deleting. Default: false
DeleteMessageClassA

Delete an ABAP message class (MSAG) and all of its messages from the SAP system via ADT deletion API. Transport request required for transportable objects, optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects, optional for local ones.
message_class_nameYesMessage class name.
DeleteMessageClassMessageA

Remove one message (by number) from an ABAP message class (T100), keeping the class and its other messages. Transport request required for transportable objects. Runs outside batch mode.

NameRequiredDescriptionDefault
msgnoYesMessage number to delete (e.g., "001").
transport_requestNoTransport request number, not a task. Required for transportable objects, optional for local ones.
message_class_nameYesParent message class name.
DeleteMetadataExtensionB

Delete an ABAP metadata extension from the SAP system. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
metadata_extension_nameYesMetadataExtension name.
DeletePackageA

Delete an ABAP package from the SAP system via ADT deletion API. Transport request optional for local objects. A package can be saved only once per ABAP session (PAK/058 "Package … is already locked" otherwise). The package tools of this server save a package on a session apart from this one, so a delete here works after them; for a package saved elsewhere through this connection, pass force_new_connection=true to delete from a new session, closed afterwards. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
package_nameYesPackage name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
force_new_connectionNoForce creation of a new connection (bypass cache). Useful when package was locked/unlocked and needs to be deleted in a fresh session. Default: false.
DeleteProgramA

Delete an ABAP program from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
program_nameYesProgram name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteServiceBindingA

Delete ABAP service binding via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
response_formatNoAccepted for backward compatibility; no longer affects the answer, which is always the structured deletion result.xml
transport_requestNoOptional transport request for deletion transport flow.
service_binding_nameYesService binding name to delete.
DeleteServiceDefinitionA

Delete an ABAP service definition from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
service_definition_nameYesServiceDefinition name.
DeleteStructureB

Delete an ABAP structure from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
structure_nameYesStructure name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteTableA

Delete an ABAP table from the SAP system via ADT deletion API. Transport request optional for local objects. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
table_nameYesTable name.
transport_requestNoTransport request number, not a task. Required for transportable objects. Optional for local objects.
DeleteUnitTestB

Deletes the ABAP Unit test classes of the ABAP class named by class_name. The class's local test classes are deleted, and the class stays. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesClass that holds the tests. Must already exist.
transport_requestNoTransport request, not a task. Required for a transportable object.
DescribeByListA

[read-only] Describes each repository object named in objects, in one call: its type, description and package. Input: objects: Array<{ name: string, type?: string }>. Each object may be of type: PROG/P, FUGR, PROG/I, CLAS/OC, FUGR/FC, INTF/OI, TABLE, STRUCTURE, etc. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
objectsYes
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
DiscardBackgroundRunB

[read-only] [runtime] Removes the kept answer of one of your finished background runs. Works on a finished run; a started run runs to its end. Runs outside batch mode.

NameRequiredDescriptionDefault
run_handleYesThe run_handle a run started with background=true answered.
GetAbapASTA

[read-only] Parse ABAP code and return AST (Abstract Syntax Tree) in JSON format. Runs outside batch mode.

NameRequiredDescriptionDefault
codeYesABAP source code to parse
GetAbapSemanticAnalysisA

[read-only] Perform semantic analysis on ABAP code and return symbols, types, scopes, and dependencies. Runs outside batch mode.

NameRequiredDescriptionDefault
codeYesABAP source code to analyze
GetAbapSystemSymbolsA

[read-only] Resolve ABAP symbols from semantic analysis with SAP system information including types, scopes, descriptions, and packages. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
codeYesABAP source code to analyze and resolve symbols for
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
GetAdtTypesA

[read-only] Retrieve all valid ADT object types (CLAS, TABL, PROG, DEVC, FUGR, INTF, DDLS, DTEL, DOMA, SRVD, SRVB, BDEF, DDLX, etc.) or validate a specific type name. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
validate_typeNoType name to validate (optional)
GetATCFindingsA

[read-only] Reads the findings of the ATC run whose worklist is named by worklist_id, for a run started with wait=true or wait=false. Answers each finding with the object, the source position, the priority, which check ran and what it said, plus how many objects were covered and the counts per priority. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
worklist_idYesWorklist identifier an ATC run answered.
GetATCRunStatusA

[read-only] Answers whether the ATC run named by run_id has ended (a run started with wait=false answers its run_id). Answers the status the server reports and whether it is finished — finished means ended, whatever the checks found. The run's findings are read by its worklist_id. 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.

NameRequiredDescriptionDefault
run_idYesRun identifier an ATC run started with wait=false answered.
GetBackgroundRunA

[read-only] [runtime] Reads one of your background runs by its run_handle: running, or finished with what the run tool answered (the system answer as it is, an error included). A read keeps the run; a finished run is kept until you discard it. Runs outside batch mode.

NameRequiredDescriptionDefault
run_handleYesThe run_handle a run started with background=true answered.
GetBehaviorDefinitionA

[read-only] Reads the RAP behavior definition named by behavior_definition_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
behavior_definition_nameYesBehaviorDefinition name.
GetBehaviorDefinitionVersionDiffA

[read-only] Compares the two RAP behavior definition versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the RAP behavior definition's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the RAP behavior definition's version history.
GetBehaviorDefinitionVersionsA

[read-only] Lists the version history of the RAP behavior definition named by behavior_definition_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
behavior_definition_nameYesRAP behavior definition name.
GetBehaviorDefinitionVersionSourceA

[read-only] Reads the source of the RAP behavior definition version named by content_uri, an entry of the RAP behavior definition's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the RAP behavior definition's version history.
GetBehaviorImplementationA

[read-only] Reads the RAP behavior implementation (its class) named by behavior_implementation_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
behavior_implementation_nameYesBehaviorImplementation name.
GetClassA

[read-only] Reads the ABAP class named by class_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
class_nameYesClass name.
GetClassVersionDiffA

[read-only] Compares the two ABAP class versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the ABAP class's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the ABAP class's version history.
GetClassVersionsA

[read-only] Lists the version history of the ABAP class named by class_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
class_nameYesABAP class name.
GetClassVersionSourceA

[read-only] Reads the source of the ABAP class version named by content_uri, an entry of the ABAP class's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the ABAP class's version history.
GetDataElementA

[read-only] Reads the ABAP data element named by data_element_name in one request: its ADT metadata document (definition, package, description). Returns it under metadata, with part: "metadata". 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for deployed version, "inactive" for modified but not activated version.active
data_element_nameYesData element name.
GetDdlA

[read-only] Reads the CDS view (or classic DDL view) named by ddl_name in one request: its DDL source (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
ddl_nameYesDDL source name.
GetDdlVersionDiffA

[read-only] Compares the two CDS view (DDL source) versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the CDS view (DDL source)'s version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the CDS view (DDL source)'s version history.
GetDdlVersionsA

[read-only] Lists the version history of the CDS view (DDL source) named by ddl_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
ddl_nameYesCDS view (DDL source) name.
GetDdlVersionSourceA

[read-only] Reads the source of the CDS view (DDL source) version named by content_uri, an entry of the CDS view (DDL source)'s version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the CDS view (DDL source)'s version history.
GetDomainA

[read-only] Reads the ABAP domain named by domain_name in one request: its ADT metadata document (definition, package, description). Returns it under metadata, with part: "metadata". 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for deployed version, "inactive" for modified but not activated version.active
domain_nameYesDomain name.
GetEnhancementImplA

[read-only] Retrieve source code of a specific enhancement implementation by its name and enhancement spot. Runs outside batch mode.

NameRequiredDescriptionDefault
enhancement_nameYes[read-only] Name of the enhancement implementation
enhancement_spotYesName of the enhancement spot
GetEnhancementsB

[read-only] Lists the enhancements (enhancement implementations) of the program, include, function group or class named by object_name and object_type. Takes object_name and object_type (one object: its enhancements) or objects (several objects: one entry per object, in the order given, each its enhancements answer or { object_name, object_type, error }). When object_type is one of CLASS, CLAS, CLAS/OC, FUNCTION_GROUP, FUNCTIONGROUP, FUGR, FUGR/F, PROGRAM, PROG, PROG/P and include_nested 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.

NameRequiredDescriptionDefault
objectsNo[read-only] Several objects, read together (give this or object_name and object_type)
object_nameNoName of the ABAP object (with object_type; or give objects)
object_typeNo[read-only] Type of the ABAP object
GetEnhancementSpotA

[read-only] Retrieve metadata and list of implementations for a specific enhancement spot. Runs outside batch mode.

NameRequiredDescriptionDefault
enhancement_spotYesName of the enhancement spot
GetFunctionGroupA

[read-only] Reads the ABAP function group named by function_group_name in one request: its ADT metadata document (package, description, contents). Returns it under metadata, with part: "metadata". 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for deployed version, "inactive" for modified but not activated version.active
function_group_nameYesFunctionGroup name.
GetFunctionIncludeA

[read-only] Reads the include named by include_name of the ABAP function group named by function_group_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata"). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
include_nameYesInclude name.
function_group_nameYesFunction group containing the include.
GetFunctionModuleA

[read-only] Reads the ABAP function module named by function_module_name, BAPI or RFC-enabled ones included, in the function group named by function_group_name, in one request: its source code, which declares the parameter signature (part "source", the default; active or inactive version), or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
function_group_nameYesFunction group containing the function module.
function_module_nameYesFunction module name.
GetFunctionModuleVersionDiffA

[read-only] Compares the two ABAP function module versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the ABAP function module's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the ABAP function module's version history.
GetFunctionModuleVersionsA

[read-only] Lists the version history of the ABAP function module named by function_module_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
function_group_nameYesOwning function group name (required).
function_module_nameYesABAP function module name.
GetFunctionModuleVersionSourceA

[read-only] Reads the source of the ABAP function module version named by content_uri, an entry of the ABAP function module's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the ABAP function module's version history.
GetInactiveObjectsA

[read-only] Get a list of inactive ABAP objects — modified and pending activation. Shows classes, tables, CDS views, and other objects awaiting activation. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
GetIncludeA

[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). Reads includes (PROG/I) by name. 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.

NameRequiredDescriptionDefault
include_nameYesName of the ABAP Include
GetIncludesListA

[read-only] Recursively discover and list ALL include files within an ABAP program or include. Takes object_name and object_type (one object: its tree) or objects (several objects: one entry per object, in the order given, each { object_name, object_type, tree } or { object_name, object_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
objectsNo[read-only] Several objects, read together (give this or object_name and object_type)
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
detailedNo[read-only] If true, returns structured JSON with metadata and raw XML.
object_nameNoName of the ABAP program or include (with object_type; or give objects)
object_typeNo[read-only] ADT object type of the parent. Only these four values are supported: 'PROG/P' (program), 'PROG/I' (include), 'FUGR' (function group), 'CLAS/OC' (class). Any other value is rejected by the schema.
GetInterfaceA

[read-only] Reads the ABAP interface named by interface_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
interface_nameYesInterface name.
GetInterfaceVersionDiffA

[read-only] Compares the two ABAP interface versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the ABAP interface's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the ABAP interface's version history.
GetInterfaceVersionsA

[read-only] Lists the version history of the ABAP interface named by interface_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
interface_nameYesABAP interface name.
GetInterfaceVersionSourceA

[read-only] Reads the source of the ABAP interface version named by content_uri, an entry of the ABAP interface's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the ABAP interface's version history.
GetLocalDefinitionsA

[read-only] Reads the local definitions include (the definitions include) of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
class_nameYesParent class name.
GetLocalMacrosA

[read-only] Reads the local macros include of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
class_nameYesParent class name.
GetLocalTestClassA

[read-only] Reads the local test classes include of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
class_nameYesParent class name.
GetLocalTypesA

[read-only] Reads the local types include (the implementations include) of the ABAP class named by class_name, active or inactive version. Returns { class_name, version, part: 'source', source }. 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.

NameRequiredDescriptionDefault
versionNoVersion to read: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
class_nameYesParent class name.
GetMessageClassA

[read-only] Reads the ABAP message class (MSAG/T100) named by message_class_name in one request: its ADT metadata document (XML: name, description, package, master language, messages). Returns it under metadata, with part: "metadata". 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.

NameRequiredDescriptionDefault
message_class_nameYesMessage class name.
GetMessageClassMessageA

[read-only] Reads the message numbered msgno of the ABAP message class (MSAG/T100) named by message_class_name in one request. Answers the one message under message: its number (msgno), text (msgtext), self-explanatory flag (selfexplainatory), long-text flag (documented), last changer (lastchangedby), change time (lastmodified), and every other field the system gives the message. A number absent from the class is refused as missing. 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.

NameRequiredDescriptionDefault
msgnoYesMessage number (e.g., "001").
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
message_class_nameYesParent message class name.
GetMetadataExtensionA

[read-only] Reads the CDS metadata extension named by metadata_extension_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
metadata_extension_nameYesMetadataExtension name.
GetMetadataExtensionVersionDiffA

[read-only] Compares the two CDS metadata extension versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the CDS metadata extension's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the CDS metadata extension's version history.
GetMetadataExtensionVersionsA

[read-only] Lists the version history of the CDS metadata extension named by metadata_extension_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
metadata_extension_nameYesCDS metadata extension name.
GetMetadataExtensionVersionSourceA

[read-only] Reads the source of the CDS metadata extension version named by content_uri, an entry of the CDS metadata extension's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the CDS metadata extension's version history.
GetObjectInfoA

[read-only] Returns the object tree of the package (DEVC), class (CLAS), program (PROG), function group (FUGR) or other object named by parent_type and parent_name. Shows root, group nodes, and terminal leaves up to maxDepth. With enrich=true each node also carries its description and package, from a repository search. Takes parent_type and parent_name (one object: its tree) or objects (several objects: one tree per object, in the order given; a failed one as { OBJECT_TYPE, OBJECT_NAME, error }). Read in ADT batch envelopes: per tier the root node structures of its nodes, then their type nodes; with enrich, the search of every node last. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
enrichNo[read-only] Whether to add description and package via SearchObject (default true)
objectsNo[read-only] Several objects, read together (give this or parent_type and parent_name)
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
maxDepthNo[read-only] Maximum tree depth (default depends on type). Every object's own type folders and their contents are always shown (one tier); a higher value only descends further for PACKAGES, expanding nested subpackages that many tiers deep — no captured node-structure document shows a non-package object usefully recursable beyond its own type folders, so other object types are capped at one tier regardless of a higher value here.
parent_nameNo[read-only] Parent object name
parent_typeNo[read-only] Parent object type (e.g. DEVC/K, CLAS/OC, PROG/P); with parent_name, or give objects
include_descriptionsNo[read-only] Include each leaf's description. Where the system serves ADT batch, each description is read from the leaf's metadata: one more read per leaf, which on a large tree takes most of the call (default false)
GetObjectNodeFromCacheB

[read-only] Returns a node from the in-memory objects list cache by OBJECT_TYPE, OBJECT_NAME, TECH_NAME, and expands OBJECT_URI if present. Runs outside batch mode.

NameRequiredDescriptionDefault
tech_nameYes[read-only] Technical name
object_nameYes[read-only] Object name
object_typeYes[read-only] Object type
GetObjectsByTypeB

[read-only] Lists the objects of one type (classes, tables, programs, interfaces, etc.), the type whose node in the object tree is named by node_id, under the package or composite object named by parent_name, parent_tech_name and parent_type. 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.

NameRequiredDescriptionDefault
formatNo[read-only] Output format: 'parsed' (default). 'raw' is accepted for backward compatibility but answers the same parsed text — see the note on `nodeLevel` below.
node_idYes[read-only] Node ID
parent_nameYes[read-only] Parent object name
parent_typeYes[read-only] Parent object type
parent_tech_nameYes[read-only] Parent technical name
with_short_descriptionsNo[read-only] Include short descriptions
GetObjectsListA

[read-only] Recursively lists every child repository object of the program (PROG), function group (FUGR), class (CLAS), package (DEVC) or other composite object named by parent_name, parent_tech_name and parent_type, nested includes and subcomponents included. Takes parent_name, parent_tech_name and parent_type (one parent: its list) or objects (several parents: one entry per parent, in the order given, each { parent_name, parent_type, total_objects, objects } or { parent_name, parent_type, error }). Each level of the node tree is read in one ADT batch envelope. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
objectsNo[read-only] Several parents, read together (give this or parent_name)
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
parent_nameNo[read-only] Parent object name (with parent_tech_name and parent_type; or give objects)
parent_typeNo[read-only] Parent object type (e.g. PROG/P, FUGR)
parent_tech_nameNo[read-only] Parent technical name
with_short_descriptionsNo[read-only] Include short descriptions (default: true)
GetObjectStructureA

[read-only] Returns the ADT structure of the repository object named by objecttype and objectname as a compact JSON tree. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
objectnameYesADT object name (e.g. /CBY/ACQ_DDL)
objecttypeYesADT object type (e.g. DDLS/DF)
GetObjectVersionDiffA

[read-only] Compares the two object versions named by content_uri_from and content_uri_to, entries of an object's version history, for the object type named by object_type: returns the unified diff (jsdiff) of their sources. 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.

NameRequiredDescriptionDefault
object_typeYesObject type (the same value the version history was read with).
content_uri_toYesOpaque content_uri of the NEW/compare version (from the object's version history).
content_uri_fromYesOpaque content_uri of the OLD/base version (from the object's version history).
GetObjectVersionsA

[read-only] Lists the version history of the class, program, interface, function module, table, structure, CDS view, behavior definition or metadata extension named by object_name and object_type. Returns each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
object_nameYesObject name.
object_typeYesObject type.
function_group_nameNoOwning function group name. Required when object_type is function_module.
GetObjectVersionSourceB

[read-only] Reads the source code of the object version named by content_uri, an entry of an object's version history, for the object type named by object_type. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the object's version history.
object_typeYesObject type (the same value the version history was read with).
GetPackageA

[read-only] Reads the ABAP package named by package_name in one request: its ADT metadata document (description, super-package, sub-packages, ...), active or inactive version. Returns it under metadata, with part: "metadata": a summary, the details or the document as SAP sent it, per detail. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
versionNoVersion to read: "active" (default) for deployed version, "inactive" for modified but not activated version.active
package_nameYesPackage name.
GetPackageContentsA

[read-only] Retrieve objects inside an ABAP package as a flat list. Supports recursive traversal of subpackages. Takes package_name (one package: its list) or package_names (several packages: one entry per package, in the order given, each { package_name, objects } or { package_name, error }). Each level of the walk is read in one ADT batch envelope: the root node structures of its packages, then their type nodes; with include_descriptions, as single requests, several at a time. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
max_depthNoMaximum depth for recursive package traversal (default: 5)
package_nameNoName of the ABAP package (give this or package_names)
package_namesNoNames of several ABAP packages, read together (give this or package_name)
include_subpackagesNoInclude contents of subpackages recursively (default: false)
include_descriptionsNoInclude each object's description in the response. The walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes (default: false)
GetPackageTreeA

[read-only] Returns the complete tree of the ABAP package named by package_name: its subpackages and objects. Returns hierarchical tree with object names, types, and descriptions. Takes package_name (one package: its tree) or package_names (several packages: one entry per package, in the order given, each { package_name, tree, metadata } or { package_name, error }). Read in ADT batch envelopes: the package metadata with the root node structure, then each level of the walk; with include_descriptions, as single requests, several at a time. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
debugNoInclude diagnostic metadata in response (counts, types, hierarchy info). Default: false
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
max_depthNoMaximum depth for recursive package traversal. Default: 5
package_nameNoPackage name (give this or package_names)
package_namesNoSeveral package names, read together (give this or package_name)
include_subpackagesNoInclude subpackages recursively in the tree. If false, subpackages are shown as first-level objects but not recursively expanded. Default: true
include_descriptionsNoInclude each object's description in the response. The package metadata and the walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes. Default: false
GetProgramA

[read-only] Reads the ABAP program (report) named by program_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
program_nameYesProgram name.
GetProgramVersionDiffA

[read-only] Compares the two ABAP program versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the ABAP program's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the ABAP program's version history.
GetProgramVersionsA

[read-only] Lists the version history of the ABAP program named by program_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
program_nameYesABAP program name.
GetProgramVersionSourceA

[read-only] Reads the source of the ABAP program version named by content_uri, an entry of the ABAP program's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the ABAP program's version history.
GetServiceBindingA

[read-only] Reads the OData service binding named by service_binding_name in one request: its binding document (part "source", the default) or its ADT metadata document (part "metadata": package, responsible, description), each in the response_format given. Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
response_formatNoPreferred response format. "json" requests JSON from endpoint, "xml" parses XML payload, "plain" returns raw text.xml
service_binding_nameYesService binding name. Case-insensitive.
GetServiceBindingPreviewUrlA

[read-only] Build the browser URL that previews a published service binding, and the service and $metadata URLs beside it. Answers: "open the service in a browser", "preview this service binding", "what is the OData URL of this binding". Reads the binding for the service, version and protocol, and the service definition for the entity sets; the preview URL needs an entity set, and the answer names what is missing. A Web API binding answers the service URLs alone. Runs outside batch mode.

NameRequiredDescriptionDefault
clientNoClient for the sap-client parameter. Omitted, the client the system reports is used; an empty string leaves the parameter out.
languageNoLogon language for the preview. Omitted, the language the system reports is used.
entity_setNoEntity set to open. Omitted, the first one the service definition exposes is used.
navigationNoAssociation or composition to follow. Omitted, the first one of the exposed root view is used.
target_entity_setNoEntity set the navigation reaches. Omitted, the second exposed entity set is used.
service_binding_nameYesService binding name.
GetServiceDefinitionA

[read-only] Reads the service definition named by service_definition_name in one request: its source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
service_definition_nameYesServiceDefinition name.
GetSqlQueryA

[read-only] Execute ABAP SQL SELECT queries on database tables and CDS views via SAP ADT Data Preview API. Use for ad-hoc data retrieval, row counts, and filtered queries. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
sql_queryYesSQL query to execute
row_numberNo[read-only] Maximum number of rows to return
GetStructureA

[read-only] Reads the ABAP structure named by structure_name in one request: its definition with its fields, as source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
structure_nameYesStructure name.
GetStructuresListA

[read-only] Recursively list the structures embedded in an ABAP structure (.INCLUDE / append), as a tree. Takes structure_name (one structure: its tree) or structure_names (several structures: one entry per structure, in the order given, each its tree answer or { structure_name, error }). Works on BASIS 7.50 and later, where the DDIC structure/table endpoints it reads exist; legacy systems (BASIS < 7.50) refuse it (issue #207). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
versionNoVersion to read: "active" (default) or "inactive".active
structure_nameNoStructure name (or give structure_names).
structure_namesNoSeveral structure names, read together (give this or structure_name).
include_extensionsNo[read-only] Also find extension (append) structures via where-used (objects that `extend type <this> with …`). Default true. Set false to skip the (slower) where-used lookups and return includes only.
GetStructureVersionDiffA

[read-only] Compares the two ABAP structure versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the ABAP structure's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the ABAP structure's version history.
GetStructureVersionsA

[read-only] Lists the version history of the ABAP structure named by structure_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
structure_nameYesABAP structure name.
GetStructureVersionSourceA

[read-only] Reads the source of the ABAP structure version named by content_uri, an entry of the ABAP structure's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the ABAP structure's version history.
GetTableA

[read-only] Reads the ABAP database table named by table_name in one request: its definition with its fields, as source code (part "source", the default; active or inactive version) or its ADT metadata document (part "metadata": package, responsible, description). Returns the part read. 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.

NameRequiredDescriptionDefault
partNoThe document to read: "source" (default) the source code, "metadata" the ADT metadata document (package, responsible, description, ...).source
versionNoVersion of the source: "active" (default) for the deployed version, "inactive" for the modified version awaiting activation.active
table_nameYesTable name.
GetTableContentsA

[read-only] Reads the contents (data preview, like SE16/SE16N) of the ABAP database table or CDS view named by table_name: every column, up to max_rows rows (default 100). Answers sql_query, row_number (the max_rows asked), execution_time, total_rows (the rows the table or view holds), columns and rows. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
max_rowsNoMaximum number of rows to retrieve
table_nameYesName of the ABAP table
GetTableVersionDiffA

[read-only] Compares the two ABAP table versions named by content_uri_from and content_uri_to, entries of its version history: answers the unified diff of their sources. 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.

NameRequiredDescriptionDefault
content_uri_toYesOpaque content_uri of the NEW/compare version, from the ABAP table's version history.
content_uri_fromYesOpaque content_uri of the OLD/base version, from the ABAP table's version history.
GetTableVersionsA

[read-only] Lists the version history of the ABAP table named by table_name: each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. 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.

NameRequiredDescriptionDefault
table_nameYesABAP table name.
GetTableVersionSourceA

[read-only] Reads the source of the ABAP table version named by content_uri, an entry of the ABAP table's version history. 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.

NameRequiredDescriptionDefault
content_uriYesOpaque content_uri of a version, from the ABAP table's version history.
GetTransactionA

[read-only] Reads the properties of the ABAP transaction (t-code) named by transaction_name in one request. Answers the transaction under object (name, text, type, package) and its facets under properties, in the order the system gives them — the application component chain, the package chain, type, owner, language, creation and the others the system names — each entry with its facet, name, displayName and text. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transaction_nameYesName of the ABAP transaction
GetTransportA

[read-only] Retrieve ABAP transport request information including metadata, included objects, and status from SAP system. 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.

NameRequiredDescriptionDefault
include_tasksNoInclude list of tasks in transport (default: true)
include_objectsNoInclude list of objects in transport (default: true)
transport_numberYesTransport request number, not a task
GetTypeInfoA

[read-only] Retrieve ABAP type information for a DDIC type name: data elements (DTEL), domains (DOMA), structures and table types. One name can be more than one type (MANDT is a data element and a domain): the answer lists every type the name is, in alphabetical order of type, each with its definition — data type, length and decimals, field labels, a domain's output format, value table and fixed values, a table type's row type and key. Runs outside batch mode.

NameRequiredDescriptionDefault
type_nameYesName of the ABAP type
include_structure_fallbackNoWhen true (default), the name is also read as a DDIC structure; false leaves the structure read out.
GetUnitTestResultA

[read-only] Reads the result of the ABAP Unit test run named by run_id, for a run still running when its start answered. Waits for it within a bound. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
run_idYesRun id a unit test run answered.
GetWhereUsedA

[read-only] Lists where the object named by object_name and object_type is used — a class, interface, program, include, function group, function module (BAPI included), package, table, structure, domain, data element or CDS DDL source: every object that uses, calls or references it, with its type and package. Takes object_name and object_type (one object: its list) or objects (several objects: one entry per object, in the order given, each its list or { object_name, object_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. When enable_all_types is any value but true and enable_only_types is absent and disable_types is absent and objects is absent, 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.

NameRequiredDescriptionDefault
objectsNoSeveral objects, read together (give this or object_name and object_type). The type filters apply to every object.
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
object_nameNoName of the ABAP object (with object_type; or give objects). For function modules the name MUST be in the form 'GROUP|FM_NAME' (function group name, pipe, function module name).
object_typeNoType of the ABAP object. Case-insensitive. Accepts either a human alias or an ADT type code. Supported values: 'class' / 'clas/oc', 'interface' / 'intf/if', 'program' / 'prog/p', 'include', 'function' / 'functiongroup' / 'fugr' (function group), 'functionmodule' / 'function_module' / 'fugr/ff' (function module — see object_name format), 'package' / 'devc/k', 'table' / 'tabl/dt', 'structure' / 'stru/dt', 'domain' / 'doma/dd', 'dataelement' / 'dtel', 'view' / 'ddls/df' (CDS DDL source).
disable_typesNoRemove these ADT object types from the default scope, keeping the rest (e.g. ['CLAS/OC'] to drop class usages). Applied on top of the default scope or of enable_only_types/enable_all_types.
enable_all_typesNoIf true, expands the scope to all available object types (Eclipse 'select all' behavior) by flipping every isSelected flag in the scope XML. Default: false (SAP default scope). Note: on large systems this can make the search significantly slower.
enable_only_typesNoRestrict the search to ONLY these ADT object types (e.g. ['TABL/DS','TABL/DT'] for structures, ['DDLS/DF'] for CDS sources). SAP applies the selection server-side, so unwanted types (e.g. hundreds of CLAS/OC) are never searched nor returned — use this instead of enable_all_types to avoid huge result sets. Values must be object-type codes from THIS object's where-used scope (the searchable categories, e.g. 'CLAS/OC','INTF/OI','FUGR/FF','DDLS/DF', not result-row codes like 'FUGR/F'). If any value is not searchable for the object the call returns an error listing the supported types — it never falls back to the unfiltered default set. Takes precedence over enable_all_types.
ListBackgroundRunsA

[read-only] [runtime] Lists your background runs: run_handle, tool, object, when it started, and running or finished. A run's output is read by its run_handle. Runs outside batch mode.

NameRequiredDescriptionDefault

No parameters

ListFunctionGroupIncludesA

[read-only] List the includes (TOP, custom) of an ABAP function group. Runs outside batch mode.

NameRequiredDescriptionDefault
function_group_nameYesFunction group name.
ListFunctionModulesA

[read-only] List the function modules of an ABAP function group. Runs outside batch mode.

NameRequiredDescriptionDefault
function_group_nameYesFunction group name.
ListLeftoverSessionsA

[read-only] [session] Lists the SAP sessions of this server's destination that an ended server process left open (it was killed before it could log them off), with the locks they may hold: handle, role (built: an instance connection; debugger: a debug session connection), destination, user (absent for a token login) and when it was last recorded. Read from the session records alone, on this machine. Only sessions of ended processes are listed. Log one off by its handle. A server process that starts while exactly one instance session (built) of its destination is left is born on it, before any tool call; with several, all stay here, untaken. Runs outside batch mode.

NameRequiredDescriptionDefault

No parameters

ListServiceBindingTypesA

[read-only] Lists the available service binding types (for example ODataV2/ODataV4) from the ADT Business Services endpoint, in the response_format given. 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.

NameRequiredDescriptionDefault
response_formatNoShape of the answer: the document as the server sent it, the same parsed, or a flat list of the type names.xml
ListTransportsA

[read-only] List transport requests for the current or specified user. Returns modifiable and/or released workbench and customizing requests. user and modifiable-only are both applied client-side, over every request the server's default search configuration answers; ADT receives the default search alone. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
userNoThe user to filter to: an SAP user id (matched in upper case); applied client-side. If not provided, defaults to the current session user, so an unfiltered call already answers only that user's transports.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
modifiable_onlyNoOnly return modifiable (not yet released) transports; applied client-side. Default: true.
LogoffLeftoverSessionA

[read-only] [session] Logs off a leftover SAP session (any role): the session ends, and every lock it holds is released. Only the logoff is sent, credential-free. The session record is deleted afterwards. Runs outside batch mode.

NameRequiredDescriptionDefault
handleYesThe handle of a leftover session, as the list of leftover sessions answers it.
MemorySnapshotDeltaA

[read-only] [debug] Two memory snapshots compared in a view: memory by kind, largest objects, an object's children or its referrers. Needs the memory snapshot authorization. Runs outside batch mode.

NameRequiredDescriptionDefault
keyNoObject key, for children and references.
viewNooverview: memory by kind; ranking: the largest objects; children: what an object holds; references: what holds an object.overview
to_idYesSnapshot id to compare to.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
from_idYesSnapshot id to compare from.
max_objectsNoObjects in a ranking, children or references answer.
MemorySnapshotGetA

[read-only] [debug] One memory snapshot in a view: header, memory by kind, largest objects, an object's children or its referrers. Needs the memory snapshot authorization. Runs outside batch mode.

NameRequiredDescriptionDefault
keyNoObject key, for children and references.
viewNoheader: the snapshot; overview: memory by kind; ranking: the largest objects; children: what an object holds; references: what holds an object.overview
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
max_objectsNoObjects in a ranking, children or references answer.
snapshot_idYesSnapshot id.
MemorySnapshotListA

[read-only] [debug] Memory snapshots the system lists. Empty when the user lacks the memory snapshot authorization. Runs outside batch mode.

NameRequiredDescriptionDefault
userNoOnly the snapshots of this SAP user.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
MoveTransportObjectsA

Moves the object entries named by objects from the transport task named by transport_number to the task named by target_number. Each entry is named by its position in the source task's object list. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
objectsYesThe entries to move, at least one — each with object_name, object_type, position (in the source task) and an optional pgmid.
target_numberYesNumber of the transport task the entries move to.
transport_numberYesNumber of the transport task that holds the entries.
ReadTransportActionLogA

[read-only] Reads the action log of the transport request named by transport_number: one entry per lifecycle event — created, object added, object deleted, owner changed. It confirms that an object entry was taken out of the request, since a removal answers by echoing what it was asked. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_numberYesTransport REQUEST or TASK number. A request answers its own lifecycle events; a task answers the events of the objects on it.
ReadTransportObjectsA

[read-only] Lists the objects the transport request or task named by transport_number holds, each with its position, which a removal of the entry names. A task answers its own entries; a request answers every task's entries, each once, with its task number and position — the task a removal addresses. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_numberYesTransport REQUEST or TASK number. A task answers its own entries; a request answers the entries of each of its tasks, each with its `task` number — the task a removal addresses.
RemoveTransportObjectA

Removes the entry of the object named by object_name and object_type from the transport task named by transport_number, at position. 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.

NameRequiredDescriptionDefault
pgmidNoProgram id. Defaults to R3TR, a workbench object's.R3TR
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
positionYesPosition of the object's entry in the task's object list.
object_nameYesObject name.
object_typeYesObject-directory type — CLAS, FUGR, TABL, DOMA — not an ADT type code like CLAS/OC.
transport_numberYesNumber of the transport task that holds the entry.
RunATCA

[read-only] Runs the ABAP Test Cockpit (ATC) checks of the check variant named by check_variant over the objects named by objects. Creates a worklist for the check variant, then starts the run. Answers worklist_id always — the run's findings are read by it, for either value of wait. With wait=false it also answers run_id, which the run's status is read by; with wait=true the server holds the request until the checks finish and answers the finding counts. Runs outside batch mode.

NameRequiredDescriptionDefault
waitNoHold the request until the checks finish and answer the finding counts. Default false: the run starts and answers a run_id to poll.
objectsYesThe objects to check. One run may cover several; each needs a name and a type.
max_findingsNoCap on findings the run records (maximumVerdicts). A whole number, at least 1. Default 100.
check_variantNoATC check variant. Omitted, the system's own default variant is used.
RunCdsUnitTestA

[read-only] Runs the ABAP Unit tests of the CDS view test class named by class_name and returns the result. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesTest class of the CDS view.
RunFunctionGroupUnitTestA

[read-only] Runs every ABAP Unit test of the function group named by function_group_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request that returns the finished result. When runner is sync, 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.

NameRequiredDescriptionDefault
scopeNoWhich tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
runnerNoasync (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.async
function_group_nameYesFunction group whose tests run.
RunFunctionModuleUnitTestA

[read-only] Runs the ABAP Unit tests of the function module named by function_module_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request, addressed by function_group_name and function_module_name, that returns the finished result of every test of the module's function group. When runner is sync and function_group_name is given, 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.

NameRequiredDescriptionDefault
scopeNoWhich tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
runnerNoasync (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.async
function_group_nameNoFunction group holding the function module; required by runner sync.
function_module_nameYesFunction module whose tests run.
RunProgramUnitTestA

[read-only] Runs the ABAP Unit tests of the report named by program_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request that returns the finished result. When runner is sync, 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.

NameRequiredDescriptionDefault
scopeNoWhich tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
runnerNoasync (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.async
program_nameYesReport whose tests run.
RuntimeAnalyzeProfilerTraceA

[read-only] [runtime] Read profiler trace view and return compact analysis summary (totals + top entries). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. 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.

NameRequiredDescriptionDefault
topNoNumber of top rows for summary. Default: 10.
viewNohitlist
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
trace_id_or_uriYesProfiler trace ID or full trace URI.
with_system_eventsNoInclude system events.
RuntimeCreateProfilerTraceParametersB

[read-only] [runtime] Schedule ABAP profiler trace parameters and return profilerId (the request id) for profiled execution. 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.

NameRequiredDescriptionDefault
aggregateNo
sql_traceNo
amdp_traceNo
descriptionYesHuman-readable trace description.
all_db_eventsNo
explicit_on_offNo
with_rfc_tracingNo
all_dynpro_eventsNo
all_procedural_unitsNo
max_time_for_tracingNo
max_size_for_trace_fileNo
all_misc_abap_statementsNo
all_system_kernel_eventsNo
all_internal_table_eventsNo
RuntimeGetDumpByIdA

[read-only] [runtime] Read an ABAP runtime dump by its dump_id or URI. Answers a summary — runtime error, exception, terminated program, time, user, and the source position where it terminated — and the parsed dump. 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.

NameRequiredDescriptionDefault
viewNoDump view mode: default payload, summary section, or formatted long text.default
dump_idYesThe dump's id, or its URI as a dumps feed entry carries it.
response_modeNoWhat is returned: "payload" — the parsed dump, "summary" — runtime error, exception, terminated program, time, user and termination position, "both" — summary and payload.both
RuntimeGetGatewayErrorLogA

[read-only] [runtime] List SAP Gateway error log (/IWFND/ERROR_LOG) or get error detail. Returns structured entries with type, shortText, transactionId, dateTime, username. With error_url returns full detail including serviceInfo, errorContext, sourceCode, callStack. 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.

NameRequiredDescriptionDefault
toNoEnd of time range in YYYYMMDDHHMMSS format.
fromNoStart of time range in YYYYMMDDHHMMSS format.
userNoFilter errors by SAP username.
error_urlNoFeed URL of a specific error entry (from a previous list response link field). When provided, returns detailed error info instead of listing.
max_resultsNoMaximum number of errors to return.
RuntimeGetProfilerTraceDataA

[read-only] [runtime] Read profiler trace data by trace id/uri: hitlist, statements, or db accesses. Returns parsed JSON payload. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. 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.

NameRequiredDescriptionDefault
idNoStatement node ID (for statements view).
viewYesTrace view to retrieve.
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
with_detailsNoInclude statement details (for statements view).
trace_id_or_uriYesProfiler trace ID or full ADT trace URI.
with_system_eventsNoInclude system events.
auto_drill_down_thresholdNoAuto drill-down threshold (for statements view).
RuntimeListFeedsA

[read-only] [runtime] Reads the ADT runtime feed named by feed_type: with feed_type "dumps", the ABAP short dumps (runtime errors) of the program or object named by object_name, of the user named by user, in the time range from–to, filtered also by runtime error, exception, package and application component; with "system_messages" or "gateway_errors", the system messages or SAP Gateway errors of the user and time range; with "descriptors" (the default) or "variants", the feeds and their variants. Entries come newest first; each dump carries its dump_id. When more entries remain, next_to is the to that reads on; incomplete_second names a second holding more entries than SAP answers in one request. Takes feed_type (one feed: its answer) or feed_types (several feeds with the same filters: one entry per feed, in the order given, each its answer or { feed_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. When feed_type is one of descriptors, variants (absent reads as descriptors) and feed_types is absent, 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.

NameRequiredDescriptionDefault
toNoEnd of time range in YYYYMMDDHHMMSS format, inclusive; pass a previous next_to here to read on.
fromNoStart of time range in YYYYMMDDHHMMSS format.
userNoEntries of this SAP user (exact match).
packageNoDumps whose object package contains this text, in any case.
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
componentNoDumps whose application component contains this text, in any case.
exceptionNoDumps whose exception class contains this text, in any case.
feed_typeNoFeed to read. "descriptors" lists available feeds, "variants" lists feed variants, others read that specific feed. Default: descriptors.
feed_typesNoSeveral feeds, read together with the same filters (give this or feed_type).
max_resultsNoMost entries to return, up to 1000; SAP answers at most 100 per request and the pages are read in turn. An answer holds whole seconds, so it may hold a few entries fewer, or a crowded second more, than asked. Default: 50.
object_nameNoDumps whose terminated object name contains this text, in any case.
runtime_errorNoDumps whose runtime error contains this text, in any case.
RuntimeListProfilerTraceFilesA

[read-only] [runtime] List ABAP profiler trace files available in ADT runtime. Returns structured entries with id, recordedAt, user, objectName, state, expiresAt, and sizing/timing fields. 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.

NameRequiredDescriptionDefault

No parameters

RuntimeListSystemMessagesA

[read-only] [runtime] List SM02 system messages. Returns structured entries with id, title, text, severity, validity period, and author. 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.

NameRequiredDescriptionDefault
toNoEnd of time range in YYYYMMDDHHMMSS format.
fromNoStart of time range in YYYYMMDDHHMMSS format.
userNoFilter by author username.
max_resultsNoMaximum number of messages to return.
RuntimeRunClassA

[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.

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
RuntimeRunProgramB

[read-only] [runtime] Runs the ABAP program (report) named by program_name and returns its output. Set profile=true to also start a profiler trace; the trace is then found in the list of profiler trace files (program execution is fire-and-forget, so the traceId arrives later, through that list). 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.

NameRequiredDescriptionDefault
profileNoWhen true, run with the profiler. Default false. Trace must be located afterwards via RuntimeListProfilerTraceFiles — program execution does not return traceId synchronously.
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.
descriptionNoProfiler trace description (only used when profile=true).
program_nameYesABAP program name to execute.
all_db_eventsNo
explicit_on_offNo
with_rfc_tracingNo
all_dynpro_eventsNo
all_procedural_unitsNo
max_time_for_tracingNo
max_size_for_trace_fileNo
all_misc_abap_statementsNo
all_system_kernel_eventsNo
all_internal_table_eventsNo
RunUnitTestA

[read-only] Runs the ABAP Unit tests of the ABAP class named by class_name and returns the result. runner async (default): the run is started and waited for within a bound, and a run that outlasts it returns its run_id, whose status and result are read by run_id; suited to long suites. runner sync: one request that returns the finished result. When runner is sync, 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.

NameRequiredDescriptionDefault
scopeNoWhich tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
runnerNoasync (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.async
class_nameYesClass whose tests run.
SearchObjectA

[read-only] Search ABAP repository by object name or wildcard pattern (e.g. 'Z*'). Answers: "find object X", "does X exist", "list objects matching...", "search for program/class/table by name". Supports all repository object types — optionally filter by type (PROG, CLAS, INTF, DEVC, TABL, DDLS, DTEL, FUGR, SRVD, SRVB, BDEF, DDLX, etc.). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
maxResultsNo[read-only] Maximum number of results to return
object_nameYes[read-only] Object name or mask (e.g. 'MARA*')
object_typeNo[read-only] Optional ABAP object type (e.g. 'TABL', 'CLAS/OC')
SearchSourceA

[read-only] Search ABAP source text inside one or more packages (programs, function groups, classes). packages accepts * masks (Z*, /NS/Z*) alongside exact names; mask resolution is best-effort and scoped to the ADT repository-search result window — some matching packages may be left unscanned. For certainty, pass concrete package names. When using masks, narrow the mask itself and use object_types, object_filter, and max_objects as scan-target controls that apply after package resolution. Comments are searched by default; set exclude_comments=true to drop col-1 * and full-line " comments. The version parameter affects PROG and CLAS main include reads only — FUGR subinclude reads always go against the active version (the include endpoint reads the active version alone). truncated.by_object_cap means at least one object had MORE hits than max_hits_per_object, so that object's hits were capped. The object-count limit is max_objects (which sets truncated.by_max_objects). To avoid by_object_cap, raise max_hits_per_object. The scan is read in ADT batch envelopes: the searches of the package masks, each level of the package walk, then the sources of the scanned objects in envelopes of at most 300 reads (main sources and function group structures, then function group includes and function modules); time_budget_ms is checked before every envelope, and a scan it stops answers whole objects. Run only ONE SearchSource per destination at a time — multiple parallel SearchSource calls against the same SAP system saturate the scan backend and can make all of them time out. Prefer combining terms into a single call over parallel calls. A scan that stops before its last target answers next_start_at; pass it as start_at to go on. When next_start_at equals start_at, time_budget_ms passed before the first object was answered: raise time_budget_ms or lower max_objects. The answer carries total_targets, the scan targets of the walk; it is absent when time_budget_ms passed during the walk. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.

NameRequiredDescriptionDefault
queryYesPrimary substring to match (case-insensitive, ABAP CS).
query2NoOptional second substring. When set, both query and query2 must appear on the same line.
excludeNoUp to 3 substrings; a line containing any of them is dropped.
timeoutNoSeconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.
versionNoSource version for PROG and CLAS main include reads. Default active. FUGR subincludes always read the active version.
packagesYesPackages to scan. Each entry is either an exact dev-class name or a `*` mask, where `*` stands for any characters and a namespace prefix may lead it.
start_atNoIndex of the first scan target to read, from `next_start_at` of the previous answer; 0 by default.
max_objectsNoCap the total objects scanned across all packages (default 500). Setting truncated.by_max_objects=true when exceeded.
emit_no_hitsNoWhen true, list zero-hit targets in a separate no_hits array. Default false.
object_typesNoSubset of object families to scan (default: all three).
object_filterNoGlob applied to object names within each package (e.g. "Z*").
time_budget_msNoInternal scan deadline in ms. When exceeded, returns the hits of the objects before `next_start_at` with truncated.by_timeout=true and next_start_at; when next_start_at equals start_at, the deadline passed before the first object was answered: raise time_budget_ms or lower max_objects. Set this BELOW your client/transport timeout (e.g. 540000 for a 600s client) so you get a partial result instead of a hard cutoff.
exclude_commentsNoSkip col-1 '*' and full-line '"' comment lines. Default false (comments are scanned).
include_subpackagesNoRecurse into subpackages (default true).
max_hits_per_objectNoCap hits per root object across its source units (default 100). When exceeded, truncated.by_object_cap=true is set. Raise this value if you need more hits per object.
SortAndCompressTransportTaskA

Sorts the object list of the transport task named by transport_number and merges its duplicate entries. A task holding the same entry twice refuses removing an entry until this has run. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
transport_numberYesNumber of the transport task to sort and compress.
UpdateBehaviorDefinitionA

Update source code of an existing ABAP Behavior Definition (BDEF). Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
nameYesBehavior Definition name
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate after update. Default: true
lock_handleNoLock handle from LockObject. If not provided, will attempt to lock internally (not recommended for stateful flows).
source_codeYesNew source code
transport_requestNoTransport request number, not a task. Required for transportable packages.
UpdateBehaviorImplementationB

Update source code of an existing ABAP behavior implementation class. Updates the implementations include. Manages lock, update, unlock, and optional activation. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate behavior implementation after update. Default: true.
class_nameYesBehavior Implementation class name. Must exist in the system.
transport_requestNoTransport request number, not a task. Optional if object is local or already in transport.
behavior_definitionYesReferenced Behavior Definition name. Accepted for compatibility; not forwarded to the write — the shipped update() no longer reads it (it writes the implementations include only, never the FOR BEHAVIOR OF main source).
implementation_codeYesImplementation code for the implementations include. Contains the actual behavior implementation methods.
UpdateCdsUnitTestA

Writes test_class_source as the ABAP Unit test classes of the CDS view test class named by class_name. The local test classes in the test class are rewritten, and it is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesTest class of the CDS view. Must already exist.
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
UpdateClassA

Update source code of an existing ABAP class. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate after update. Default: false.
class_nameYesClass name.
source_codeYesComplete ABAP class source code.
transport_requestNoTransport request number, not a task. Required for transportable packages.
UpdateDataElementA

Update an existing ABAP data element. Locks, updates with provided parameters (complete replacement), unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
lengthNoLength - for predefinedAbapType or refToPredefinedAbapType
activateNoActivate data element after update (default: true)
decimalsNoDecimals - for predefinedAbapType or refToPredefinedAbapType
data_typeNoData type (CHAR, NUMC, etc.) - for predefinedAbapType or refToPredefinedAbapType
type_kindNoType kind: domain, predefinedAbapType, refToPredefinedAbapType, refToDictionaryType, refToClifTypedomain
type_nameNoType name: domain name, data element name, or class name (depending on type_kind)
descriptionNoNew data element description
search_helpNoSearch help name
package_nameYesPackage name
field_label_longNoLong field label (max 40 chars)
data_element_nameYesData element name to update
field_label_shortNoShort field label (max 10 chars)
set_get_parameterNoSet/Get parameter ID
transport_requestNoTransport request number, not a task. Required for transportable packages.
field_label_mediumNoMedium field label (max 20 chars)
field_label_headingNoHeading field label (max 55 chars)
search_help_parameterNoSearch help parameter
UpdateDdlA

Updates the DDL source code of the existing CDS view or classic DDL view named by ddl_name to ddl_source. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate after update. Default: false.
ddl_nameYesDDL source name.
ddl_sourceYesComplete DDL source code.
transport_requestNoTransport request number, not a task. Required for transportable packages.
UpdateDomainA

Update an existing ABAP domain. Locks, updates with provided parameters (complete replacement), unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
lengthNoField length (max depends on datatype)
activateNoActivate domain after update (default: true)
datatypeNoData type: CHAR, NUMC, DATS, TIMS, DEC, INT1, INT2, INT4, INT8, CURR, QUAN, etc.
decimalsNoDecimal places (for DEC, CURR, QUAN types)
lowercaseNoAllow lowercase input
descriptionNoNew domain description (optional)
domain_nameYesDomain name to update
sign_existsNoField has sign (+/-)
value_tableNoValue table name for foreign key relationship
fixed_valuesNoArray of fixed values for domain value range
package_nameYesPackage name
conversion_exitNoConversion exit routine name (without CONVERSION_EXIT_ prefix)
transport_requestNoTransport request number, not a task. Required for transportable packages.
UpdateFunctionGroupA

Update metadata (description) of an existing ABAP function group. Function groups are containers for function modules, which carry the source; this updates the group's metadata alone. Locks the group, writes, and unlocks it. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionYesNew description for the function group.
transport_requestNoTransport request number, not a task. Optional if object is local or already in transport.
function_group_nameYesFunction group name. Must exist in the system.
UpdateFunctionGroupUnitTestA

Writes test_class_source as the ABAP Unit test classes of the function group named by function_group_name. The local test classes in its test include are rewritten, and it is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
function_group_nameYesFunction group whose tests are replaced. Its test include must already exist.
UpdateFunctionIncludeB

Update source code of an existing ABAP function group include. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate the include after the source update. Default: false. Set true to make the updated source the active version immediately.
source_codeYesComplete ABAP include source code.
include_nameYesInclude name. Include must already exist.
transport_requestNoTransport request number, not a task. Required for transportable includes.
function_group_nameYesFunction group name containing the include.
UpdateFunctionModuleA

Update source code of an existing ABAP function module. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate function module after source update. Default: false. Set to true to activate immediately.
source_codeYesComplete ABAP function module source code, from FUNCTION to ENDFUNCTION.
transport_requestNoTransport request number, not a task. Required for transportable function modules.
function_group_nameYesFunction group name containing the function module.
function_module_nameYesFunction module name. Function module must already exist.
UpdateInterfaceA

Update source code of an existing ABAP interface. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate interface after update. Default: true.
source_codeYesComplete ABAP interface source code with INTERFACE...ENDINTERFACE section.
interface_nameYesInterface name. Must exist in the system.
transport_requestNoTransport request number, not a task. Optional if object is local or already in transport.
UpdateLocalDefinitionsA

Update local definitions (class-local types/constants) in an ABAP class. Manages lock, update, unlock, and optional activation of parent class. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
definitions_codeYesUpdated source code for local definitions.
transport_requestNoTransport request number (required for transportable objects), not a task.
activate_on_updateNoActivate parent class after updating local definitions. Default: false
UpdateLocalMacrosB

Update local macros in an ABAP class. Manages lock, update, unlock, and optional activation of parent class. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
macros_codeYesUpdated source code for local macros.
transport_requestNoTransport request number (required for transportable objects), not a task.
activate_on_updateNoActivate parent class after updating local macros. Default: false
UpdateLocalTestClassA

Writes test_class_code as the local test classes include of the ABAP class named by class_name. The include is written under the class lock; with activate_on_update the class is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
test_class_codeYesUpdated source code for the local test class.
transport_requestNoTransport request number (required for transportable objects), not a task.
activate_on_updateNoActivate parent class after updating test class. Default: false
UpdateLocalTypesA

Update local types definitions in an ABAP class. Manages lock, update, unlock, and optional activation of parent class. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesParent class name.
local_types_codeYesUpdated source code for local types.
transport_requestNoTransport request number (required for transportable objects), not a task.
activate_on_updateNoActivate parent class after updating local types. Default: false
UpdateMessageClassB

Updates the header of the ABAP message class named by message_class_name: its description. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionYesNew short description for the message class.
transport_requestNo(optional) Transport request number, not a task. Required for transportable objects.
message_class_nameYesMessage class name.
UpdateMessageClassMessageA

Change the text / flags of an existing message in an ABAP message class (T100). Creates the message when the class lacks it (upsert). Runs outside batch mode.

NameRequiredDescriptionDefault
msgnoYesMessage number (e.g., "001").
msgtextYesNew message text. May contain placeholders &1 &2 &3 &4 (or &).
descriptionNo(optional) Long description for the message.
self_explanatoryNo(optional) Mark the message as self-explanatory.
transport_requestNo(optional) Transport request number, not a task. Required for transportable objects.
message_class_nameYesParent message class name.
UpdateMetadataExtensionA

Update source code of an existing ABAP Metadata Extension (DDLX). Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
nameYesMetadata Extension name
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate after update. Default: true
lock_handleNoLock handle from LockObject. If not provided, will attempt to lock internally.
source_codeYesNew source code
transport_requestNoTransport request number (required for transportable packages), not a task.
UpdatePackageA

Update the description of an existing ABAP package. Locks the package, writes, and unlocks it again, whatever the write answered. Over RFC this runs in an ABAP session of its own, closed afterwards. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionYesNew description for the package.
package_nameYesPackage name. Package must already exist.
transport_requestNoTransport request number (required for transportable packages), not a task.
UpdateProgramA

Update source code of an existing ABAP program. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate program after source update. Default: false. Set to true to activate immediately, or use ActivateObject for batch activation.
source_codeYesComplete ABAP program source code.
program_nameYesProgram name. Program must already exist.
transport_requestNoTransport request number, not a task. Required for transportable packages.
UpdateProgramUnitTestA

Writes test_class_source as the ABAP Unit test classes of the report named by program_name. The local test classes in its test include are rewritten, and it is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
program_nameYesReport whose tests are replaced. Its test include must already exist.
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
UpdateServiceBindingB

Update publication state of an existing ABAP service binding. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
service_nameYesPublished service name, from the binding. Required: an OData V2 publication job resolves the service by name and version and refuses without them. Ignored for V4, where the request names its target on its own.
binding_variantNoService binding variant. Determines OData version for publish/unpublish routing.ODATA_V4_UI
response_formatNoAccepted for backward compatibility; no longer affects the answer, which is always the structured write result.xml
service_versionNoPublished service version. Default 0001. Used by an OData V2 publication job together with the service name; ignored for V4.
service_binding_nameYesService binding name to update.
desired_publication_stateYesTarget publication state.
UpdateServiceDefinitionA

Update source code of an existing ABAP service definition. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate service definition after update. Default: true.
source_codeYesComplete service definition source code.
transport_requestNoTransport request number, not a task. Optional if object is local or already in transport.
service_definition_nameYesService definition name. Must exist in the system.
UpdateStructureA

Update DDL source code of an existing ABAP structure. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate structure after source update. Default: true.
ddl_codeYesComplete DDL source code for structure. Example: '@EndUserText.label : \'My Structure\' @AbapCatalog.tableCategory : #TRANSPARENT define structure zz_s_test_001 { client : abap.clnt not null; id : abap.char(10); name : abap.char(255); }'
structure_nameYesStructure name. Structure must already exist.
transport_requestNoTransport request number, not a task. Optional if object is local or already in transport.
UpdateTableA

Update DDL source code of an existing ABAP table. Locks, updates, unlocks, and optionally activates. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
activateNoActivate table after source update. Default: true.
ddl_codeYesComplete DDL source code for table. Example: '@EndUserText.label : \'My Table\' @AbapCatalog.tableCategory : #TRANSPARENT define table ztst_table { key client : abap.clnt not null; key id : abap.char(10); name : abap.char(255); }'
table_nameYesTable name. Table must already exist.
transport_requestNoTransport request number, not a task. Optional if object is local or already in transport.
UpdateUnitTestA

Writes test_class_source as the ABAP Unit test classes of the ABAP class named by class_name. The class's local test classes are rewritten, and the class is activated. Runs outside batch mode.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
class_nameYesClass that holds the tests. Must already exist.
test_class_sourceYesABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.
transport_requestNoTransport request, not a task. Required for a transportable object.
ValidateServiceBindingA

[read-only] Validates a new service binding named by service_binding_name for the service definition named by service_definition_name, in the package and version given, through the ADT validation endpoint. 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.

NameRequiredDescriptionDefault
detailNoHow much of the answer to return: "terse" (default, the fields you need to act), "full" (the whole parse), "raw" (the document as ADT sent it).terse
descriptionNoOptional description used during validation.
package_nameNoABAP package for the binding.
service_binding_nameYesService binding name to validate.
service_binding_versionNoService binding version (for example: 1.0). Accepted for backward compatibility; the transport check this now runs does not read it.
service_definition_nameYesService definition linked to binding. Accepted for backward compatibility; the transport check this now runs does not read it.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev21.0.0
    • ChangedGetTypeInfo1 field changed
      • changedInput schema / properties / include_structure_fallback / description
        Previous value: -"When true (default), tries DDIC structure lookup only if type lookup returns 404/empty."New value: +"When true (default), the name is also read as a DDIC structure; false leaves the structure read out."
  2. 149 tool updatesv20.1.0
    • ChangedActivateBehaviorDefinition2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateClass2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateDataElement2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateDdl2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateDomain2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateFunctionGroup2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateFunctionModule2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateInterface2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateMetadataExtension2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • AddedActivateProgram
    • ChangedActivateServiceBinding2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateServiceDefinition2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateStructure2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • ChangedActivateTable2 fields changed
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID from GetSession. If not provided, a new session will be created.",
        -  "type": "string"
        -}
      • removedInput schema / properties / session_state
        Removed value: -{
        -  "description": "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
        -  "properties": {
        -    "cookie_store": {},
        -    "cookies": {
        -      "type": "string"
        -    },
        -    "csrf_token": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
    • AddedAmdpDebugCancel
    • AddedAmdpDebugGetTable
    • AddedAmdpDebugSetBreakpoints
    • AddedAmdpDebugStart
    • AddedAmdpDebugStep
    • AddedAmdpDebugStop
    • AddedAmdpDebugWait
    • AddedBatchAnswers
    • AddedBatchBegin
    • AddedBatchEnd
    • ChangedCheckBehaviorDefinition1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Omitted, the inactive one is checked; an object that is only active has none, and SAP answers such a check with a finding against an empty source (e.g. G46 \"REPORT/PROGRAM statement is missing\") or \"Inactive version … does not exist\" — ask for active."New value: +"Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write."
    • ChangedCheckDataElement1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Which version to check. Defaults to the inactive one, what a caller wants right after a write; an object that is only active has no inactive version, and SAP answers such a check with \"Error while importing object … from the database\" — ask for active."New value: +"Which version to check. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write."
    • ChangedCheckDdl1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to check: 'active' or 'inactive'. Default: inactive."New value: +"Version to check: 'active' or 'inactive'. Without `version` the active version is checked."
    • ChangedCheckDomain1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Which version to check. Defaults to the inactive one, what a caller wants right after a write; an object that is only active has no inactive version, and SAP answers such a check with \"Error while importing object … from the database\" — ask for active."New value: +"Which version to check. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write."
    • ChangedCheckFunctionGroup1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Omitted, the inactive one is checked; an object that is only active has none, and SAP answers such a check with a finding against an empty source (e.g. G46 \"REPORT/PROGRAM statement is missing\") or \"Inactive version … does not exist\" — ask for active."New value: +"Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write."
    • ChangedCheckInterface1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Omitted, the inactive one is checked; an object that is only active has none, and SAP answers such a check with a finding against an empty source (e.g. G46 \"REPORT/PROGRAM statement is missing\") or \"Inactive version … does not exist\" — ask for active."New value: +"Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Without `version` the active version is checked; pass `inactive` for the unsaved one right after a write."
    • AddedCheckProgram
    • ChangedCheckStructure1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to check: 'active' or 'inactive'. Default: inactive."New value: +"Version to check: 'active' or 'inactive'. Without `version` the active version is checked."
    • ChangedCheckTable1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to check: 'active', 'inactive', or 'new'. Default: new."New value: +"Version to check: 'active', 'inactive', or 'new'. Without `version` the active version is checked."
    • AddedCreateProgram
    • AddedCreateProgramUnitTest
    • ChangedCreateServiceBinding1 field changed
      • changedInput schema / properties / activate / description
        Previous value: -"Activate and generate the service binding after create. Default: true."New value: +"Activate the service binding after create, then read its service group. Default: true."
    • ChangedCreateTransportTask1 field changed
      • changedInput schema / properties / target_user / description
        Previous value: -"SAP user the task belongs to, e.g. DEVELOPER. Required — the server will not choose one, and naming another user is how a task is made for somebody else."New value: +"The user the task belongs to: an SAP user id (sent in upper case), e.g. DEVELOPER. Required — the server will not choose one, and naming another user is how a task is made for somebody else."
    • AddedDebugBatchBegin
    • AddedDebugBatchEnd
    • AddedDebugCreateMemorySnapshot
    • AddedDebugCreateWatchpoint
    • AddedDebugDeleteBreakpoint
    • AddedDebugDeleteWatchpoint
    • AddedDebugGetMemorySizes
    • AddedDebugGetStack
    • AddedDebugGetVariables
    • AddedDebugListBreakpoints
    • AddedDebugListWatchpoints
    • AddedDebugSetBreakpoints
    • AddedDebugSetSettings
    • AddedDebugSetStackPosition
    • AddedDebugSetVariable
    • AddedDebugStartListener
    • AddedDebugStep
    • AddedDebugStepToLine
    • AddedDebugStop
    • AddedDebugTakeOverListener
    • AddedDebugTerminate
    • AddedDebugWait
    • AddedDeletePackage
    • AddedDeleteProgram
    • ChangedDescribeByList1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • AddedDiscardBackgroundRun
    • ChangedGetAbapSystemSymbols1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • ChangedGetATCFindings2 fields changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / worklist_id / description
        Previous value: -"Worklist identifier answered by RunATC."New value: +"Worklist identifier an ATC run answered."
    • ChangedGetATCRunStatus1 field changed
      • changedInput schema / properties / run_id / description
        Previous value: -"Run identifier answered by RunATC when wait was false."New value: +"Run identifier an ATC run started with wait=false answered."
    • AddedGetBackgroundRun
    • ChangedGetBehaviorDefinition2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetBehaviorDefinitionVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetBehaviorDefinitionVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the RAP behavior definition's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetBehaviorDefinitionVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the RAP behavior definition's version history."
    • ChangedGetBehaviorDefinitionVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetBehaviorDefinitionVersions entry."New value: +"Opaque content_uri of a version, from the RAP behavior definition's version history."
    • ChangedGetBehaviorImplementation2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetClass2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetClassVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetClassVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the ABAP class's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetClassVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the ABAP class's version history."
    • ChangedGetClassVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetClassVersions entry."New value: +"Opaque content_uri of a version, from the ABAP class's version history."
    • ChangedGetDdl2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetDdlVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetDdlVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the CDS view (DDL source)'s version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetDdlVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the CDS view (DDL source)'s version history."
    • ChangedGetDdlVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetDdlVersions entry."New value: +"Opaque content_uri of a version, from the CDS view (DDL source)'s version history."
    • ChangedGetEnhancements3 fields changed
      • changedInput schema / properties / object_name / description
        Previous value: -"Name of the ABAP object"New value: +"Name of the ABAP object (with object_type; or give objects)"
      • addedInput schema / properties / objects
        Added value: +{
        +  "description": "[read-only] Several objects, read together (give this or object_name and object_type)",
        +  "items": {
        +    "properties": {
        +      "object_name": {
        +        "description": "Name of the ABAP object",
        +        "type": "string"
        +      },
        +      "object_type": {
        +        "description": "Type of the ABAP object",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "object_name",
        +      "object_type"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "object_name",
        -  "object_type"
        -]
    • AddedGetFunctionInclude
    • ChangedGetFunctionModule4 fields changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"FunctionGroup name containing the function module."New value: +"Function group containing the function module."
      • changedInput schema / properties / function_module_name / description
        Previous value: -"FunctionModule name."New value: +"Function module name."
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetFunctionModuleVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetFunctionModuleVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the ABAP function module's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetFunctionModuleVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the ABAP function module's version history."
    • ChangedGetFunctionModuleVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetFunctionModuleVersions entry."New value: +"Opaque content_uri of a version, from the ABAP function module's version history."
    • ChangedGetIncludesList7 fields changed
      • changedInput schema / properties / object_name / description
        Previous value: -"Name of the ABAP program or include"New value: +"Name of the ABAP program or include (with object_type; or give objects)"
      • addedInput schema / properties / objects
        Added value: +{
        +  "description": "[read-only] Several objects, read together (give this or object_name and object_type)",
        +  "items": {
        +    "properties": {
        +      "object_name": {
        +        "description": "Name of the ABAP program or include",
        +        "type": "string"
        +      },
        +      "object_type": {
        +        "description": "ADT object type: 'PROG/P', 'PROG/I', 'FUGR' or 'CLAS/OC'",
        +        "enum": [
        +          "PROG/P",
        +          "PROG/I",
        +          "FUGR",
        +          "CLAS/OC"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "object_name",
        +      "object_type"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / timeout / description
        Previous value: -"[read-only] Timeout in ms for each ADT request."New value: +"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP."
      • addedInput schema / properties / timeout / maximum
        Added value: +2147483
      • addedInput schema / properties / timeout / minimum
        Added value: +1
      • changedInput schema / properties / timeout / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / required
        Removed value: -[
        -  "object_name",
        -  "object_type"
        -]
    • ChangedGetInterface2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetInterfaceVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetInterfaceVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the ABAP interface's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetInterfaceVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the ABAP interface's version history."
    • ChangedGetInterfaceVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetInterfaceVersions entry."New value: +"Opaque content_uri of a version, from the ABAP interface's version history."
    • ChangedGetLocalDefinitions1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version to read: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetLocalMacros1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version to read: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetLocalTestClass1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version to read: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetLocalTypes1 field changed
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version to read: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetMessageClassMessage1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedGetMetadataExtension2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetMetadataExtensionVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetMetadataExtensionVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the CDS metadata extension's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetMetadataExtensionVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the CDS metadata extension's version history."
    • ChangedGetMetadataExtensionVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetMetadataExtensionVersions entry."New value: +"Opaque content_uri of a version, from the CDS metadata extension's version history."
    • RemovedGetNodeStructureLow
    • ChangedGetObjectInfo8 fields changed
      • addedInput schema / properties / include_descriptions
        Added value: +{
        +  "default": false,
        +  "description": "[read-only] Include each leaf's description. Where the system serves ADT batch, each description is read from the leaf's metadata: one more read per leaf, which on a large tree takes most of the call (default false)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / maxDepth / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / maxDepth / minimum
        Added value: +-9007199254740991
      • changedInput schema / properties / maxDepth / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / objects
        Added value: +{
        +  "description": "[read-only] Several objects, read together (give this or parent_type and parent_name)",
        +  "items": {
        +    "properties": {
        +      "object_name": {
        +        "description": "Object name",
        +        "type": "string"
        +      },
        +      "object_type": {
        +        "description": "Object type (e.g. DEVC/K, CLAS/OC, PROG/P)",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "object_type",
        +      "object_name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / parent_type / description
        Previous value: -"[read-only] Parent object type (e.g. DEVC/K, CLAS/OC, PROG/P)"New value: +"[read-only] Parent object type (e.g. DEVC/K, CLAS/OC, PROG/P); with parent_name, or give objects"
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "parent_type",
        -  "parent_name"
        -]
    • ChangedGetObjectsList4 fields changed
      • addedInput schema / properties / objects
        Added value: +{
        +  "description": "[read-only] Several parents, read together (give this or parent_name)",
        +  "items": {
        +    "properties": {
        +      "parent_name": {
        +        "description": "Parent object name",
        +        "type": "string"
        +      },
        +      "parent_type": {
        +        "description": "Parent object type (e.g. PROG/P, FUGR)",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "parent_type",
        +      "parent_name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / parent_name / description
        Previous value: -"[read-only] Parent object name"New value: +"[read-only] Parent object name (with parent_tech_name and parent_type; or give objects)"
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "parent_name",
        -  "parent_tech_name",
        -  "parent_type"
        -]
    • RemovedGetObjectStructureLow
    • ChangedGetObjectVersionDiff3 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetObjectVersions entry)."New value: +"Opaque content_uri of the OLD/base version (from the object's version history)."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetObjectVersions entry)."New value: +"Opaque content_uri of the NEW/compare version (from the object's version history)."
      • changedInput schema / properties / object_type / description
        Previous value: -"Object type (same value used in GetObjectVersions)."New value: +"Object type (the same value the version history was read with)."
    • ChangedGetObjectVersionSource2 fields changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetObjectVersions version entry."New value: +"Opaque content_uri of a version, from the object's version history."
      • changedInput schema / properties / object_type / description
        Previous value: -"Object type (same value used in GetObjectVersions)."New value: +"Object type (the same value the version history was read with)."
    • ChangedGetPackageContents5 fields changed
      • changedInput schema / properties / include_descriptions / description
        Previous value: -"Include object descriptions in response (default: true)"New value: +"Include each object's description in the response. The walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes (default: false)"
      • changedInput schema / properties / package_name / description
        Previous value: -"Name of the ABAP package"New value: +"Name of the ABAP package (give this or package_names)"
      • addedInput schema / properties / package_names
        Added value: +{
        +  "description": "Names of several ABAP packages, read together (give this or package_name)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "package_name"
        -]
    • ChangedGetPackageTree9 fields changed
      • changedInput schema / properties / include_descriptions / default
        Previous value: -trueNew value: +false
      • changedInput schema / properties / include_descriptions / description
        Previous value: -"Include object descriptions in response. Default: true"New value: +"Include each object's description in the response. The package metadata and the walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes. Default: false"
      • addedInput schema / properties / max_depth / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / max_depth / minimum
        Added value: +-9007199254740991
      • changedInput schema / properties / max_depth / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name"New value: +"Package name (give this or package_names)"
      • addedInput schema / properties / package_names
        Added value: +{
        +  "description": "Several package names, read together (give this or package_name)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "package_name"
        -]
    • AddedGetProgram
    • AddedGetProgramVersionDiff
    • AddedGetProgramVersions
    • AddedGetProgramVersionSource
    • ChangedGetServiceBinding1 field changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
    • ChangedGetServiceDefinition2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • RemovedGetSession
    • ChangedGetSqlQuery1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • ChangedGetStructure2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetStructuresList7 fields changed
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name."New value: +"Structure name (or give structure_names)."
      • addedInput schema / properties / structure_names
        Added value: +{
        +  "description": "Several structure names, read together (give this or structure_name).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / timeout / description
        Previous value: -"[read-only] Timeout in ms for each ADT request."New value: +"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP."
      • addedInput schema / properties / timeout / maximum
        Added value: +2147483
      • addedInput schema / properties / timeout / minimum
        Added value: +1
      • changedInput schema / properties / timeout / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / required
        Removed value: -[
        -  "structure_name"
        -]
    • ChangedGetStructureVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetStructureVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the ABAP structure's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetStructureVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the ABAP structure's version history."
    • ChangedGetStructureVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetStructureVersions entry."New value: +"Opaque content_uri of a version, from the ABAP structure's version history."
    • ChangedGetTable2 fields changed
      • addedInput schema / properties / part
        Added value: +{
        +  "default": "source",
        +  "description": "The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...).",
        +  "enum": [
        +    "source",
        +    "metadata"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / version / description
        Previous value: -"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."New value: +"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."
    • ChangedGetTableContents1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • ChangedGetTableVersionDiff2 fields changed
      • changedInput schema / properties / content_uri_from / description
        Previous value: -"Opaque content_uri of the OLD/base version (from a GetTableVersions entry)."New value: +"Opaque content_uri of the OLD/base version, from the ABAP table's version history."
      • changedInput schema / properties / content_uri_to / description
        Previous value: -"Opaque content_uri of the NEW/compare version (from a GetTableVersions entry)."New value: +"Opaque content_uri of the NEW/compare version, from the ABAP table's version history."
    • ChangedGetTableVersionSource1 field changed
      • changedInput schema / properties / content_uri / description
        Previous value: -"Opaque content_uri taken from a GetTableVersions entry."New value: +"Opaque content_uri of a version, from the ABAP table's version history."
    • ChangedGetTransaction1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • RemovedGetVirtualFoldersLow
    • ChangedGetWhereUsed4 fields changed
      • changedInput schema / properties / object_name / description
        Previous value: -"Name of the ABAP object. For function modules the name MUST be in the form 'GROUP|FM_NAME' (function group name, pipe, function module name)."New value: +"Name of the ABAP object (with object_type; or give objects). For function modules the name MUST be in the form 'GROUP|FM_NAME' (function group name, pipe, function module name)."
      • addedInput schema / properties / objects
        Added value: +{
        +  "description": "Several objects, read together (give this or object_name and object_type). The type filters apply to every object.",
        +  "items": {
        +    "properties": {
        +      "object_name": {
        +        "description": "Name of the ABAP object; a function module as 'GROUP|FM_NAME'",
        +        "type": "string"
        +      },
        +      "object_type": {
        +        "description": "Type of the ABAP object, as object_type takes it",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "object_name",
        +      "object_type"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "object_name",
        -  "object_type"
        -]
    • AddedListBackgroundRuns
    • AddedListLeftoverSessions
    • ChangedListTransports2 fields changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / user / description
        Previous value: -"SAP user name to filter to; applied client-side. If not provided, defaults to the current session user, so an unfiltered call already answers only that user's transports."New value: +"The user to filter to: an SAP user id (matched in upper case); applied client-side. If not provided, defaults to the current session user, so an unfiltered call already answers only that user's transports."
    • AddedLogoffLeftoverSession
    • AddedMemorySnapshotDelta
    • AddedMemorySnapshotGet
    • AddedMemorySnapshotList
    • AddedMoveTransportObjects
    • RemovedReadFunctionInclude
    • ChangedReadTransportObjects1 field changed
      • changedInput schema / properties / transport_number / description
        Previous value: -"Transport REQUEST or TASK number. Both answer: a request lists the entries of all its tasks, which is how to find WHICH task holds an object; a task lists its own. A removal must then address that task, not the request."New value: +"Transport REQUEST or TASK number. A task answers its own entries; a request answers the entries of each of its tasks, each with its `task` number — the task a removal addresses."
    • ChangedRunATC4 fields changed
      • addedInput schema / properties / max_findings / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / max_findings / minimum
        Added value: +1
      • changedInput schema / properties / max_findings / type
        Previous value: -"number"New value: +"integer"
      • addedInput schema / properties / objects / minItems
        Added value: +1
    • ChangedRunFunctionGroupUnitTest2 fields changed
      • addedInput schema / properties / runner
        Added value: +{
        +  "default": "async",
        +  "description": "async (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.",
        +  "enum": [
        +    "async",
        +    "sync"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Which tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.",
        +  "properties": {
        +    "add_foreign_tests_as_preview": {
        +      "description": "List the foreign tests as a preview, unexecuted (default true).",
        +      "type": "boolean"
        +    },
        +    "foreign_tests": {
        +      "description": "Execute the foreign tests, those linked by an ABAP Doc @testing relation (default false).",
        +      "type": "boolean"
        +    },
        +    "own_tests": {
        +      "description": "Include the object's own tests (default true).",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedRunFunctionModuleUnitTest3 fields changed
      • addedInput schema / properties / function_group_name
        Added value: +{
        +  "description": "Function group holding the function module; required by runner sync.",
        +  "type": "string"
        +}
      • addedInput schema / properties / runner
        Added value: +{
        +  "default": "async",
        +  "description": "async (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.",
        +  "enum": [
        +    "async",
        +    "sync"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Which tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.",
        +  "properties": {
        +    "add_foreign_tests_as_preview": {
        +      "description": "List the foreign tests as a preview, unexecuted (default true).",
        +      "type": "boolean"
        +    },
        +    "foreign_tests": {
        +      "description": "Execute the foreign tests, those linked by an ABAP Doc @testing relation (default false).",
        +      "type": "boolean"
        +    },
        +    "own_tests": {
        +      "description": "Include the object's own tests (default true).",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • AddedRunProgramUnitTest
    • ChangedRuntimeAnalyzeProfilerTrace1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • AddedRuntimeGetGatewayErrorLog
    • ChangedRuntimeGetProfilerTraceData1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • ChangedRuntimeListFeeds3 fields changed
      • removedInput schema / properties / feed_type / default
        Removed value: -"descriptors"
      • addedInput schema / properties / feed_types
        Added value: +{
        +  "description": "Several feeds, read together with the same filters (give this or feed_type).",
        +  "items": {
        +    "enum": [
        +      "descriptors",
        +      "variants",
        +      "dumps",
        +      "system_messages",
        +      "gateway_errors"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • ChangedRuntimeRunClass7 fields changed
      • 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"
    • RemovedRuntimeRunClassWithProfiling
    • AddedRuntimeRunProgram
    • ChangedRunUnitTest2 fields changed
      • addedInput schema / properties / runner
        Added value: +{
        +  "default": "async",
        +  "description": "async (default): starts the run, waits for it within a bound and returns the result, or the run_id of a run that outlasts the bound, whose status and result are read by run_id; suited to long suites. sync: one request that returns the finished result.",
        +  "enum": [
        +    "async",
        +    "sync"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Which tests the run covers, sent with either runner. Foreign tests are test classes linked to the object by an ABAP Doc @testing relation (a function module's tests are often linked so). With runner sync they execute only with foreign_tests true: with the defaults (foreign_tests false, add_foreign_tests_as_preview true) SAP lists them as a preview, unexecuted. Runner async executes them with the defaults as well.",
        +  "properties": {
        +    "add_foreign_tests_as_preview": {
        +      "description": "List the foreign tests as a preview, unexecuted (default true).",
        +      "type": "boolean"
        +    },
        +    "foreign_tests": {
        +      "description": "Execute the foreign tests, those linked by an ABAP Doc @testing relation (default false).",
        +      "type": "boolean"
        +    },
        +    "own_tests": {
        +      "description": "Include the object's own tests (default true).",
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedSearchObject1 field changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "description": "Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the call answers that nothing was changed. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a cancel does nothing to SAP.",
        +  "maximum": 2147483,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • AddedSearchSource
    • AddedSortAndCompressTransportTask
    • AddedUpdatePackage
    • AddedUpdateProgram
    • AddedUpdateProgramUnitTest
  3. 162 tool updatesv16.0.0
    • ChangedActivateBehaviorDefinition2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Behavior definition name (root entity, e.g., ZI_MY_ENTITY)."New value: +"Behavior definition name (root entity)."
    • ChangedActivateClass2 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Class name (e.g., ZCL_MY_CLASS)."New value: +"Class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedActivateDataElement2 fields changed
      • changedInput schema / properties / data_element_name / description
        Previous value: -"Data element name (e.g., ZDT_MY_ELEMENT)."New value: +"Data element name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedActivateDdl2 fields changed
      • changedInput schema / properties / ddl_name / description
        Previous value: -"DDL source name (e.g., ZVW_MY_VIEW)."New value: +"DDL source name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedActivateDomain2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name (e.g., ZDM_MY_DOMAIN)."New value: +"Domain name."
    • ChangedActivateFunctionGroup2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., Z_FG_TEST)."New value: +"Function group name."
    • ChangedActivateFunctionModule3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., Z_FG_TEST)."New value: +"Function group name."
      • changedInput schema / properties / function_module_name / description
        Previous value: -"Function module name (e.g., Z_FM_TEST)."New value: +"Function module name."
    • ChangedActivateInterface2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / interface_name / description
        Previous value: -"Interface name (e.g., ZIF_MY_INTERFACE)."New value: +"Interface name."
    • ChangedActivateMetadataExtension2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Metadata extension name (e.g., ZC_MY_EXTENSION)."New value: +"Metadata Extension name."
    • ChangedActivateObjects1 field changed
      • changedInput schema / properties / objects / items / properties / name / description
        Previous value: -"Object name in uppercase (e.g., ZOK7_D_MTART, ZCL_MY_CLASS)"New value: +"Object name in uppercase"
    • ChangedActivateServiceBinding2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Service binding name (e.g., ZSB_MY_SERVICE)."New value: +"Service binding name."
    • ChangedActivateServiceDefinition2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Service definition name (e.g., ZSD_MY_SERVICE)."New value: +"Service definition name."
    • ChangedActivateStructure2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., ZST_MY_STRUCTURE)."New value: +"Structure name."
    • ChangedActivateTable2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / table_name / description
        Previous value: -"Table name (e.g., ZTB_MY_TABLE)."New value: +"Table name."
    • AddedAddTransportObject
    • ChangedCheckBehaviorDefinition2 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"BehaviorDefinition name (e.g., ZI_MY_BDEF)."New value: +"BehaviorDefinition name."
      • addedInput schema / properties / version
        Added value: +{
        +  "description": "Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Omitted, the inactive one is checked; an object that is only active has none, and SAP answers such a check with a finding against an empty source (e.g. G46 \"REPORT/PROGRAM statement is missing\") or \"Inactive version … does not exist\" — ask for active.",
        +  "enum": [
        +    "active",
        +    "inactive"
        +  ],
        +  "type": "string"
        +}
    • ChangedCheckClass1 field changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Class name (e.g., ZCL_MY_CLASS)."New value: +"Class name."
    • ChangedCheckDataElement2 fields changed
      • changedInput schema / properties / data_element_name / description
        Previous value: -"Data element name (e.g., ZDE_MY_ELEMENT)."New value: +"Data element name."
      • addedInput schema / properties / version
        Added value: +{
        +  "description": "Which version to check. Defaults to the inactive one, what a caller wants right after a write; an object that is only active has no inactive version, and SAP answers such a check with \"Error while importing object … from the database\" — ask for active.",
        +  "enum": [
        +    "active",
        +    "inactive"
        +  ],
        +  "type": "string"
        +}
    • ChangedCheckDdl1 field changed
      • changedInput schema / properties / ddl_name / description
        Previous value: -"CDS view name to check, passed as ddl_name (e.g., ZI_MY_VIEW)."New value: +"CDS view name to check, passed as ddl_name."
    • ChangedCheckDomain2 fields changed
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name (e.g., ZDM_MY_DOMAIN)."New value: +"Domain name."
      • addedInput schema / properties / version
        Added value: +{
        +  "description": "Which version to check. Defaults to the inactive one, what a caller wants right after a write; an object that is only active has no inactive version, and SAP answers such a check with \"Error while importing object … from the database\" — ask for active.",
        +  "enum": [
        +    "active",
        +    "inactive"
        +  ],
        +  "type": "string"
        +}
    • ChangedCheckFunctionGroup2 fields changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., ZFGRP_MY_GROUP)."New value: +"Function group name."
      • addedInput schema / properties / version
        Added value: +{
        +  "description": "Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Omitted, the inactive one is checked; an object that is only active has none, and SAP answers such a check with a finding against an empty source (e.g. G46 \"REPORT/PROGRAM statement is missing\") or \"Inactive version … does not exist\" — ask for active.",
        +  "enum": [
        +    "active",
        +    "inactive"
        +  ],
        +  "type": "string"
        +}
    • ChangedCheckFunctionModule1 field changed
      • changedInput schema / properties / function_module_name / description
        Previous value: -"Function module name (e.g., Z_MY_FUNCTION)."New value: +"Function module name."
    • ChangedCheckInterface2 fields changed
      • changedInput schema / properties / interface_name / description
        Previous value: -"Interface name (e.g., ZIF_MY_INTERFACE)."New value: +"Interface name."
      • addedInput schema / properties / version
        Added value: +{
        +  "description": "Which version to check — it goes into the checkrun body as chkrun:version, as ADT sends it. Omitted, the inactive one is checked; an object that is only active has none, and SAP answers such a check with a finding against an empty source (e.g. G46 \"REPORT/PROGRAM statement is missing\") or \"Inactive version … does not exist\" — ask for active.",
        +  "enum": [
        +    "active",
        +    "inactive"
        +  ],
        +  "type": "string"
        +}
    • ChangedCheckMetadataExtension2 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"Metadata extension name (e.g., ZC_MY_DDLX)."New value: +"Metadata extension name."
      • addedInput schema / properties / version
        Added value: +{
        +  "default": "active",
        +  "description": "Which version to check: 'active' (default) or 'inactive', the unsaved one right after a write. This endpoint does not fall back to whichever exists.",
        +  "enum": [
        +    "active",
        +    "inactive"
        +  ],
        +  "type": "string"
        +}
    • ChangedCheckPackage3 fields changed
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZMY_PACKAGE)."New value: +"Package name."
      • changedInput schema / properties / super_package / description
        Previous value: -"Super package name (parent package)."New value: +"Optional, and not read by the check endpoint — see CheckPackageLow. Requiring it refused the call before any request was made, for a package with no parent."
      • changedInput schema / required
        Previous value: -[
        -  "package_name",
        -  "super_package"
        -]New value: +[
        +  "package_name"
        +]
    • ChangedCheckStructure1 field changed
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., ZST_MY_STRUCTURE)."New value: +"Structure name."
    • ChangedCheckTable1 field changed
      • changedInput schema / properties / table_name / description
        Previous value: -"Table name (e.g., ZMCP_MY_TABLE)."New value: +"Table name."
    • ChangedCreateBehaviorDefinition2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number"New value: +"Transport request number, not a task"
    • ChangedCreateBehaviorImplementation5 fields changed
      • changedInput schema / properties / behavior_definition / description
        Previous value: -"Behavior Definition name (e.g., ZI_MY_ENTITY). The behavior definition must exist."New value: +"Behavior Definition name. The behavior definition must exist. Accepted for compatibility; not forwarded to the create request — the shipped create endpoint posts a metadata document (name/description/package) only. The class is bound to this behavior definition when its FOR BEHAVIOR OF main source is written, separately, via UpdateClass."
      • changedInput schema / properties / class_name / description
        Previous value: -"Behavior Implementation class name (e.g., ZBP_MY_ENTITY). Must follow SAP naming conventions (typically starts with ZBP_ for behavior implementations)."New value: +"Behavior Implementation class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateCdsUnitTest8 fields changed
      • changedInput schema / properties / cds_view_name / description
        Previous value: -"CDS view name to validate for unit test doubles."New value: +"CDS view under test (DDL source). Must be active and testable with test doubles."
      • changedInput schema / properties / class_name / description
        Previous value: -"Global test class name (e.g., ZCL_CDS_TEST)."New value: +"Name of the new global class that holds the tests."
      • removedInput schema / properties / description
        Removed value: -{
        -  "description": "Optional description for the global test class.",
        -  "type": "string"
        -}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_TEST_PKG_01, $TMP)."New value: +"Package of the new test class."
      • addedInput schema / properties / test_class_source
        Added value: +{
        +  "description": "ABAP source of the local test classes: definitions and implementations, FOR TESTING.",
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable packages)."New value: +"Transport request, not a task. Required for a transportable package."
      • changedInput schema / required
        Previous value: -[
        -  "class_name",
        -  "package_name",
        -  "cds_view_name"
        -]New value: +[
        +  "cds_view_name",
        +  "class_name",
        +  "package_name",
        +  "test_class_source"
        +]
    • ChangedCreateClass4 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Class name (e.g., ZCL_TEST_CLASS_001)."New value: +"Class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LAB, $TMP)."New value: +"Package name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable packages)."New value: +"Transport request number (required for transportable packages), not a task."
    • ChangedCreateDataElement4 fields changed
      • changedInput schema / properties / data_element_name / description
        Previous value: -"Data element name (e.g., ZZ_E_TEST_001). Must follow SAP naming conventions."New value: +"Data element name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateDdl4 fields changed
      • changedInput schema / properties / ddl_name / description
        Previous value: -"DDL source name (e.g., ZOK_R_TEST_0002, Z_I_MY_VIEW)."New value: +"DDL source name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LAB, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable packages)."New value: +"Transport request number (required for transportable packages), not a task."
    • ChangedCreateDomain4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name (e.g., ZZ_TEST_0001). Must follow SAP naming conventions."New value: +"Domain name."
      • changedInput schema / properties / package_name / description
        Previous value: -"(optional) Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"(optional) Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"(optional) Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"(optional) Transport request number, not a task. Required for transportable packages."
    • ChangedCreateFunctionGroup4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., ZTEST_FG_001). Must follow SAP naming conventions (start with Z or Y, max 26 chars)."New value: +"Function group name. Up to 26 characters."
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LAB, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • AddedCreateFunctionGroupUnitTest
    • ChangedCreateFunctionInclude4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Parent function group name (e.g., ZTEST_FG_001)"New value: +"Parent function group name"
      • changedInput schema / properties / include_name / description
        Previous value: -"Include name (e.g., LZTEST_FG_001F01)."New value: +"Include name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateFunctionModule4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Parent function group name (e.g., ZTEST_FG_001)"New value: +"Parent function group name"
      • changedInput schema / properties / function_module_name / description
        Previous value: -"Function module name (e.g., Z_TEST_FUNCTION_001). Must follow SAP naming conventions (start with Z or Y, max 30 chars)."New value: +"Function module name. Up to 30 characters."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateInterface4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / interface_name / description
        Previous value: -"Interface name (e.g., ZIF_TEST_INTERFACE_001). Must follow SAP naming conventions (start with Z or Y)."New value: +"Interface name."
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LAB, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateMessageClass4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Message class name (e.g., ZMY_MSGS). Must follow SAP naming conventions."New value: +"Message class name."
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZMY_PKG, $TMP for local objects)."New value: +"Package name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"(optional) Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"(optional) Transport request number, not a task. Required for transportable packages."
    • ChangedCreateMessageClassMessage2 fields changed
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Parent message class name (e.g., ZMY_MSGS)."New value: +"Parent message class name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"(optional) Transport request number. Required for transportable objects."New value: +"(optional) Transport request number, not a task. Required for transportable objects."
    • ChangedCreateMetadataExtension2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number"New value: +"Transport request number, not a task"
    • ChangedCreatePackage6 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_TEST_0002). Must follow SAP naming conventions (start with Z or Y for customer namespace)."New value: +"Package name."
      • changedInput schema / properties / software_component / description
        Previous value: -"Software component (e.g., HOME, ZLOCAL). If not provided, SAP will set a default (typically ZLOCAL for local packages)."New value: +"Software component. If not provided, SAP will set a default."
      • changedInput schema / properties / super_package / description
        Previous value: -"Parent package name (e.g., ZOK_PACKAGE). Required for structure packages."New value: +"Parent package name. Required for structure packages."
      • changedInput schema / properties / transport_layer / description
        Previous value: -"Transport layer (e.g., ZE19). Required for transportable packages."New value: +"Transport layer. Required for transportable packages."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required if package is transportable."New value: +"Transport request number, not a task. Required if the package is transportable."
    • ChangedCreateServiceBinding3 fields changed
      • changedInput schema / properties / activate / description
        Previous value: -"Activate service binding after create. Default: true."New value: +"Activate and generate the service binding after create. Default: true."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / response_format / description
        Added value: +"Accepted for backward compatibility; no longer affects the answer, which is always the structured write result."
    • ChangedCreateServiceDefinition4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / service_definition_name / description
        Previous value: -"Service definition name (e.g., ZSD_MY_SERVICE). Must follow SAP naming conventions (start with Z or Y)."New value: +"Service definition name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateStructure6 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / fields / description
        Previous value: -"Array of structure fields"New value: +"Does not reach creation — the shipped create endpoint posts a metadata document only. Use UpdateStructure (with ddl_code) after creating to set the fields."
      • changedInput schema / properties / includes / description
        Previous value: -"Include other structures in this structure"New value: +"Does not reach creation — see `fields`. Use UpdateStructure (with ddl_code) after creating to set includes."
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., ZZ_S_TEST_001). Must follow SAP naming conventions."New value: +"Structure name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateTable5 fields changed
      • changedInput schema / properties / description / description
        Previous value: -"Table description for validation and creation."New value: +"Does not reach creation — the shipped create endpoint has no description field of its own. Use UpdateTable (with ddl_code) after creating to set the DDL source, which carries the description."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / table_name / description
        Previous value: -"Table name (e.g., ZZ_TEST_TABLE_001). Must follow SAP naming conventions."New value: +"Table name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedCreateTransport1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • AddedCreateTransportTask
    • ChangedCreateUnitTest11 fields changed
      • addedInput schema / properties / class_name
        Added value: +{
        +  "description": "Class that holds the tests. Must already exist.",
        +  "type": "string"
        +}
      • removedInput schema / properties / context
        Removed value: -{
        -  "description": "Optional context string shown in SAP tools.",
        -  "type": "string"
        -}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / duration
        Removed value: -{
        -  "properties": {
        -    "long": {
        -      "type": "boolean"
        -    },
        -    "medium": {
        -      "type": "boolean"
        -    },
        -    "short": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / risk_level
        Removed value: -{
        -  "properties": {
        -    "critical": {
        -      "type": "boolean"
        -    },
        -    "dangerous": {
        -      "type": "boolean"
        -    },
        -    "harmless": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / scope
        Removed value: -{
        -  "properties": {
        -    "add_foreign_tests_as_preview": {
        -      "type": "boolean"
        -    },
        -    "foreign_tests": {
        -      "type": "boolean"
        -    },
        -    "own_tests": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / properties / test_class_source
        Added value: +{
        +  "description": "ABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.",
        +  "type": "string"
        +}
      • removedInput schema / properties / tests
        Removed value: -{
        -  "description": "List of container/test class pairs to execute.",
        -  "items": {
        -    "properties": {
        -      "container_class": {
        -        "description": "Class that owns the test include (e.g., ZCL_MAIN_CLASS).",
        -        "type": "string"
        -      },
        -      "test_class": {
        -        "description": "Test class name inside the include (e.g., LTCL_MAIN_CLASS).",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "container_class",
        -      "test_class"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / title
        Removed value: -{
        -  "description": "Optional title for the ABAP Unit run.",
        -  "type": "string"
        -}
      • addedInput schema / properties / transport_request
        Added value: +{
        +  "description": "Transport request, not a task. Required for a transportable object.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "tests"
        -]New value: +[
        +  "class_name",
        +  "test_class_source"
        +]
    • ChangedDeleteBehaviorDefinition3 fields changed
      • changedInput schema / properties / behavior_definition_name / description
        Previous value: -"BehaviorDefinition name (e.g., Z_MY_BEHAVIORDEFINITION)."New value: +"BehaviorDefinition name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteBehaviorImplementation3 fields changed
      • changedInput schema / properties / behavior_implementation_name / description
        Previous value: -"BehaviorImplementation name (e.g., Z_MY_BEHAVIORIMPLEMENTATION)."New value: +"BehaviorImplementation name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteCdsUnitTest3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Global test class name (e.g., ZCL_CDS_TEST)."New value: +"Test class of the CDS view."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable packages)."New value: +"Transport request, not a task. Required for a transportable object."
    • ChangedDeleteClass3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Class name (e.g., ZCL_MY_CLASS)."New value: +"Class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteDataElement3 fields changed
      • changedInput schema / properties / data_element_name / description
        Previous value: -"Data element name (e.g., Z_MY_DATA_ELEMENT)."New value: +"Data element name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteDdl3 fields changed
      • changedInput schema / properties / ddl_name / description
        Previous value: -"DDL source name (e.g., Z_MY_VIEW)."New value: +"DDL source name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteDomain3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name (e.g., Z_MY_DOMAIN)."New value: +"Domain name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteFunctionGroup3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"FunctionGroup name (e.g., Z_MY_FUNCTIONGROUP)."New value: +"FunctionGroup name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteFunctionInclude4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name containing the include (e.g., Z_MY_FG)."New value: +"Function group name containing the include."
      • changedInput schema / properties / include_name / description
        Previous value: -"Include name (e.g., LZ_MY_FGF01)."New value: +"Include name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteFunctionModule4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"FunctionGroup name containing the function module (e.g., Z_MY_FUNCTIONGROUP)."New value: +"FunctionGroup name containing the function module."
      • changedInput schema / properties / function_module_name / description
        Previous value: -"FunctionModule name (e.g., Z_MY_FUNCTIONMODULE)."New value: +"FunctionModule name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteInterface3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / interface_name / description
        Previous value: -"Interface name (e.g., Z_MY_INTERFACE)."New value: +"Interface name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteLocalDefinitions3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number."New value: +"Transport request number, not a task."
    • ChangedDeleteLocalMacros3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number."New value: +"Transport request number, not a task."
    • ChangedDeleteLocalTestClass3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable objects)."New value: +"Transport request number (required for transportable objects), not a task."
    • ChangedDeleteLocalTypes3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number."New value: +"Transport request number, not a task."
    • ChangedDeleteMessageClass3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Message class name (e.g., ZMY_MSGS)."New value: +"Message class name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects, optional for local ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects, optional for local ones."
    • ChangedDeleteMessageClassMessage2 fields changed
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Parent message class name (e.g., ZMY_MSGS)."New value: +"Parent message class name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number. Required for transportable objects, optional for local ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects, optional for local ones."
    • ChangedDeleteMetadataExtension3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / metadata_extension_name / description
        Previous value: -"MetadataExtension name (e.g., Z_MY_METADATAEXTENSION)."New value: +"MetadataExtension name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteServiceBinding2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / response_format / description
        Added value: +"Accepted for backward compatibility; no longer affects the answer, which is always the structured deletion result."
    • ChangedDeleteServiceDefinition3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / service_definition_name / description
        Previous value: -"ServiceDefinition name (e.g., Z_MY_SERVICEDEFINITION)."New value: +"ServiceDefinition name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteStructure3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., Z_MY_STRUCTURE)."New value: +"Structure name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteTable3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / table_name / description
        Previous value: -"Table name (e.g., Z_MY_TABLE)."New value: +"Table name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."New value: +"Transport request number, not a task. Required for transportable objects. Optional for local objects."
    • ChangedDeleteUnitTest5 fields changed
      • addedInput schema / properties / class_name
        Added value: +{
        +  "description": "Class that holds the tests. Must already exist.",
        +  "type": "string"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / run_id
        Removed value: -{
        -  "description": "Run identifier returned by CreateUnitTest/RunUnitTest.",
        -  "type": "string"
        -}
      • addedInput schema / properties / transport_request
        Added value: +{
        +  "description": "Transport request, not a task. Required for a transportable object.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "run_id"
        -]New value: +[
        +  "class_name"
        +]
    • ChangedGetAdtTypes1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • AddedGetATCFindings
    • AddedGetATCRunStatus
    • ChangedGetBehaviorDefinition1 field changed
      • changedInput schema / properties / behavior_definition_name / description
        Previous value: -"BehaviorDefinition name (e.g., Z_MY_BEHAVIORDEFINITION)."New value: +"BehaviorDefinition name."
    • ChangedGetBehaviorImplementation1 field changed
      • changedInput schema / properties / behavior_implementation_name / description
        Previous value: -"BehaviorImplementation name (e.g., Z_MY_BEHAVIORIMPLEMENTATION)."New value: +"BehaviorImplementation name."
    • RemovedGetCdsUnitTest
    • RemovedGetCdsUnitTestResult
    • RemovedGetCdsUnitTestStatus
    • ChangedGetClass1 field changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Class name (e.g., ZCL_MY_CLASS)."New value: +"Class name."
    • ChangedGetDataElement1 field changed
      • changedInput schema / properties / data_element_name / description
        Previous value: -"Data element name (e.g., Z_MY_DATA_ELEMENT)."New value: +"Data element name."
    • ChangedGetDdl1 field changed
      • changedInput schema / properties / ddl_name / description
        Previous value: -"DDL source name (e.g., Z_MY_VIEW)."New value: +"DDL source name."
    • ChangedGetDomain1 field changed
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name (e.g., Z_MY_DOMAIN)."New value: +"Domain name."
    • ChangedGetFunctionGroup1 field changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"FunctionGroup name (e.g., Z_MY_FUNCTIONGROUP)."New value: +"FunctionGroup name."
    • ChangedGetFunctionModule2 fields changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"FunctionGroup name containing the function module (e.g., Z_MY_FUNCTIONGROUP)."New value: +"FunctionGroup name containing the function module."
      • changedInput schema / properties / function_module_name / description
        Previous value: -"FunctionModule name (e.g., Z_MY_FUNCTIONMODULE)."New value: +"FunctionModule name."
    • ChangedGetInactiveObjects1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedGetInterface1 field changed
      • changedInput schema / properties / interface_name / description
        Previous value: -"Interface name (e.g., Z_MY_INTERFACE)."New value: +"Interface name."
    • ChangedGetLocalDefinitions1 field changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
    • ChangedGetLocalMacros1 field changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
    • ChangedGetLocalTestClass1 field changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
    • ChangedGetLocalTypes1 field changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
    • ChangedGetMessageClass1 field changed
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Message class name (e.g., ZMY_MSGS)."New value: +"Message class name."
    • ChangedGetMessageClassMessage1 field changed
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Parent message class name (e.g., ZMY_MSGS)."New value: +"Parent message class name."
    • ChangedGetMetadataExtension1 field changed
      • changedInput schema / properties / metadata_extension_name / description
        Previous value: -"MetadataExtension name (e.g., Z_MY_METADATAEXTENSION)."New value: +"MetadataExtension name."
    • ChangedGetNodeStructureLow2 fields changed
      • changedInput schema / properties / node_id / default
        Previous value: -"0000"New value: +"000000"
      • changedInput schema / properties / node_id / description
        Previous value: -"Optional node ID (default: \"0000\" for root). Use to fetch child nodes."New value: +"Optional node ID (default: \"000000\", the root). Use to fetch child nodes. \"0000\" is not the root: the server answers it with an empty body."
    • ChangedGetObjectInfo1 field changed
      • changedInput schema / properties / maxDepth / description
        Previous value: -"[read-only] Maximum tree depth (default depends on type)"New value: +"[read-only] Maximum tree depth (default depends on type). Every object's own type folders and their contents are always shown (one tier); a higher value only descends further for PACKAGES, expanding nested subpackages that many tiers deep — no captured node-structure document shows a non-package object usefully recursable beyond its own type folders, so other object types are capped at one tier regardless of a higher value here."
    • ChangedGetObjectsByType1 field changed
      • changedInput schema / properties / format / description
        Previous value: -"[read-only] Output format: 'raw' or 'parsed'"New value: +"[read-only] Output format: 'parsed' (default). 'raw' is accepted for backward compatibility but answers the same parsed text — see the note on `nodeLevel` below."
    • ChangedGetObjectStructure1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedGetObjectStructureLow2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / object_name / description
        Previous value: -"Object name (e.g., \"ZMY_CLASS\", \"ZMY_PROGRAM\")"New value: +"Object name"
    • ChangedGetObjectVersions1 field changed
      • changedInput schema / properties / object_name / description
        Previous value: -"Object name (e.g., ZCL_MY_CLASS, ZIF_MY_INTERFACE, Z_MY_TABLE)."New value: +"Object name."
    • ChangedGetPackage2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., Z_MY_PACKAGE)."New value: +"Package name."
    • ChangedGetPackageContents1 field changed
      • changedInput schema / properties / package_name / description
        Previous value: -"Name of the ABAP package (e.g., \"ZMY_PACKAGE\")"New value: +"Name of the ABAP package"
    • ChangedGetPackageTree1 field changed
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., \"ZMY_PACKAGE\")"New value: +"Package name"
    • ChangedGetServiceBinding1 field changed
      • changedInput schema / properties / service_binding_name / description
        Previous value: -"Service binding name (for example: ZUI_MY_BINDING). Case-insensitive."New value: +"Service binding name. Case-insensitive."
    • AddedGetServiceBindingPreviewUrl
    • ChangedGetServiceDefinition1 field changed
      • changedInput schema / properties / service_definition_name / description
        Previous value: -"ServiceDefinition name (e.g., Z_MY_SERVICEDEFINITION)."New value: +"ServiceDefinition name."
    • ChangedGetSqlQuery1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedGetStructure1 field changed
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., Z_MY_STRUCTURE)."New value: +"Structure name."
    • ChangedGetStructuresList1 field changed
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., Z_MY_STRUCTURE)."New value: +"Structure name."
    • ChangedGetTable1 field changed
      • changedInput schema / properties / table_name / description
        Previous value: -"Table name (e.g., Z_MY_TABLE)."New value: +"Table name."
    • ChangedGetTableContents1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedGetTransport1 field changed
      • changedInput schema / properties / transport_number / description
        Previous value: -"Transport request number (e.g., E19K905635, DEVK905123)"New value: +"Transport request number, not a task"
    • RemovedGetUnitTest
    • ChangedGetUnitTestResult4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / format
        Removed value: -{
        -  "description": "Result format: abapunit or junit.",
        -  "enum": [
        -    "abapunit",
        -    "junit"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / properties / run_id / description
        Previous value: -"Run identifier returned by unit test run."New value: +"Run id a unit test run answered."
      • removedInput schema / properties / with_navigation_uris
        Removed value: -{
        -  "default": false,
        -  "description": "Include navigation URIs in result if supported.",
        -  "type": "boolean"
        -}
    • RemovedGetUnitTestStatus
    • ChangedGetVirtualFoldersLow2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / object_search_pattern / description
        Previous value: -"Object search pattern (e.g., \"*\", \"Z*\", \"ZCL_*\"). Default: \"*\""New value: +"Object search pattern: \"*\" matches any name, and a trailing \"*\" matches a prefix. Default: \"*\""
    • ChangedGetWhereUsed1 field changed
      • changedInput schema / properties / object_type / description
        Previous value: -"Type of the ABAP object. Case-insensitive. Accepts either a human alias or an ADT type code. Supported values: 'class' / 'clas/oc', 'interface' / 'intf/if', 'program' / 'prog/p', 'include', 'function' / 'functiongroup' / 'fugr' (function group), 'functionmodule' / 'function_module' / 'fugr/ff' (function module — see object_name format), 'package' / 'devc/k', 'table' / 'tabl/dt', 'structure' / 'stru/dt', 'domain' / 'doma/dd', 'dataelement' / 'dtel', 'view' / 'ddls/df' (CDS DDL source only — classic DDIC views are not supported). Any other value throws 'Unsupported object type'."New value: +"Type of the ABAP object. Case-insensitive. Accepts either a human alias or an ADT type code. Supported values: 'class' / 'clas/oc', 'interface' / 'intf/if', 'program' / 'prog/p', 'include', 'function' / 'functiongroup' / 'fugr' (function group), 'functionmodule' / 'function_module' / 'fugr/ff' (function module — see object_name format), 'package' / 'devc/k', 'table' / 'tabl/dt', 'structure' / 'stru/dt', 'domain' / 'doma/dd', 'dataelement' / 'dtel', 'view' / 'ddls/df' (CDS DDL source)."
    • ChangedListFunctionGroupIncludes1 field changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., Z_MY_FG)."New value: +"Function group name."
    • ChangedListFunctionModules1 field changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., Z_MY_FG)."New value: +"Function group name."
    • ChangedListServiceBindingTypes1 field changed
      • addedInput schema / properties / response_format / description
        Added value: +"Shape of the answer: the document as the server sent it, the same parsed, or a flat list of the type names."
    • ChangedListTransports3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / modifiable_only / description
        Previous value: -"Only return modifiable (not yet released) transports. Default: true."New value: +"Only return modifiable (not yet released) transports; applied client-side. Default: true."
      • changedInput schema / properties / user / description
        Previous value: -"SAP user name. If not provided, returns transports for the current user."New value: +"SAP user name to filter to; applied client-side. If not provided, defaults to the current session user, so an unfiltered call already answers only that user's transports."
    • ChangedReadFunctionInclude2 fields changed
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name containing the include (e.g., Z_MY_FG)."New value: +"Function group name containing the include."
      • changedInput schema / properties / include_name / description
        Previous value: -"Include name (e.g., LZ_MY_FGTOP, LZ_MY_FGU01)."New value: +"Include name."
    • AddedReadTransportActionLog
    • AddedReadTransportObjects
    • AddedRemoveTransportObject
    • AddedRunATC
    • AddedRunCdsUnitTest
    • AddedRunFunctionGroupUnitTest
    • AddedRunFunctionModuleUnitTest
    • ChangedRuntimeGetDumpById2 fields changed
      • changedInput schema / properties / dump_id / description
        Previous value: -"Full runtime dump ID (e.g. from RuntimeListFeeds)."New value: +"The dump's id, or its URI as a dumps feed entry carries it."
      • changedInput schema / properties / response_mode / description
        Previous value: -"Controls what is returned: \"payload\" — full parsed dump data, \"summary\" — compact key facts only (title, exception, program, line, user, date…), \"both\" — summary + full payload."New value: +"What is returned: \"payload\" — the parsed dump, \"summary\" — runtime error, exception, terminated program, time, user and termination position, \"both\" — summary and payload."
    • ChangedRuntimeListFeeds8 fields changed
      • addedInput schema / properties / component
        Added value: +{
        +  "description": "Dumps whose application component contains this text, in any case.",
        +  "type": "string"
        +}
      • addedInput schema / properties / exception
        Added value: +{
        +  "description": "Dumps whose exception class contains this text, in any case.",
        +  "type": "string"
        +}
      • changedInput schema / properties / max_results / description
        Previous value: -"Maximum number of entries to return."New value: +"Most entries to return, up to 1000; SAP answers at most 100 per request and the pages are read in turn. An answer holds whole seconds, so it may hold a few entries fewer, or a crowded second more, than asked. Default: 50."
      • addedInput schema / properties / object_name
        Added value: +{
        +  "description": "Dumps whose terminated object name contains this text, in any case.",
        +  "type": "string"
        +}
      • addedInput schema / properties / package
        Added value: +{
        +  "description": "Dumps whose object package contains this text, in any case.",
        +  "type": "string"
        +}
      • addedInput schema / properties / runtime_error
        Added value: +{
        +  "description": "Dumps whose runtime error contains this text, in any case.",
        +  "type": "string"
        +}
      • changedInput schema / properties / to / description
        Previous value: -"End of time range in YYYYMMDDHHMMSS format."New value: +"End of time range in YYYYMMDDHHMMSS format, inclusive; pass a previous next_to here to read on."
      • changedInput schema / properties / user / description
        Previous value: -"Filter feed entries by SAP username."New value: +"Entries of this SAP user (exact match)."
    • ChangedRuntimeRunClass4 fields changed
      • 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."
    • ChangedRuntimeRunClassWithProfiling3 fields changed
      • changedInput schema / properties / max_trace_attempts / description
        Previous value: -"Max polling attempts to resolve traceId after execution (default 5). Increase for slow systems (e.g. SAP trial cloud)."New value: +"Max attempts to poll the profiler feed for the trace this run produced (default 5). Increase for slow systems (e.g. SAP trial cloud)."
      • changedInput schema / properties / trace_lookup_uris / description
        Previous value: -"Additional URIs to consult when resolving the trace (advanced)."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)."New value: +"Delay in ms between profiler-feed polling attempts (default 2000)."
    • ChangedRunUnitTest9 fields changed
      • addedInput schema / properties / class_name
        Added value: +{
        +  "description": "Class whose tests run.",
        +  "type": "string"
        +}
      • removedInput schema / properties / context
        Removed value: -{
        -  "description": "Optional context string shown in SAP tools.",
        -  "type": "string"
        -}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / duration
        Removed value: -{
        -  "properties": {
        -    "long": {
        -      "type": "boolean"
        -    },
        -    "medium": {
        -      "type": "boolean"
        -    },
        -    "short": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / risk_level
        Removed value: -{
        -  "properties": {
        -    "critical": {
        -      "type": "boolean"
        -    },
        -    "dangerous": {
        -      "type": "boolean"
        -    },
        -    "harmless": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / scope
        Removed value: -{
        -  "properties": {
        -    "add_foreign_tests_as_preview": {
        -      "type": "boolean"
        -    },
        -    "foreign_tests": {
        -      "type": "boolean"
        -    },
        -    "own_tests": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / tests
        Removed value: -{
        -  "description": "List of container/test class pairs to execute.",
        -  "items": {
        -    "properties": {
        -      "container_class": {
        -        "description": "Class that owns the test include (e.g., ZCL_MAIN_CLASS).",
        -        "type": "string"
        -      },
        -      "test_class": {
        -        "description": "Test class name inside the include (e.g., LTCL_MAIN_CLASS).",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "container_class",
        -      "test_class"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / title
        Removed value: -{
        -  "description": "Optional title for the ABAP Unit run.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "tests"
        -]New value: +[
        +  "class_name"
        +]
    • ChangedSearchObject1 field changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
    • ChangedUpdateBehaviorDefinition2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedUpdateBehaviorImplementation4 fields changed
      • changedInput schema / properties / behavior_definition / description
        Previous value: -"Behavior Definition name (e.g., ZI_MY_ENTITY). Must match the behavior definition used when creating the class."New value: +"Referenced Behavior Definition name. Accepted for compatibility; not forwarded to the write — the shipped update() no longer reads it (it writes the implementations include only, never the FOR BEHAVIOR OF main source)."
      • changedInput schema / properties / class_name / description
        Previous value: -"Behavior Implementation class name (e.g., ZBP_MY_ENTITY). Must exist in the system."New value: +"Behavior Implementation class name. Must exist in the system."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Optional if object is local or already in transport."New value: +"Transport request number, not a task. Optional if object is local or already in transport."
    • ChangedUpdateCdsUnitTest4 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Global test class name (e.g., ZCL_CDS_TEST)."New value: +"Test class of the CDS view. Must already exist."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / test_class_source / description
        Previous value: -"Updated local test class ABAP source code."New value: +"ABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable packages)."New value: +"Transport request, not a task. Required for a transportable object."
    • ChangedUpdateClass3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Class name (e.g., ZCL_TEST_CLASS_001)."New value: +"Class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedUpdateDataElement4 fields changed
      • changedInput schema / properties / data_element_name / description
        Previous value: -"Data element name to update (e.g., ZZ_TEST_DTEL_01)"New value: +"Data element name to update"
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedUpdateDdl3 fields changed
      • changedInput schema / properties / ddl_name / description
        Previous value: -"DDL source name (e.g., ZOK_R_TEST_0002)."New value: +"DDL source name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedUpdateDomain4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name to update (e.g., ZZ_TEST_0001)"New value: +"Domain name to update"
      • changedInput schema / properties / package_name / description
        Previous value: -"Package name (e.g., ZOK_LOCAL, $TMP for local objects)"New value: +"Package name"
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable packages."New value: +"Transport request number, not a task. Required for transportable packages."
    • ChangedUpdateFunctionGroup3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name (e.g., ZTEST_FG_001). Must exist in the system."New value: +"Function group name. Must exist in the system."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Optional if object is local or already in transport."New value: +"Transport request number, not a task. Optional if object is local or already in transport."
    • AddedUpdateFunctionGroupUnitTest
    • ChangedUpdateFunctionInclude4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name containing the include (e.g., ZOK_FG_MCP01)."New value: +"Function group name containing the include."
      • changedInput schema / properties / include_name / description
        Previous value: -"Include name (e.g., LZOK_FG_MCP01F01). Include must already exist."New value: +"Include name. Include must already exist."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable includes."New value: +"Transport request number, not a task. Required for transportable includes."
    • ChangedUpdateFunctionModule5 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / function_group_name / description
        Previous value: -"Function group name containing the function module (e.g., ZOK_FG_MCP01)."New value: +"Function group name containing the function module."
      • changedInput schema / properties / function_module_name / description
        Previous value: -"Function module name (e.g., Z_TEST_FM_MCP01). Function module must already exist."New value: +"Function module name. Function module must already exist."
      • changedInput schema / properties / source_code / description
        Previous value: -"Complete ABAP function module source code. Must include FUNCTION statement with parameters and ENDFUNCTION. Example:\n\nFUNCTION Z_TEST_FM\n  IMPORTING\n    VALUE(iv_input) TYPE string\n  EXPORTING\n    VALUE(ev_output) TYPE string.\n  \n  ev_output = iv_input.\nENDFUNCTION."New value: +"Complete ABAP function module source code, from FUNCTION to ENDFUNCTION."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Required for transportable function modules."New value: +"Transport request number, not a task. Required for transportable function modules."
    • ChangedUpdateInterface3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / interface_name / description
        Previous value: -"Interface name (e.g., ZIF_MY_INTERFACE). Must exist in the system."New value: +"Interface name. Must exist in the system."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Optional if object is local or already in transport."New value: +"Transport request number, not a task. Optional if object is local or already in transport."
    • ChangedUpdateLocalDefinitions4 fields changed
      • changedInput schema / properties / activate_on_update / description
        Previous value: -"Activate parent class after updating. Default: false"New value: +"Activate parent class after updating local definitions. Default: false"
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number."New value: +"Transport request number (required for transportable objects), not a task."
    • ChangedUpdateLocalMacros4 fields changed
      • changedInput schema / properties / activate_on_update / description
        Previous value: -"Activate parent class after updating. Default: false"New value: +"Activate parent class after updating local macros. Default: false"
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number."New value: +"Transport request number (required for transportable objects), not a task."
    • ChangedUpdateLocalTestClass3 fields changed
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable objects)."New value: +"Transport request number (required for transportable objects), not a task."
    • ChangedUpdateLocalTypes4 fields changed
      • changedInput schema / properties / activate_on_update / description
        Previous value: -"Activate parent class after updating. Default: false"New value: +"Activate parent class after updating local types. Default: false"
      • changedInput schema / properties / class_name / description
        Previous value: -"Parent class name (e.g., ZCL_MY_CLASS)."New value: +"Parent class name."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number."New value: +"Transport request number (required for transportable objects), not a task."
    • ChangedUpdateMessageClass3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Message class name (e.g., ZMY_MSGS)."New value: +"Message class name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"(optional) Transport request number. Required for transportable objects."New value: +"(optional) Transport request number, not a task. Required for transportable objects."
    • ChangedUpdateMessageClassMessage2 fields changed
      • changedInput schema / properties / message_class_name / description
        Previous value: -"Parent message class name (e.g., ZMY_MSGS)."New value: +"Parent message class name."
      • changedInput schema / properties / transport_request / description
        Previous value: -"(optional) Transport request number. Required for transportable objects."New value: +"(optional) Transport request number, not a task. Required for transportable objects."
    • ChangedUpdateMetadataExtension2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (required for transportable packages)."New value: +"Transport request number (required for transportable packages), not a task."
    • ChangedUpdateServiceBinding4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / response_format / description
        Added value: +"Accepted for backward compatibility; no longer affects the answer, which is always the structured write result."
      • changedInput schema / properties / service_name / description
        Previous value: -"Published service name."New value: +"Published service name, from the binding. Required: an OData V2 publication job resolves the service by name and version and refuses without them. Ignored for V4, where the request names its target on its own."
      • changedInput schema / properties / service_version / description
        Previous value: -"Published service version. Optional."New value: +"Published service version. Default 0001. Used by an OData V2 publication job together with the service name; ignored for V4."
    • ChangedUpdateServiceDefinition3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / service_definition_name / description
        Previous value: -"Service definition name (e.g., ZSD_MY_SERVICE). Must exist in the system."New value: +"Service definition name. Must exist in the system."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Optional if object is local or already in transport."New value: +"Transport request number, not a task. Optional if object is local or already in transport."
    • ChangedUpdateStructure3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / structure_name / description
        Previous value: -"Structure name (e.g., ZZ_S_TEST_001). Structure must already exist."New value: +"Structure name. Structure must already exist."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Optional if object is local or already in transport."New value: +"Transport request number, not a task. Optional if object is local or already in transport."
    • ChangedUpdateTable3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / table_name / description
        Previous value: -"Table name (e.g., ZZ_TEST_TABLE_001). Table must already exist."New value: +"Table name. Table must already exist."
      • changedInput schema / properties / transport_request / description
        Previous value: -"Transport request number (e.g., E19K905635). Optional if object is local or already in transport."New value: +"Transport request number, not a task. Optional if object is local or already in transport."
    • ChangedUpdateUnitTest6 fields changed
      • addedInput schema / properties / class_name
        Added value: +{
        +  "description": "Class that holds the tests. Must already exist.",
        +  "type": "string"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / run_id
        Removed value: -{
        -  "description": "Run identifier returned by CreateUnitTest/RunUnitTest.",
        -  "type": "string"
        -}
      • addedInput schema / properties / test_class_source
        Added value: +{
        +  "description": "ABAP source of the local test classes: definitions and implementations, FOR TESTING. Replaces what the include holds.",
        +  "type": "string"
        +}
      • addedInput schema / properties / transport_request
        Added value: +{
        +  "description": "Transport request, not a task. Required for a transportable object.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "run_id"
        -]New value: +[
        +  "class_name",
        +  "test_class_source"
        +]
    • ChangedValidateServiceBinding3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "terse",
        +  "description": "How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it).",
        +  "enum": [
        +    "terse",
        +    "full",
        +    "raw"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / service_binding_version / description
        Previous value: -"Service binding version (for example: 1.0)."New value: +"Service binding version (for example: 1.0). Accepted for backward compatibility; the transport check this now runs does not read it."
      • changedInput schema / properties / service_definition_name / description
        Previous value: -"Service definition linked to binding."New value: +"Service definition linked to binding. Accepted for backward compatibility; the transport check this now runs does not read it."
  4. 3 tool updatesv9.0.0
    • AddedGetEnhancementSpot
    • AddedGetInclude
    • AddedGetIncludesList
  5. 18 tool updatesv8.12.1
    • RemovedGetDataElementVersionDiff
    • RemovedGetDataElementVersions
    • RemovedGetDataElementVersionSource
    • RemovedGetDomainVersionDiff
    • RemovedGetDomainVersions
    • RemovedGetDomainVersionSource
    • RemovedGetEnhancementSpot
    • RemovedGetFunctionGroupVersionDiff
    • RemovedGetFunctionGroupVersions
    • RemovedGetFunctionGroupVersionSource
    • RemovedGetInclude
    • RemovedGetIncludesList
    • ChangedGetObjectVersionDiff1 field changed
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "class",
        -  "program",
        -  "interface",
        -  "function_group",
        -  "function_module",
        -  "table",
        -  "structure",
        -  "ddl",
        -  "domain",
        -  "data_element",
        -  "package",
        -  "behavior_definition",
        -  "metadata_extension"
        -]New value: +[
        +  "class",
        +  "program",
        +  "interface",
        +  "function_module",
        +  "table",
        +  "structure",
        +  "ddl",
        +  "behavior_definition",
        +  "metadata_extension"
        +]
    • ChangedGetObjectVersions1 field changed
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "class",
        -  "program",
        -  "interface",
        -  "function_group",
        -  "function_module",
        -  "table",
        -  "structure",
        -  "ddl",
        -  "domain",
        -  "data_element",
        -  "package",
        -  "behavior_definition",
        -  "metadata_extension"
        -]New value: +[
        +  "class",
        +  "program",
        +  "interface",
        +  "function_module",
        +  "table",
        +  "structure",
        +  "ddl",
        +  "behavior_definition",
        +  "metadata_extension"
        +]
    • ChangedGetObjectVersionSource1 field changed
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "class",
        -  "program",
        -  "interface",
        -  "function_group",
        -  "function_module",
        -  "table",
        -  "structure",
        -  "ddl",
        -  "domain",
        -  "data_element",
        -  "package",
        -  "behavior_definition",
        -  "metadata_extension"
        -]New value: +[
        +  "class",
        +  "program",
        +  "interface",
        +  "function_module",
        +  "table",
        +  "structure",
        +  "ddl",
        +  "behavior_definition",
        +  "metadata_extension"
        +]
    • RemovedGetPackageVersionDiff
    • RemovedGetPackageVersions
    • RemovedGetPackageVersionSource
  6. 8 tool updatesv8.6.1
    • AddedCreateMessageClass
    • AddedCreateMessageClassMessage
    • AddedDeleteMessageClass
    • AddedDeleteMessageClassMessage
    • AddedGetMessageClass
    • AddedGetMessageClassMessage
    • AddedUpdateMessageClass
    • AddedUpdateMessageClassMessage
  7. 37 tool updatesv8.5.0
    • AddedGetBehaviorDefinitionVersionDiff
    • AddedGetBehaviorDefinitionVersions
    • AddedGetBehaviorDefinitionVersionSource
    • AddedGetClassVersionDiff
    • AddedGetClassVersions
    • AddedGetClassVersionSource
    • AddedGetDataElementVersionDiff
    • AddedGetDataElementVersions
    • AddedGetDataElementVersionSource
    • AddedGetDdlVersionDiff
    • AddedGetDdlVersions
    • AddedGetDdlVersionSource
    • AddedGetDomainVersionDiff
    • AddedGetDomainVersions
    • AddedGetDomainVersionSource
    • AddedGetFunctionGroupVersionDiff
    • AddedGetFunctionGroupVersions
    • AddedGetFunctionGroupVersionSource
    • AddedGetFunctionModuleVersionDiff
    • AddedGetFunctionModuleVersions
    • AddedGetFunctionModuleVersionSource
    • AddedGetInterfaceVersionDiff
    • AddedGetInterfaceVersions
    • AddedGetInterfaceVersionSource
    • AddedGetMetadataExtensionVersionDiff
    • AddedGetMetadataExtensionVersions
    • AddedGetMetadataExtensionVersionSource
    • AddedGetObjectVersionDiff
    • AddedGetPackageVersionDiff
    • AddedGetPackageVersions
    • AddedGetPackageVersionSource
    • AddedGetStructureVersionDiff
    • AddedGetStructureVersions
    • AddedGetStructureVersionSource
    • AddedGetTableVersionDiff
    • AddedGetTableVersions
    • AddedGetTableVersionSource
  8. 2 tool updatesv8.2.0
    • AddedGetObjectVersions
    • AddedGetObjectVersionSource
  9. 14 tool updatesv8.1.0
    • ChangedCreateBehaviorDefinition1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateClass1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateDataElement1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateDdl1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateDomain1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateFunctionGroup1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateInterface1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateMetadataExtension1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreatePackage1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateServiceBinding1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateServiceDefinition1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateStructure1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedCreateTable1 field changed
      • addedInput schema / properties / master_language
        Added value: +{
        +  "description": "Optional master/original language for the created object (e.g. \"EN\", \"DE\", \"ZH\"). Defaults to the session language (SAP_LANGUAGE) or EN.",
        +  "type": "string"
        +}
    • ChangedGetWhereUsed2 fields changed
      • addedInput schema / properties / disable_types
        Added value: +{
        +  "description": "Remove these ADT object types from the default scope, keeping the rest (e.g. ['CLAS/OC'] to drop class usages). Applied on top of the default scope or of enable_only_types/enable_all_types.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / enable_only_types
        Added value: +{
        +  "description": "Restrict the search to ONLY these ADT object types (e.g. ['TABL/DS','TABL/DT'] for structures, ['DDLS/DF'] for CDS sources). SAP applies the selection server-side, so unwanted types (e.g. hundreds of CLAS/OC) are never searched nor returned — use this instead of enable_all_types to avoid huge result sets. Values must be object-type codes from THIS object's where-used scope (the searchable categories, e.g. 'CLAS/OC','INTF/OI','FUGR/FF','DDLS/DF', not result-row codes like 'FUGR/F'). If any value is not searchable for the object the call returns an error listing the supported types — it never falls back to the unfiltered default set. Takes precedence over enable_all_types.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  10. 12 tool updatesv8.0.0
    • AddedActivateDdl
    • RemovedActivateView
    • AddedCheckDdl
    • RemovedCheckView
    • AddedCreateDdl
    • RemovedCreateView
    • AddedDeleteDdl
    • RemovedDeleteView
    • AddedGetDdl
    • RemovedGetView
    • AddedUpdateDdl
    • RemovedUpdateView
  11. 1 tool updatev7.1.1
    • ChangedUpdateFunctionInclude1 field changed
      • addedInput schema / properties / activate
        Added value: +{
        +  "default": false,
        +  "description": "Activate the include after the source update. Default: false. Set true to make the updated source the active version immediately.",
        +  "type": "boolean"
        +}
  12. 7 tool updatesv7.1.0
    • AddedCreateFunctionInclude
    • AddedDeleteFunctionInclude
    • AddedGetStructuresList
    • AddedListFunctionGroupIncludes
    • AddedListFunctionModules
    • AddedReadFunctionInclude
    • AddedUpdateFunctionInclude
  13. 2 tool updatesv7.0.0
    • AddedActivateServiceDefinition
    • AddedCreatePackage

TDQS

B3.2/5.0

Scored across 256 tools

Disambiguation2/5

The per-type tool families (Get/Create/Update/Delete/Check/ActivateClass, -Program, -Table, etc.) are individually clear, but they overlap heavily with generic tools: GetObjectVersions/GetObjectVersionSource/GetObjectVersionDiff duplicate GetClassVersions/GetTableVersions/etc., and ActivateObjects duplicates every Activate* tool. Similarly GetObjectInfo, GetObjectsList, GetObjectsByType, GetPackageTree, GetPackageContents and GetObjectStructure all walk object trees, so an agent must guess which to call.

Naming Consistency4/5

The surface follows a strong Verb+Noun CamelCase convention (GetX, CreateX, UpdateX, DeleteX, CheckX, ActivateX, RunX) repeated consistently across all object types. A few outliers invert the order or deviate (MemorySnapshotList/Get/Delta, AmdpDebugStart, DescribeByList), keeping it from a perfect score.

Tool Count1/5

256 tools is an extreme mismatch for a single server: the per-type CRUD/check/activate/version quadrants multiply the surface far beyond what an agent can reliably select from. Many tools are near-duplicates of generic ones (version source/diff per type vs. the object-generic versions), so the count is inflated rather than earned.

Completeness4/5

Coverage of the ADT domain is extremely broad: CRUD, activation, syntax checks, version history/diff, transports, ATC, ABAP Unit, runtime/profiler, SQL preview and a full debugger surface are all present. Some object types are read-only (enhancements, transactions) and a few check/generic operations are missing per type, but the core lifecycle is covered.

Maintenance

ActivityActive
ResponsivenessMixed handling

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    Not graded
    maintenance
    An MCP server that facilitates seamless interaction with SAP ABAP systems to manage development objects, transport requests, and source code. It provides a comprehensive suite of tools for performing syntax checks, object searches, and code modifications via the ADT API.
    100
    -
  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that enables seamless communication between ABAP systems and MCP clients using the ABAP Development Tools (ADT) API. It provides tools for managing ABAP objects, handling transport requests, and performing code analysis directly through MCP-compatible interfaces.
    100
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for SAP ABAP development that enables AI assistants and code editors to interact with SAP systems via ABAP Developer Toolkit (ADT) APIs, supporting read, create, update, and delete of ABAP objects.
    100
    787 npm
    MIT