Skip to main content
Glama
WARNING

This MCP server is no longer actively maintained. SAP has released an official ABAP MCP server โ€” please use that instead: SAP Official ABAP MCP

NOTE

๐Ÿงช EVALUATION & LEARNING PROJECT - SAP INTERNAL

This project serves dual purposes at SAP:

  1. Evaluation Platform: Test how Model Context Protocol (MCP) can support AI-assisted ABAP development

  2. Practical Tool: Enable SAP colleagues to use standard AI coding assistants (Claude Code CLI, Cline, Cursor, etc.) for ABAP development tasks

Project Status:

  • โœ… Actively maintained and feature-complete for evaluation purposes

  • โœ… Open to contributions from SAP internal teams

  • โœ… Suitable for development and testing environments

  • โš ๏ธ Implementation is pragmatic and focused on capability exploration

  • โš ๏ธ Not intended for production business-critical operations

Origin: Originally forked from mario-andreschak/mcp-abap-adt, now evolved with additional capabilities for SAP internal development scenarios.

For AI Agents: See AGENTS.md for comprehensive guidance on using this MCP server with AI coding assistants. Agent-specific quick reference files in the agents/ folder:

Find an Example AGENTS.md file for ABAP projects. Place it as AGENTS.md in the root folder of an ABAP project. See agents.md for reference.

Enhancement proposals for the MCP server are collected here.

Found a bug or have a feature request? Please check our GitHub Issues page to report issues or request new features.


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

Version License MCP CI codecov

A Model Context Protocol (MCP) server that provides AI coding assistants with direct access to SAP ABAP systems through ABAP Development Tools (ADT). Think of it as a bridge that lets tools like Cline, Claude Code CLI, and other MCP clients interact with your ABAP system to retrieve source code, analyze structures, run tests, and more.

๐Ÿ“‘ Table of Contents

  1. Key Features

  2. Quick Start

  3. Prerequisites

  4. Installation and Setup

  5. Authentication Guide

  6. Multi-System Configuration

  7. LLM Access Setup (SAP Internal)

  8. AI Agent Integration

  9. Available Tools & Resources

  10. Running the Server Manually

  11. Docker Deployment

  12. Troubleshooting

  13. Contributing & Support

Related MCP server: vibing-steampunk

Project Philosophy

This server balances three objectives:

  1. Exploration First: Test what's possible with MCP in ABAP development contexts

  2. Practical Value: Provide immediate utility for AI-assisted ABAP development

  3. Learning Platform: Serve as a reference for building domain-specific MCP servers

Implementation philosophy:

  • Pragmatic over perfect: Features may be straightforward rather than architected for scale

  • Capability focused: Prioritize exploring what AI assistants need over production hardening

  • Community driven: Feedback and contributions shape the server's evolution

This approach allows rapid iteration on MCP capabilities while delivering real value to developers.

Key Features

  • ๐Ÿ” Comprehensive ABAP Object Access: Retrieve programs, classes (including local includes: CCIMP, CCDEF, CCMAC, CCAU), interfaces, functions, tables, structures, and more

  • ๐Ÿš€ RAP Development Support: Full support for CDS views, behavior definitions, service bindings, metadata extensions, and access control

  • ๐Ÿšš Transport & Version Control: List transport requests, view version history, and compare object versions across transports

  • ๐Ÿ“ฆ Batch Query Operations: Query multiple tables or CDS views in a single call with advanced filtering and pagination

  • ๐Ÿงช Testing & Quality Assurance: Execute unit tests, analyze coverage, validate syntax, and find object usages

  • ๐Ÿ—๏ธ Class Management: Create, modify, activate, and delete ABAP classes with full include support (main, definitions, implementations, macros, test classes)

  • ๐Ÿ“Š RAP BO Analysis: Comprehensive analysis of RAP Business Objects via cacheable MCP resources

  • ๐ŸŒ Multi-System Support: Configure and work with multiple SAP systems (DEV, QAS, PRD) simultaneously with easy system switching

  • ๐Ÿค– AI Agent Ready: Optimized for Cline, Claude Code CLI, Cursor, OpenCode, and other MCP-compatible clients

  • โ˜๏ธ ABAP Cloud Compliant: Built-in guidance for ABAP Cloud (Tier 1) development standards

IMPORTANT

ABAP Debugging Not Supported

This Node.js-based MCP server does not support ABAP debugging capabilities. ABAP debugging requires RFC (Remote Function Call) protocol, which is only available through SAP's native libraries (JCo for Java, NW RFC SDK for C/C++).

Need debugging? Use the Java-based MCP server ai-sap-abap-adt which includes SAP JCo and provides full debugging support including:

  • Setting/managing breakpoints

  • Step-by-step execution (step into, step over, step out)

  • Variable inspection and modification

  • Call stack analysis

Quick Start

For experienced developers - get up and running in 5 minutes:

# 1. Clone the repository
git clone https://github.tools.sap/D020426/mcp-abap-adt.git
# For external contributors: git clone https://github.com/mario-andreschak/mcp-abap-adt.git
cd mcp-abap-adt

# 2. Install dependencies and build
npm install && npm run build

# 3. Configure SAP connection
# Single system (simple):
cat > .env << EOF
SAP_URL=https://your-sap-system.com:8000
SAP_CLIENT=100
EOF

# Multiple systems (advanced):
# Copy .sap-systems.example.json to .sap-systems.json and configure
# See docs/multi-system-configuration.md for details

# 4. Authenticate with SAP
#    See docs/Authentication.md for detailed guide
#
# Quick options:
# - SSO (Recommended): Built-in browser SSO launches Chrome automatically
#   Or call SapBrowserLogin tool to proactively authenticate
# - Basic Auth: Add SAP_USERNAME/SAP_PASSWORD to .env

# 5. Add to your MCP client configuration (see AI Agent Integration section)

# 6. Start coding with AI assistance!

๐Ÿ“š First time with MCP servers? Continue reading for detailed step-by-step instructions.

Prerequisites

Before you begin, ensure you have:

SAP ABAP System Access

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

  • Valid username and password

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

  • ADT services activated in transaction SICF (specifically /sap/bc/adt)

  • For GetTableContents: Custom service /z_mcp_abap_adt/z_tablecontent (setup guide)

Development Tools

Verify installation:

node -v  # Should show version number
npm -v   # Should show version number

Installation and Setup

1. Clone the Repository

Using Git (command line):

cd Desktop  # Or your preferred directory
git clone https://github.tools.sap/D020426/mcp-abap-adt.git
cd mcp-abap-adt

Using GitHub Desktop:

  1. Open GitHub Desktop

  2. File โ†’ Clone Repository

  3. URL tab โ†’ Paste repository URL

  4. Choose local path โ†’ Clone

2. Install Dependencies

npm install

This downloads all required libraries (may take a few minutes).

3. Build the Project

npm run build

This compiles TypeScript code into executable JavaScript.

4. Configure SAP Connection

Create a .env file in the root directory:

SAP_URL=https://your-sap-system.com:8000
SAP_CLIENT=100

โš ๏ธ Important: Never commit .env to version control - keep this file secure!

5. Authenticate with SAP System

The server supports two authentication methods that are automatically selected based on your configuration.

๐Ÿ“š Complete authentication guide: docs/Authentication.md

Quick Setup Options

Option 1 - SSO Authentication (Recommended for Production):

Best for corporate SAP systems with SSO. Built-in browser SSO requires no extra setup.

  1. Leave SAP_USERNAME and SAP_PASSWORD unset in .env

  2. On first request, Chrome launches automatically for SSO login

  3. Or call the SapBrowserLogin tool to proactively authenticate

  4. Cookies are cached to $TMPDIR/mcp-abap-adt/<domain>.json with 12h TTL

  5. 401/403 responses auto-retry with re-authentication

Legacy alternative: The external sap-auth-mcp-main MCP server still works as a fallback (see Authentication Guide)

Option 2 - Basic Authentication (Recommended for Dev/Test):

Simple setup using username and password. Add to your .env file:

SAP_URL=https://your-sap-system.com:8000
SAP_CLIENT=100
SAP_USERNAME=your_username
SAP_PASSWORD=your_password

How Authentication Works

The server automatically detects and uses the best authentication method:

  1. If credentials exist (SAP_USERNAME and SAP_PASSWORD in .env) โ†’ Uses Basic Auth

  2. If SSO cookies exist (legacy cookie file or $TMPDIR/mcp-abap-adt/<domain>.json) โ†’ Uses cached SSO cookies

  3. If neither exists โ†’ Launches Chrome for built-in browser SSO on first request

You'll see which method is active in the console logs:

[Auth] Using SSO Authentication (cookies from tmp/sap_cookies.json)

or

[Auth] Using Basic Authentication (credentials)

Authentication Guide

For complete authentication setup, troubleshooting, and best practices, see the comprehensive guide:

๐Ÿ“š Authentication Guide

The guide covers:

  • Built-in browser SSO (primary) and legacy sap-auth-mcp setup

  • Basic authentication configuration

  • Cookie file locations and formats

  • Re-authentication procedures

  • Security best practices

  • Troubleshooting authentication issues

  • CSRF token handling

Multi-System Configuration

Want to work with multiple SAP systems (DEV, QAS, PRD) simultaneously? The server supports configuring multiple systems in a single configuration file with easy system switching.

๐Ÿ“š Multi-System Configuration Guide

Quick example:

Create .sap-systems.json in the project root:

{
  "version": "1.0",
  "default": "DEV",
  "systems": {
    "DEV": {
      "name": "Development",
      "url": "https://dev-sap.example.com:443",
      "client": "100",
      "auth": { "type": "basic", "username": "${SAP_DEV_USER}", "password": "${SAP_DEV_PASS}" }
    },
    "QAS": {
      "name": "Quality",
      "url": "https://qas-sap.example.com:443",
      "client": "200",
      "auth": { "type": "sso", "cookiePath": "./tmp/qas_cookies.json" }
    }
  }
}

Key features:

  • Configure multiple systems with different authentication methods

  • Set a default system and switch between them at runtime

  • Use system parameter on any tool to target a specific system

  • Supports both Basic Auth and SSO per system

  • Environment variable interpolation with ${ENV_VAR} syntax

New tools:

  • ListSystems - View all configured systems

  • SetDefaultSystem - Change the active system

  • GetSystemInfo - Shows multi-system configuration and status

See the complete guide for configuration details, examples, and troubleshooting.

LLM Access Setup (SAP Internal)

SAP Employees: Before configuring MCP tools in your development environment, you must set up the Hyperspace AI Proxy to access LLM capabilities.

Most AI coding assistants (Cline, Claude Code CLI, Cursor, etc.) require LLM access to function. At SAP, this is provided through the Hyperspace AI Proxy.

Setting Up Hyperspace AI Proxy

Complete setup guide: Hyperspace AI Proxy Documentation

Quick Overview:

  1. Install the hai CLI - Command-line tool for managing LLM proxy

  2. Configure your AI coding assistant - Connect your tool (Cline, Claude Code, Cursor, etc.) to the proxy

  3. Start the proxy - Run the proxy service before using AI tools

Tool-Specific Guides:

โš ๏ธ Complete this setup first before proceeding to configure the MCP server in your AI tool. Without LLM access, your AI coding assistant won't function.

AI Agent Integration

This MCP server integrates with various AI coding assistants. Choose your preferred tool:

Cline (VS Code Extension)

Cline is a VS Code extension that uses MCP servers for AI-assisted development.

Setup:

  1. Install Cline extension in VS Code

  2. Open Cline Settings:

    • VS Code Settings (Ctrl+,)

    • Search "Cline MCP Settings"

    • Click "Edit in settings.json"

  3. Add Server Configuration:

    {
      "mcpServers": {
        "mcp-abap-adt": {
          "command": "node",
          "args": ["C:/PATH_TO/mcp-abap-adt/dist/index.js"],
          "disabled": false,
          "autoApprove": []
        }
      }
    }
  4. Test Connection:

    • Server appears in "MCP Servers" panel

    • Ask Cline to retrieve ABAP source code

    • Verify it uses the MCP server tools

๐Ÿ“š For detailed Cline integration, see docs/Cline_Integration_Guide.md

Claude Code CLI (SAP Internal)

SAP Employees Only: Claude Code CLI is officially approved for productive code development at SAP when used with the Hyperspace LLM Proxy.

Claude Code CLI provides a command-line interface for AI-assisted coding.

Prerequisites:

Setup:

  1. Open Claude Code Settings: Open file .claude.json in your user home folder in your default editor (note: it might be hidden, make sure to view hidden files)

  2. Add MCP Server Configuration: Add to the mcpServers section (or add the whole section to the root of the json):

    {
      "mcpServers": {
        "mcp-abap-adt": {
          "command": "node",
          "args": ["C:/PATH_TO/mcp-abap-adt/dist/index.js"],
          "disabled": false
        }
      }
    }

    Replace C:/PATH_TO/ with the actual path to your cloned repository.

  3. Start Coding:

    # Terminal 1: Start the proxy (if not already running)
    hai proxy start
    
    # Terminal 2: Launch Claude Code
    claude
  4. Test Connection:

    • Server loads automatically when Claude Code starts

    • Ask Claude to retrieve ABAP source code

    • Verify it uses the MCP server tools

Important Notes:

  • โœ… Production ready when used with Hyperspace LLM Proxy

  • โœ… Only use Anthropic models (Haiku, Sonnet, Opus)

  • โš ๏ธ Keep hai proxy running while using Claude Code CLI

  • โš ๏ธ Use absolute paths in MCP configuration

  • โš ๏ธ Do not login - use proxy authentication configured in settings.json

Troubleshooting:

  • MCP server not loading: Check path in settings.json, ensure npm run build was executed

  • hai proxy issues: Run hai proxy status, restart with hai proxy start

  • Configuration issues: See manual configuration guide

๐Ÿ“š Complete documentation: Hyperspace LLM Proxy Claude Code CLI Guide

Other AI Agents

This server works with any MCP-compatible client:

Available Tools & Resources

MCP Resources

Resources provide cacheable, token-efficient access to ABAP objects. Always prefer resources over tools when available.

Resource URI

Description

Token Usage

Documentation

abap://packages/top-level/names

Lightweight package names list

~5K

TopLevelPackagesResource.md

abap://packages/top-level

Complete top-level packages

~35K

TopLevelPackagesResource.md

abap://package/{name}

Detailed package information

~2-5K

PackageResource.md

rap-bo-analysis:///{bo_name}

Complete RAP BO analysis

~20-50K

RAP_Analysis_Resource.md

abap://class/{name}

ABAP class source code

Varies

Resources.md

abap://cds/{name}

CDS view source and metadata

Varies

Resources.md

abap://table/{name}

Database table structure

Varies

Resources.md

cds-view-data:///{name}?params

CDS view data with filtering

Varies

Resources.md

agent-guide://auto

Auto-detect agent-specific guide

~15K

AGENTS.md

๐Ÿ“š Complete resource documentation: docs/Resources.md

Core ABAP Object Retrieval

Retrieve source code and definitions from your ABAP system.

Tool

Description

Documentation

GetProgram

Retrieve ABAP program source code

GetProgram.md

GetClass

Retrieve ABAP class source (supports local includes)

GetClass.md

GetClassInclude

Retrieve specific class include (CCIMP, CCDEF, etc.)

GetClassInclude.md

GetInterface

Retrieve ABAP interface source code

GetInterface.md

GetInclude

Retrieve ABAP include program source

GetInclude.md

GetFunction

Retrieve function module source code

GetFunction.md

GetFunctionGroup

Retrieve entire function group source

GetFunctionGroup.md

GetTable

Retrieve database table structure and metadata

GetTable.md

GetStructure

Retrieve DDIC structure definitions

GetStructure.md

GetDomain

Retrieve domain definitions with data types and values

GetDomain.md

GetDataElement

Retrieve data element definitions with labels

GetDataElement.md

GetTypeInfo

Retrieve ABAP type information

-

GetPackage

Retrieve package details and contained objects

GetPackage.md

GetPackageContents

List objects within a package

GetPackageContents.md

GetTransaction

Retrieve transaction code details

GetTransaction.md

SearchObject

Search for ABAP objects using wildcards (e.g., Z*)

SearchObject.md

Data Query & Analysis

Query table and CDS view data with advanced filtering and batch operations.

Tool

Description

Documentation

GetTableContents

Query table data with filtering, pagination, and batch support

GetTableContents.md

GetCDSViewContents

Query CDS view data with parameters and filtering

GetCDSViewContents.md

Key Features:

  • Advanced WHERE conditions (equality operator)

  • Column selection and ordering

  • Pagination with offset

  • Batch queries (multiple tables/views in one call)

  • Column metadata inclusion

Transport & Version Control

Manage transport requests and track version history across your ABAP landscape. NEW: Improved tools with automatic task/request hierarchy handling, formatted output, and direct version comparison.

Tool

Description

Documentation

GetTransportVersions โญ

Quick analysis: Combines transport + version analysis in one command

GetTransportVersions.md

CompareObjectVersions โญ

Compare versions: Shows exactly what changed between two versions (unified diff, side-by-side, or summary)

CompareObjectVersions.md

ListUserTransports

List ALL transport requests for a user (modifiable + released) with optional date filtering

ListUserTransports.md

GetTransportRequest

Show transport hierarchy, objects, and next steps (formatted output)

GetTransportRequest.md

GetVersionHistory

View version history with transport hierarchy guidance

GetVersionHistory.md

Key Capabilities:

  • Direct version comparison - see exact changes with unified diff, side-by-side, or summary formats

  • Automatic task/parent request hierarchy detection - no manual investigation needed

  • Intelligent version filtering - automatically skips test transports and untransported versions

  • Formatted, human-readable output - clear hierarchy visualization with guided next steps

  • Complete workflow documentation - see TRANSPORT_WORKFLOWS.md

  • Date-filtered transport listing - efficiently find recent transports with from_date parameter (avoids token waste)

  • Filter transport requests by user, status, and target system

  • View detailed transport contents including all objects, tasks, and locks

  • View complete version history including dates, authors, and transport numbers

  • Support for classes, programs, function groups, interfaces, CDS views, and more

Typical Workflows:

Quick Analysis (Recommended):

  1. GetTransportVersions - One command to analyze what changed in a transport

    • Automatically handles task โ†’ parent request hierarchy

    • Finds the relevant version and suggests comparison

  2. CompareObjectVersions - See exactly what changed (one command instead of manual diff)

    • Choose format: unified (git diff), side-by-side, or summary

Step-by-Step Analysis:

  1. GetTransportRequest - Understand transport hierarchy and see all objects

  2. GetVersionHistory - View version history (look for parent request if analyzing a task)

  3. CompareObjectVersions - Compare versions directly to see exact changes

Finding Changes by User:

  1. ListUserTransports - Find ALL transports for a specific user (add from_date parameter for recent transports)

  2. GetTransportVersions - Analyze each transport quickly

  3. CompareObjectVersions - Review changes in detail

๐Ÿ“š Complete Workflow Guide: See docs/TRANSPORT_WORKFLOWS.md for:

  • SAP transport hierarchy explanation (Request โ†’ Task โ†’ Objects)

  • 4 step-by-step workflows with examples

  • Common pitfalls and how to avoid them

  • Version numbering patterns for different object types

RAP Development Tools

Full support for RESTful ABAP Programming (RAP) development.

Tool

Description

Documentation

GetCDSView

Retrieve CDS view source code and annotations

RAP_Tools.md

GetBehaviorDefinition

Retrieve RAP behavior definition source

RAP_Tools.md

GetServiceDefinition

Retrieve RAP service definition source

RAP_Tools.md

GetServiceBinding

Retrieve RAP service binding details

RAP_Tools.md

GetMetadataExtension

Retrieve metadata extension (UI annotations)

RAP_Tools.md

GetAccessControl

Retrieve access control (DCL) definition

RAP_Tools.md

GetBehaviorForRapBo

Retrieve interface behavior for RAP Business Objects

RAP_Tools.md

SearchRapBo

Search RAP Business Objects by description

RAP_Tools.md

๐Ÿ“š Complete RAP tools documentation: docs/RAP_Tools.md

Class Management Tools

Create, modify, and manage ABAP classes directly.

Tool

Description

Documentation

CreateClass

Create new ABAP class in local package ($TMP)

CreateClass.md

CreateClassTests

Create or replace test classes within existing class

CreateClassTests.md

ActivateClasses

Activate one or multiple ABAP classes

ActivateClasses.md

CheckSyntax

Validate ABAP source code syntax

CheckSyntax.md

DeleteLocalClass

Delete local ABAP class (Z/Y classes only)

DeleteLocalClass.md

Typical Workflow:

  1. CheckSyntax - Validate class source code

  2. CreateClass - Create the class (auto_activate: false)

  3. CheckSyntax - Validate test source code

  4. CreateClassTests - Add unit tests

  5. RunClassTests - Execute tests

  6. ActivateClasses - Activate after tests pass

๐Ÿ“š Auto-activation guide: docs/AutoActivation.md

Testing & Quality Assurance

Execute tests, analyze coverage, validate quality, and ensure ABAP Cloud compliance.

Tool

Description

Documentation

GetClassTests

Retrieve local test classes from a class

GetClassTests.md

RunClassTests

Execute unit tests and retrieve results

RunClassTests.md

RunPackageTests

Execute tests for all objects in a package

RunPackageTests.md

GetClassCoverage

Run tests and retrieve code coverage metrics

GetClassCoverage.md

GetObjectUsages

Find where-used list for ABAP objects (classes, interfaces, etc.)

GetObjectUsages.md

GetClassUsages

Find where ABAP classes are used (convenience wrapper)

GetClassUsages.md

Coverage Targets:

  • RAP Behavior Implementation: 80% minimum, 90% target

  • Business Logic Classes: 70% minimum, 85% target

  • Utility/Helper Classes: 60% minimum, 75% target

Running the Server Manually

Typically, you don't run this server standalone - it's integrated into MCP clients. However, you can run it manually for testing:

Standalone Mode

npm run start

Server starts and waits for MCP client connections.

Development/Debug Mode (with Inspector)

npm run dev

Opens MCP Inspector at http://localhost:5173 for interactive testing.

Using the Inspector:

  1. Open the URL in your browser

  2. Click "Connect" on the left

  3. Click "Tools" โ†’ "List Tools"

  4. Select a tool (e.g., GetProgram)

  5. Enter parameters and test

Docker Deployment

Deploy the MCP server using Docker for containerized environments.

Build and Run

# Build the image
docker build -t mcp-abap-adt .

# Run with environment variables
docker run -d \
  -e SAP_URL=https://your-sap-system.com:8000 \
  -e SAP_USERNAME=your_username \
  -e SAP_PASSWORD=your_password \
  -e SAP_CLIENT=100 \
  -p 5173:5173 \
  mcp-abap-adt

Using Docker Compose

Create docker-compose.yml:

version: "3.8"
services:
  mcp-abap-adt:
    build: .
    environment:
      - SAP_URL=https://your-sap-system.com:8000
      - SAP_USERNAME=your_username
      - SAP_PASSWORD=your_password
      - SAP_CLIENT=100
    ports:
      - "5173:5173"

Run with:

docker-compose up -d

๐Ÿ“š Advanced configuration: See Dockerfile

Troubleshooting

Common Issues

Node.js/npm not found:

  • Verify installation: node -v and npm -v

  • Ensure Node.js is in your system PATH

  • Reinstall Node.js if needed

npm install fails:

  • Check internet connection

  • Delete node_modules folder and retry

  • Configure proxy if behind corporate firewall: npm proxy settings

MCP client doesn't connect:

  • Verify correct absolute path in client configuration

  • Ensure server is built: npm run build

  • Restart your MCP client (VS Code, etc.)

  • Check server logs for errors

SAP connection errors:

  • Verify credentials in .env file

  • Ensure SAP system is accessible from your network

  • Check user authorizations for ADT services

  • Verify ADT services are active in transaction SICF

  • For self-signed certificates, set NODE_TLS_REJECT_UNAUTHORIZED=0 (development only!)

Tool-specific issues:

  • Check tool documentation in docs/ folder

  • Verify object names and parameters

  • Review error messages for specific guidance

Getting Help

Contributing & Support

Contributing

We welcome contributions from SAP internal teams and external developers:

For SAP Internal Contributors:

  1. Report Issues: Use GitHub Issues

  2. Suggest Features: Add to Enhancement Proposals

  3. Submit Code: See CONTRIBUTING.md for guidelines (coming soon)

  4. Share Feedback: Help us improve MCP capabilities for ABAP development

Development Setup:

# Install dependencies and setup hooks
npm install

# Run tests
npm test

# Run all checks (format, lint, typecheck, tests)
npm run validate

CI/CD Configuration:

The project uses GitHub Actions for continuous integration. Required GitHub secrets:

  • CODECOV_TOKEN (optional): Token for uploading test coverage to Codecov

    • Get from: https://codecov.io/

    • If not configured, coverage upload will be skipped but builds will still succeed

    • Set in repository Settings โ†’ Secrets and variables โ†’ Actions

For External Contributors:

  • This fork focuses on SAP-internal evaluation scenarios

  • For the upstream project, see mario-andreschak/mcp-abap-adt

  • Feature contributions welcome that enhance MCP evaluation capabilities

Project Goals:

  • Explore how MCP can improve AI-assisted ABAP development

  • Serve as a reference implementation for MCP server development

  • Enable practical use of AI coding assistants for ABAP tasks

Documentation

  • AI Agent Guide: AGENTS.md - Comprehensive guide for AI coding assistants

  • Agent-Specific Guides: agents/ folder - Optimized guides for specific AI agents

  • Tool Documentation: docs/ folder - Detailed documentation for each tool

  • Example Project: Example_AGENTS.md - Sample AGENTS.md for ABAP projects

Standards & Best Practices

Version Information


This MCP server bridges the gap between AI coding assistants and SAP ABAP systems, enabling intelligent, context-aware development workflows.

Available Tools

65 tools
ActivateClassesA

Activate ABAP classes after creation or modification. Provide either class_name for a single class or class_names array for multiple classes.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameNoSingle ABAP class name to activate (provide this OR class_names)
class_namesNoArray of ABAP class names to activate (provide this OR class_name)
preaudit_requestedNoWhether to request pre-audit (default: true)

TDQS

A3.7/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 lifecycle prerequisite (class must already exist/be modified) but says nothing about side effects, idempotency, lock/permission needs, or what activation failure looks like โ€” real gaps for a state-changing 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?

Two tight sentences with the core action front-loaded and the parameter routing immediately after. Every clause 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?

With no annotations and no output schema, the description should say more about the result of activation (success/failure signal, whether it returns diagnostics). It covers the invocation contract adequately but leaves the outcome unspecified.

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, including the class_name/class_names exclusivity that the description merely repeats. The description adds no meaning for preaudit_requested beyond what the schema states.

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?

States a specific verb (Activate) and resource (ABAP classes) and scopes it to a lifecycle stage ('after creation or modification'), which distinguishes it from CreateClass/DeleteLocalClass. It does not explicitly name the sibling it complements, but the action 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 Guidelines4/5

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

Gives clear context for when to invoke it (post-creation or post-modification) and states the mutually exclusive parameter pattern ('either class_name ... or class_names'). It stops short of naming alternatives or prerequisites such as needing an existing class first.

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

CheckSyntaxA

Check ABAP source code syntax and return detailed error information. Supports three input modes: file_path (from tmp folder), source_code (direct code), or object_name (existing object). Priority: file_path > source_code > object_name.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to ABAP source file to check. Defaults to tmp folder for relative paths (e.g., "ZCL_MY_CLASS.abap"). Supports absolute paths. Auto-detects class name from filename.
object_nameNoName of the ABAP object. If file_path and source_code not provided, will fetch source from this existing class. Also used for file_path when class name cannot be auto-detected.
object_typeNoOptional ABAP object type (CLAS, PROG, FUGR, etc. - auto-detected if not provided)
source_codeNoABAP source code to check for syntax errors (used if file_path not provided)

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 must carry the burden. It does disclose the return behavior (detailed error information) and the three input modes, which is useful. However, it never states that this is a non-mutating check with no side effects on the ABAP system, nor any auth or timeout constraints.

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 purpose followed by the mode/priority rule. Every clause carries information and there is no filler.

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 4-parameter tool with no annotations and no output schema, the description covers purpose, input modes, and output type. It leaves the safety profile (read-only, no activation) and validation failure behavior unspecified, which the absent annotations leave unaddressed.

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 each parameter is already documented with its own guidance, including the same precedence rules the description restates. The description adds no syntax, format, or example detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource: 'Check ABAP source code syntax and return detailed error information.' That is clearly distinct from siblings like RunATC (ATC check runs) or GetProgram (retrieval). It stops short of naming a sibling explicitly, but the resource/verb pairing 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 Guidelines3/5

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

It explains the three input modes and their precedence, which guides invocation, but it never says when to prefer this tool over RunATC or a source-fetch tool, nor any prerequisites. Usage is implied by the input-mode rules rather than stated as a selection criterion.

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

CompareObjectVersionsA

Compare two versions of an ABAP object and return a formatted diff. Supports multiple output formats: unified (like git diff), side-by-side, or summary. Use with GetVersionHistory or GetTransportVersions to identify version IDs, then compare them to see exactly what changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: unified (like git diff, default), side-by-side (comparison view), or summary (statistics only)unified
object_nameYesName of the ABAP object (e.g., CL_MAN_CHANGELOG)
object_typeYesObject type: CLAS (class), PROG (program), INCL (include), FUGR (function group), INTF (interface), DDLS (CDS view), BDEF (behavior definition), DCLS (access control)
version_newYesNewer version identifier in timestamp/version format (e.g., 20260201144253/00000) from GetVersionHistory
version_oldYesOlder version identifier in timestamp/version format (e.g., 20260201144253/00006) from GetVersionHistory
context_linesNoNumber of context lines to show around changes in unified format (default: 3)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does well here, naming the three output modes and characterizing each (summary = 'statistics only'). It stops short of stating that this is a non-mutating read operation or any system/permission prerequisites, which is the only meaningful gap for a no-annotation 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?

Two sentences, front-loaded with the core action and then the supporting workflow. No filler; every clause carries routing or output-format information.

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?

No output schema exists, so the description must (and does) characterize the return value as a formatted diff with three selectable formats. It is nearly complete for a comparison tool, though it could note that summary mode returns no line-level detail, which affects downstream parsing expectations.

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 schema already documents all six parameters including the format enum and version ID syntax. The description echoes the format options and adds version-ID provenance (traceable to GetVersionHistory) but adds little beyond the schema, 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?

States a specific verb and resource: 'Compare two versions of an ABAP object and return a formatted diff.' This is clearly distinguishable from siblings like GetVersionHistory (retrieval) and GetProgram (single-version fetch), so an agent can route correctly without opening schemas.

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

Usage Guidelines5/5

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

Explicitly names the alternative workflow: 'Use with GetVersionHistory or GetTransportVersions to identify version IDs, then compare them to see exactly what changed.' It tells the agent both the prerequisite tools and the goal state that selects this tool, leaving nothing to inference.

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

CreateBehaviorDefinitionA

Create or replace a RAP Behavior Definition (BDEF) in the SAP system. Only supports local packages ($TMP, $LOCAL, $-prefixed). Supports managed, unmanaged, projection, and abstract types. Auto-activates by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoPackage name (defaults to $TMP, must be a local package)
bdef_typeYesType of behavior definition
descriptionNoOptional description for the BDEF
source_codeYesComplete BDEF DDL source code
auto_activateNoOptional: Automatically activate the BDEF after creation (default: true)
behavior_nameYesBDEF name (must start with Z or Y)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true, only used if auto_activate is true)

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 full burden. It usefully discloses upsert semantics ('create or replace') and default activation behavior, but omits prerequisites (auth/transport needs), what happens if a BDEF already exists, and failure modes for non-local packages.

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?

Four short sentences, front-loaded with the core action and followed by the two most decision-relevant constraints (package restriction, default activation). No filler, though the type enumeration mildly duplicates the schema enum.

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 7-parameter mutation tool with no annotations and no output schema, the description covers scope, constraints, and activation but leaves out permission/transport prerequisites and result behavior. Adequate but with clear gaps an agent would want filled.

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 7 parameters are already documented by the schema (defaults, enums, naming rule for behavior_name). The description only reinforces the type list and package constraint, adding little beyond the structured fields. 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?

States a specific verb+resource: create/replace a RAP Behavior Definition (BDEF) in SAP. This is clearly distinguishable from read-side siblings like GetBehaviorDefinition and ExportBehaviorDefinitionToFile. An agent can tell what artifact is produced 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?

Gives real constraints ('Only supports local packages ($TMP, $LOCAL, $-prefixed)') and the supported BDEF kinds, which implies when it can be used. However, it never names an alternative or states when to prefer another tool over this one, so routing guidance is only implied.

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

CreateCDSViewA

Create or replace a local CDS DDL view in the SAP system. Only supports local packages ($TMP, $LOCAL, $-prefixed). Auto-activates by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoPackage name (defaults to $TMP, must be a local package)
view_nameYesCDS view name (must start with Z or Y)
descriptionNoOptional description for the CDS view
source_codeYesComplete DDL source code for the CDS view
auto_activateNoOptional: Automatically activate the CDS view after creation (default: true)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true, only used if auto_activate is true)

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 full burden and does disclose useful traits: it is a mutation tool that can replace an existing view, it is restricted to local packages, and it auto-activates by default. It stops short of stating authentication/prerequisite requirements (e.g. prior login) or the failure mode when the view already exists in a transportable package.

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?

Three short front-loaded sentences with no filler; the core purpose and constraints come first. The final sentence restates the schema's auto_activate default, which is slight redundancy but harmless.

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 mutation tool with no annotations and no output schema, the description covers scope and activation behavior but omits prerequisites (session/login), whether activation results are returned, and what happens on syntax or package errors. Adequate but with clear 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 description coverage is 100%, so defaults, the Z/Y naming rule, and the auto_activate/preaudit_requested relationship are already documented in the schema. The description adds no parameter-level detail beyond what the schema provides, 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?

States a precise verb pair (create or replace) plus a specific resource (local CDS DDL view) and scope (local packages only). This clearly distinguishes it from siblings like CreateClass, CreateBehaviorDefinition, and CreateServiceDefinition, which target different artifacts.

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?

"Only supports local packages ($TMP, $LOCAL, $-prefixed)" is a real precondition that tells the agent when the tool will work, but there is no guidance on alternatives (e.g. using GetCDSView to inspect an existing view first, or routing non-local packages elsewhere) and no explicit when-not statement.

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

CreateClassB

Create a new ABAP class in local package ($TMP) without transport assignment

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoPackage name (defaults to $TMP, must be local package)
class_nameYesName of the ABAP class (must start with Z or Y)
descriptionNoOptional description for the class
source_codeYesComplete ABAP class source code (definition and implementation)
auto_activateNoOptional: Automatically activate the class after creation (default: false)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true, only used if auto_activate is true)

TDQS

B3.3/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 disclosure burden, but it does contribute one real behavioral fact: the class is created without a transport assignment (i.e., a non-transportable local object). It omits other behavior an agent would want for a mutation tool โ€“ required authorization, error/rollback behavior, whether the class is left inactive by default, and what is returned โ€“ leaving it only partly transparent.

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?

A single front-loaded sentence with zero filler; the resource comes first and the two constraining qualifiers follow immediately. Nothing could be trimmed without losing information.

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 write tool with no annotations and no output schema, the definition is thin: it leaves unclear what the tool returns (class object, activation status, errors), how auto_activate/preaudit_requested interact with creation, and how the result relates to the CreateClassImplementation/CreateClassTests siblings. The schema covers the inputs, but the description adds nothing about outcome or lifecycle.

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 every parameter (package default, Z/Y name rule, source_code contents, auto_activate, preaudit_requested) is already documented in the schema. The description only echoes the $TMP default and adds no new parameter-level detail, so the baseline 3 applies.

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?

States a specific verb+resource (create an ABAP class) with two qualifying constraints: it lands in a local package ($TMP) and carries no transport assignment. That scope clearly separates it from ImportClassFromFile, CreateClassImplementation, and the various Get*/Export* siblings, though it never names an alternative explicitly.

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?

There is no when-to-use guidance at all: nothing says when to prefer this over CreateClassImplementation, CreateClassTests, or ImportClassFromFile, and no prerequisite (class must not already exist, must be inactive, etc.) is stated. The only usage signal is the implicit $TMP restriction baked into the description.

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

CreateClassImplementationB

Write or replace the local class implementations include (CCIMP) of an existing global ABAP class. Use this to update method implementations for local classes defined in the class.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the existing ABAP class
source_codeYesComplete CCIMP source code (local class implementations)
auto_activateNoOptional: Automatically activate the class after updating (default: true)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. 'Write or replace' hints at destructive overwrite of existing implementations, but nothing is said about activation side effects (auto_activate defaults true), pre-audit behavior, required authorizations, or what happens to existing code not present in the new source. This is thin for a mutation tool with zero annotation coverage.

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?

Two short sentences with the key operation front-loaded. The second sentence largely restates the scope of the first ('method implementations' vs 'CCIMP'), so it is efficient but not entirely waste-free.

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?

A mutation tool with no annotations and no output schema should explain return/error behavior and the activation implications of the defaulted boolean flags. The description covers what is being written but leaves the agent to infer failure modes and overwrite semantics from the schema alone.

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 four parameters including their defaults. The description adds no syntax, format, or sizing guidance beyond the schema (e.g. whether source_code must be complete or may be partial), so 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?

Names a specific verb+resource: writing/replacing the CCIMP include of an existing global ABAP class. The phrase 'local class implementations (CCIMP)' and 'existing global ABAP class' distinguishes it from siblings like CreateClass and DeleteLocalClass, so an agent can route correctly.

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 second sentence gives implied context ('use this to update method implementations for local classes'), which scopes it to the local-implementation case. However, it names no explicit alternatives (e.g. CreateClass, DeleteLocalClass, CreateClassTests) and states no when-not conditions.

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

CreateClassTestsB

Create or replace test classes within an existing global ABAP class

ParametersJSON Schema
NameRequiredDescriptionDefault
auto_activateNoOptional: Automatically activate the parent class after adding tests (default: false)
backup_existingNoOptional: Create backup of existing test classes before replacing
test_source_codeYesComplete test class source code (local test classes implementation)
parent_class_nameYesName of the existing ABAP class to add test classes to
preaudit_requestedNoOptional: Request pre-audit during activation (default: true, only used if auto_activate is true)

TDQS

B3.1/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 behavioral burden. It states 'create or replace' but doesn't disclose what happens to existing test classes (overwrite), whether backups are needed, activation side effects, or permission requirements. The schema parameters hint at these, but the description adds no behavioral context beyond the verb.

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?

A single, front-loaded sentence that states the action and target. No wasted words.

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 mutation tool with no annotations and no output schema, the description is thin. It omits key context like the replace/overwrite behavior, activation implications, and how it relates to sibling tools. The rich schema covers parameters, but the description doesn't compensate for the lack of behavioral guidance.

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 five parameters are documented in the schema with defaults and meanings. The description adds no parameter details, which is acceptable given the high coverage. 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?

States a specific verb+resource: 'Create or replace test classes within an existing global ABAP class'. The 'or replace' behavior is useful clarity. It doesn't explicitly differentiate from siblings like CreateClass or GetClassTests, but the resource (test classes) is narrow enough to be understandable.

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 on when to use this versus alternatives like CreateClass, RunClassTests, or GetClassTests. The description doesn't mention prerequisites such as the parent class already existing, even though the schema notes it. An agent gets no routing help.

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

CreateServiceDefinitionA

Create or replace a Service Definition (SRVD) in the SAP system. Only supports local packages ($TMP, $LOCAL, $-prefixed). Auto-activates by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoPackage name (defaults to $TMP, must be a local package)
descriptionNoOptional description shown in ADT
source_codeYesComplete service definition DDL source (define service ... { expose ...; })
service_nameYesService definition name (must start with Z or Y)
auto_activateNoOptional: Automatically activate after creation (default: true)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true)

TDQS

A3.7/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 and does disclose two real behaviors: an existing definition is replaced (destructive overwrite) and activation happens automatically by default. However, it omits auth/authorization requirements, what happens if activation fails, and whether a failed activation leaves the object inactive or rolls back.

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, each carrying distinct information (what it creates, the package restriction, the activation default), with the core purpose front-loaded. No filler or redundancy.

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?

Parameters are fully documented by the schema, but this is an unannotated create/replace mutation with no output schema, so the description should say something about the result (success indicator, activation outcome). The package constraint is covered; the response and failure behavior are not.

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 and the baseline is 3. The description reinforces the local-package constraint on 'package' and the auto-activation default, but adds no syntax, format, or validation detail beyond the schema text.

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

Purpose5/5

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

The description gives a specific verb pair ('Create or replace') plus a precise resource ('Service Definition (SRVD)') that cleanly separates it from the CreateCDSView, CreateClass, and CreateBehaviorDefinition siblings. The 'or replace' wording also telegraphs the tool's overwrite semantics rather than just naming an operation.

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

Usage Guidelines3/5

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

It states one hard precondition (only local packages, $TMP/$LOCAL/$-prefixed) which meaningfully narrows when the tool is usable, but there is no guidance on when to choose this versus the read counterpart GetServiceDefinition or versus transport-based flows for non-local packages. Usage is implied rather than spelled out.

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

DeleteLocalClassA

Delete a local ABAP class (only Z/Y classes in local packages)

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class to delete (must start with Z or Y)

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 bears the full burden of behavioral disclosure. It says the tool deletes a class, but it does not state whether deletion is irreversible, what permissions are required, or what happens to dependent objects; that is a significant gap for a destructive operation.

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 and the key scope restriction efficiently for a one-parameter tool.

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 simple one-parameter delete tool with complete schema coverage, the core action and scope are adequately covered. However, with no annotations and no output schema, the description should at least mention irreversibility or authorization requirements, and its omission leaves a meaningful behavioral 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%, and the single class_name parameter is fully documented in the schema, including the Z/Y prefix requirement. The description's parenthetical reinforces that constraint but adds no new syntax or format detail 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 states a specific verb and resource: delete a local ABAP class. It also narrows the scope to Z/Y classes in local packages, which helps distinguish it from broader class operations like CreateClass or GetClass.

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 parenthetical restriction to Z/Y classes in local packages is a usage constraint, but the description never names alternatives or states when not to use this tool. The guidance is therefore implied rather than explicit.

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

ExportAccessControlToFileA

Export a CDS access control (DCL) from the system directly to a file in the tmp folder with .dcls.asdcls extension. Automatically converts DCL name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
dcl_nameYesName of the access control (DCL) to export

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral disclosure. It does state important traits: writing to a specific tmp folder, using a .dcls.asdcls extension, and automatically converting the DCL name to Z-namespace. However, it omits whether existing files are overwritten, what permissions are required, what the return value is, and error 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?

The description is two concise sentences that front-load the main action and output destination. Every sentence provides useful information without redundancy or filler. It is appropriately sized for the tool's simplicity.

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 simple schema and no output schema, the description covers the core action and output file details. However, it does not state what the tool returns (e.g., file path or success indicator) or address potential side effects like overwriting. For a file-export tool, this leaves a moderate gap in contextual completeness.

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 schema already documents the single dcl_name parameter. The description adds meaningful context beyond the schema by noting that the DCL name is automatically converted to Z-namespace, which affects how the input name is interpreted. This additional semantic detail justifies a score above the baseline 3.

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 (Export), resource (CDS access control (DCL)), and output destination (file in tmp folder with .dcls.asdcls extension). It clearly distinguishes from sibling export tools like ExportCDSViewToFile or ExportClassToFile by naming the exact object type. An agent can identify the tool's action 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 Guidelines2/5

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

The description gives no indication of when to use this tool versus alternatives such as GetAccessControl or other export tools. It lacks any prerequisites, conditions, or exclusions. The agent must infer usage from 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.

ExportBehaviorDefinitionToFileA

Export a RAP behavior definition from the system directly to a file in the tmp folder with .bdef.asbdef extension. Automatically converts behavior name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
behavior_nameYesName of the behavior definition to export

TDQS

A3.5/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 usefully discloses non-obvious behavior: the output location (tmp folder), the .bdef.asbdef extension, and the automatic Z-namespace conversion of the behavior name. However it omits overwrite behavior for an existing file and what the call returns (e.g., a path), which matter for a write-to-disk 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?

Two short sentences with no filler, and the core action plus destination are front-loaded before the namespace-conversion detail.

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?

With no output schema and no annotations, the description should carry more of the contract. It covers destination and naming behavior but leaves the return value (file path?) and overwrite semantics unexplained, which are the details an agent needs to chain this call 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?

One required parameter with 100% schema description coverage, so the schema already documents behavior_name and the baseline is 3. The description adds marginal value by noting the name is converted to Z-namespace, but gives no further syntax or format guidance.

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?

States a specific verb (export) and resource (RAP behavior definition) plus the destination (file in tmp with .bdef.asbdef). It implicitly contrasts with the sibling GetBehaviorDefinition by emphasizing file output, but never names that alternative explicitly, so differentiation is left to inference.

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?

Usage is implied by the 'to file' framing versus retrieval siblings, but there is no explicit statement of when to choose this tool over GetBehaviorDefinition or the other Export*ToFile variants, nor any prerequisites or exclusions.

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

ExportCDSViewToFileA

Export a CDS DDL view from the system directly to a file in the tmp folder with .ddls.asddls extension. Automatically converts view name and SQL view name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
view_nameYesName of the CDS view to export (e.g., I_Material, C_SalesOrder)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and it partially discharges it by disclosing the output location, the fixed file extension, and a non-obvious side effect (automatic Z-namespace conversion of view name and SQL view name). It omits other relevant traits: whether an existing file is overwritten, what is returned to the caller, and any permission/authorization prerequisites.

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. The primary action and destination are front-loaded, and the second sentence carries genuinely useful information about the namespace transformation rather than restating the name.

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 one-parameter file-writing tool with no annotations and no output schema, the description covers the essentials (what is exported, where it lands, how it is named). It stops short of the details an agent would want before invoking a write-to-disk operation: overwrite behavior, return value, and error/authorization conditions.

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 there is only one parameter, whose schema entry already documents the name and gives examples (I_Material, C_SalesOrder). The description adds no syntax, format, or naming details for view_name beyond what the schema states, 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?

States a specific verb (Export), a specific resource (CDS DDL view), and a specific destination (a file in the tmp folder with .ddls.asddls extension). This cleanly distinguishes it from the sibling read tools GetCDSView/GetCDSViewContents and from the other Export*ToFile tools that target different object types.

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 phrase 'directly to a file in the tmp folder' implies the use case (persisting a view to disk rather than retrieving content inline), which is enough to infer usage against GetCDSViewContents. However, it never names an alternative or states an explicit when/when-not condition, so guidance remains implicit rather than stated.

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

ExportClassToFileA

Export an ABAP class from the system directly to file(s) in the tmp folder. Optionally export all includes (definitions, implementations, macros, testclasses). Automatically creates the tmp folder if it does not exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class to export
single_fileNoOptional: Combine all includes into single file (default: false - separate files per include)
include_typesNoOptional: Include types to export. Default: ['main']. Use 'all' for all available includes.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose real side effects: files are written to the tmp folder and the folder is auto-created if missing. However it omits overwrite behavior, required authorizations, and what happens to pre-existing files of the same name.

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?

Three short sentences, front-loaded with the primary action and destination, then the optional include behavior, then the folder-creation side effect. No filler, though the trailing sentence could have been merged.

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 three-parameter export tool with no output schema and no annotations, the description covers destination, optional include scope, and a key side effect. It would be complete at 5 with a note on returned file paths or overwrite semantics, but nothing critical blocks correct invocation.

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 class_name, single_file, and include_types are already documented in the schema. The description only restates the include-export idea ('optionally export all includes') without adding syntax, defaults, or behavior beyond the schema, so baseline 3 applies.

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?

States a specific verb (Export) and resource (ABAP class) with the destination (file(s) in the tmp folder), which clearly separates it from read-only siblings like GetClass or GetClassInclude. It does not explicitly name a sibling to disambiguate from ImportClassFromFile, so it stops short of a 5.

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?

Usage is implied by the verb and destination ('export directly to file(s)'), but there is no explicit when-to-use or when-not guidance, and no mention of the inverse ImportClassFromFile sibling or when to prefer GetClass for in-context reading.

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

ExportFunctionGroupToFileA

Export an ABAP function group from the system directly to a file in the tmp folder with .fugr.abap extension. Automatically converts function group name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
function_groupYesName of the ABAP function group to export

TDQS

A3.7/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 and does disclose two useful behaviors: the output location/extension and the automatic Z-namespace name conversion. It is silent on overwrite behavior for an existing file, permission requirements, and failure modes, which are material for a tool that writes to disk.

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, and the primary action plus output destination are front-loaded before the secondary namespace-conversion note. Every clause carries information.

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?

No output schema and no annotations exist, so the description must cover behavior alone. It adequately explains what gets produced and where, but leaves an agent unsure about return value, overwrite semantics, and error conditions for a write-to-disk operation.

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% and the single parameter is self-explanatory, so the baseline is 3. The description does add one piece of parameter-relevant meaning beyond the schema: that the supplied function group name is converted to the Z-namespace, so the value passed may not match the file name written.

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?

States a specific verb (Export) and resource (ABAP function group) plus the exact artifact produced: a file in the tmp folder with a .fugr.abap extension. This distinguishes it from GetFunctionGroup/GetFunction, which retrieve objects rather than writing them to disk.

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 phrase 'directly to a file' implies the export-to-disk use case versus retrieving content via GetFunctionGroup, but no explicit when-to-use or when-not-to-use guidance is given, nor any precondition such as the group needing to exist or the caller needing authorization.

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

ExportInterfaceToFileA

Export an ABAP interface from the system directly to a file in the tmp folder with .intf.abap extension. Automatically converts interface name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
interface_nameYesName of the ABAP interface to export

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 full burden, and it does disclose concrete behavior: output location (tmp folder), file extension (.intf.abap), and automatic Z-namespace name conversion. However, it omits whether existing files are overwritten, whether the interface must already exist, and how failures surface.

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?

Two tight sentences with the destination and naming behavior front-loaded and no filler. Sized appropriately for a simple single-parameter tool.

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 one-parameter export with no annotations and no output schema, the description covers what gets produced, where, and the naming side effect. Remaining gaps (overwrite behavior, error conditions) are minor for a simple file-export utility.

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 single parameter is already documented, giving a baseline of 3. The description adds genuine value beyond the schema by disclosing that interface_name is automatically converted to the Z-namespace, a transformation the caller should know about.

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?

States a specific verb (export), resource (ABAP interface), and destination (a file in the tmp folder with .intf.abap extension). This clearly separates it from the other Export*ToFile siblings by resource type and from GetInterface. It stops short of explicitly signaling the relationship to GetInterface, but the purpose is unmistakable.

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?

Usage is implied by the verb and destination (export an interface to disk), but there is no explicit when-to-use guidance or mention of alternatives like GetInterface or the other Export tools. The agent must infer the selection logic from the name and description alone.

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

ExportMetadataExtensionToFileA

Export a CDS metadata extension from the system directly to a file in the tmp folder with .ddlx.asddlxs extension. Automatically converts extension name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
extension_nameYesName of the metadata extension to export

TDQS

A3.5/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 genuinely useful behavior: the output lands in the tmp folder, the file gets a .ddlx.asddlxs extension, and the extension name is silently rewritten into the Z-namespace. It omits whether an existing file is overwritten, what filename results, and any authorization or error behavior.

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?

Two tight sentences, front-loaded with the action and output location; nothing is padding. Slightly under-optimized in that the namespace-conversion clause is appended rather than framed as a behavioral warning.

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 one-parameter export tool with no output schema and no annotations, the description covers what is exported, where it is written, and the name transformation. The main gap is that it never gives the concrete resulting path or filename pattern an agent would need to locate the exported file afterward.

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% for the single extension_name parameter, so the baseline is 3. The description adds only a tangential note that the name is converted to Z-namespace, which is behavior rather than parameter semantics, and adds no format or valid-value guidance 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?

States a specific verb (Export) plus resource (CDS metadata extension) and the destination (a file in the tmp folder with .ddlx.asddlxs extension), so an agent can distinguish this from the GetMetadataExtension reader sibling. It stops short of naming any sibling explicitly, so it is clear but not maximally differentiating.

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?

Usage is only implied: the description makes clear you call this when you want the metadata extension landed on disk rather than returned, and the '.'ddlx.asddlxs'' detail reinforces that. There is no explicit statement of when to prefer this over GetMetadataExtension, no prerequisites, and no exclusions.

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

ExportProgramToFileB

Export an ABAP program from the system directly to a file in the tmp folder with .prog.abap extension. Automatically converts program name to Z-namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
program_nameYesName of the ABAP program to export

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the exact destination folder and file extension plus an unexpected behavior (automatic Z-namespace conversion), which is real added value. However, it omits whether existing files are overwritten, permission requirements, and what the call returns (e.g., the resulting path).

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?

Two tight sentences with the destination disclosed first, followed by the transformation behavior. No filler, though the second sentence could have absorbed a returned-path detail at little cost.

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 simple one-parameter export tool with no output schema, the description covers the file target and extension but leaves the agent guessing about the resulting file path, overwrite behavior, and error conditions. Adequate but with clear 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 description coverage is 100% for the single program_name parameter, so the baseline is 3. The mention of automatic Z-namespace conversion loosely informs how the name value is interpreted, but it does not clarify format or case expectations 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?

States a specific verb (Export), resource (ABAP program), and output target (file in tmp folder with .prog.abap extension). This clearly distinguishes it from GetProgram (which returns content rather than writing a file) and from the other Export*ToFile siblings by resource type. It does not explicitly name a sibling, so it falls short of a 5.

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?

The description never says when to choose this over GetProgram or the other Export*ToFile tools; that it writes to a file is stated as capability, not as a selection condition. The 'use this when you want a file on disk' implication is left entirely to inference. No exclusions or alternatives are given.

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

GetAccessControlC

Retrieve access control (DCL) definition source code

ParametersJSON Schema
NameRequiredDescriptionDefault
dcl_nameYesName of the access control definition

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'Retrieve' implies a safe read, but nothing states what happens when the DCL does not exist, whether authorization is required, or what form the returned source takes. For a tool with zero annotation coverage this is a notable gap.

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?

A single front-loaded sentence with no filler; every word earns its place. It is terse to the point of being thin, but not padded.

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 one-parameter read tool with no output schema and no annotations, the definition covers the core purpose but omits usage routing, failure behavior, and any note on the returned source. Adequate but with clear 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 description coverage is 100%, so dcl_name is already documented in the schema and the baseline is 3. The description adds only the 'DCL' acronym context and does not clarify name format or scoping.

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?

States a specific verb (Retrieve) and resource (access control (DCL) definition source code), and the DCL expansion clarifies the domain object. It does not, however, distinguish itself from the sibling ExportAccessControlToFile, which an agent could easily confuse with it.

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?

There is no when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as ExportAccessControlToFile. The agent must infer usage entirely from the name.

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

GetBehaviorDefinitionC

Retrieve RAP behavior definition source code and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
cds_view_nameYesName of the root CDS view entity

TDQS

C2.9/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. 'Retrieve' implies a read operation, but the description says nothing about permissions, error behavior when no behavior definition exists, or whether the returned metadata includes drafts/authorization info.

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?

A single, front-loaded sentence with no filler, which is appropriately sized for a one-parameter getter. It is perhaps slightly over-terse, but nothing is wasted.

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?

With no output schema and no annotations, the description does state what is returned (source code plus metadata), which covers the essentials. It still omits failure modes and access requirements that an agent would benefit from for a repository lookup tool.

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 sole parameter cds_view_name is fully documented by the schema as 'Name of the root CDS view entity'. The description adds no syntax or format detail beyond that, so the baseline 3 applies.

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 gives a specific verb ('Retrieve') and resource ('RAP behavior definition source code and metadata'), so the agent knows exactly what comes back. It does not, however, distinguish this from the close sibling GetBehaviorForRapBo, which also deals with RAP behavior, leaving some ambiguity about which to pick.

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?

There is no when-to-use guidance, no stated prerequisites (e.g. that the CDS view must be a RAP root BO), and no mention of the alternative GetBehaviorForRapBo or GetCDSView. The agent must infer context entirely.

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

GetBehaviorForRapBoC

Retrieve interface behavior definition for RAP Business Object from RONT_NODE table

ParametersJSON Schema
NameRequiredDescriptionDefault
rap_bo_nameYesName of the RAP Business Object to search for

TDQS

C2.9/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 behavioral burden, and it does little: 'Retrieve' implies a read, and the RONT_NODE source table is disclosed, but there is no statement about permissions, whether the BO must exist/be activated, error behavior when no behavior definition exists, or the shape/size of the returned definition.

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?

One front-loaded sentence with no filler and no redundancy. The trailing 'from RONT_NODE table' is implementation detail that only marginally helps an agent, but nothing is wasted.

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 one-parameter read tool with no output schema this is close to minimally viable, but it omits the return-shape description that an output-schema-less tool needs and gives no routing signal against the near-identical GetBehaviorDefinition sibling.

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?

There is a single parameter (rap_bo_name) with 100% schema description coverage, so the schema already defines its meaning; the description adds no format, naming-convention, or case-sensitivity detail beyond it. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb (Retrieve) and resource (interface behavior definition for RAP Business Object), which is clearer than a bare name restatement. However, it never distinguishes itself from the very close sibling GetBehaviorDefinition, nor from SearchRapBo/GetBopfBusinessObject, so an agent cannot tell which of these near-duplicate readers to pick.

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 when-to-use guidance of any kind. The description does not say when this is preferable to GetBehaviorDefinition (the obvious alternative), whether it requires an activated object, or what happens when the BO has no behavior definition.

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

GetBopfBusinessObjectB

Retrieve BOPF/BOPF Business Object definition including nodes, properties, associations, actions, determinations, and validations

ParametersJSON Schema
NameRequiredDescriptionDefault
analyzeNofalse (default): structural overview โ€” nodes, persistence, actions, determinations, validations. true: full analysis โ€” additionally loads ABAP source of all implementation classes (main, local definitions CCDEF, local implementations CCIMP, unit tests CCAU).
bo_nameYesName of the BOPF Business Object (e.g., I_DEFECT_TP)

TDQS

B3.2/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 scope of what is retrieved, which is useful, but says nothing about read-only safety, permission requirements, or the cost difference of analyze=true (which loads ABAP source). Adequate but incomplete for an unannotated tool.

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

Conciseness4/5

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

A single front-loaded sentence that lists the returned artifacts with no filler. Efficient, though the redundant 'BOPF/BOPF' phrasing slightly detracts.

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?

With no output schema, the description must convey the return shape; it does list the top-level artifacts, which is helpful, but does not describe the response structure, depth of nesting, or the heavier cost of the analyze path. Sufficient to call the tool, not to anticipate its output.

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 both parameters (bo_name and analyze) are fully documented in the schema, including the meaning of analyze=false vs true. The description adds no parameter detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb (Retrieve) and resource (BOPF Business Object definition) and enumerates the returned content (nodes, properties, associations, actions, determinations, validations). It is distinguishable from the sibling SearchBopfBusinessObjects, though the 'BOPF/BOPF' duplication is a small wording defect and no sibling is named explicitly.

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?

There is no when-to-use or when-not-to-use guidance and no alternatives named. An agent must infer that this fetches a single known BO by name rather than searching, and gets no cue about when GetBehaviorForRapBo or GetBehaviorDefinition would be preferable.

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

GetCDSViewC

Retrieve CDS view source code and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
view_nameYesName of the CDS view entity
include_annotationsNoInclude CDS annotations in response (default: true)

TDQS

C2.6/5.0
Behavior2/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 behavioral burden. It implies a read-only operation but says nothing about authorization requirements, which system/version is read, response size limits, or whether inactive versions are returned.

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?

A single short sentence, front-loaded with the verb and resource, with no wasted words. It is efficient, though arguably under-specified rather than genuinely concise.

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?

With no annotations and no output schema, the description should clarify what 'metadata' comprises versus source code, the relationship to GetCDSViewContents, and any system/permission context. It leaves all of that unspecified.

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 both parameters (view_name, include_annotations) are already documented with defaults. The description adds nothing beyond the schema, which is the baseline-3 case.

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

Purpose3/5

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

States a clear verb ('Retrieve') and resource ('CDS view') with two outputs (source code and metadata). However, it does not distinguish itself from the near-identical sibling GetCDSViewContents, nor from ExportCDSViewToFile, leaving an agent unable to tell which to pick.

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?

There is no when-to-use guidance, no prerequisites (e.g., active system, required authorizations), and no mention of the alternative tools (GetCDSViewContents, ExportCDSViewToFile) that an agent must choose between.

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

GetCDSViewContentsA

Query CDS view data with filtering, pagination, parameter support, and batch queries. Either provide view_name for a single query, or provide queries array for batch mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoOptional: Number of rows to skip for pagination (default: 0). Warning: CDS views recalculate on each query.
columnsNoOptional: Specific columns to retrieve (default: all columns). Column names are validated against view metadata.
queriesNoOptional: Batch mode - execute multiple queries in one call (max: 5 for CDS views, omit when using view_name). Each query supports all single-query parameters.
max_rowsNoOptional: Maximum number of rows to retrieve (default: 100, max: 500)
order_byNoOptional: Column names for sorting results. Column names are validated against view metadata.
view_nameNoName of the CDS view (required for single query mode, omit when using queries array)
parametersNoOptional: CDS view parameters as key-value pairs (e.g., {"p_date": "2024-01-01"})
where_conditionsNoOptional: WHERE conditions for filtering. Simple: {"SalesOrderType": "OR"}. Advanced: {"SalesOrderType": {"eq": "OR"}}. Note: ADT Data Preview API only supports equality (=) operator.
include_column_metadataNoOptional: Include column type and description in response (default: false)

TDQS

A3.7/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 behavioral burden. It adds pagination and batch-mode context, but omits the read-only nature, the result-size ceiling behavior, or the batch cap (max 5) โ€” those constraints live only in the schema, so the description's own behavioral disclosure is thin.

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 tightly written sentences: capability summary first, then the mode-selection rule. Zero filler and front-loaded.

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?

Covers the mode-selection logic adequately, but with no output schema and nested batch objects, the description says nothing about the shape of results (or how batch results are keyed by id). For a 9-parameter tool with nested structures, this leaves a real 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 the schema already documents all nine parameters in detail (e.g., the max 500 rows, max 5 batch limit, ADT equality-only note). The description adds marginal value by clarifying the view_name vs queries selection rule, which the schema only implies.

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?

States a specific verb (query) and resource (CDS view data) plus the supported capabilities (filtering, pagination, parameters, batch). This clearly distinguishes it from the sibling GetCDSView (metadata retrieval), though it never names that sibling to reinforce the distinction.

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?

Explicitly defines the two modes and their mutual exclusion: 'Either provide view_name for a single query, or provide queries array for batch mode.' Clear operational context, but no guidance on when to prefer batch over repeated single calls, nor any exclusions relative to GetCDSView/ExportCDSViewToFile.

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. Optionally fetch local includes (definitions, implementations, macros, testclasses). Use output_format=structured for JSON output suitable for downstream compression.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class
include_typesNoOptional: Include types to fetch. Default: ['main']. Use 'all' for all available includes. Examples: ['main', 'implementations'], ['all']
output_formatNoOptional: Output format. 'text' (default) returns raw ABAP source. 'structured' returns parsed JSON with definition sections and method array โ€” enables significantly better compression with JSON-aware context compressors. Use with include_types=['main'] (the default) for best results.

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 full burden. 'Retrieve' correctly implies a read-only operation, and it discloses that includes are fetched in a single call and that structured output is JSON. It says nothing about output size, volume of source returned for large classes, or any permission/authorization requirement, which are real concerns for a source-retrieval 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?

Two tight sentences, front-loaded with the core retrieval action, then the optional include behavior, then the output-format tip. No filler and no repetition of schema text.

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 simple 3-parameter read tool with no output schema and no annotations, the description covers purpose and both optional parameters adequately. It falls short on sibling disambiguation for includes and test classes and on what a caller receives for large classes, which are the main gaps an agent would need closed.

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 baseline is 3. The description goes slightly beyond the schema by explaining why 'structured' matters (JSON-aware compression) and by implying the default recommendation of structured with the default include type. It still adds no meaning for class_name or for the interaction between include_types and output_format beyond what the schema states.

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?

States a specific verb and resource ('Retrieve ABAP class source code') and enumerates the optional include types, so the agent knows exactly what comes back. However, it never distinguishes itself from close siblings like GetClassInclude, GetClassTests, or ExportClassToFile, even though it visibly overlaps with them by offering include fetching.

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 conditional guidance for one parameter ('Use output_format=structured for JSON output suitable for downstream compression') which implies when to prefer structured output. It offers no guidance on when to call this tool rather than GetClassInclude for includes, GetClassTests for test classes, or ExportClassToFile for persistence, so selection among siblings 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.

GetClassCoverageC

Run unit tests for a class and retrieve test coverage results

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class
auto_activateNoOptional: Automatically activate the class before running coverage analysis (default: false)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true, only used if auto_activate is true)

TDQS

C2.9/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 behavioral burden. It indicates tests are run (a side-effecting action) but omits permissions, activation side effects, reversibility, and output formatโ€”only minimal behavioral context is given.

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?

A single, front-loaded sentence with no redundant or filler content. It efficiently communicates the tool's action and result.

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?

With no output schema and no annotations, the description should explain more about what running tests entails (e.g., side effects, activation behavior) and what coverage results include. It is too sparse for a tool with side-effect potential and optional activation flags.

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%, fully documenting class_name, auto_activate, and preaudit_requested. The description adds no additional meaning beyond the schema, 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 states a specific action (run unit tests for a class) and result (test coverage), making the core purpose clear. However, it does not differentiate from sibling tools like RunClassTests or GetClassTests, leaving ambiguity about when this tool is preferred over them.

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 when-to-use or when-not-to-use guidance is provided. It does not mention alternatives such as RunClassTests or GetClassTests, so the agent must infer that this tool is for coverage rather than plain test execution.

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

GetClassIncludeC

Retrieve a specific include from an ABAP class (definitions, implementations, macros, testclasses, or main)

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class
include_typeYesType of include to fetch. 'definitions' = local class definitions (CCDEF), 'implementations' = local class implementations (CCIMP), 'macros' = local macros (CCMAC), 'testclasses' = test classes (CCAU), 'main' = main source

TDQS

C2.9/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 behavioral burden. It implies a read operation but says nothing about permissions/authorization, behavior when the include does not exist, or what form the result takes โ€” significant gaps for a tool with zero annotation coverage.

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?

A single tight sentence with the verb and resource front-loaded and the enumerated variants parenthesized at the end; nothing is wasted. It is appropriately sized for a two-parameter read tool.

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?

With no output schema and no annotations, the description should carry more: it never says the tool returns source code and never positions itself against GetInclude/GetClass. Adequate to invoke correctly, but thin given the missing structured context.

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 include_type enum already documents each value, including the CCDEF/CCIMP/CCMAC/CCAU mapping. The description only restates the same value list, adding no syntax, format, or edge-case meaning beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('Retrieve') and resource (a specific include of an ABAP class) and enumerates the five include kinds, so the agent knows exactly what comes back. It does not explicitly distinguish itself from the nearby siblings GetClass and GetInclude, which likely overlap in scope, so it stops short of a 5.

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?

There is no when-to-use guidance at all: nothing says when to call GetClassInclude versus GetClass (whole class) or the generic GetInclude. The list of include_type values implies the options but not the selection conditions, so an agent must infer the routing.

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

GetClassTestsC

Retrieve local test classes from a class

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class

TDQS

C2.9/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 disclosure burden. It does not say whether the call is read-only, whether the class must exist/is local, whether it returns source text or just names, or how multiple test classes are represented. Only 'local' hints at scope.

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?

A single, front-loaded sentence with no filler. It is efficient, though the extreme brevity borders on under-specification rather than purposeful conciseness.

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?

With no annotations and no output schema, the description is the only source of behavioral and return-value information, and it supplies neither. For a tool whose output shape (names vs. source code) materially affects how an agent uses it, this is a clear 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% and the single parameter (class_name, 'Name of the ABAP class') is fully documented in the schema. The description adds nothing beyond what the schema already provides, so the baseline of 3 applies.

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?

States a specific verb+resource: retrieving 'local test classes' from a given class. This is reasonably distinguishable from RunClassTests (executes tests) and CreateClassTests (creates them), though it doesn't explicitly contrast itself with GetClassInclude, which may also expose test includes.

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?

There is no statement of when to use this tool versus RunClassTests, GetClassInclude, or GetClass. The agent must infer the context entirely from the tool name and sibling list.

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

GetClassUsagesA

[DEPRECATED - Use GetObjectUsages instead] Retrieve usages for an ABAP class. This tool is deprecated and will be removed in a future version.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class

TDQS

A4.2/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 the deprecation lifecycle and imminent removal, which is valuable behavioral context. However, it says nothing about permissions, whether it still functions identically to the successor, error behavior, or result shape for a read operation.

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 the deprecation warning front-loaded and bracketed, so an agent sees the critical routing information before anything else. 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?

For a single-parameter, read-only tool with no output schema and no annotations, the definition supplies what an agent most needs: what it does and what to use instead. It could add one clause on whether the deprecated tool still returns the same data as GetObjectUsages, but nothing essential is missing.

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% for the single class_name parameter, so the schema already documents the input fully. The description adds no format, naming, or scoping detail beyond what the schema provides, making the baseline 3 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?

States a specific verb and resource ('Retrieve usages for an ABAP class') and immediately names the successor tool GetObjectUsages, so an agent can distinguish it from siblings like GetClass or GetObjectUsages 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 Guidelines5/5

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

Gives explicit when-not guidance ('DEPRECATED - Use GetObjectUsages instead' plus 'will be removed in a future version') and names the exact alternative to use in its place, which is the strongest possible routing guidance for a deprecated tool.

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

GetDataElementB

Retrieve ABAP data element definition including domain reference, field labels, and documentation

ParametersJSON Schema
NameRequiredDescriptionDefault
dataelement_nameYesName of the ABAP data element (e.g., MATNR, BUKRS, NETWR)

TDQS

B3.4/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 disclosure burden. It implies a read-only retrieval and names the returned content (domain reference, field labels, documentation), which is genuine added value, but it says nothing about permission/auth requirements, which system the lookup targets, or behavior for an unknown data element name.

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?

A single front-loaded sentence with no filler; the verb, resource, and returned fields are all delivered immediately.

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 one-parameter read tool with no output schema, the description is nearly sufficient because it enumerates the key returned fields. The remaining gap is that it omits any note on return shape, failure modes, or system context, which siblings like ListSystems/SetDefaultSystem imply is relevant.

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% for the single parameter, including concrete examples (MATNR, BUKRS, NETWR), so the schema does the work. The description adds no additional meaning about naming conventions, case sensitivity, or namespace scoping beyond what the schema already supplies.

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?

States a specific verb (Retrieve) and resource (ABAP data element definition) and enumerates the payload (domain reference, field labels, documentation). It does not explicitly contrast itself with the adjacent sibling GetDomain, though naming 'domain reference' as content rather than the domain itself hints at the distinction.

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 statement of when to use this tool versus GetDomain, GetTable, or GetStructure, which all sit in the same metadata-retrieval family. Usage is only inferable from the name and the phrase 'data element definition'; no prerequisites or exclusions are given.

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

GetDomainB

Retrieve ABAP domain definition including data type, length, fixed values, and conversion exit

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_nameYesName of the ABAP domain (e.g., MATNR, BUKRS, LIFNR)

TDQS

B3.2/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 behavioral burden. It implies a read-only lookup and describes the payload contents, but says nothing about error behavior for unknown domains, authentication/system prerequisites, or whether results are cached. For an annotation-free tool this is thin.

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?

A single front-loaded sentence with the resource and the returned fields, no filler or redundancy. Every clause 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?

With no output schema, the description must convey return content, and it lists the key result fields (data type, length, fixed values, conversion exit). It is largely sufficient for a single-parameter lookup, though usage context and failure behavior are absent.

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?

Only one parameter exists and schema coverage is 100%; the schema itself supplies the parameter description plus examples (MATNR, BUKRS, LIFNR). The description adds no additional meaning about the domain_name argument, so it sits at the baseline for fully documented schemas.

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?

States a specific verb ('Retrieve') and resource ('ABAP domain definition') and enumerates the returned content (data type, length, fixed values, conversion exit), which cleanly separates it from sibling getters like GetDataElement or GetTable. It does not explicitly say how it differs from GetDataElement, but the resource 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?

There is no guidance on when to use this tool versus alternatives such as GetDataElement, GetTable, or GetTypeInfo, nor any preconditions (e.g., domain must exist, system must be selected). The agent must infer usage entirely from the name and resource.

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

GetFunctionB

Retrieve ABAP Function Module source code

ParametersJSON Schema
NameRequiredDescriptionDefault
function_nameYesName of the function module
function_groupYesName of the function group

TDQS

B3.2/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. It only states the action without disclosing side effects, permissions, error handling, or output format.

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?

Single sentence, front-loaded with key information, no wasted words. Could be expanded slightly but maintains conciseness.

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 simple retrieval tool with two parameters and no output schema, the description minimally indicates the resource but lacks details on what the source code output looks like or any limitations.

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 basic descriptions for both parameters. The tool description adds no additional meaning 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 clearly states the action ('Retrieve') and the resource ('ABAP Function Module source code'), which distinguishes it from sibling tools targeting other object types like GetClass or GetProgram.

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?

No explicit guidelines on when to use this tool vs. alternatives, but the resource name and sibling tool names make the context implied.

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

GetFunctionGroupC

Retrieve ABAP Function Group source code

ParametersJSON Schema
NameRequiredDescriptionDefault
function_groupYesName of the function module

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description must fully convey behavioral traits. It only states 'Retrieve', implying a read operation, but fails to mention error handling, permissions, or what happens if the function group does not exist.

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 concise and front-loaded, using a single sentence. However, it sacrifices completeness for brevity, missing context that could improve usability.

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?

Given the absence of output schema and annotations, the description is incomplete. It does not specify the format of the source code, limitations, or error handling, leaving the agent underinformed.

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 describes the single parameter as 'Name of the function module' with 100% coverage. The description adds no additional semantic value beyond what the schema provides.

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 specifies the verb 'Retrieve' and the resource 'ABAP Function Group source code', clearly indicating the tool's function. It distinguishes from siblings like GetFunction (which retrieves a function module) and GetProgram.

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 provided on when to use this tool versus alternatives like GetFunction or GetInclude. The description lacks any context for appropriate usage.

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

GetIncludeB

Retrieve ABAP Include Source Code

ParametersJSON Schema
NameRequiredDescriptionDefault
include_nameYesName of the ABAP Include

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states the retrieval action but does not disclose safety, authorization needs, or behavior when include is not found. For a mere retrieval tool, this is minimal 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?

The description is a single, clear sentence with no redundant words. Every word adds value, achieving maximum conciseness.

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 simple retrieval tool with one parameter and no output schema, the description is minimally adequate. It covers the primary purpose but lacks details on return format, error handling, or prerequisites, which could help the agent.

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 is adequately described as 'Name of the ABAP Include'. The tool description adds no further meaning beyond the schema, which is acceptable given high 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 uses a specific verb 'Retrieve' and resource 'ABAP Include Source Code', clearly indicating the tool's function. However, it does not differentiate from sibling tools like GetProgram or GetFunction, which also retrieve source code for different ABAP objects.

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 on when to use this tool versus siblings such as GetProgram or GetFunction. There is no mention of prerequisites, context, or exclusions.

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

GetInterfaceC

Retrieve ABAP interface source code

ParametersJSON Schema
NameRequiredDescriptionDefault
interface_nameYesName of the ABAP interface

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must bear full burden. Only states retrieval, but lacks details on side effects, authentication, or output constraints. Insufficient for a read tool.

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

Conciseness4/5

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

Extremely concise single sentence, no unnecessary words. Lacks structural elements like bullet points, but efficiency earns a high score.

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?

No output schema or annotations; description fails to explain return format, prerequisites, or how it differs from 12 siblings. Incomplete for a tool in this context.

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% for the single required parameter (interface_name). Description adds no extra meaning beyond the schema, so 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?

Clearly states verb 'Retrieve' and resource 'ABAP interface source code'. However, does not differentiate from sibling tools like GetClass or GetFunction that also retrieve source code, preventing a 5.

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 on when to use this tool versus alternatives like GetTypeInfo or SearchObject. Description is minimal with no context for selection.

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

GetMetadataExtensionB

Retrieve metadata extension (UI annotations) source code

ParametersJSON Schema
NameRequiredDescriptionDefault
extension_nameYesName of the metadata extension

TDQS

B3.2/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 behavioral burden. 'Retrieve' reasonably implies a read-only operation and 'source code' discloses the return content, but nothing is said about failure modes (e.g., unknown extension_name), size, or permissions. Partial disclosure for an annotation-free getter.

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?

A single short sentence with no filler, front-loaded with the verb and resource. Efficient, though it is arguably too terse to route the agent among siblings.

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 one-parameter read tool with no output schema this is close to adequate, but given no annotations and a crowded sibling set including ExportMetadataExtensionToFile, the description should say more about when this read is preferable and what it returns.

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?

There is a single parameter with 100% schema description coverage, so the schema already documents extension_name fully. The description adds nothing beyond what the schema provides, making the baseline 3 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?

States a specific verb (Retrieve) and resource (metadata extension source code), and parenthetically clarifies that a metadata extension holds UI annotations. It implicitly separates itself from ExportMetadataExtensionToFile by returning source code rather than a file, but never names the sibling, so the differentiation is left to inference.

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?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as ExportMetadataExtensionToFile. The agent must guess whether this is the right tool when it wants the extension contents or a file export.

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

GetObjectUsagesC

Retrieve comprehensive where-used list for ABAP objects (classes, interfaces, programs, function groups, type groups). Supports filtering by object types and usage grades.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_byNoOptional: Group results by package or type (values: none, package, type; default: none)none
max_resultsNoOptional: Maximum number of results to return (default: 500, min: 1, max: 500)
object_nameYesName of the ABAP object
object_typeNoType of object: class, interface, program, function_group, type_group, cds, behavior, table, structure (default: class)class
summary_onlyNoOptional: Return summary with aggregated counts instead of full usage list (default: false)
include_elementsNoInclude element usages like methods and attributes (default: true)
include_indirectNoInclude indirect references (default: true)
include_metadataNoOptional: Include full metadata (URIs, responsible, package) in results (default: true)
local_usage_onlyNoLimit search to local package only (default: false)
include_definitionsNoInclude definition usages (default: true)
include_object_typesNoOptional: Specific object types to search in (e.g., ["class", "interface", "program"]). If not specified, searches in default types (class, interface, program, function_group, type_group)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and mostly does not: it says nothing about whether this is a read-only (it is implied by 'Retrieve'), how expensive a comprehensive where-used scan is, whether results are paginated, or what happens with unresolved objects. The one useful disclosure, 'comprehensive', is left vague.

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?

Two sentences with the core purpose front-loaded and no filler. It is efficient, though the second sentence spends its budget on a filtering claim that partly mismatches the schema.

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?

An 11-parameter tool with no annotations and no output schema needs more than this; the description never indicates the shape of the returned usage list (elements vs. definitions vs. metadata blobs) even though include_elements, include_definitions, and include_metadata all toggle it. An agent cannot predict result size or structure from the description.

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 every parameter is already documented, which sets the baseline at 3. The description adds little, and its claim of filtering by 'usage grades' maps to no parameter in the schema, a small inaccuracy rather than added meaning.

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?

States a specific verb and resource ('Retrieve comprehensive where-used list for ABAP objects') and enumerates the object kinds it covers, which implicitly separates it from the narrower GetClassUsages sibling. It never names that sibling or any other alternative, so differentiation is left to inference.

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 statement of when to use this versus GetClassUsages, GetPackageContents, or SearchObject, and no prerequisites or exclusions. 'Supports filtering by object types and usage grades' hints at capability but not at when this tool is the right choice.

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

GetPackageB

Retrieve comprehensive ABAP package information including metadata, attributes, hierarchy (super/sub-packages), transport details, application component, and package interfaces

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesName of the ABAP package

TDQS

B3.2/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 usefully enumerates the categories of information returned (hierarchy, transports, interfaces), which is real behavioral disclosure, but it never states that the call is read-only, what permissions are needed, or the response format, leaving notable gaps for a zero-annotation tool.

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

Conciseness4/5

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

A single front-loaded sentence with the verb and resource leading and the returned categories trailing as a list. No filler, though the enumeration is dense and could be trimmed.

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

Completeness4/5

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

With no output schema, the description compensates by enumerating what the caller receives (metadata, attributes, hierarchy, transports, application component, interfaces). For a single-parameter read tool this is nearly sufficient; only the response shape/pagination remain unspecified.

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?

There is one required parameter and schema description coverage is 100%, so the schema already fully documents 'package_name'. The description adds no syntax, format, or naming-convention detail beyond the schema, which is the baseline-3 case.

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?

States a specific verb (Retrieve) and resource (ABAP package information) and enumerates the categories returned: metadata, attributes, hierarchy, transport details, application component and interfaces. It does not explicitly distinguish itself from the sibling GetPackageContents, which is the most likely confusion point, so it stops short of a 5.

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?

The description gives no when-to-use guidance, no prerequisites, and never names an alternative such as GetPackageContents for listing contained objects. Usage is only implied by the 'Get<Object>' naming convention.

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

GetPackageContentsC

Retrieve objects and contents within an ABAP package, with optional recursive sub-package exploration

ParametersJSON Schema
NameRequiredDescriptionDefault
recursiveNoOptional: Recursively retrieve contents of sub-packages (default: false)
package_nameYesName of the ABAP package
include_subpackagesNoOptional: Include sub-packages in the results (default: true)

TDQS

C2.9/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 behavioral burden. 'Retrieve' implies a read-only operation, but there is no explicit confirmation, no note about permissions/authorization needed to read a package, no rate or scope limits, and no indication of what the response contains or how large it might be. For a tool with zero annotation coverage this is thin.

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?

A single front-loaded sentence with no filler; the resource comes first and the option follows. It is efficient, though the brevity is partly what leaves the stated gaps rather than an intentional trade-off.

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?

With no annotations, no output schema, and two boolean parameters whose semantics overlap (recursive vs. include_subpackages), the description should resolve that ambiguity and describe the return shape. It instead leaves the agent to infer how the two flags interact and what a 'contents' result looks like.

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, establishing the baseline of 3. The description echoes the recursive behavior but adds nothing about the potentially confusing overlap between the `recursive` and `include_subpackages` booleans, which is exactly where added semantic value would help.

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?

States a specific verb ('Retrieve') and resource ('objects and contents within an ABAP package'), so the agent knows exactly what it returns. However, it does not differentiate itself from the sibling GetPackage, which an agent could easily confuse with this tool. Clear but not sibling-aware.

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?

The description gives no when-to-use or when-not-to-use guidance, and never mentions the adjacent GetPackage or SearchObject tools. The recursive option is described as a capability, not as a condition that should drive tool selection. Only implied usage is available.

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

GetProgramB

Retrieve ABAP program source code

ParametersJSON Schema
NameRequiredDescriptionDefault
program_nameYesName of the ABAP program

TDQS

B3.2/5.0
Behavior2/5

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

Without annotations, the description carries full burden. It states a read operation but does not disclose authorization needs, error handling, size limits, or return formatโ€”minimal behavioral insight.

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

Conciseness4/5

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

The description is a single, concise sentence with no redundant words. However, it is almost too minimal, lacking detail that could be provided without bloat.

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 simple retrieval tool with one parameter and no output schema, the description is passable but incompleteโ€”it hints at the return value but does not specify the format or any additional context like rate limits or prerequisites.

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 has full coverage (100%) with a clear description for 'program_name'. The tool description adds no extra meaning beyond the schema, meeting baseline but not exceeding 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?

The description uses a specific verb ('Retrieve') and clarifies it returns 'ABAP program source code', making the tool's function clear and distinguishing it from siblings like GetClass or GetFunction.

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?

The description provides no guidance on when to use this tool versus alternatives, nor any conditions or prerequisites. The sibling list implies differentiation by object type, but no explicit direction is given.

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

GetRuntimeErrorB

Retrieve detailed information about a specific runtime error dump (ST22). Returns formatted text with error analysis, call stack, variables, and source code extract.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoWhat to retrieve: "formatted" (default, full text dump), "metadata" (XML reference), "summary" (HTML summary)
dump_idYesThe dump identifier from ListRuntimeErrors (URL-encoded, e.g., with %20 for spaces)

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 what the response contains (error analysis, call stack, variables, source code extract), which is useful for a read tool, but says nothing about permissions, encoding requirements beyond the schema note, or behavior of the content modes.

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 waste: the first establishes purpose and scope, the second enumerates the return payload. It is well front-loaded with nothing extraneous.

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 two-parameter read tool with no output schema, the description supplies the return-content summary that would otherwise be missing, and the schema covers parameters. Only the missing usage routing and permission context keep it from being fully complete.

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 both dump_id and the content enum are already fully documented in the schema, including the URL-encoding caveat. The description adds no syntax or format detail beyond restating that formatted output is the default behavior.

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 detailed information about a specific runtime error dump') and pins the domain with the ST22 transaction code. The word 'specific' implicitly contrasts with ListRuntimeErrors, but no sibling is named explicitly, so it falls just short of the top band.

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 when-to-use guidance is given. It does not say the dump_id must first come from ListRuntimeErrors, nor when a caller would choose this over the list tool or vice versa. That linkage exists only in the dump_id schema description, not in the tool description.

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

GetServiceBindingB

Retrieve RAP service binding details and configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
binding_nameYesName of the service binding

TDQS

B3.2/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. 'Retrieve' implies a read-only operation, which is the key behavioral signal, but there is no mention of permissions, error behavior, or the shape/volume of what comes back. For a simple one-parameter getter this is acceptable but thin.

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?

A single, front-loaded sentence with no wasted words. It is efficient, though its brevity borders on under-specification given the absence of annotations.

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 trivial one-parameter read tool with no output schema, the description is nearly sufficient โ€” it names the resource and what is returned. It falls short only on usage context and any behavioral nuance.

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?

Single parameter with 100% schema description coverage, so the schema fully documents binding_name. The description adds nothing beyond the schema, making the baseline 3 correct.

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?

States a specific verb (Retrieve) and resource (RAP service binding) plus what is returned (details and configuration). The resource is distinct from siblings like GetServiceDefinition and GetBehaviorDefinition, so an agent can tell it apart, though it never explicitly contrasts with them.

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 indication of when to use this tool versus alternatives, no prerequisites, and no routing guidance. The agent must infer usage purely from the tool name and resource.

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

GetServiceDefinitionB

Retrieve RAP service definition source code and metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYesName of the service definition

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden; it does disclose that both source code and metadata are returned, which is real behavioral value. However, it says nothing about authorization requirements, error behavior when the service does not exist, or the format of the returned source.

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?

A single front-loaded sentence that names the action, the resource, and the return content with no wasted words. Nothing is buried or redundant.

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 one-parameter read tool with a fully documented schema this is close to adequate, and it does state what is returned. But with no output schema and no annotations, the absence of any detail on return format or failure modes leaves a noticeable 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?

The single parameter is fully documented in the schema at 100% coverage, so the schema already does the work. The description adds no naming-convention or format guidance (e.g., package-qualified vs. plain name), so the baseline of 3 applies.

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?

States a specific verb (Retrieve) and resource (RAP service definition) and clarifies the payload is source code plus metadata. It distinguishes itself adequately from CreateServiceDefinition and GetServiceBinding by naming the artifact type, though it never explicitly contrasts with those siblings.

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?

There is no guidance on when to use this versus GetServiceBinding, GetBehaviorDefinition, or the many other Get* siblings, and no prerequisites stated. Usage is only implied by the name and the read verb.

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

GetStructureC

Retrieve ABAP Structure

ParametersJSON Schema
NameRequiredDescriptionDefault
structure_nameYesName of the ABAP Structure

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the full burden of behavioral disclosure. It only says 'Retrieve', which implies a read operation, but does not state what is returned, whether it is safe, or any side effects. The complete lack of behavioral details is insufficient.

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

Conciseness3/5

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

The description is extremely concise at four words, but it is under-specified lacking essential context. While concise, it does not earn its place as it fails to provide sufficient information for effective tool selection.

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?

Given the tool's simplicity (one parameter, no output schema), the description should at least indicate what kind of data is returned (e.g., structure fields). The current description is too sparse to be complete.

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% for the single parameter 'structure_name', which is described as 'Name of the ABAP Structure'. The description adds no additional meaning beyond the schema, so 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.

Purpose4/5

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

The description 'Retrieve ABAP Structure' clearly states the action (retrieve) and the resource (ABAP Structure). It distinguishes from siblings like GetClass or GetTable by specifying the object type 'Structure', though it lacks elaboration on what exactly is retrieved (e.g., metadata, definition).

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?

The description provides no guidance on when to use this tool versus alternatives like GetTable or GetClass. There is no mention of prerequisites, context, or exclusions.

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

GetSystemInfoA

Returns the active SAP ABAP backend connection details: system URL, SAP client number, authentication method (basic/SSO), and whether the ADT connection is reachable. Use ONLY to troubleshoot ADT connectivity or confirm which SAP backend is currently targeted. Do NOT call this as a prerequisite for reading ABAP objects, running searches, or any other ABAP operation โ€” all other tools establish the ADT connection automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/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 full burden. It discloses return contents (URL, client, auth method, reachability) and warns against prerequisite use, but it does not explicitly state read-only/side-effect-free behavior or whether calling it may trigger authentication or network side effects.

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 well-structured sentences: the first lists returned data, the second and third give clear usage constraints. Every sentence earns its place and the critical scoping warning is front-loaded.

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

Completeness5/5

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

For a zero-parameter diagnostic tool with no output schema and no annotations, the description fully covers what the tool returns and when it should or should not be used. An agent has everything needed to call it correctly.

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?

Zero parameters, so the baseline is 4. No parameter semantics are needed, and the description appropriately focuses on return values and usage context instead.

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?

Specific verb (Returns) and resource (active SAP ABAP backend connection details), with enumerated return fields and a clear scope. It distinguishes itself from the many sibling ABAP object tools by stating it is for connectivity troubleshooting, not for reading objects.

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

Usage Guidelines5/5

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

Explicitly states when to use (ONLY for troubleshooting ADT connectivity or confirming the targeted backend) and when NOT to use (not as a prerequisite for other ABAP operations). It also explains that all other tools establish the ADT connection automatically, which is a direct alternative behavior.

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

GetTableB

Retrieve ABAP table structure

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesName of the ABAP table

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden, but it only states the basic action. It omits behavioral details such as whether any prerequisites or side effects exist, or the format of the returned structure.

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?

A single sentence with no filler, but extremely brief. While concise, it might sacrifice necessary detail.

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?

Given no output schema and no annotations, the description should explain what 'table structure' entails (e.g., fields, keys). It fails to provide a complete picture, leaving ambiguity.

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 covers the single parameter fully with a description, and the tool description adds no extra semantics. Baseline 3 is appropriate as schema coverage is 100%.

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 'Retrieve ABAP table structure' uses a specific verb and resource, clearly distinguishing it from siblings like GetTableContents (which retrieves data) and GetStructure (which may refer to other dictionary structures).

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 implies use for structure retrieval, and sibling names suggest alternatives like GetTableContents for data, but no explicit guidance on when or why to choose this tool over others.

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 with advanced filtering, pagination, and batch query support. Either provide table_name for a single query, or provide queries array for batch mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoOptional: Number of rows to skip for pagination (default: 0)
columnsNoOptional: Specific columns to retrieve (default: all columns). Column names are validated against table metadata.
queriesNoOptional: Batch mode - execute multiple queries in one call (max: 10, omit when using table_name). Each query supports all single-query parameters.
max_rowsNoOptional: Maximum number of rows to retrieve (default: 100, max: 500)
order_byNoOptional: Column names for sorting results. Column names are validated against table metadata.
table_nameNoName of the ABAP table (required for single query mode, omit when using queries array)
where_conditionsNoOptional: WHERE conditions for filtering. Simple: {"MATNR": "ABC123", "MTART": "FERT"}. Advanced: {"MATNR": {"eq": "ABC123"}}. Note: ADT Data Preview API only supports equality (=) operator.
include_column_metadataNoOptional: Include column type and description in response (default: false)

TDQS

A3.7/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. The verb 'Retrieve' implies a read-only operation and batch mode is disclosed, but there is no mention of permissions, whether results are capped (schema holds the 500-row/10-query limits), or response behavior. Adequate but thin for a no-annotation 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?

Two tight sentences, front-loaded with the core capability and then the mode-selection rule. No filler, no restatement of the tool name, every clause carries information.

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 mode-selection ambiguity is covered and the schema is fully annotated, but there is no output schema and the description never explains what the response looks like (row shape, how batch results are keyed by id, effect of include_column_metadata). For an 8-parameter tool with nested batch objects and no output schema, that is a real 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 every parameter is already documented in the schema, including the equality-only constraint on where_conditions and column validation. The description adds only a high-level mention of filtering/pagination/batch and no syntax or format detail beyond the schema, so baseline 3 applies.

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?

States a specific verb and resource ('Retrieve contents of an ABAP table') and names its distinguishing capabilities (filtering, pagination, batch). The word 'contents' implicitly separates it from metadata-oriented siblings like GetTable, but no sibling is named explicitly, so it stops short of a 5.

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?

Explicitly states the selection rule between its two modes: table_name for a single query, queries array for batch mode. That is clear, actionable context, but there is no guidance on when to prefer this tool over sibling lookup tools such as GetTable or GetStructure, and no exclusions.

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

GetTransactionC

Retrieve ABAP transaction details

ParametersJSON Schema
NameRequiredDescriptionDefault
transaction_nameYesName of the ABAP transaction

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'retrieve', implying a read-only operation, but does not explain authentication needs, error handling, or what happens if the transaction does not exist. This is insufficient for a tool with no annotations.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the purpose. It contains no unnecessary words. However, it could be slightly expanded to include key details without losing conciseness.

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?

Given the tool has no output schema and simple input, the description should at least hint at the output structure or what 'details' entails. It does not, leaving ambiguity. For a retrieval tool, the absence of return value information is a notable 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 coverage is 100% with the parameter 'transaction_name' having a description 'Name of the ABAP transaction'. The tool description adds no additional meaning beyond the schema, so 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 'Retrieve ABAP transaction details' clearly identifies the action (retrieve) and the resource (ABAP transaction details). It distinguishes from sibling tools like GetProgram or GetTable by specifying 'transaction'. However, 'details' is vague and could be more specific.

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?

The description provides no guidance on when to use this tool versus alternatives such as GetProgram or GetTable. The context is only implicit through the tool name and sibling list. No explicit when/when-not or alternative suggestions are given.

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

GetTransportRequestA

Retrieve detailed transport information showing task/request hierarchy and object list. IMPORTANT: Use this FIRST when analyzing a specific transport to understand if it is a task (child) or request (parent), as version history may record changes under the parent request. Returns formatted output with hierarchy, objects, and guidance for next steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
transport_numberYesThe transport request number (e.g., ER1K8AKL0L)

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 full burden and does disclose non-obvious behavior: that transports are task/request hierarchies and that version history may attach to the parent. It stops short of stating the read-only safety profile or permission requirements.

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, front-loaded with the retrieval purpose, then the ordering imperative, then the return shape. Every sentence adds distinct value with no filler.

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?

No output schema exists, but the description compensates by naming the return contents (hierarchy, objects, next-step guidance). The missing piece is any statement of the read-only nature or auth context for a tool with zero annotation coverage.

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% with a single documented parameter, so the baseline is 3. The description adds no format or constraint details beyond the schema's example (e.g., ER1K8AKL0L).

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?

States a specific verb and resource ('Retrieve detailed transport information') and narrows the scope to 'task/request hierarchy and object list,' which separates it from the version-oriented sibling GetTransportVersions. An agent knows exactly what this returns 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 Guidelines4/5

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

Gives explicit ordering guidance ('Use this FIRST when analyzing a specific transport') with a rationale tied to version history being recorded under the parent request. It does not name when NOT to use it or point to a named alternative, so it stops short of a full 5.

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

GetTransportVersionsA

Helper tool that combines transport analysis and version history in one command. Given a transport number and object, automatically handles task/parent request hierarchy, finds the relevant version(s), and suggests comparison steps. This is the recommended starting point for analyzing what changed in a specific transport.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesName of the ABAP object (e.g., CL_MAN_CHANGELOG)
object_typeYesObject type: CLAS (class), PROG (program), INCL (include), FUGR (function group), INTF (interface), DDLS (CDS view), BDEF (behavior definition), DCLS (access control)
transport_numberYesTransport number (can be either a task or parent request, e.g., ER1K8AK0XI)

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 must carry the behavioral burden. It usefully discloses that it automatically resolves task/parent request hierarchy and finds relevant versions, which is non-obvious behavior beyond the schema. However, it says nothing about permissions, output/return shape, or limits, leaving significant gaps for a tool with zero annotation coverage.

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?

Three front-loaded sentences with no filler; the core function is stated first, followed by behavior and a routing recommendation. Slight redundancy between 'combines ... in one command' and 'helper tool,' but overall tight and well-ordered.

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 and key automatic behavior but omits return format and any safety/permission context. It is adequate to invoke correctly but not fully complete given the absence of structured behavioral metadata.

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 (transport_number, object_name, object_type) are already well documented in the schema. The description adds only the contextual point that the transport number may be a task or parent request, which the schema also states, so it does not meaningfully extend parameter meaning beyond the structured fields.

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 combined purpose: merging transport analysis and version history given a transport number and object. It distinguishes itself as 'the recommended starting point for analyzing what changed in a specific transport,' which differentiates it from single-purpose siblings like GetVersionHistory and CompareObjectVersions, though it never names them explicitly.

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 context for use ('recommended starting point for analyzing what changed in a specific transport') and hints at follow-on work ('suggests comparison steps'), implicitly positioning itself ahead of CompareObjectVersions. It stops short of explicit when-not guidance or naming the alternatives it supersedes.

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

GetTypeInfoC

Retrieve ABAP type information

ParametersJSON Schema
NameRequiredDescriptionDefault
type_nameYesName of the ABAP type

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only implies a read operation but offers no details on error handling, performance, or what happens when the type does not exist.

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

Conciseness3/5

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

The description is very short (one phrase) and front-loaded. However, it is so brief that it borders on under-specification, missing opportunities to add valuable context in a concise way.

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?

Given the tool takes a single required parameter and has no output schema, the description is minimally complete but does not cover return values, error conditions, or tie-breakers among many sibling tools. A more complete description would help an agent select and invoke 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 coverage is 100% with one parameter ('type_name') described as 'Name of the ABAP type'. The description adds no additional semantic meaning beyond what the schema already provides, so baseline 3 applies.

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 action ('Retrieve') and the resource ('ABAP type information'). It is distinct from sibling tools like GetTable or GetStructure which focus on specific data dictionary objects, so the purpose is clear.

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 on when to use this tool versus alternatives such as GetStructure, GetTable, etc. The description lacks context for selection among the 12 sibling tools.

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

GetVersionHistoryA

Retrieve version history for an ABAP object across transports. Returns formatted table with version IDs, dates, authors, and transport numbers. IMPORTANT: Transport numbers shown may be either tasks or parent requests - use GetTransportRequest to understand the hierarchy. Version "00000" = CURRENT/ACTIVE for all object types (may have earlier timestamp than transported versions but contains current code). See footer notes for complete guidance on transport hierarchy and version numbering.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesName of the ABAP object
object_typeYesObject type: CLAS (class), PROG (program), INCL (include), FUGR (function group), INTF (interface), DDLS (CDS view), BDEF (behavior definition), DCLS (access control)

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 full burden and does well: it discloses the return shape (table of version IDs, dates, authors, transport numbers) and two non-obvious behavioral quirks (transport numbers may be tasks or parent requests; version '00000' means CURRENT/ACTIVE and may predate transported versions). It does not state read-only safety explicitly, though 'Retrieve' implies it.

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?

Front-loaded with purpose, then the transport-hierarchy caveat and the '00000' rule, so the important operational details come early. The closing 'See footer notes for complete guidance' defers content elsewhere and is mild filler, keeping it from a 5.

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?

No output schema exists, so the description must describe return values โ€” and it does (columns returned) plus two critical semantic caveats. Combined with full param coverage, an agent has enough to call and interpret results correctly, though it never explicitly confirms the read-only nature.

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 only two well-documented parameters, so the schema does the heavy lifting. The description adds no new syntax or format detail for object_name/object_type, matching the baseline of 3.

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?

States a specific verb and resource: 'Retrieve version history for an ABAP object across transports.' The scope ('across transports') implicitly separates it from GetTransportVersions/ListUserTransports, but no sibling is named explicitly, so it falls just short of a 5.

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 does route the agent toward GetTransportRequest when it needs to understand task-vs-request hierarchy, which is useful usage context. However, there is no explicit when-to-use-this-vs-alternatives guidance (e.g. versus CompareObjectVersions or GetTransportVersions), leaving selection largely inferential.

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

ImportClassFromFileA

Import an ABAP class from a file in the tmp folder and create it in the SAP system. Only supports local classes (Z/Y prefix) in local packages.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoOptional package name (defaults to $TMP)$TMP
class_nameYesName of the ABAP class to import (must start with Z or Y)
descriptionNoOptional description for the class (extracted from file if not provided)
auto_activateNoOptional: Automatically activate the class after import (default: false)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose real traits: the source is a file already in the tmp folder, the effect is creation in the live SAP system, and only local Z/Y classes in local packages are supported. It omits important behavior such as what happens if the class already exists (overwrite vs error), permission requirements, and how activation/pre-audit interact with the import.

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, zero filler, with the core action front-loaded and the scope constraint immediately after. Every clause carries information the agent needs.

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 5-parameter mutation tool with no annotations and no output schema, the description is only partially complete. Notably, there is no file-path parameter in the schema, so the agent must infer how the source file is located from class_name alone โ€” the description never explains this file-naming convention, nor the conflict/overwrite behavior of the create step.

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 five parameters are already documented in the schema, which sets the baseline at 3. The description only echoes the Z/Y prefix constraint already stated in class_name and the local-package restriction; it adds no new parameter 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 states a specific verb and resource: import an ABAP class from a file in the tmp folder and create it in the SAP system. This is clearly distinguishable from siblings like CreateClass (author from scratch), ExportClassToFile (reverse direction), and GetClass (read-only). The local-only scope further sharpens what this tool is for.

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 a concrete usage boundary: only local classes (Z/Y prefix) in local packages, which implicitly tells the agent when NOT to use it. However, it never names an alternative (e.g., CreateClass for global classes) or states prerequisites such as the file needing to already exist in tmp. Clear context, but no explicit routing to a sibling.

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

ListATCCheckVariantsA

List available ATC check variants on the SAP system. Returns variant names and descriptions. Use this to discover which check variants are available before running ATC checks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 burden, and it does disclose that the operation is a non-mutating list that returns variant names and descriptions. However, it says nothing about permissions required, whether results are system-scoped or user-scoped, or any caching/refresh behavior for what is presumably live system state.

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, front-loaded with the action and resource, then the return payload, then the usage trigger. Every sentence earns its place with no filler.

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

Completeness4/5

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

With no parameters, no output schema, and no annotations, the description covers what the agent needs: what it lists, what it returns, and when to call it. It could be more complete by naming RunATC explicitly as the follow-up tool and clarifying the system scope, but nothing essential is missing.

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 tool takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema already conveys. Baseline 4 applies; no parameter guidance is needed.

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?

States a specific verb and resource ('List available ATC check variants') and scopes it to the SAP system, with a note that it returns names and descriptions. It is clearly distinct from the many Get*/Export* siblings, though the differentiation from RunATC is only implied rather than stated by name.

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?

'Use this to discover which check variants are available before running ATC checks' gives a clear condition for invocation and implies the RunATC workflow it precedes. It stops short of explicit exclusions or naming alternatives, but the context is unambiguous.

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

ListRuntimeErrorsA

List recent ABAP runtime errors (ST22 dumps) from the system. Returns error type, program, user, timestamp, and dump ID for each entry. Use GetRuntimeError to retrieve detailed analysis of a specific dump.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd timestamp filter (ISO format, e.g., "2024-01-16T23:59:59")
fromNoStart timestamp filter (ISO format, e.g., "2024-01-15T00:00:00")
userNoSAP username to filter dumps by (uppercased automatically). If not provided, returns all accessible dumps.
max_resultsNoMaximum number of entries to return (default: 50, max: 100)

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 behavioral burden. It discloses the return fields (error type, program, user, timestamp, dump ID), which is useful since there is no output schema. However, it does not state that it is read-only, non-destructive, or mention any rate limits or authentication requirements.

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, front-loaded with the core purpose, followed by return information, and then the alternative tool. Every sentence adds value and there is no 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?

The tool is a simple list operation with four optional filtering parameters and no output schema. The description covers purpose, return fields, and routing to a detail tool. It could mention pagination limits or default filtering behavior, but the schema handles those details, making the description largely sufficient.

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 four parameters are already documented in the input schema. The description adds no additional parameter semantics or filtering syntax beyond what the schema provides, so the baseline 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 states a specific verb and resource: 'List recent ABAP runtime errors (ST22 dumps)'. It also explicitly distinguishes this tool from GetRuntimeError, which is a sibling, making the scope 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?

It clearly says to use GetRuntimeError for detailed analysis of a specific dump, providing an explicit alternative for a related task. It does not state when not to use this tool or list prerequisites, but the context is clear.

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

ListSystemsA

List all configured SAP systems from .sap-systems.json. Shows system IDs, names, URLs, clients, authentication methods, and indicates which is the default/active system.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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. 'List' plus the read-only field enumeration ('Shows system IDs, names, URLs...') makes the non-mutating nature clear, and naming the source file .sap-systems.json adds useful context. It does not state whether systems are filtered by permissions or how credentials are surfaced, leaving minor behavioral 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, no filler, with the core action front-loaded and the returned-field detail second. Every clause 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?

No output schema exists, so the description must describe the return shape, and it does by listing the exposed fields including the default/active indicator. For a zero-parameter read tool this is nearly complete, with only edge cases like empty configuration or permission scoping left unaddressed.

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 tool has zero parameters and schema coverage is 100%, so the baseline of 4 applies. The description's enumeration of returned attributes is not parameter semantics but does not detract from an already complete 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?

States a specific verb and resource ('List all configured SAP systems') plus the backing file and the fields returned. It implicitly contrasts with the mutation sibling SetDefaultSystem by noting it 'indicates which is the default/active system', but does not explicitly name any sibling or route the agent between ListSystems and GetSystemInfo.

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?

Usage is only implied: the tool takes no parameters and enumerates all systems, so an agent can infer it is the discovery entry point. However, there is no explicit guidance on when to prefer it over GetSystemInfo or how it relates to SetDefaultSystem, and no stated prerequisites.

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

ListUserTransportsA

โš ๏ธ IMPORTANT: Always use from_date parameter to ensure recent transports are visible!

List ALL transport requests for a user by querying CTS database tables (E070/E07T) directly.

โœ… WORKS FOR BOTH MODIFIABLE AND RELEASED TRANSPORTS

This tool:

  • Queries CTS database tables (E070, E07T) directly

  • Shows ALL transports: Modifiable (D), Released (R), and others

  • Returns results in DESCENDING order (newest first)

  • Provides transport type, status, date, target system, and description

  • Auto-defaults to previous year if no from_date specified (prevents missing recent data)

โš ๏ธ CRITICAL LIMITATION:

  • Can only fetch 500 rows per query (ADT API limit)

  • If result count equals limit, MORE RECENT TRANSPORTS MAY BE HIDDEN

  • SOLUTION: Always provide from_date parameter (e.g., "20260101" for 2026 onwards)

  • Tool will warn you if limit is reached

Common status values:

  • D: Modifiable (in development)

  • R: Released

  • L: Modifiable + Protected

  • O: Released + ready for import

Use this tool to find a developer's transports, both in-progress and released.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUsername (required)
statusNoOptional: Filter by status (D=Modifiable, R=Released, L=Modifiable+Protected, O=Released+Import)
from_dateNoโš ๏ธ HIGHLY RECOMMENDED: Minimum date filter in YYYYMMDD format. Defaults to last year if not provided. Always use this to ensure recent transports are visible! Example: "20260101" for 2026 onwards.
max_resultsNoOptional: Maximum number of results to return (default: 50, max possible from API: 500)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the 500-row ADT API limit, the descending sort order, the auto-default to the previous year, and that the tool warns when the limit is hit. It stops short of stating auth/permission requirements or confirming read-only semantics, keeping it at a 4 rather than 5.

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

Conciseness3/5

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

The most important constraint (always use from_date) is front-loaded, which is good, but the description is padded with emoji, bold, and repeated warnings โ€” the from_date admonition appears three times. The signal is real but the repetition and formatting inflate length without adding information.

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?

There is no output schema, so the description must describe returns, and it does: transport type, status, date, target system, description, in descending order. Combined with the status code legend (D/R/L/O), an agent has enough to interpret results, though a note on permissions would complete it.

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% and the schema descriptions already carry most warnings, but the description adds actionable meaning by tying from_date to the 500-row cap (why providing it prevents hidden recent transports) and explaining the interaction with max_results. That added reasoning lifts it slightly above the baseline 3.

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?

States a specific verb and resource โ€” 'List ALL transport requests for a user' โ€” and adds implementation detail (queries CTS tables E070/E07T directly, covers modifiable and released transports). It does not explicitly name or distinguish itself from siblings like GetTransportRequest or GetTransportVersions, so it falls short of a 5.

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?

'Use this tool to find a developer's transports, both in-progress and released' gives clear usage context, and the from_date guidance tells the agent how to invoke it well. However, it never names an alternative tool or states when NOT to use this one, so no exclusions or routing are provided.

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

RunATCA

Run ATC (ABAP Test Cockpit) static code analysis on an ABAP object. Returns findings including errors, warnings, and informational messages with locations and check IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesName of the ABAP object to check (e.g., "ZCL_MY_CLASS", "ZTEST_PROGRAM")
object_typeYesType of object to check
max_findingsNoMaximum number of findings to return (default: 100)
check_variantNoATC check variant name (optional, defaults to system default). Use ListATCCheckVariants to discover available variants.
with_exemptionsNoInclude exempted findings in results (default: false)

TDQS

A3.7/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. It discloses the return categories (errors, warnings, info with locations and check IDs), which is useful, but says nothing about permissions/authorization needed, whether the operation is read-only vs. side-effecting (ATC runs can be expensive/long), runtime duration, or result truncation behavior tied to max_findings.

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 action, zero filler. Every clause 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?

Adequate minimum viable coverage: it names the tool's purpose and return categories, and the schema covers all params. But with no annotations and no output schema, an agent lacks the behavioral guardrails (side-effect profile, cost, truncation semantics) that would make this fully complete.

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 schema already documents all five parameters (object_name, object_type enum, max_findings, check_variant, with_exemptions). Baseline is 3; the description adds the return-shape context (findings with locations/check IDs) but no per-parameter semantics beyond the schema, so a 4 is generous-but-justified for the coupling of findings meaning to the ATC result.

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?

States a specific verb+resource ('Run ATC ... static code analysis on an ABAP object') and names the domain acronym expansion. Clearly distinct from read-only sibling tools like GetClass or CheckSyntax.

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?

Usage is implied by the action (analyze an object for quality issues), and the check_variant param cross-references ListATCCheckVariants. But there is no explicit when-to-use vs. the closest sibling CheckSyntax, nor any stated prerequisites or exclusions.

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

RunClassTestsC

Run unit tests for a class and retrieve results

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the ABAP class
auto_activateNoOptional: Automatically activate the class before running tests (default: false)
preaudit_requestedNoOptional: Request pre-audit during activation (default: true, only used if auto_activate is true)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it is silent on side effects. It does not say whether running tests activates the class, mutates the system, requires authorization, is long-running, or how results are returned. 'Retrieve results' is the only behavioral hint and it is vague.

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?

A single short sentence with the core action front-loaded and no filler. It is efficient, though it omits the 'retrieve results' detail of what is returned, keeping it from the top of the range.

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?

This is an execution tool with no annotations and no output schema; the description does not compensate by explaining return values, side effects, or prerequisites. For a test-runner with activation options in its schema, the definition is materially incomplete.

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 class_name, auto_activate, and preaudit_requested are fully documented in the schema, including defaults and the conditional dependency of preaudit_requested on auto_activate. The description adds nothing beyond this, so the baseline 3 applies.

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?

Specific verb+resource: run unit tests for a class, and mentions retrieving results. An agent can distinguish RunClassTests from GetClassTests (which presumably only retrieves prior results) and RunPackageTests. However, it does not explicitly name or differentiate itself from those siblings, so it stops short of a 5.

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 indication of when to use this versus GetClassTests, RunPackageTests, or RunATC. There is no mention of prerequisites (e.g., class must exist/be active) or exclusions. The agent is left to infer usage entirely from the name.

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

RunPackageTestsB

Run unit tests for all test-enabled objects in a package and retrieve aggregated results

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesName of the ABAP package

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 usefully discloses the execution model (runs tests across every test-enabled object) and that results are aggregated, but says nothing about side effects, permissions, runtime, or whether the returned aggregation is pass/fail counts vs. detailed messages.

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?

One tight sentence with the action front-loaded and no filler; 'and retrieve aggregated results' earns its place by signaling the return behavior. It is arguably a touch terse given everything an agent must infer, but nothing is wasted.

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 test-execution tool with no output schema and no annotations, the description leaves notable gaps: the shape of 'aggregated results', whether non-test-enabled objects are skipped silently, and any activation or authorization prerequisites are all unspecified.

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?

Single parameter with 100% schema description coverage ('Name of the ABAP package'), so the schema already fully documents it. The description only restates that the package is the unit of work and adds no format or naming-convention detail 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?

States a specific verb (Run unit tests) and a clear scope (all test-enabled objects in a package), plus the outcome (aggregated results). It is distinguishable from the package-scoped siblings like GetPackage/GetPackageContents, but it never explicitly contrasts itself with RunClassTests, the obvious neighboring alternative.

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 package-wide scope implicitly tells an agent when this applies versus a single-object runner, but there is no explicit when-to-use guidance, no prerequisites (e.g. objects must be activated), and no named alternative such as RunClassTests.

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

SapBrowserLoginA

Trigger browser-based SSO authentication for an SAP system. Opens Chrome for interactive login (supports any IDP: SAP IAS, ADFS, certificate, 2FA). Use this to proactively authenticate before making requests, or to re-authenticate when SSO cookies expire. Not needed for systems using Basic Auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
systemIdNoSystem ID to authenticate (e.g., "DEV", "PRD"). Defaults to the active system.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that Chrome is opened, that the flow is interactive, that any IDP works including 2FA, and that Basic Auth systems are unaffected. It stops short of stating whether the call blocks until the user finishes, how success/failure is signalled, or what happens if the browser is already open.

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, all load-bearing, with the core action front-loaded and the constraint ('Not needed for Basic Auth') placed last as an exclusion. No filler.

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?

No output schema and no annotations, so completeness rests on the description. It covers purpose, trigger conditions, mechanism, and exclusions; only the completion/interaction semantics (blocking, success signal, timeout) are unstated, which is a minor gap for a 1-param login trigger.

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 schema already documents systemId with examples ('DEV', 'PRD') and the active-system default. The description adds no syntax or format detail beyond that, 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?

States a specific verb+resource: 'Trigger browser-based SSO authentication for an SAP system.' It also names the concrete mechanism (opens Chrome, interactive login) and enumerates supported IDPs, which cleanly separates it from the ABAP-object siblings in the list.

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

Usage Guidelines5/5

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

Explicit when-to-use ('proactively authenticate before making requests, or to re-authenticate when SSO cookies expire') and an explicit when-not ('Not needed for systems using Basic Auth'). Nothing 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.

SearchBopfBusinessObjectsA

Search for BOPF/BOBF Business Objects by name pattern in the /BOBF/OBM_BO registry table. Supports wildcard * in query and package (e.g. "SALES", "/IAM/*"). Returns name, object category, and generated flag for each match. When package is provided, also returns the package name per result.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesName pattern to search for. Use * as wildcard (e.g. "*SALES*", "/IAM/*", "I_DEFECT*"). Without wildcards the pattern is treated as a contains-search.
objcatNoOptional: filter by object category. Values: "0"=Business Process Object, "1"=Dependent Object, "2"=Mass Data Run Object, "3"=Master Data Object, "4"=Meta Data Object, "5"=Controller Object, "6"=Technical Object, "7"=Message Object, "8"=Test Object, "9"=Configuration Object, "D"=Draft Object, ""=not classified.
packageNoOptional: filter by package name pattern. Use * as wildcard (e.g. "/IAM/*", "VDM_QM*"). When provided, results also include the package name.
max_resultsNoMaximum number of results to return (default: 50, max: 500)

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 full burden and does disclose meaningful behavior: the source registry table, wildcard support in both query and package, and exactly which fields are returned (name, object category, generated flag, plus package when filtered). It omits permission requirements and any rate/limit behavior, but that is minor for a read-oriented search tool.

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

Conciseness4/5

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

Four sentences, front-loaded with purpose and then wildcard/return information; each sentence adds practical value. Slight duplication of the wildcard detail from the schema keeps it from a 5.

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?

No output schema or annotations exist, so the description appropriately explains the returned fields and conditional package name. It is complete enough for a filtered search tool, though it could optionally note the result cap or read-only nature.

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 restates wildcard usage for query and package with examples that already appear in the schema, and does not add meaning for objcat or max_results beyond what the schema documents.

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?

States a specific verb ('Search') and resource ('BOPF/BOBF Business Objects') plus the backing registry table, which clearly distinguishes it from SearchRapBo (different object type) and GetBopfBusinessObject (retrieval vs search). It does not explicitly name sibling alternatives, so it falls short of a 5.

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?

Implies when to use it (finding BOPF/BOBF objects by name pattern) and gives wildcard examples for query/package, which is useful usage context. However, it never states when to use this over GetBopfBusinessObject or SearchObject, nor any exclusions or prerequisites, so it is only implied guidance.

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

SearchObjectC

Search for ABAP objects using quick search

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query string (use * wildcard for partial match)
maxResultsNoMaximum number of results to return

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description provides minimal behavioral info: only 'quick search'. It does not disclose whether the operation is read-only, requires authentication, or how results are structured, leaving significant ambiguity.

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

Conciseness3/5

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

The description is a single, concise sentence, but it could include additional useful context without becoming verbose. It is adequately sized but misses opportunities to enhance clarity.

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?

Given no output schema and no annotations, the description is incomplete. An agent lacks information about result format, search behavior (e.g., case sensitivity), and potential limitations, which are critical for a search tool.

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 both parameters are well-documented in the schema. The description adds no extra meaning beyond what is already in the schema fields.

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 'Search for ABAP objects' with a verb and resource, and implicitly distinguishes from sibling tools which are specific getters for individual object types. However, it lacks specificity about the scope of object types covered.

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 on when to use SearchObject versus sibling tools like GetClass or GetProgram. The agent must infer usage from context, increasing risk of incorrect tool selection.

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

SearchRapBoA

Search for RAP Business Objects by description and return the best matching technical name

ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYesSearch term to find RAP Business Objects by description

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 full behavioral burden. It discloses that the operation returns only the best matching technical name (implying a ranked, single-result search), but it does not state whether the operation is read-only, whether authentication or special permissions are required, or how ties or no-match cases are handled. Some behavioral context is present but incomplete.

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?

A single sentence with no redundant or filler content. The core action and return value are front-loaded 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?

For a simple one-parameter search tool with 100% schema coverage and no output schema, the description adequately covers purpose, input, and return value. It could be more complete by mentioning result handling (e.g., multiple matches, no match) or routing to alternatives, but the essentials 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?

Schema description coverage is 100% (the single parameter is fully documented in the schema as 'Search term to find RAP Business Objects by description'). The description adds no syntax, format, or matching details beyond what the schema already provides. Baseline 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?

States a specific verb (Search) and resource (RAP Business Objects) and specifies the return value (best matching technical name). The term 'RAP' distinguishes it from sibling SearchBopfBusinessObjects (BOPF) and generic SearchObject, so an agent can differentiate it without opening schemas.

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?

Usage is implied: search by description when the technical name is unknown. However, the description does not explicitly state when to use this tool versus alternatives like SearchBopfBusinessObjects or GetBehaviorForRapBo, nor does it provide exclusions or prerequisites. Implied usage only.

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

SetDefaultSystemA

Change the active SAP system at runtime. All subsequent operations will use this system unless explicitly overridden with the "system" parameter. Note: This change is temporary and only applies to the current session.

ParametersJSON Schema
NameRequiredDescriptionDefault
system_idYesThe system ID to set as active (e.g., "DEV", "QAS", "PRD"). Must be configured in .sap-systems.json.

TDQS

A4/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 and does disclose key behavior: the change is temporary, applies only to the current session, and affects all subsequent operations unless overridden. It does not cover permissions, error behavior for unconfigured systems, or whether the previous default is restored after the session.

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 three tightly written sentences with no waste. It front-loads the core action and then adds the most important behavioral notes in descending priority.

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 one-parameter setter with no output schema, the description is nearly complete because it states session scope and override behavior. It could mention what happens when system_id is invalid or not configured, but the schema already covers the configuration requirement.

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 single required parameter system_id is fully documented in the schema. The description adds no new details about system_id and instead references a 'system' parameter for overrides, which is not present in this tool's 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 and resource: 'Change the active SAP system at runtime.' It clearly distinguishes this setter from the many read/export/create siblings in the toolset, so an agent can identify its unique action.

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 explains the effect on subsequent operations and the session-scoped override, which implies when to use it. However, it does not explicitly state when to choose this tool over alternatives or any conditions under which it should not be used.

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. 65 tool updatesv1.1.0
    • First observedActivateClasses
    • First observedCheckSyntax
    • First observedCompareObjectVersions
    • First observedCreateBehaviorDefinition
    • First observedCreateCDSView
    • First observedCreateClass
    • First observedCreateClassImplementation
    • First observedCreateClassTests
    • First observedCreateServiceDefinition
    • First observedDeleteLocalClass
    • First observedExportAccessControlToFile
    • First observedExportBehaviorDefinitionToFile
    • First observedExportCDSViewToFile
    • First observedExportClassToFile
    • First observedExportFunctionGroupToFile
    • First observedExportInterfaceToFile
    • First observedExportMetadataExtensionToFile
    • First observedExportProgramToFile
    • First observedGetAccessControl
    • First observedGetBehaviorDefinition
    • First observedGetBehaviorForRapBo
    • First observedGetBopfBusinessObject
    • First observedGetCDSView
    • First observedGetCDSViewContents
    • First observedGetClass
    • First observedGetClassCoverage
    • First observedGetClassInclude
    • First observedGetClassTests
    • First observedGetClassUsages
    • First observedGetDataElement
    • First observedGetDomain
    • First observedGetFunction
    • First observedGetFunctionGroup
    • First observedGetInclude
    • First observedGetInterface
    • First observedGetMetadataExtension
    • First observedGetObjectUsages
    • First observedGetPackage
    • First observedGetPackageContents
    • First observedGetProgram
    • First observedGetRuntimeError
    • First observedGetServiceBinding
    • First observedGetServiceDefinition
    • First observedGetStructure
    • First observedGetSystemInfo
    • First observedGetTable
    • First observedGetTableContents
    • First observedGetTransaction
    • First observedGetTransportRequest
    • First observedGetTransportVersions
    • First observedGetTypeInfo
    • First observedGetVersionHistory
    • First observedImportClassFromFile
    • First observedListATCCheckVariants
    • First observedListRuntimeErrors
    • First observedListSystems
    • First observedListUserTransports
    • First observedRunATC
    • First observedRunClassTests
    • First observedRunPackageTests
    • First observedSapBrowserLogin
    • First observedSearchBopfBusinessObjects
    • First observedSearchObject
    • First observedSearchRapBo
    • First observedSetDefaultSystem

TDQS

B3.1/5.0

Scored across 65 tools

Disambiguation3/5

Most tools are distinct by ABAP object type and action, but several overlaps exist: GetClassCoverage vs RunClassTests both run unit tests, GetClassTests vs GetClassInclude both expose test classes, GetObjectUsages vs the deprecated GetClassUsages are redundant, and transport/version tools (GetVersionHistory, GetTransportVersions, GetTransportRequest) have intersecting purposes. Descriptions help, but boundaries are occasionally blurry.

Naming Consistency4/5

The dominant pattern is PascalCase Verb+Object (GetProgram, CreateClass, ExportClassToFile, RunClassTests), which is predictable and readable. Minor deviations include SapBrowserLogin (starts with a noun phrase) and RunATC (verb+acronym), but the set is largely consistent.

Tool Count1/5

With 65 tools, this server far exceeds the ideal 3โ€“15 range and lands in the extreme-mismatch category (50+ tools). Even for a broad ADT integration, the volume creates significant choice overload for an agent selecting among many similar read, export, and test tools.

Completeness4/5

The surface covers a wide lifecycle: read/search objects, create/replace, activate, export/import, run tests/ATC, inspect transports, compare versions, and check syntax. Minor gaps remain around delete/update for non-class artifacts and a few specialized administrative operations, but core development workflows are well supported.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with SAP ABAP systems through ABAP Development Tools (ADT), providing access to repository objects, source code, where-used analysis, and SQL queries with support for both on-premise and BTP systems.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform ABAP Development Tools operations on SAP ERP (ECC and S/4HANA) systems, including source code editing, object activation, syntax checks, and ABAP unit tests.
    5 npm
    MIT