Skip to main content
Glama

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

This project provides a server that allows you to interact with SAP ABAP systems using the Model Context Protocol (MCP). Think of it as a bridge that lets tools like FLUJO, Claude or Cline (a VS Code extension) talk to your ABAP system and retrieve information like source code, table structures, and more. It's like having a remote control for your ABAP development environment!

The server is published on npm as mcp-abap-adt and listed in the MCP Registry as io.github.mario-andreschak/mcp-abap-adt, so most MCP clients can install it with a single command.

This guide is designed for beginners, so we'll walk through everything step-by-step. We'll cover:

  1. Prerequisites: What you need before you start.

  2. Installation and Setup: Getting everything up and running.

  3. Running the Server: Starting the server in different modes.

  4. Integrating with FLUJO: The easiest way — one-click install from the Spotlight/Marketplace.

  5. Integrating with Cline: Connecting this server to the Cline VS Code extension.

  6. Integrating with Claude Desktop: Adding the server to the Claude Desktop app.

  7. Integrating with Claude Code: Adding the server via .mcp.json or the CLI.

  8. Troubleshooting: Common problems and solutions.

  9. Available Tools: A list of the commands you can use.

1. Prerequisites

Before you begin, you'll need a few things:

  • An SAP ABAP System: This server connects to an existing ABAP system. You'll need:

    • The system's URL (e.g., https://my-sap-system.com:8000)

    • A valid username and password for that system.

    • The SAP client number (e.g., 100).

    • Ensure that your SAP system allows connections via ADT (ABAP Development Tools). This usually involves making sure the necessary services are activated in transaction SICF. Your basis administrator can help with this. Specifically, you will need the following services to be active:

      • /sap/bc/adt

  • Node.js and npm: Node.js is a JavaScript runtime that lets you run JavaScript code outside of a web browser. npm (Node Package Manager) is included with Node.js and is used to install packages (libraries of code).

    • Download Node.js. Choose the LTS (Long Term Support) version. This is the most stable version. Follow the installation instructions for your operating system. Make sure to include npm in the installation (it's usually included by default).

    • Verify Installation: After installing Node.js, open a new terminal (command prompt on Windows, Terminal on macOS/Linux) and type:

      node -v
      npm -v

      You should see version numbers for both Node.js and npm. If you see an error, Node.js might not be installed correctly, or it might not be in your system's PATH. (See Troubleshooting below).

  • Git (or GitHub Desktop) (optional in most cases): We'll use Git to download the project code. You have two options:

    • Git: The command-line tool. Download Git. Choose the version for your operating system (Windows, macOS, Linux). Follow the installation instructions.

    • GitHub Desktop: A graphical user interface for Git. Easier for beginners! Download GitHub Desktop. Follow the installation instructions.

Related MCP server: mcp-abap-adt

2. Installation and Setup

Now, let's get the project code and set it up:

See Integrating with FLUJO

Install from npm

The server is published on npm, so you don't need to clone or build anything. Most MCP clients can run it directly with npx:

npx -y mcp-abap-adt

You'll typically configure this inside your MCP client rather than run it by hand — point the client at the command npx with args ["-y", "mcp-abap-adt"] and supply your SAP credentials as environment variables (SAP_URL, SAP_USERNAME, SAP_PASSWORD, SAP_CLIENT; optionally SAP_LANGUAGE, TLS_REJECT_UNAUTHORIZED). See the integration sections below for and Cline.

To install it globally instead:

npm install -g mcp-abap-adt

Manual Installation (from source)

  1. Clone the Repository:

    • Using Git (command line):

      1. Open a terminal (command prompt or Terminal).

      2. Navigate to the directory where you want to store the project. For example, to put it on your Desktop:

        cd Desktop
      3. Clone the repository:

        git clone https://github.com/mario-andreschak/mcp-abap-adt
      4. Change into the project directory:

        cd mcp-abap-adt  # Or whatever the folder name is
    • Using GitHub Desktop:

      1. Open GitHub Desktop.

      2. Click "File" -> "Clone Repository...".

      3. In the "URL" tab, paste the repository URL.

      4. Choose a local path (where you want to save the project on your computer).

      5. Click "Clone".

  2. Install Dependencies: This downloads all the necessary libraries the project needs. In the terminal, inside the root directory, run:

    npm install

    This might take a few minutes.

  3. Build the Project: This compiles the code into an executable format.

    npm run build
  4. Create a .env file: This file stores sensitive information like your SAP credentials. It's very important to keep this file secure.

    1. In the root directory, create a new file named .env (no extension).

    2. Open the .env file in a text editor (like Notepad, VS Code, etc.).

    3. Add the following lines, replacing the placeholders with your actual SAP system information: Important: If your password contains a "#" character, make sure to enclose your password in quotes!

      SAP_URL=https://your-sap-system.com:8000  # Your SAP system URL
      SAP_USERNAME=your_username              # Your SAP username
      SAP_PASSWORD=your_password              # Your SAP password
      SAP_CLIENT=100                         # Your SAP client

      Important: Never share your .env file with anyone, and never commit it to a Git repository!

3. Running the Server

To be fair, you usually dont usually "run" this server on it's own. It is supposed to be integrated into an MCP Client like Claude, FLUJO, Cline, etc. But you can manually run the server in two main ways:

  • Standalone Mode: This runs the server directly, and it will output messages to the terminal. The server will start and wait for client connections, so potentially rendering it useless except to see if it starts.

  • Development/Debug Mode: This runs the server with the MCP Inspector. You can open the URL that it outputs in your browser and start playing around.

3.1 Standalone Mode

To run the server in standalone mode, use the following command in the terminal (from the root directory):

npm run start

You should see messages in the terminal indicating that the server is running. It will listen for connections from MCP clients. The server will keep running until you stop it (usually with Ctrl+C).

3.2 Development/Debug Mode (with Inspector)

This mode is useful for debugging.

  1. Start the server in debug mode:

    npm run dev

    This will start the server and output a message like: 🔍 MCP Inspector is up and running at http://localhost:5173 🚀. This is the URL you'll use to open the MCP inspector in your Browser.

4. Integrating with FLUJO

FLUJO is the easiest way to use this server — no cloning, building, or editing JSON config. mcp-abap-adt is a curated Spotlight server, so it installs with a single click:

  1. In FLUJO, navigate to MCP.

  2. Click Add Server.

  3. On the Spotlight tab, click mcp-abap-adt (or switch to the Marketplace tab and find it there).

  4. FLUJO fetches the package automatically and opens the Local Server tab. Enter your SAP URL, Username, and Password (and client), then click Save.

That's it — FLUJO downloads and runs the npm package for you.

Streamable HTTP transport (via FLUJO)

mcp-abap-adt runs over stdio. If you need to reach it over streamable HTTP — for example from another app on your machine or a client that only speaks HTTP — let FLUJO re-host it: install the server in FLUJO as above, then toggle "Expose to external apps" on the server. FLUJO's built-in mcp-proxy then serves it over HTTP at http://localhost:4200/mcp-proxy/mcp-abap-adt, and any HTTP-capable MCP client can connect with a config like:

{
  "mcpServers": {
    "mcp-abap-adt": {
      "type": "http",
      "url": "http://localhost:4200/mcp-proxy/mcp-abap-adt"
    }
  }
}

FLUJO keeps your SAP credentials with the installed server, so the HTTP config itself carries none.

5. Integrating with Cline

Cline is a VS Code extension that uses MCP servers to provide language support. Here's how to connect this ABAP server to Cline:

  1. Install Cline: If you haven't already, install the "Cline" extension in VS Code.

  2. Open Cline Settings:

    • Open the VS Code settings (File -> Preferences -> Settings, or Ctrl+,).

    • Search for "Cline MCP Settings".

    • Click "Edit in settings.json". This will open the cline_mcp_settings.json file. The full path is usually something like: C:\Users\username\AppData\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json (replace username with your Windows username).

  3. Add the Server Configuration: You'll need to add an entry to the mcpServers object in the cline_mcp_settings.json file. The recommended way is to run the published npm package via npx and pass your SAP credentials as environment variables — no local build required:

    {
      "mcpServers": {
        "mcp-abap-adt": {
          "command": "npx",
          "args": ["-y", "mcp-abap-adt"],
          "env": {
            "SAP_URL": "https://your-sap-system.com:8000",
            "SAP_USERNAME": "your_username",
            "SAP_PASSWORD": "your_password",
            "SAP_CLIENT": "100"
          },
          "disabled": false,
          "autoApprove": []
        }
        // ... other server configurations ...
      }
    }

    If you installed from source instead (see Manual Installation), point command at node with an absolute path to the build output, e.g. "args": ["C:/PATH_TO/mcp-abap-adt/dist/index.js"], and configure credentials via the .env file.

  4. Test the Connection:

    • Cline should automatically connect to the server. You will see the Server appear in the "MCP Servers" Panel (in the Cline extension, you'll find different buttons on the top.)

    • Ask Cline to get the Sourcecode of a program and it should mention the MCP Server and should try to use the corresponding tools

6. Integrating with Claude Desktop

Claude Desktop can run this server directly via the published npm package.

  1. Open Claude Desktop → SettingsDeveloperEdit Config. This opens claude_desktop_config.json. The file lives at:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  2. Add an mcp-abap-adt entry under mcpServers, filling in your SAP credentials:

    {
      "mcpServers": {
        "mcp-abap-adt": {
          "command": "npx",
          "args": ["-y", "mcp-abap-adt"],
          "env": {
            "SAP_URL": "https://your-sap-system.com:8000",
            "SAP_USERNAME": "your_username",
            "SAP_PASSWORD": "your_password",
            "SAP_CLIENT": "100"
          }
        }
      }
    }
  3. Save the file and restart Claude Desktop. The ABAP tools appear under the tools (🔨) menu.

Windows tip: if npx isn't found, set "command": "npx.cmd", or use the full path to node with the absolute path to dist/index.js from a source install.

7. Integrating with Claude Code

Claude Code reads MCP servers from a .mcp.json file in your project root (shared with your team) or from user/project scope via the CLI.

Option A — .mcp.json in your project root:

{
  "mcpServers": {
    "mcp-abap-adt": {
      "command": "npx",
      "args": ["-y", "mcp-abap-adt"],
      "env": {
        "SAP_URL": "https://your-sap-system.com:8000",
        "SAP_USERNAME": "your_username",
        "SAP_PASSWORD": "your_password",
        "SAP_CLIENT": "100"
      }
    }
  }
}

Because this file is committed to your repo, avoid putting real passwords in it — either use placeholder values that each developer fills in locally, or reference environment variables (Claude Code expands ${VAR} in .mcp.json), e.g. "SAP_PASSWORD": "${SAP_PASSWORD}".

Option B — add it from the CLI:

claude mcp add mcp-abap-adt \
  --env SAP_URL=https://your-sap-system.com:8000 \
  --env SAP_USERNAME=your_username \
  --env SAP_PASSWORD=your_password \
  --env SAP_CLIENT=100 \
  -- npx -y mcp-abap-adt

Add --scope project to write it to the shared .mcp.json, or --scope user to make it available across all your projects. Verify with claude mcp list.

8. Large-response pagination

All text-returning tools support the optional startLine and maxLines arguments: GetProgram, GetClass, GetFunctionGroup, GetFunction, GetStructure, GetTable, GetTableContents, GetPackage, GetTypeInfo, GetInclude, SearchObject, GetTransaction, GetCDSView, GetInterface, GetBehaviorDefinition, GetServiceDefinition, RunAtc, CheckReleaseState, FindCleanCoreViolations, RemediateObject, CreateCDSExtension, and CreateCDSObject.

  • startLine is a 1-based integer. It defaults to 1.

  • maxLines is an integer from 1 through 100,000. When omitted, the tool requests all remaining lines.

  • A small response with neither paging argument keeps the existing raw content[0].text exactly.

  • Any explicit paging request returns a JSON envelope in content[0].text.

  • An unpaged result that exceeds the conservative 40,000-byte UTF-8 budget is automatically reduced and returned in the same envelope with autoPaged: true and capped: true.

  • A request beyond EOF returns content: "", returnedLines: 0, and hasMore: false.

The envelope has this shape:

{
  "content": "...returned source lines...",
  "totalLines": 7745,
  "startLine": 1,
  "returnedLines": 1200,
  "hasMore": true,
  "autoPaged": true,
  "capped": true
}

content is the selected text, totalLines describes the full serialized result, and returnedLines counts source lines consumed. Continue ordinary paging with startLine + returnedLines while hasMore is true. autoPaged appears only when the caller did not request paging. capped means the requested/default range was reduced to meet the final content[0].text UTF-8 byte budget.

If one source line alone exceeds the budget, the envelope also contains truncatedMidLine: true. The returned prefix is UTF-8 safe and does not split a Unicode surrogate pair, but the omitted suffix cannot be recovered with line-based paging. That line counts as consumed; hasMore only indicates whether later source lines exist.

Clients that previously treated every result as raw source should parse content[0].text as JSON whenever they explicitly request paging or when automatic capping returns an envelope. Small unpaged responses remain backward compatible.

The default npm test run is credential-free and skips the live SAP integration suite. Maintainers can opt in by setting RUN_SAP_INTEGRATION=1 before running npm test -- src/index.test.ts.

9. Troubleshooting

  • node -v or npm -v gives an error:

    • Make sure Node.js is installed correctly. First try closing the Terminal/Powershell/cmd.exe in which you were executing the command. Try restarting your computer. Try reinstalling it.

    • Ensure that the Node.js installation directory is in your system's PATH environment variable. On Windows, you can edit environment variables through the System Properties (search for "environment variables" in the Start Menu).

  • npm install fails:

    • Make sure you have an internet connection.

    • Try deleting the node_modules folder and running npm install again.

    • If you're behind a proxy, you might need to configure npm to use the proxy. Search online for "npm proxy settings".

  • Cline doesn't connect to the server:

    • Double-check the settings in cline_mcp_settings.json. It must be the correct, absolute path to the root-server directory, and use double backslashes on Windows.

    • Make sure the server is running (use npm run start to check).

    • Restart VS Code.

    • Alternatively:

    • Navigate to the root folder of mcp-abap-adt in your Explorer, Shift+Right-Click and select "Open Powershell here". (Or open a Powershell and navigate to the folder using cd C:/PATH_TO/mcp-abap-adt/

    • Run "npm install"

    • Run "npm run build"

    • Run "npx @modelcontextprotocol/inspector node dist/index.js"

    • Open your browser at the URL it outputs. Click "connect" on the left side.

    • Click "Tools" on the top, then click "List Tools"

    • Click GetProgram and enter "SAPMV45A" or any other Report name as Program Name on the right

    • Test and see what the output is

  • SAP connection errors:

    • Verify your SAP credentials in the .env file.

    • Ensure that the SAP system is running and accessible from your network.

    • Make sure that your SAP user has the necessary authorizations to access the ADT services.

    • Check that the required ADT services are activated in transaction SICF.

    • If you're using self-signed certificates or there is an issue with your SAP systems http config, make sure to set TLS_REJECT_UNAUTHORIZED as described above!

10. Available Tools

This server provides the following tools, which can be used through FLUJO, Cline, Claude Desktop, Claude Code, or any other MCP client. Every listed tool also accepts the shared optional startLine and maxLines pagination parameters described above:

Tool Name

Description

Input Parameters

Example Usage (in Cline)

GetProgram

Retrieve ABAP program source code.

program_name (string): Name of the ABAP program.

@tool GetProgram program_name=ZMY_PROGRAM

GetClass

Retrieve ABAP class source code.

class_name (string): Name of the ABAP class.

@tool GetClass class_name=ZCL_MY_CLASS

GetFunctionGroup

Retrieve ABAP Function Group source code.

function_group (string): Name of the function group

@tool GetFunctionGroup function_group=ZMY_FUNCTION_GROUP

GetFunction

Retrieve ABAP Function Module source code.

function_name (string), function_group (string)

@tool GetFunction function_name=ZMY_FUNCTION function_group=ZFG

GetStructure

Retrieve ABAP Structure.

structure_name (string): Name of the DDIC Structure.

@tool GetStructure structure_name=ZMY_STRUCT

GetTable

Retrieve ABAP table structure.

table_name (string): Name of the ABAP DB table.

@tool GetTable table_name=ZMY_TABLE

GetTableContents

Retrieve contents of an ABAP table.

table_name (string), max_rows (number, optional, default 100)

@tool GetTableContents table_name=ZMY_TABLE max_rows=50

GetCDSView

Retrieve CDS view (DDL source) source code.

cds_view_name (string): Name of the CDS view (DDL source name).

@tool GetCDSView cds_view_name=I_CURRENCY

GetPackage

Retrieve ABAP package details.

package_name (string): Name of the ABAP package.

@tool GetPackage package_name=ZMY_PACKAGE

GetTypeInfo

Retrieve ABAP type information.

type_name (string): Name of the ABAP type.

@tool GetTypeInfo type_name=ZMY_TYPE

GetInclude

Retrieve ABAP include source code

include_name (string): name of the ABAP include`

@tool GetInclude include_name=ZMY_INCLUDE

SearchObject

Search for ABAP objects using quick search.

query (string), maxResults (number, optional, default 100)

@tool SearchObject query=ZMY* maxResults=20

GetInterface

Retrieve ABAP interface source code.

interface_name (string): Name of the ABAP interface.

@tool GetInterface interface_name=ZIF_MY_INTERFACE

GetTransaction

Retrieve ABAP transaction details.

transaction_name (string): Name of the ABAP transaction.

@tool GetTransaction transaction_name=ZMY_TRANSACTION

GetBehaviorDefinition

Retrieve RAP Behavior Definition (BDEF) source. Requires ~NW 7.54 / S/4HANA.

behavior_definition_name (string): Name of the RAP Behavior Definition.

@tool GetBehaviorDefinition behavior_definition_name=ZMY_ENTITY

GetServiceDefinition

Retrieve RAP Service Definition (SRVD) source. Requires ~NW 7.54 / S/4HANA.

service_definition_name (string): Name of the RAP Service Definition.

@tool GetServiceDefinition service_definition_name=ZMY_SERVICE

RunAtc

Run ABAP Test Cockpit (ATC) checks and return findings.

object_name (string), object_type (string, e.g. PROG/P, CLAS/OC, DDLS/DF), maximum_verdicts (number, optional, default 100), check_variant (string, optional, e.g. S4HANA_READINESS_2023)

@tool RunAtc object_name=ZMY_PROG object_type=PROG/P check_variant=S4HANA_READINESS_2023

CheckReleaseState

Check the SAP release classification (Level A/B/C/D) of a CDS view. Returns API state, successor, base view, and extensibility.

cds_view_name (string)

@tool CheckReleaseState cds_view_name=I_GLAccount

FindCleanCoreViolations

Scan Z/Y custom objects for usages of unreleased (C) or deprecated (D) CDS views. Returns prioritised violations (P1–P3).

max_objects (number, default 50), start_index (number, default 0), object_types (array, default all), package_name (string, optional), search_query (string, default Z*)

@tool FindCleanCoreViolations package_name=ZADR_ABAP max_objects=20

RemediateObject

Replace a C/D CDS view reference in a Z object with the correct successor. Supports field name mapping. Always dry_run by default.

object_name, object_type, old_view_name, new_view_name (all string), field_mapping (object, optional), dry_run (boolean, default true)

@tool RemediateObject object_name=ZMY_PROG object_type=PROG/P old_view_name=I_OLD new_view_name=I_NEW dry_run=true

CreateCDSExtension

Create a CDS View Extension (extend view entity) to add missing fields to an existing SAP standard view. Always dry_run by default.

sap_view_name, extension_name (string), fields (array of {name, source_path, label?}), package_name (string, optional), dry_run (boolean, default true)

@tool CreateCDSExtension sap_view_name=I_GLAccount extension_name=ZI_GLACCOUNT_EXT ...

CreateCDSObject

Create a new Z wrapper CDS view with @Api.state: #RELEASED (Level A — clean core safe). Always dry_run by default.

view_name, base_source (string), fields (array of {name, alias?, is_key?, label?}), description (string, optional), package_name (string, optional), dry_run (boolean, default true)

@tool CreateCDSObject view_name=ZW_MYWRAPPER base_source=MYTABLE ...

Available Tools

23 tools
CheckReleaseStateA

Check the SAP release classification (Level A/B/C/D) of a CDS view. Returns the API state, official successor, base view, and extensibility information. Use this before remediating to understand what needs to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
cds_view_nameYesName of the CDS view to check (e.g. I_CostElement, I_GLAccount)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the kind of information returned and its pre-remediation role, but it does not explicitly state that the operation is read-only, nor does it describe pagination behavior or any failure/error conditions. This is adequate but has clear gaps.

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

Conciseness5/5

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

Two sentences with no fluff: the first states the core purpose and key outputs, the second gives actionable guidance on when to use the tool. The most important information is front-loaded.

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

Completeness4/5

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

For a relatively simple inspection tool, the description covers purpose, when to use it, and the principal return values. It does not explain how maxLines/startLine affect a call, but the schema already documents those parameters, and the absence of an output schema is partially compensated by the mention of returned fields.

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

Parameters3/5

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

Parameter schema coverage is 100% and the schema descriptions for maxLines, startLine, and cds_view_name are already clear and detailed. The description mentions the CDS view name naturally but adds no substantive semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description names a specific verb ('Check'), a specific resource ('SAP release classification of a CDS view'), and enumerates the key returned fields (API state, successor, base view, extensibility). This clearly distinguishes it from sibling tools like GetCDSView and RemediateObject.

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

Usage Guidelines4/5

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

The description explicitly states when to use it: 'Use this before remediating to understand what needs to change.' This gives clear contextual guidance, though it does not name exclusions or compare itself to alternative tools.

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

CreateCDSExtensionA

Create a CDS View Extension (extend view entity) to add missing fields to an existing SAP standard view. Use when a successor view is missing fields needed by the Z object. Always dry_run: true by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesFields to add. Each field: { name, source_path, type?, label? }
dry_runNoIf true (default), returns scaffold only without creating in SAP.
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
package_nameNoTarget package for the new extension object
sap_view_nameYesThe SAP standard view to extend (e.g. I_GLACCOUNT)
extension_nameYesZ-prefixed name for the new extension object (e.g. ZI_GLACCOUNT_EXT)

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the dry_run default, which is already present in the schema, and does not disclose what happens when dry_run=false (e.g., actual creation in SAP), permissions required, or reversibility. This is a meaningful gap for a mutating tool.

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

Conciseness5/5

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

The description is two sentences with no filler: the purpose is front-loaded, the usage condition is explicit, and the dry_run default is mentioned succinctly. Every sentence earns its place.

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

Completeness2/5

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

Despite thorough schema coverage, there is no output schema and no annotations, so the description must do more work. It does not explain what the tool returns in dry_run mode, what happens when dry_run is false, or account for the seemingly unrelated pagination parameters (maxLines, startLine) present in the schema. An agent could call it confidently for a dry run but would lack critical context for a real creation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even without additional parameter detail in the description. The description does not add meaningful semantics beyond the schema, except to emphasize the dry_run default, which is already documented.

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

Purpose5/5

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

The description names a specific verb and resource: 'Create a CDS View Extension (extend view entity) to add missing fields to an existing SAP standard view.' This clearly differentiates it from the sibling CreateCDSObject, which creates a new CDS object rather than extending an existing standard view.

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

Usage Guidelines4/5

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

It provides a clear usage condition: 'Use when a successor view is missing fields needed by the Z object.' However, it does not explicitly mention when not to use it or point to a specific alternative, so it falls short of full when/when-not guidance.

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

CreateCDSObjectA

Create a new Z wrapper CDS view (Level A — clean core safe). Used for P4 cases where no SAP successor exists. Always dry_run: true by default — review the scaffold before creating.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoFields to expose. Each field: { name, alias?, is_key?, label? }
dry_runNoIf true (default), returns scaffold only without creating in SAP.
raw_ddlNoFull CDS DDL source to write verbatim. Use for JOINs or complex views. When provided, base_source and fields are not required.
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
view_nameYesZ-prefixed name for the new view (e.g. ZW_COSTELEMENTWRAPPER)
base_sourceNoThe underlying database table or view to select from (derived from the old C/D view's base)
descriptionNoEndUserText.label description for the new view
package_nameNoTarget package for the new view
transport_requestNoTransport request task number (corrNr) required when package_name is not $TMP (e.g. I10K903769)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the default dry_run behavior and that it creates a scaffold for review. It does not detail the creation side effects (e.g., transport requirements) but the schema covers those parameters, and the clean core safety note adds context.

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

Conciseness5/5

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

Three sentences, each adding distinct value: the core action and context, the use case, and the default behavior with guidance. The information is front-loaded and there is no wasted text.

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

Completeness4/5

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

Given the tool's complexity (10 parameters), the schema already documents each parameter thoroughly. The description adds essential context about when to use it and the dry_run default, which is sufficient for an agent to invoke it correctly. It does not describe the return format, but that is acceptable given the 'review the scaffold' hint.

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

Parameters4/5

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

Schema description coverage is 100%, so all parameters are documented. The description adds the key behavioral detail that dry_run defaults to true and that a scaffold is produced, which reinforces the dry_run parameter's purpose. This goes slightly beyond the schema's description, so it earns a 4.

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

Purpose5/5

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

The description clearly states the tool creates a new Z wrapper CDS view, specifies it is Level A clean core safe, and that it is for P4 cases with no SAP successor. This distinguishes it from sibling tools like CreateCDSExtension, which serves a different purpose.

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

Usage Guidelines4/5

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

It explicitly states when to use this tool (P4 cases, no SAP successor) and advises reviewing the scaffold before creating via the default dry_run behavior. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to decide.

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

FindCleanCoreViolationsA

Scan Z/Y custom objects system-wide for usages of unreleased (Level C) or deprecated (Level D) SAP CDS views. Returns a prioritised list of violations (P1-P4) with successor recommendations. Use max_objects and start_index to paginate large systems.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
max_objectsNoMaximum number of Z objects to scan per call (default 50)
start_indexNoPagination offset — skip first N objects (default 0)
object_typesNoObject types to scan. Supported: PROG/P, CLAS/OC, DDLS/DF, FUGR/F. Default: all four types.
package_nameNoOptional: limit scan to a specific package (e.g. ZADR_ABAP)
search_queryNoWildcard search query for object names (default "Z*"). Use "ZC*" to scan only ZC-prefixed views, or a specific name like "ZC_TEST_STATUS" to scan one object.Z*

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses the return type (prioritized list) and pagination, but does not explicitly state whether the scan is read-only, mention performance implications, or note any authentication requirements. As a scanning tool it is likely read-only, but this is not stated, and no limitations or error conditions are disclosed.

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

Conciseness5/5

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

The description is exactly two sentences with no fluff. The primary purpose is front-loaded, and the pagination hint is succinct. It is efficiently sized and easy to parse.

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

Completeness4/5

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

The description explains the output (prioritized list of violations with successor recommendations) and the scope (Z/Y custom objects). It does not explain the meaning of P1-P4 or the distinction between the two pagination systems, but the schema covers parameters. Given no output schema, the description provides enough for an agent to understand the return type. It could be more complete by clarifying pagination options, but it is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a hint about pagination using max_objects and start_index, but does not mention the alternative maxLines/startLine parameters or clarify the distinction between the two pagination mechanisms. The description provides minimal added value beyond the schema.

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

Purpose5/5

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

The description states a specific action (scan) on a defined resource (Z/Y custom objects) targeting a particular condition (usages of unreleased/deprecated CDS views) and returns a prioritized list with recommendations. This clearly differentiates it from sibling getter tools like GetCDSView or CheckReleaseState.

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

Usage Guidelines4/5

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

The description gives a concrete usage instruction: 'Use max_objects and start_index to paginate large systems.' It implies the tool is for scanning, but does not explicitly compare to alternatives or state when not to use it. The context is clear enough for a scanning operation, but lacks explicit exclusions or alternative routing.

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

GetBehaviorDefinitionA

Retrieve RAP Behavior Definition (BDEF) source code (requires ~NW 7.54 / S/4HANA). For large definitions, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
behavior_definition_nameYesName of the RAP Behavior Definition (e.g. I_MY_ENTITY)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses the system requirement (~NW 7.54 / S/4HANA) and the paging behavior, but it does not describe the return format, error behavior, or confirm read-only semantics beyond the word 'Retrieve'.

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

Conciseness5/5

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

The description is two sentences with no filler, front-loads the core purpose, and places the paging guidance exactly where it is actionable. Every word contributes value.

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

Completeness4/5

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

For a simple retrieval tool with fully documented parameters, the description provides the necessary prerequisite and paging context. It omits an explicit return-format statement, but 'source code' is sufficient given the tool's purpose and name.

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

Parameters3/5

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

The input schema already documents all three parameters at 100% coverage, so the baseline is 3. The description reinforces the paging parameters but does not add meaning beyond the schema, such as format details or edge-case behavior.

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

Purpose5/5

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

The description uses a specific verb ('Retrieve') and a precise resource ('RAP Behavior Definition (BDEF) source code'), making the tool's function unambiguous. The object type is unique among the sibling tools, so an agent can distinguish it without needing to inspect other definitions.

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

Usage Guidelines4/5

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

It gives clear guidance on when to use startLine/maxLines for paging large definitions. It does not explicitly discuss alternatives or exclusions, but the sibling tools are all different object types, so selection is already self-evident.

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

GetCDSViewA

Retrieve CDS view (DDL source) source code. For large views, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
cds_view_nameYesName of the CDS view (DDL source name, e.g. I_CURRENCY)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that large views may need paging and that retrieving everything at once is possible but potentially problematic. It does not mention response format or error behavior, but 'Retrieve' implies a read operation and the paging trait is genuinely useful.

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

Conciseness5/5

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

Two sentences with no filler. The core action is front-loaded, and the paging guidance is a single concise follow-up. Every sentence earns its place.

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

Completeness4/5

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

For a simple retrieval tool with three well-documented parameters, the description covers the essential action and the key paging behavior. It leaves minor gaps like return-format details, but those are largely implied by 'source code' and covered by sibling context.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by tying startLine/maxLines to a usage scenario ('For large views'), giving agents a decision rule beyond the schema's parameter-level descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: 'Retrieve CDS view (DDL source) source code.' This clearly distinguishes it from sibling tools like GetTable or GetProgram, which target different object types, so an agent can easily tell what this tool operates on.

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

Usage Guidelines3/5

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

The description gives paging guidance ('For large views, use startLine/maxLines to page through the source instead of retrieving it all at once'), which is useful contextual usage advice. However, it does not explicitly compare this tool to alternatives or state when to choose it over sibling Get* tools.

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

GetClassA

Retrieve ABAP class source code. For large classes, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
class_nameYesName of the ABAP class

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the full behavioral burden. It discloses paging capability and hints at byte limits through parameter descriptions, but does not address error handling, permissions, or return format. For a read-only retrieval tool, this is acceptable but minimal, warranting a 3.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action and immediately provides actionable paging advice. There is no redundancy or filler, making it appropriately concise and well-structured.

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

Completeness3/5

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

The tool is relatively simple, and the schema covers parameter behavior well. However, the absence of an output schema and lack of description about the return format or potential errors leaves some gaps. The paging guidance is helpful, but the description does not aid in choosing this tool over siblings, making completeness adequate but not thorough.

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

Parameters3/5

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

The input schema provides 100% description coverage for all three parameters, including detailed behavior for startLine and maxLines. The tool description adds no new parameter semantics beyond reinforcing paging, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb 'Retrieve' and the resource 'ABAP class source code', making the purpose unambiguous. It does not explicitly differentiate from sibling tools like GetProgram or GetInterface, but the resource type is specific enough. This aligns with a 4: clear but no explicit sibling differentiation.

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

Usage Guidelines3/5

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

The description gives paging guidance for large classes, which is useful usage context, but it does not mention alternatives or when not to use this tool. It implies usage for retrieval but lacks explicit exclusions or comparisons to siblings. This fits an implied usage scenario with no alternatives provided.

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

GetFunctionA

Retrieve ABAP Function Module source code. For large function modules, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
function_nameYesName of the function module
function_groupYesName of the function group

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden; it reveals that retrieval can be large and supports paging via startLine/maxLines. However, it doesn't mention output format, errors, or that this is a read-only operation, leaving behavior partially implicit.

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

Conciseness5/5

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

Two sentences, no filler; purpose is front-loaded and the paging guidance follows immediately. Every sentence earns its place.

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

Completeness4/5

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

For a simple retrieval tool with fully documented parameters, the description covers the essential behavior and paging strategy. It does not describe the return structure, but the tool's output (source code) is largely implied by the purpose.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds a usage hint (paging for large modules) but doesn't add meaning beyond the parameter descriptions.

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

Purpose5/5

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

The description states 'Retrieve ABAP Function Module source code' with a specific verb and resource, clearly differentiating it from sibling tools like GetFunctionGroup and GetProgram. Even though the name is generic, the description pins down exactly what is returned.

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

Usage Guidelines4/5

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

It gives an explicit usage condition: for large function modules, use startLine/maxLines rather than retrieving everything at once. This is clear context, though it doesn't discuss choosing among sibling tools.

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

GetFunctionGroupA

Retrieve ABAP Function Group source code. For large function groups, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
function_groupYesName of the function module

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. It mentions paging but does not explain the output shape, response format, truncation behavior beyond the schema's byte-cap note, or side-effect-free nature. Most behavioral detail lives in the parameter descriptions rather than the tool description.

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

Conciseness5/5

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

Two sentences with no filler: the first states the purpose, the second gives the key operational guidance. The paging instruction is front-loaded and directly actionable.

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

Completeness3/5

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

The description plus schema is adequate for paging behavior, and the required parameter is clear. However, with no output schema and no annotations, the description should give more context about what a retrieved page looks like. It also fails to flag the schema inconsistency where function_group is described as 'Name of the function module', which could confuse an agent into passing a function module name instead of a function group name.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter descriptions already document defaults, bounds, and end-of-file behavior. The description adds a modest practical nudge about using startLine/maxLines for large function groups but does not provide meaningfully new semantic value beyond the schema.

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

Purpose5/5

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

The description uses a specific verb and resource, 'Retrieve ABAP Function Group source code,' which clearly identifies the tool's action and object. The object is distinct enough from siblings like GetFunction, GetProgram, and GetInclude, so an agent can differentiate it without inspecting the schema.

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

Usage Guidelines3/5

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

The description gives a clear usage hint for large function groups: page with startLine/maxLines. However, it provides no guidance on when to choose this tool over sibling source-retrieval tools such as GetFunction or GetInclude, and no exclusions or alternatives are mentioned.

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

GetIncludeA

Retrieve ABAP Include Source Code. For large includes, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
include_nameYesName of the ABAP Include

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. 'Retrieve' clearly indicates a read-only operation, and the pagination hint signals that large includes may need chunked access, but the description does not explicitly state behavior like byte caps, errors, or access requirements. It adds some useful context but not full behavioral disclosure.

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

Conciseness5/5

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

The description is two short sentences with no filler. The first sentence names the action and resource, and the second sentence earns its place by providing pragmatic pagination guidance.

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

Completeness4/5

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

The tool is a simple retrieval operation, and the schema already documents all parameters including line behavior and hasMore semantics. The description could be slightly more complete by explicitly noting that retrieval is non-mutating, but nothing essential is missing for an agent to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented. The description mentions startLine/maxLines operationally, but it does not add meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Retrieve') and a specific resource ('ABAP Include Source Code'), so an agent knows exactly what object is fetched. It does not explicitly contrast itself with sibling tools like GetProgram or GetStructure, but the resource type is unambiguous enough to differentiate it.

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

Usage Guidelines4/5

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

The description gives actionable usage guidance: for large includes, use startLine/maxLines to page through the source instead of retrieving everything at once. It does not mention when to prefer a sibling tool, but for a fetch-source operation that is not a critical omission.

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

GetInterfaceA

Retrieve ABAP interface source code. For large interfaces, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
interface_nameYesName of the ABAP interface

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that large interfaces should be paged, which hints at size-related behavior, but it doesn't state read-only intent, error cases like nonexistent interfaces, or how the source is returned. This is adequate but not rich.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose and immediately followed by the key usage tip. No filler or redundancy.

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

Completeness4/5

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

For a simple source-retrieval tool with three well-documented parameters, the description conveys purpose and the main operational concern. Without an output schema it could mention the return format explicitly, but the wording 'source code' makes it sufficiently clear.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds the context that startLine/maxLines are for paging large interfaces, reinforcing the schema, but doesn't add meaning beyond it.

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

Purpose5/5

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

Description uses a specific verb and resource: 'Retrieve ABAP interface source code.' This clearly distinguishes it from sibling getters targeting different object types (class, program, table, etc.) without ambiguity.

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

Usage Guidelines4/5

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

It explicitly advises using startLine/maxLines for large interfaces, giving practical pagination guidance. It does not explicitly list when not to use the tool, but the object-type scope and sibling names make the intended use clear.

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

GetPackageA

Retrieve ABAP package details. Use startLine/maxLines to page large serialized package listings.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
package_nameYesName of the ABAP package

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It reveals that output is a serialized listing that can be large and that paging may be needed, which is useful behavioral context beyond the schema. It does not mention permissions or error behavior, but for a simple retrieval this is a reasonable level of transparency.

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

Conciseness5/5

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

Two sentences with no filler. The main action is front-loaded, and the second sentence adds operational guidance about paging. Every word earns its place.

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

Completeness4/5

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

The tool is simple (one required parameter, two optional paging parameters) with no output schema. The description covers the core purpose and the paging behavior. It could also state the output format more explicitly, but the schema descriptions for startLine/maxLines already cover edge cases like hasMore=false.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaning by clarifying that startLine/maxLines are for paging large output and that the result is a listing, which supplements the schema's parameter notes.

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

Purpose4/5

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

The description states a clear verb and resource: 'Retrieve ABAP package details.' It is distinct from the many sibling 'Get*' tools by naming the specific object type. However, it does not explicitly differentiate itself from those siblings beyond the object name, and 'details' is somewhat vague.

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

Usage Guidelines3/5

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

The description gives usage guidance for paging ('Use startLine/maxLines to page large serialized package listings.') but does not state when to choose this tool over alternatives like GetTransaction or GetClass. The usage context is implied by the sibling structure rather than explicitly explained.

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

GetProgramA

Retrieve ABAP program source code. For large programs, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
program_nameYesName of the ABAP program

TDQS

A4/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. 'Retrieve' implies a read-only operation, and the paging note signals that large responses are expected. However, it does not mention response format, error behavior, or performance considerations beyond paging, leaving some gaps.

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

Conciseness5/5

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

Two sentences with no filler. The core purpose is front-loaded and the paging guidance is directly relevant to safe usage. Every sentence earns its place.

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

Completeness4/5

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

For a simple source-retrieval tool, the schema covers all parameters and the description adds paging context. There is no output schema, so return-value details are not specified, and error behavior is absent; still, the essentials needed to call it correctly are present.

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

Parameters3/5

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

The input schema already provides 100% parameter coverage, including descriptions for program_name, startLine, and maxLines. The description adds no new parameter semantics beyond mentioning the paging parameters by name, so the baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource ('Retrieve ABAP program source code') and clearly distinguishes the tool from sibling object-specific tools like GetClass, GetTable, and GetTransaction. An agent knows exactly what this tool returns and which object type it targets.

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

Usage Guidelines4/5

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

The description gives explicit guidance for large programs: use startLine/maxLines to page instead of retrieving all at once. It does not explicitly mention alternatives among siblings, but the siblings are distinct object types, so the intended use case is reasonably clear.

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

GetServiceDefinitionA

Retrieve RAP Service Definition (SRVD) source code (requires ~NW 7.54 / S/4HANA). For large definitions, use startLine/maxLines to page through the source instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
service_definition_nameYesName of the RAP Service Definition (e.g. Z_MY_SERVICE)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose a read operation, an environment prerequisite, and a paging strategy. However, it omits the return format and error conditions; the byte-cap and hasMore behavior live only in the schema, not the description. It adds useful context but doesn't fully cover behavior.

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

Conciseness5/5

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

Two sentences with zero filler. The first sentence front-loads purpose and the version constraint; the second delivers the paging recommendation. Every clause earns its place, and the most important scoping information comes first.

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

Completeness3/5

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

For a 3-parameter tool with no annotations and no output schema, the description covers purpose, environment, and paging but leaves out return-value shape and differentiation from closely related siblings. It is adequate but not complete; a brief note on what the returned source looks like or a pointer to GetBehaviorDefinition/GetCDSView would close the gaps.

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

Parameters3/5

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

Schema coverage is 100%, with each parameter already well documented (including hasMore=false behavior and the byte cap). The description adds only the strategic guidance to use startLine/maxLines for paging, which reinforces the parameters' purpose but introduces no new per-parameter semantics beyond the schema.

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

Purpose5/5

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

The description states a specific verb (retrieve), a precise resource (RAP Service Definition / SRVD source code), and adds a version qualifier. Among the many sibling 'Get*' tools (GetCDSView, GetBehaviorDefinition, GetFunction), the SRVD target clearly identifies what this tool returns, so an agent can distinguish it without opening the schema.

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

Usage Guidelines3/5

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

It provides practical usage guidance: the ~NW 7.54/S/4HANA prerequisite and the explicit recommendation to page through large definitions with startLine/maxLines. However, it never names alternatives or says when not to use this tool versus related getters like GetCDSView or GetBehaviorDefinition, leaving that differentiation to the tool name alone.

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

GetStructureA

Retrieve ABAP Structure. For large structures, use startLine/maxLines to page through the result instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
structure_nameYesName of the ABAP Structure

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It discloses that large structures may require paging and implies a default behavior of retrieving all lines, but it does not mention read-only guarantees, error conditions, or response format. The paging hint adds some value but is not comprehensive.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The purpose is stated first, followed by the key usage guidance. It is perfectly front-loaded and efficient.

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

Completeness4/5

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

For a simple retrieve tool with no output schema, the description gives the essential usage pattern (paging) and the required parameter is clear from the schema. It does not describe the return structure, but that is not critical for calling the tool correctly. The description is adequate for an agent to invoke it appropriately.

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

Parameters3/5

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

The input schema already has 100% coverage with clear descriptions for all three parameters. The description reinforces the paging behavior but does not add new semantic detail beyond what the schema provides. It mentions the paging parameters together, but the schema already explains their meaning and defaults.

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

Purpose4/5

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

The description states a specific verb ('Retrieve') and resource ('ABAP Structure'), which is clear and distinguishes it from sibling tools like GetTable or GetCDSView. It does not explicitly contrast with alternatives, but the name and description make the target object type unambiguous.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use paging (for large structures) and directs the agent to use startLine/maxLines instead of retrieving everything at once. It does not mention when to choose this tool over siblings, but the object-type specificity makes that choice obvious.

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

GetTableA

Retrieve ABAP table structure. For large tables, use startLine/maxLines to page through the result instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
table_nameYesName of the ABAP table

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses paging behavior for large tables, which is useful, but it doesn't mention potential truncation, byte caps, or the exact return format (though the schema notes byte cap may limit lines). It also doesn't state that the operation is read-only, though that is implied. The description adds some behavioral context but not comprehensive.

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

Conciseness5/5

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

Two concise sentences, zero fluff. The purpose statement is immediately followed by a targeted usage tip. Every word earns its place, and the structure is ideal for quick agent parsing.

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

Completeness3/5

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

The tool is simple (3 params, no output schema), and the description covers the core purpose and a key usage nuance. However, it does not describe what the returned structure looks like (fields, metadata, etc.) or any error behavior, which an agent might need to interpret results correctly. The absence of an output schema increases the need for a bit more detail on the return shape.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (table_name, startLine, maxLines) with their constraints and defaults. The description adds no extra meaning beyond reiterating the paging use case, which is already implied by the schema. Baseline of 3 is appropriate when the schema carries the full parameter documentation.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'Retrieve ABAP table structure.' This clearly distinguishes the tool from siblings like GetTableContents (which returns contents) and GetStructure (which targets a generic structure), though it doesn't explicitly name them. The purpose is unambiguous and front-loaded.

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

Usage Guidelines4/5

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

The description gives explicit guidance for large tables: use startLine/maxLines to page instead of retrieving all at once. This is clear when-to-use advice. However, it doesn't mention when to choose this tool over its many siblings (e.g., GetStructure, GetTableContents), so alternative selection is left to inference.

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

GetTableContentsA

Retrieve contents of an ABAP table. max_rows limits SAP rows; startLine/maxLines page the returned textual XML when its serialized size is still large.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
max_rowsNoMaximum number of rows to retrieve
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
table_nameYesName of the ABAP table

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that output is textual XML, that max_rows limits SAP rows, and that startLine/maxLines page the serialized XML when large. It does not cover errors, auth needs, or exact XML structure, but the core behavior is well communicated.

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

Conciseness5/5

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

Two sentences with no filler. The main purpose is front-loaded, and the second sentence concisely explains the key parameter relationships.

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

Completeness4/5

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

Given that there is no output schema and no annotations, the description does a good job explaining the return format (textual XML) and pagination behavior. It is slightly incomplete in not addressing error cases or when the serialized size threshold triggers pagination, but the essentials for a successful call are present.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the distinction between SAP rows (max_rows) and textual XML lines (startLine/maxLines), which would otherwise be ambiguous from the schema alone.

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

Purpose4/5

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

The description states a specific verb and resource: 'Retrieve contents of an ABAP table.' It is clear and distinguishable from sibling tools like GetTable, though it does not explicitly call out that GetTable is for metadata/definition rather than contents.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to use this tool versus alternatives such as GetTable or SearchObject. The description only explains parameter behavior, not selection criteria or exclusions.

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

GetTransactionA

Retrieve ABAP transaction details. For large results, use startLine/maxLines to page through it instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
transaction_nameYesName of the ABAP transaction

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It mentions pagination behavior and that the byte cap may return fewer lines, which is useful. However, it does not disclose the return format or whether the operation is read-only, but that is implied by 'retrieve' and the sibling set.

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

Conciseness4/5

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

The description is short and to the point, with the pagination advice front-loaded. It is not verbose and every sentence adds value. It could be improved by separating the pagination hint from the main purpose, but it's still concise.

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

Completeness3/5

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

Given the tool's simplicity (3 params, all documented, no output schema), the description is adequate. It covers the main retrieval and pagination. It doesn't specify the exact structure of the response, but without an output schema, an agent might wonder what fields are returned, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds a bit by explaining the purpose of startLine/maxLines for pagination, but it doesn't add much beyond that. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool retrieves ABAP transaction details, with a specific verb and resource. It is distinguishable from sibling tools like GetProgram or GetTable, though it could more explicitly say it returns source code or metadata, but the name and description are sufficiently clear.

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

Usage Guidelines4/5

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

The description provides guidance on when to use pagination (for large results) and how to page through with startLine/maxLines. It doesn't explicitly mention when not to use this tool versus siblings, but the context is clear enough for an agent to infer it's the right tool for transactions.

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

GetTypeInfoA

Retrieve ABAP type information. For large results, use startLine/maxLines to page through it instead of retrieving it all at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
type_nameYesName of the ABAP type

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that results can be paged and mentions a byte cap that may truncate output ('the byte cap may return fewer lines'), which is useful. However, it does not describe the structure of the returned type information or any other behavioral traits (e.g., read-only nature, potential errors). Given the tool is a retrieval, the safety profile is implicit but not explicitly disclosed. A score of 3 reflects that some behavior is covered but not exhaustive.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and followed by a concise paging instruction. No redundant words. Perfectly sized for the information it conveys.

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

Completeness3/5

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

The tool has no output schema, so the description must hint at what is returned. It says 'ABAP type information' but does not elaborate on the format or content. The paging guidance is helpful, but the absence of any detail about the response structure leaves the agent guessing. Given the simplicity of the tool and the complete parameter documentation, this is a moderate gap, hence a 3.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters have descriptions in the schema. The description adds minimal value beyond that, only reinforcing the paging use of startLine/maxLines. Since the schema already documents the parameters thoroughly, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Retrieve' and the resource 'ABAP type information', which is specific enough to distinguish it from sibling tools that retrieve other object types (e.g., GetTable, GetClass). No ambiguity about what the tool does.

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

Usage Guidelines4/5

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

The description provides explicit guidance for handling large results: 'For large results, use startLine/maxLines to page through it instead of retrieving it all at once.' This is clear and actionable. It does not explicitly state when not to use this tool, but the sibling list makes it obvious that this is for ABAP types specifically, so the lack of explicit exclusion is acceptable.

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

ReleaseAsC1A

Formally register a Z/Y CDS wrapper view as C1-released in SAP's ARS_RUNTIME_API_STATE table. Used after CreateCDSObject in P4 flow so SAP's own ATC tools recognise the wrapper as released. Always dry_run: true by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true (default), shows the GET response and PUT body preview without writing to SAP.
view_nameYesZ/Y-prefixed CDS view name to register as C1 released (e.g. ZW_PROCESSORDR_WRAP)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and it discloses the crucial default: 'Always dry_run: true by default', signaling that the tool does not write to SAP unless explicitly overridden. It also names the exact SAP table being modified. It stops short of describing side effects or reversibility, but the key safety behavior is covered.

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

Conciseness5/5

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

Three short sentences deliver the core action first, usage context second, and a critical safety note last. No redundant filler; every sentence contributes.

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

Completeness4/5

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

The description provides the action, timing relative to a sibling, and the dry-run default. Its only notable omission is a description of the response or success signal, but the schema's dry_run field covers preview behavior and there is no output schema to explain.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3; both parameters are already documented in the schema. The description's mention of 'Z/Y CDS wrapper view' and the dry_run default merely echoes the schema without adding new meaning.

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

Purpose5/5

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

The description uses a specific verb ('register'), names the resource (Z/Y CDS wrapper view), the release level (C1), and the target table (ARS_RUNTIME_API_STATE). It also differentiates from the sibling CreateCDSObject by explicitly positioning this tool as the post-creation release step.

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

Usage Guidelines4/5

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

It explicitly states the temporal context 'after CreateCDSObject in P4 flow' and the goal ('so SAP's own ATC tools recognise the wrapper as released'). It does not enumerate when-not-to-use scenarios or alternative tools, but the context is clear enough to guide the agent.

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

RemediateObjectA

Replace a C/D CDS view reference in a Z object with the correct successor. Supports field name mapping and produces a before/after diff. Always runs as dry_run: true by default — set dry_run: false to write and activate in SAP.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true (default), returns diff only without writing to SAP. Set false to apply.
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
object_nameYesName of the Z/Y object to modify
object_typeYesType: PROG, PROG/P, PROG/I, CLAS, CLAS/OC, DDLS, DDLS/DF, FUGR, FUGR/F
field_mappingNoOptional field name mapping { "OLD_FIELD": "NEW_FIELD" } when field names differ between old and new view
new_view_nameYesThe replacement view name (successor or Z wrapper)
old_view_nameYesThe C/D CDS view name to replace

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the critical dry_run default behavior, the ability to write/activate, and the diff output. It does not mention side effects, rollback, or authorization needs, but the key safety behavior (dry-run) is clearly stated.

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

Conciseness5/5

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

Two sentences with zero fluff. The action is front-loaded, and the critical dry-run behavior is placed prominently. Every word earns its place.

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

Completeness3/5

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

The core purpose and key behavior are covered, but the description omits any detail about the diff output format and the pagination parameters (startLine, maxLines) that are part of the schema. Since there is no output schema, the agent is left guessing what the diff looks like, and the pagination params are not integrated into the narrative.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds 'supports field name mapping' (already in schema) and reiterates the dry_run default (already in schema). It adds no new parameter-level semantics beyond what the schema provides.

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

Purpose5/5

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

The description opens with a specific action ('Replace a C/D CDS view reference in a Z object') and names the resource and outcome. It also distinguishes itself from the sibling read-only tools (Get*) and creation tools by focusing on modification of an existing object, making its role unambiguous.

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

Usage Guidelines4/5

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

The purpose is so specific that the intended usage is clear, but the description does not explicitly state when to use it versus alternatives (e.g., when not to use it, or prerequisites). It implicitly covers when to use it (when replacing a CDS view reference) but lacks explicit exclusions or alternative routing.

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

RunAtcA

Run ABAP Test Cockpit (ATC) checks on an ABAP object and return findings with priority, check name, message, and source location.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
object_nameYesName of the ABAP object to check (e.g. ZC_TEST_STATUS, ZMY_PROGRAM)
object_typeYesType of the ABAP object. Supported values: PROG, PROG/P, PROG/I, CLAS, CLAS/OC, INTF, INTF/OI, FUGR, FUGR/F, DDLS, DDLS/DF, DEVC, DEVC/K
check_variantNoOptional ATC check variant name (e.g. S4HANA_READINESS_2023). Omit to use the system default.
maximum_verdictsNoMaximum number of ATC findings to return (default 100)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses the returned finding fields, which is useful, but it does not mention whether running ATC checks has side effects, requires specific authorizations, or can be costly/long-running.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It conveys the action, the target, and the key output fields efficiently.

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

Completeness3/5

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

For a 6-parameter tool with no annotations and no output schema, this is fairly thin. The output-field list and detailed parameter schema partially compensate, but the description omits usage context, result-ordering/truncation behavior, and how it relates to sibling ATC tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters including example values for object_name and supported object_type values. The tool description adds no parameter-level semantics beyond the schema.

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

Purpose4/5

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

The description names a specific action and resource: running ABAP Test Cockpit (ATC) checks on an ABAP object, and it states what is returned (priority, check name, message, source location). This clearly separates it from the metadata-getter siblings, though it does not explicitly differentiate it from closely related ATC tools like FindCleanCoreViolations.

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

Usage Guidelines3/5

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

The use case is implied: call this when ATC findings are needed for an ABAP object. There is no explicit when-to-use or when-not-to-use guidance, and no mention of which sibling to prefer for clean-core-specific or remediation workflows.

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

SearchObjectB

Search for ABAP objects using quick search. maxResults limits matches; startLine/maxLines page the returned textual XML when its serialized size is still large.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query string (use * wildcard for partial match)
maxLinesNoMaximum lines to return (1-100000). Omit to request the rest; the byte cap may return fewer lines.
startLineNo1-based line number to start from (default 1). Beyond EOF returns an empty page with hasMore=false.
maxResultsNoMaximum number of results to return

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose a real behavioral trait: startLine/maxLines page the returned textual XML, not just raw line numbers. However, it never states that the operation is read-only, how results are ordered, or what happens when no matches are found, leaving only partial disclosure.

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

Conciseness5/5

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

Two short sentences with no filler. The main purpose is front-loaded, and the remaining sentence provides only the essential pagination/limit details, so every sentence earns its place.

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

Completeness3/5

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

The schema is fully documented and the description covers the key pagination/limit behavior, but for a tool with no output schema it omits usage context (when to choose this vs specific getters) and doesn't describe empty-result or error behavior. Adequate for basic invocation but with clear gaps.

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

Parameters4/5

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

The input schema already documents all four parameters with descriptions, so the baseline is 3. The description adds meaningful semantics by tying startLine/maxLines to pagination of the textual XML output and clarifying that maxResults caps the number of matches, which goes slightly beyond the schema's individual parameter descriptions.

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

Purpose4/5

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

The description states a specific action ('Search') and resource ('ABAP objects'), and 'quick search' conveys a broad lookup distinct from the specific object getters listed among siblings. It doesn't explicitly name an alternative, but the verb+resource scope is unambiguous.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus the many specific object getters (GetProgram, GetClass, GetInterface, etc.) or any exclusions. The usage context must be inferred from the tool name and sibling list, which is not enough for an agent to reliably route its choice.

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

Tool Schema Changelog

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

  1. 23 tool updatesv1.2.0
    • First observedCheckReleaseState
    • First observedCreateCDSExtension
    • First observedCreateCDSObject
    • First observedFindCleanCoreViolations
    • First observedGetBehaviorDefinition
    • First observedGetCDSView
    • First observedGetClass
    • First observedGetFunction
    • First observedGetFunctionGroup
    • First observedGetInclude
    • First observedGetInterface
    • First observedGetPackage
    • First observedGetProgram
    • First observedGetServiceDefinition
    • First observedGetStructure
    • First observedGetTable
    • First observedGetTableContents
    • First observedGetTransaction
    • First observedGetTypeInfo
    • First observedReleaseAsC1
    • First observedRemediateObject
    • First observedRunAtc
    • First observedSearchObject

TDQS

A3.8/5.0

Scored across 23 tools

Disambiguation4/5

Most tools are clearly separated by artifact type (class, program, interface, table, etc.), and the remediation/creation tools are distinct from retrieval. However, GetStructure, GetTable, and GetTypeInfo have overlapping territory around ABAP data types, so an agent could occasionally select the wrong getter.

Naming Consistency5/5

Tool names follow a consistent PascalCase verb-noun pattern, with Get* for retrieval and verbs like Run, Check, Find, Remediate, Create, and Release for actions. Even multi-word CDS tools follow the same convention.

Tool Count3/5

23 tools is on the heavy side, largely because there are 15 Get* retrieval variants for different ABAP artifact types. The count is not unreasonable for the domain, but it exceeds the 3-15 well-scoped range.

Completeness4/5

The set covers a coherent clean-core workflow: search, retrieve source, run ATC checks, find violations, remediate, create CDS wrappers/extensions, and release them. The main gaps are general-purpose create/update/delete operations for non-CDS ABAP objects, but those appear outside the server's intended focus.

Maintenance

ActivityActive
ResponsivenessNo issues

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
    -