Skip to main content
Glama
kts982

MCP SAP GUI Server

by kts982

MCP SAP GUI Server

An MCP (Model Context Protocol) server that enables AI assistants to interact with SAP GUI for Windows through the SAP GUI Scripting API.

It is client-agnostic: if your MCP client can launch a local stdio server, it can use this project. Examples in this README use Claude because the setup is easy to demonstrate, but the same server can be used from Codex, GitHub Copilot, Gemini CLI, and similar MCP-capable tools.

Current release: 0.5.2 for local Windows use over MCP stdio.

CI Docs Release

Status

  • GitHub workflows are included for CI, Docs, Dependency Audit, and tag-based Release.

  • Primary repository: GitHub (kts982/mcp-sap-gui).

Related MCP server: SAP RFC MCP Server

What's New

0.5.2 asks you before a popup answer that may save, as it does for F11, and makes table-control writes after a scroll land on the row you meant. Three of its fixes come from @nelz0n. Every change, release by release: CHANGELOG.

sap_preview — see it before it happens. The agent can now show you an approval card at any checkpoint: before a batch write, before saving, or whenever you ask ("before adding country GR, show me the values"). It carries the current screenshot, session context, and the exact values about to be written — password-shaped values masked. On MCP Apps hosts (VS Code Copilot Chat) it renders as a rich inline card; everywhere else you get the same summary as text plus the screenshot. Saving still goes through the confirmation gate. Details: Rendered Preview Cards.

Confirmation points — nothing is written without you. Tell the agent once ("ask me before every field write") and the server enforces it: sap_set_confirmation_points activates categories of write operations that pause for your explicit approval before anything reaches SAP. Enforced server-side by middleware — declining blocks the call no matter what the agent does, removing a gate asks you first, and admins can pin gates for every session with --confirm. Details: Security Considerations.

What This Does

This server allows AI assistants to:

  • Connect to SAP systems (like double-clicking in SAP Logon Pad)

  • Execute transactions (MM03, VA01, /SCWM/MON, etc.)

  • Read and write screen fields, checkboxes, radio buttons, comboboxes, and tabs

  • Use F4 value help: hit lists, restriction dialogs, date and time pickers

  • Select menu items from the menu bar (Table View, Edit, Selection, etc.)

  • Navigate through SAP screens using keyboard keys and buttons

  • Extract data from ALV grids (GuiGridView) and classic table controls (GuiTableControl)

  • Read classic report lists (WRITE output) as text, including the colour of a line

  • Interact with ALV toolbar buttons and context menus

  • Read and interact with tree controls (TableTree, ColumnTree, SimpleTree), including the docked dialog structure of view clusters

  • Take screenshots of SAP windows, inline or saved as a full-resolution file

  • Discover screen elements for automation

  • Show you previews before writing, and pause for your approval at confirmation points you choose

Example Conversation

User: "What's the description for material MAT-001 in system D01?"

Assistant: [connects to D01]
           [executes MM03]
           [enters material number]
           [reads description field]

"The material MAT-001 is described as 'High-Grade Steel Plate 10mm'
in system D01."

Quick Start

  1. Install uv (it ships with uvx), if not already installed:

pip install uv
  1. Start SAP Logon Pad and open an SAP GUI session, or at least have SAP Logon running.

  2. Configure your MCP client to launch this server. No clone or manual install needed — uvx fetches the released package from PyPI and runs it in an isolated environment:

Command:   uvx
Arguments: mcp-sap-gui[screenshots]
Transport: stdio

(Working from a source checkout instead? See Installation.)

  1. Try one of these prompts:

Connect to my open SAP session and tell me what system I'm on
Show me the current screen info
List all editable fields on this screen
Read the first 20 rows of the visible table

sap_connect intentionally does not accept a password parameter. The safer pattern is to log in through SAP GUI first and then attach with sap_connect_existing.

Requirements

  • Windows (SAP GUI only runs on Windows)

  • SAP GUI for Windows installed

    • Live compatibility verified with SAP GUI for Windows 8.10 64-bit Patch 0. SAP supports 8.10 until 30 June 2029 and 8.00 until 12 January 2027 (restricted support until 31 July 2027); 7.70 and older are out of SAP support and run best effort. Dates, sources and what needs which release: SAP GUI Versions

    • 7.70 Patch Level 3 or later reads a whole screen, popup, list page or table control in one call (GetObjectTree); older releases fall back to reading element by element, which is much slower on large screens (seconds instead of a fraction of a second for a full list page)

  • SAP Logon Pad running, or a SAP GUI session hosted by SAP Business Client (experimental, see below) or another embedded SAP GUI (for COM connections)

  • SAP GUI Scripting enabled on your SAP systems

  • Python 3.10+

  • uv (recommended Python package manager)

SAP Business Client (experimental)

  • Classic transactions in SAP Business Client run in embedded SAP GUI for Windows, so the server-side scripting parameter is still required. sapgui/nwbc_scripting gives read-only scripting (same effect as sapgui/user_scripting + sapgui/user_scripting_set_readonly): write tools refuse, and grids cannot be scrolled, so a table read stops at the rows on screen.

  • Sessions are discovered through the SAP GUI server process's COM Running Object Table entries (SAPGUISERVER-<pid>), next to the usual SAP Logon entry. sap_list_connections reports host: "sapguiserver" for them.

  • Tabs of one Business Client window are sessions of one connection; a second system is a second connection.

  • Business Client connections have no SAP Logon description; the list shows the system and client instead (e.g. DEV (100)).

  • Pressing Back repeatedly closes the tab instead of landing on the SAP Easy Access menu (SAP Business Client FAQ).

  • Fiori Launchpad connections may render a transaction as SAP GUI for HTML; such a transaction is invisible to scripting.

Supported Scope

Supported:

  • SAP GUI for Windows via the SAP GUI Scripting COM API

  • MCP stdio (default) and streamable HTTP transports

  • Per-client session isolation (multiple MCP clients can hold independent SAP sessions)

  • Interactive use from MCP-compatible clients

  • Read and write SAP GUI automation within the permissions of the logged-in SAP user

Not yet available:

  • SAP GUI for Java or SAP GUI for HTML

  • Browser-based Fiori automation

  • Unattended multi-user production orchestration

Enabling SAP GUI Scripting

SAP GUI Scripting must be enabled both client-side and server-side:

Client-side (SAP GUI Options):

  1. Open SAP GUI → Options → Accessibility & Scripting → Scripting

  2. Check "Enable scripting"

  3. Optionally uncheck "Notify when a script..." for smoother automation

Server-side (SAP System):

  • Transaction RZ11 → Parameter sapgui/user_scripting → Set to TRUE

  • Requires SAP Basis administrator access

Deploying Where Scripting Is Restricted

Many organizations disable SAP GUI Scripting globally as a hardening default. Enabling it does not have to be all-or-nothing: SAP ships graduated server-side controls that let a Basis team enable scripting narrowly — typically for named users on a development system — while keeping it off for everyone else.

Profile parameter (RZ11/RZ10)

Effect

sapgui/user_scripting = TRUE

Master switch; required for any scripting

sapgui/user_scripting_per_user = TRUE

Scripting works only for users holding authorization object S_SCR (class BC_A, activity 16); all other users stay blocked (SAP Note 983990)

sapgui/user_scripting_set_readonly = TRUE

Scripts may read screen state but cannot send anything that changes server state (SAP Note 692245)

sapgui/user_scripting_force_notification = TRUE

Users always see a notification/consent dialog when a script attaches; cannot be suppressed in local SAP GUI options (SAP Note 3591984)

sapgui/user_scripting_disable_recording = TRUE

Blocks recording of new scripts; playback still works

Useful facts when proposing this to a Basis/security team:

  • Per-user and read-only modes are combinable since SAP GUI 7.40 PL17 / 7.50 PL4: full API for S_SCR holders, read-only for everyone else (SAP Note 2565390).

  • On a read-only session this server reports scripting_read_only: true in the session info and refuses every write tool up front with the reason, instead of letting each action fail inside SAP GUI. All read tools keep working.

  • A dynamic RZ11 change to sapgui/user_scripting is not persistent — it reverts at the next application server restart, which suits a time-boxed evaluation on a development system.

  • Server-side, scripted actions run under the SAP user's normal authorizations and appear in logs as ordinary user activity. The user's authorization profile is the effective security boundary — pair a dedicated minimal-authorization account with this server's transaction policy (--policy-preset, --policy-file), --profile, and --audit-log options for defense in depth.

  • Authoritative reference: SAP GUI Scripting Security Guide (help.sap.com).

Why the Scripting API is required at all: SAP GUI for Windows draws dynpro screens on a custom canvas that exposes no usable structure to Windows UI Automation or other accessibility APIs — the Scripting API is the only structured way to read and drive SAP GUI screens. Commercial RPA products have the same dependency and fall back to screenshot/OCR-based automation when scripting is disabled; this project deliberately avoids that approach because it is imprecise and brittle.

Installation

Nothing to clone. uvx downloads the latest release and runs it in an isolated environment:

# Smoke test the published package
uvx "mcp-sap-gui[screenshots]" --help

The [screenshots] extra adds screenshot optimization (reduces screenshot size by 70-90%) and is recommended. Point your MCP client at uvx with argument mcp-sap-gui[screenshots] — see MCP Setup below.

From source (for development)

# Clone the repository
git clone https://github.com/kts982/mcp-sap-gui.git
cd mcp-sap-gui

# Install uv (if not already installed)
pip install uv

# Install all dependencies (creates .venv automatically)
uv sync

# With screenshot optimization (recommended - reduces screenshot size by 70-90%)
uv sync --extra screenshots

# With dev dependencies (for testing, linting, type checking)
uv sync --extra dev --extra screenshots

Windows note for source checkouts: while an MCP server launched from this checkout is running, its process holds locks on native DLLs in .venv (pywin32, watchfiles). Running uv sync or upgrading dependencies during that time can fail with "Access is denied" or leave .venv half-updated — stop or restart the MCP client first, then sync. If two MCP clients (e.g. Claude Code and VS Code) launch the server from the same checkout, point the second one at an isolated environment instead of the shared .venv:

Command:   uv
Arguments: run --isolated --no-project --with "mcp-sap-gui[screenshots,apps] @ file:///<path-to-checkout>" python -m mcp_sap_gui.server

(uvx mcp-sap-gui users are unaffected — every uvx launch uses its own cached environment.)

Usage

Connection recommendation: prefer sap_connect_existing for already authenticated sessions. Use sap_connect mainly for SSO flows or to open the SAP login screen before the user completes manual login.

Running the MCP Server Directly

# Standard mode (stdio, default)
uv run python -m mcp_sap_gui.server

# Read-only mode (safer for exploration)
uv run python -m mcp_sap_gui.server --read-only

# With transaction whitelist
uv run python -m mcp_sap_gui.server --allowed-transactions MM03 VA03 ME23N

# HTTP transport (for team/remote use, binds to localhost)
uv run python -m mcp_sap_gui.server --transport http

# HTTP on custom host/port
uv run python -m mcp_sap_gui.server --transport http --host 0.0.0.0 --port 9000

# Policy profile (restrict visible tools)
uv run python -m mcp_sap_gui.server --profile exploration

# Confirmation points (ask the user before these categories run, every session)
uv run python -m mcp_sap_gui.server --confirm field_writes transactions

# Audit log to file (JSON lines)
uv run python -m mcp_sap_gui.server --audit-log sap_audit.jsonl

# EXPERIMENTAL: code mode — replaces the tool catalog with search/get_schema/
# tags/execute meta-tools; agents script chained SAP flows in a sandbox.
# Faster and cheaper on long chained flows (e.g. full table dumps), slower on
# quick one-shot questions. Requires: uv sync --extra code-mode
uv run --extra code-mode python -m mcp_sap_gui.server --code-mode

# Same, from the published PyPI package (no checkout needed)
uvx "mcp-sap-gui[screenshots,code-mode]" --code-mode

# Debug mode
uv run python -m mcp_sap_gui.server --debug

MCP Setup

This server communicates over stdio (stdin/stdout JSON-RPC), which is the standard MCP transport. You don't need to configure ports or URLs — the MCP client starts the server process and talks to it directly.

For any client, the core launch configuration is the same:

Command:   uvx
Arguments: mcp-sap-gui[screenshots]
Transport: stdio

Running from a source checkout instead of PyPI? Use uv run --directory <path-to-mcp-sap-gui> python -m mcp_sap_gui.server as the command.

Below are full examples for the most common local SAP GUI setup paths.

For a client-by-client setup guide, see docs/CLIENTS.md.


The repository includes a .mcp.json at the project root. When you open this project in Claude Code, the MCP server is automatically discovered — no manual configuration needed.

To use it:

cd mcp-sap-gui
claude

Claude Code will detect .mcp.json and start the SAP GUI MCP server automatically.

If you want to configure it globally for Claude Code (available in any project), add it to your user settings at ~/.claude/.mcp.json:

{
  "mcpServers": {
    "sap-gui": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mcp-sap-gui[screenshots]"]
    }
  }
}

Option 2: Claude Desktop

Add to your Claude Desktop config file:

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

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

Standard mode:

{
  "mcpServers": {
    "sap-gui": {
      "command": "uvx",
      "args": ["mcp-sap-gui[screenshots]"]
    }
  }
}

Note: Running from a source checkout instead of PyPI? Use "command": "uv" with "args": ["run", "--directory", "<path-to-mcp-sap-gui>", "python", "-m", "mcp_sap_gui.server"] — the --directory flag is required so uv finds the project's virtual environment regardless of the working directory Claude Desktop uses.

Read-only mode (recommended when exploring/querying data):

{
  "mcpServers": {
    "sap-gui": {
      "command": "uvx",
      "args": ["mcp-sap-gui[screenshots]", "--read-only"]
    }
  }
}

With transaction whitelist (only allow specific transactions):

{
  "mcpServers": {
    "sap-gui": {
      "command": "uvx",
      "args": [
        "mcp-sap-gui[screenshots]",
        "--allowed-transactions", "MM03", "VA03", "ME23N"
      ]
    }
  }
}

After editing the config, restart Claude Desktop for changes to take effect.


Option 3: Any MCP-compatible client

The server uses stdio transport. Point any MCP client at:

Command:   uvx mcp-sap-gui[screenshots]
Arguments: [--read-only] [--profile exploration|operator|full] [--confirm POINT ...] [--audit-log FILE] [--debug] [--policy-preset default|abap-dev|strict] [--policy-file FILE] [--allowed-transactions T1 T2 ...]
Transport: stdio

For a source checkout, use uv run --directory <path-to-mcp-sap-gui> python -m mcp_sap_gui.server instead.


Verifying the Setup

Once configured, you can verify the MCP server is working by asking Claude:

"List all available SAP GUI tools"

Claude should respond with the full list of sap_* tools. If SAP GUI is running, try:

"Connect to my open SAP session and tell me what system I'm on"

Then try:

"Show me the current screen info"
"List all editable fields on this screen"
"Read the first 20 rows from the visible table"

Built-in Agent Guidance

The server includes built-in navigation knowledge that helps any MCP client (Claude Code, Copilot, Cursor, Cline, etc.) use SAP GUI effectively:

  • MCP Instructions — Injected into every client's system prompt during initialization. Covers screen discovery workflow, popup handling, table pagination, SPRO tree navigation, key reference, and common mistakes to avoid.

  • docs://sap-gui-guide Resource — Detailed reference guide available on-demand via resources/read. Covers element types, ID naming conventions, transaction code formats, table type comparison, status bar messages, and step-by-step patterns for SPRO and table maintenance views.

These prevent common agent mistakes like guessing element IDs, ignoring popups, pressing F5 (="New Entries") when meaning to refresh, using double_click_tree_node in SPRO (which opens docs instead of executing the activity) or in a view cluster (where it does nothing), or reading a classic report list from a screenshot instead of with sap_read_list.

Available Tools

The server currently exposes 60 MCP tools.

Category

Count

What it covers

Connection & Policy

7

Connect to SAP, attach to open sessions, inspect sessions, disconnect, set policy profile, set confirmation points

Navigation

3

Execute transactions, send keys, inspect current screen

Fields & UI

13

Read/write fields, buttons, tabs, comboboxes, textedit, focus

Tables & Grids

17

ALV grids, TableControls, row selection, column info, cell ops

Popup / Toolbar / Shell / Lists

5

Popup inspection and handling, toolbar discovery, shell content, classic report lists

Trees

10

Read/search/expand/select/click SAP tree controls

Discovery

2

Screen element discovery and screenshots

Preview

1

Show the user the current screen plus the values the agent is about to write

Workflow Guidance

1

Return step-by-step guidance for known multi-tool SAP workflows

Transaction Guidance

1

Return a generic, read-first guide for supported SAP transactions

The most important patterns:

  • sap_get_screen_elements to discover IDs instead of guessing

  • sap_read_table to start with any SAP table/grid

  • sap_read_list when a report prints a plain list instead of an ALV grid

  • Every action response carries a short popup digest when a popup opened (classification, texts, button labels, and prefilled_inputs with a notice when inputs already hold values); sap_get_popup_window gives the full details and suggests a safe next step

  • sap_handle_popup(action="auto") when you want the server to dismiss only clearly safe informational popups and otherwise leave the dialog untouched

  • sap_preview before significant writes (batch field fills, F11 / Save) so the user sees the screen and the pending values first

  • sap_set_confirmation_points to make categories of writes ask the user for approval before they run

  • sap_get_workflow_guide when you want the proven sequence for a known workflow

  • sap_get_transaction_guide when you want a generic guide for a supported transaction: /SCWM/MON (also warehouse monitor), or SM30 for table/view maintenance and view clusters (also SM34, view cluster)

  • sap_read_tree plus search/expand helpers for SPRO-style navigation

For the full tool catalog, grouped by category with short descriptions, see docs/TOOLS.md.

Rendered Preview Cards

sap_preview is read-only and always returns a written summary plus the screenshot as an image, so it works in every MCP client. Clients that support the MCP Apps UI extension (for example VS Code Copilot) instead get a rendered card with the screenshot and a pending-values table. Install the optional extra to enable the card:

uv sync --extra apps          # or: uvx "mcp-sap-gui[screenshots,apps]"

Restricted or offline networks: by default the card renderer is loaded from the jsDelivr CDN, so the card silently fails to render on workstations without outbound internet access. Set PREFAB_BUNDLED_RENDERER=1 in the server's environment to make the renderer self-contained (a ~6.3 MB inline resource, no third-party domains):

{
  "mcpServers": {
    "sap-gui": {
      "command": "uvx",
      "args": ["mcp-sap-gui[screenshots,apps]"],
      "env": { "PREFAB_BUNDLED_RENDERER": "1" }
    }
  }
}

Security Considerations

This server provides powerful automation capabilities. Use responsibly.

Built-in Safeguards

  1. Transaction Policy - Which transactions an agent may start. What is dangerous depends on who runs the server and against which system, so it is configurable:

    • --policy-preset default (the default) blocks user and role administration (SU01, SU10, SU01D, PFCG, SU53), logs and dumps (SM21, ST22), development and program execution (SE38, SA38, SE80, SE37, SE16N), and system administration (STMS, SCC4, RZ10, RZ11, SM36, SM49, SM69, SM59, STRUST, SICF, SM01, SM18, SM19). Customizing and display work (SM30, SM34, SPRO, SE16, SE11) stays open

    • --policy-preset abap-dev additionally allows SA38, SE11 and SE80, for developers testing their own programs

    • --policy-preset strict blocks everything the policy file does not allow

    • --policy-file policy.json adds to the preset: {"preset": "abap-dev", "block": ["ZHR*"], "allow": ["SM59"]}. Entries are codes or glob patterns (SU*, /SCWM/*); allow always wins over block. Without the flag the server reads $MCP_SAP_GUI_POLICY_FILE, else %APPDATA%\mcp-sap-gui\policy.json if it exists. Keep the file outside the agent's workspace

    • Two examples ship in examples/: policy.example.json starts from default, additionally blocks a customer namespace (ZHR*) and SE16, and allows ST22 for dump analysis; policy.strict.example.json is an allowlist for a display-only agent. To make one your per-user policy on Windows: New-Item -ItemType Directory -Force "$env:APPDATA\mcp-sap-gui"; Copy-Item examples\policy.example.json "$env:APPDATA\mcp-sap-gui\policy.json"

    • The policy is read once at startup and written to the audit log (with the file's SHA-256). No tool can change it, and a policy file that cannot be read stops the server instead of falling back to something more permissive

    • Case-insensitive matching; handles /n, /o, /* prefixes and whitespace

    • It is a guardrail against agent mistakes, not a security boundary: a blocked transaction can often be reached another way (a menu path, a screen you left open). The SAP user's authorizations are the boundary

  2. OK-Code Bypass Prevention - Setting likely SAP command fields such as tbar[0]/okcd, txtOK_CODE, or similar command-code aliases to a blocked transaction is also blocked, preventing circumvention of the transaction policy

  3. Read-Only Mode - --read-only flag disables all mutating operations (field writes, button presses, transaction execution, key sends, tree/table interactions)

  4. Transaction Whitelist - For production use an allowlist: the strict policy preset with an allow list in the policy file (supports patterns such as /SCWM/*). The older --allowed-transactions T1 T2 ... flag still works and restricts on top of the policy.

  5. Policy Profiles - --profile controls which tools are visible: exploration (read-only), operator (read + write), full (all, default). Profiles can also be switched per-session via sap_set_policy_profile — but the server --profile is a floor: a session can restrict itself further, never grant itself more than the server allows

  6. Tool Tags - Every tool is tagged read or write for policy profile filtering. All tools carry MCP readOnlyHint/destructiveHint annotations so clients can display appropriate UI hints

  7. Save Confirmation - sap_send_key("F11") and sap_send_key("Save") now require explicit user confirmation via MCP elicitation. If the client does not support elicitation, the save is blocked instead of proceeding silently.

  8. Confirmation Points - Named categories of write operations that require blocking user approval before the server executes them. save (the F11 / Save key and the wnd[0]/tbar[0]/btn[11] Save toolbar button) is always on. transactions, batch_fields, field_writes and all_writes can be activated per session with sap_set_confirmation_points, or for every session with --confirm POINT [POINT ...].

    The gate is enforced server-side by middleware, so it applies no matter what the agent does — including inside the experimental --code-mode sandbox. Adding a point is silent; removing a session point asks the user first, and points set by --confirm cannot be removed at all. Declining returns an error and nothing is executed, and clients without elicitation support fail closed (the gated call errors instead of running unconfirmed). Every confirmation is written to the audit log with its outcome (accepted, declined, unsupported_client).

    On a client without elicitation support, removal fails closed too: a point activated there cannot be turned off again, so it blocks that whole category for the rest of the session. Points survive sap_disconnect — their lifetime is the MCP session, not the SAP connection.

    all_writes covers every write-tagged tool, including selection, scrolling and navigation helpers that change no business data — it is deliberately strict and noisy, and under it sap_send_key("F11") prompts twice (once for the category, once for the unchanged save gate).

  9. Audit Logging - --audit-log FILE writes every tool call (name, arguments, timing, outcome) as JSON lines. Secrets in arguments are masked automatically

  10. Secure Credential Resolution - sap_connect resolves credentials from a .env file (SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE). Passwords are never accepted as MCP tool parameters and never appear in client logs, tool-call history, or audit logs. Copy .env.example to .env to get started

  11. ID Validation And Normalization - User-supplied SAP window and element IDs are validated before findById() is called. Standard IDs like wnd[0]/usr/... are accepted, and full session paths like /app/con[0]/ses[0]/wnd[0]/usr/... are normalized to the short form automatically.

Recommendations for Production Use

  • Never expose to untrusted users

  • Use read-only mode for exploration/queries

  • Implement transaction whitelists for automation

  • Enable audit logging on SAP side

  • Use dedicated service accounts with minimal authorizations

  • Enable scripting per-user, not globally — sapgui/user_scripting_per_user with the S_SCR authorization limits scripting to named users (see Deploying Where Scripting Is Restricted)

  • Run on isolated systems (test/sandbox, not production)

SAP Licensing

Consult your SAP licensing agreement regarding:

  • Automated access and scripting

  • Indirect access considerations

  • Named vs. concurrent user licensing

Example Workflows

Display Material Master

# Claude would execute these tools:
sap_connect("D01 - Development System")
sap_execute_transaction("MM03")
sap_set_field("wnd[0]/usr/ctxtRMMG1-MATNR", "MAT-001")
sap_send_key("Enter")
# Select views...
sap_send_key("Enter")
description = sap_read_field("wnd[0]/usr/txtMAKT-MAKTX")

Extract Purchase Order List

sap_execute_transaction("ME2M")
sap_set_field("wnd[0]/usr/ctxtEN_LIFNR-LOW", "1000")  # Vendor
sap_send_key("Execute")  # F8
data = sap_read_table("wnd[0]/usr/cntlGRID1/shellcont/shell", max_rows=50)

Navigate Sales Order

sap_execute_transaction("VA03")
sap_set_field("wnd[0]/usr/ctxtVBAK-VBELN", "12345")
sap_send_key("Enter")
# Read header data
customer = sap_read_field("wnd[0]/usr/subSUBSCREEN.../txtVBAK-KUNNR")
# Navigate to items
sap_press_button("wnd[0]/usr/tabsTAXI_TABSTRIP.../tabpT\\01")
items = sap_read_table("wnd[0]/usr/.../cntlGRID1/shellcont/shell")

Filter Customizing Table (GuiTableControl)

# In SPRO or SM30 table maintenance view
# Use Selection -> By Contents to filter
sap_select_menu("wnd[0]/mbar/menu[3]/menu[0]")    # Selection > By Contents
# Select the field to filter on, enter value
sap_select_table_row("wnd[1]/usr/tblSAPLSVIXTCTRL_SEL_FLDS", 0)
sap_send_key("Enter")
sap_set_field("wnd[1]/usr/.../txtQUERY_TAB-BUFFER[3,0]", "EXTSYS001")
sap_send_key("Execute")
# Read the filtered table
data = sap_read_table("wnd[0]/usr/tblSAPLBD41TCTRL_V_TBDLS")

Batch Fill And Validate A Form

sap_set_batch_fields(
    {
        "wnd[0]/usr/ctxtFIELD1": "VALUE1",
        "wnd[0]/usr/txtFIELD2": "VALUE2",
    },
    validate=True,
    skip_readonly=True,
)
# Returns per-field results plus post-Enter screen feedback

Show The User What Is About To Change

"Before adding country GR, show me the values."

# Read-only: renders the current screen plus the pending values.
sap_preview(
    note="About to add country GR to V_T005",
    pending_fields={
        "Country Key (V_T005-LAND1)": "GR",
        "Name": "Greece",
        "Currency": "EUR",
    },
)
# The user confirms in chat, then the agent writes and saves:
sap_set_batch_fields({...}, validate=True)
sap_send_key("Save")   # still requires explicit confirmation via elicitation

Project Structure

mcp-sap-gui/
├── docs/
│   ├── CLIENTS.md             # Client-specific MCP setup notes
│   ├── OVERVIEW.md            # Product overview and roadmap direction
│   └── TOOLS.md               # Full MCP tool catalog
├── scripts/
│   └── check_docs.py          # Markdown link checker used by docs workflows
├── src/
│   └── mcp_sap_gui/
│       ├── __init__.py        # Package exports
│       ├── server.py          # MCP server implementation (tool definitions)
│       ├── session_manager.py # Per-client SAP session isolation
│       ├── sap_controller.py  # Facade class (composes all mixins)
│       ├── models.py          # VKey enum, SessionInfo, exceptions
│       ├── controller.py      # Base controller (connection, navigation, screen info)
│       ├── fields.py          # FieldsMixin (read/write fields, buttons, combos)
│       ├── tables.py          # TablesMixin (ALV grid + TableControl operations)
│       ├── trees.py           # TreesMixin (tree read, expand, select, click)
│       ├── discovery.py       # DiscoveryMixin (popups, toolbars, screenshots)
│       ├── confirmation.py    # Confirmation points + blocking-confirmation middleware
│       └── preview.py         # sap_preview text + Prefab card builders
├── tests/
│   ├── test_sap_controller.py # Controller unit tests
│   ├── test_confirmation.py   # Confirmation points: gate, tool, CLI floor
│   ├── test_preview.py        # sap_preview builders + card/text branches
│   └── test_server.py         # Server security & routing tests
├── examples/
│   └── basic_usage.py         # Direct controller example
├── .mcp.json                  # MCP server config (auto-detected by Claude Code)
├── CONTRIBUTING.md            # Contribution guidelines for public changes
├── LICENSE                    # MIT license
├── pyproject.toml
├── uv.lock                    # Dependency lock file (managed by uv)
└── README.md

Troubleshooting

"Cannot connect to SAP GUI"

  • Ensure SAP Logon Pad, SAP Business Client or another SAP GUI session is running

  • Check that SAP GUI Scripting is enabled in SAP GUI options

"Scripting disabled" error

  • sap_list_connections reports such systems with scripting_disabled: true and no sessions

  • Enable scripting server-side: RZ11 → sapgui/user_scripting = TRUE

  • Requires SAP Basis administrator

  • Organization won't enable scripting globally? See Deploying Where Scripting Is Restricted for per-user and read-only enablement options

"Element not found"

  • Use sap_get_screen_elements() to discover available field IDs

  • Field IDs vary between SAP systems due to customization

COM errors on startup

  • Ensure dependencies are installed: uv sync

  • Run uv run python -m win32com.client.makepy if COM registration issues occur

"No SAP tools appear in my MCP client"

  • Confirm the client is launching the server from the project root

  • Restart the MCP client after changing its MCP configuration

  • Run uv sync first so the environment and dependencies exist

SAP Logon exits during a read

  • On SAP GUI 8.00 with 0.5.0, table-control and classic-list reads can take SAP Logon down: upgrade to 0.5.1 (issue #22)

  • Another SAP GUI build that fails on the one-call read: turn it off per call site with MCP_SAP_GUI_DISABLE_OBJECT_TREE, and find the call with MCP_SAP_GUI_TRACE_FILE. See Switches for a misbehaving SAP GUI build

"The tool is available, but the action is blocked"

  • Check whether the server is running with --read-only

  • Check whether the transaction policy blocks it: the error names the active preset. Allow the transaction in a policy file (--policy-file, see Security Considerations) or pick another --policy-preset, then restart the server. The policy cannot be changed from inside a session

  • Check whether you started the server with --allowed-transactions

Development

# Install all dependencies (dev + screenshots)
uv sync --extra dev --extra screenshots

# Run tests
uv run pytest

# Type checking
uv run mypy src/

# Linting
uv run ruff check src/

License

MIT. See LICENSE.

Disclaimer

This project is not affiliated with, endorsed by, or sponsored by SAP SE. SAP, SAP GUI, and other SAP products mentioned are trademarks of SAP SE.

Use of this software with SAP systems should comply with your SAP licensing agreement and your organization's security policies.

Available Tools

60 tools
sap_collapse_tree_nodeC

Collapse a folder node in a tree control (e.g. SPRO/customizing tree).

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idYes
node_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the tool modifies state non-destructively. The description adds 'collapse' but does not disclose behaviors like idempotency, error handling for already collapsed nodes, or effects on children. Minimal additional value beyond annotations.

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 sentence, highly concise and front-loaded. However, it may be too brief to provide sufficient guidance; a few more words on parameters would be beneficial 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?

The tool is simple with two parameters and an output schema, but the description does not cover return behavior, prerequisites (e.g., tree must be loaded), or what happens when collapsing an already collapsed node. Given the presence of an output schema, more context on input constraints is needed.

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

Parameters1/5

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

Schema description coverage is 0%, so the description should compensate, but it provides no explanation for tree_id or node_key. The parameter names are somewhat self-explanatory but lack context about expected values or formats.

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

Purpose5/5

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

The description clearly states the tool collapses a folder node in a tree control, with a concrete example (SPRO/customizing tree). It uses a specific verb and resource, and distinguishes from siblings like sap_expand_tree_node.

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 usage for tree controls but does not explicitly state when to use this tool versus alternatives like sap_expand_tree_node or sap_select_tree_node. No when-not or alternative guidance.

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

sap_connectA
Read-only

Connect to an SAP system by its name in SAP Logon Pad.

Credentials are resolved from a .env file (SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE) so passwords never appear in MCP tool calls. Parameters provided here override the .env values (except password). If SAP is already open and logged in, use sap_connect_existing instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNo
clientNo
languageNo
system_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses credential resolution from a .env file and that passwords never appear in calls, adding security context beyond the annotations. It explains parameter overrides. The annotations (readOnlyHint=true, destructiveHint=false) are not contradicted.

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 main purpose, no unnecessary words. Efficient 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?

Covers purpose, security, parameter usage, and alternative tool. The output schema handles return values. Does not mention error handling or prerequisites like the .env file existence, but remains sufficient for an agent.

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?

Amid 0% schema description coverage, the description explains that parameters override .env values and identifies system_description as the SAP Logon Pad name. More detail on each parameter would improve clarity.

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

Purpose5/5

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

The description clearly states the tool connects to an SAP system by its name in SAP Logon Pad. It distinguishes itself from the sibling tool sap_connect_existing, which is for already open sessions.

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

Usage Guidelines4/5

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

The description explicitly advises to use sap_connect_existing if already logged in. However, it does not elaborate on other scenarios where this tool should be avoided.

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

sap_connect_existingA
Read-only

Connect to an already open SAP session. Use this when SAP is already logged in.

This is the most common starting point. connection_index=0 and session_index=0 connect to the first open session. Also attaches to SAP Business Client / embedded SAP GUI sessions. Indexes come from sap_list_connections; a connection with scripting_disabled=true cannot be attached.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_indexNo
connection_indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this a safe read operation, so the bar is lower; the description still adds real behavioral context by noting it attaches to SAP Business Client / embedded SAP GUI sessions, that indexes originate from sap_list_connections, and that scripting-disabled connections are un-attachable.

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, action front-loaded, no filler; the distinguishing condition and the failure constraint each earn their 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 an output schema present, return values need no explanation, annotations cover safety, and the description supplies the indexing model plus the scripting-disabled limitation. Only the explicit contrast with sap_connect for the non-logged-in path is absent.

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 0%, so the description carries the burden and does so: it explains that connection_index=0 and session_index=0 target the first open session and that index values come from sap_list_connections. It does not describe what happens with out-of-range or missing indexes.

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 ('Connect to an already open SAP session') and immediately disambiguates scope with 'Use this when SAP is already logged in', which distinguishes it from the sibling sap_connect that presumably establishes a new connection.

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 a clear when-to-use condition ('SAP is already logged in') and frames it as the most common starting point, plus a hard constraint: a connection with scripting_disabled=true cannot be attached. It stops short of explicitly naming the alternative tool (sap_connect) for the not-logged-in case.

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

sap_disconnectA
Read-only

Disconnect from the current SAP session and release the binding.

Sessions opened by this MCP session (via sap_connect) are closed. Sessions that were attached (via sap_connect_existing) are detached but left open so the user can continue working manually.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior1/5

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

The description states that sessions are closed, which is a state change, contradicting annotations that set readOnlyHint=true. According to the scoring rules, a contradiction results in a score of 1.

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

Conciseness5/5

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

The description is two sentences, concise, and front-loaded with the main action. Every sentence adds value without redundancy.

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?

Given no parameters, an output schema exists, and the tool's behavior is fully explained (including what happens to different session types), the description is 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?

The tool has zero parameters, so baseline is 4 per the scoring guide. No additional parameter information is needed.

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

Purpose5/5

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

The description clearly states the verb 'disconnect' and the resource 'current SAP session'. It distinguishes behavior for sessions opened by this MCP vs attached ones, which differentiates it from siblings like sap_connect and sap_connect_existing.

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

Usage Guidelines4/5

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

The description explicitly tells when to use the tool (to disconnect) and explains the two cases. It lacks explicit 'when not to use' or alternatives, but the context is clear given the sibling tools.

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

sap_double_click_cellA

Double-click a cell in a table/grid (often opens details or drills down).

Row is zero-based. Column is the column name (from sap_read_table or sap_get_column_info). Works on both ALV and TableControl.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
columnYes
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations show it is not read-only nor destructive, but description adds that double-click often opens details or drills down. However, it does not disclose potential side effects like screen changes or popups, and the output schema is not described.

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 concise sentences: purpose, parameter details, and compatibility. No redundancy, front-loaded with key action.

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?

Covers action, parameters, and compatibility. Lacks output schema explanation and potential prerequisites (e.g., cell visibility). Good for most use cases but could be more thorough.

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?

Despite zero schema coverage, description explains that row is zero-based and column is the column name from specific tools, adding meaning beyond the schema types. table_id is left implicit but its purpose is clear from context.

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

Purpose5/5

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

Description clearly states the action (double-click a cell) and context (table/grid, opens details or drills down). It differentiates from sibling tools like sap_double_click_tree_item by specifying 'cell' and from sap_modify_cell by the action type.

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?

Implies when to use: for double-clicking a table/grid cell, not for trees or links. It mentions compatibility with ALV and TableControl, but does not explicitly state when not to use or list alternatives.

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

sap_double_click_tree_itemA

Double-click a specific item (column cell) in a tree node row.

item_name is the column name (e.g., 'Column1', 'Column2'). Use sap_read_tree to discover column names for the tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idYes
node_keyYes
item_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds that it performs a double-click action, which implies interaction but no contradiction. It explains the item_name parameter but not 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?

Two sentences, front-loaded with the main action. No unnecessary words.

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 3 params and an output schema, the description covers the purpose and one parameter, referencing a sibling tool for more info. Missing explanations for tree_id and node_key, but overall sufficient for a simple action.

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 0%, so description must compensate. It explains item_name with examples ('Column1', 'Column2'), but tree_id and node_key are not described. Partial coverage adds value but leaves gaps.

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

Purpose5/5

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

The description clearly states the verb 'double-click' and the resource 'a specific item (column cell) in a tree node row.' It distinguishes from sibling tools like sap_click_tree_link and sap_double_click_tree_node.

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

Usage Guidelines4/5

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

The description specifies when to use this tool (to double-click a tree item) and advises using sap_read_tree to discover column names. It does not explicitly state when not to use, 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.

sap_double_click_tree_nodeA

Double-click a node in a tree control (often opens details or drills down).

In SPRO/customizing trees, this may open documentation (hypertext) rather than executing the activity. Use sap_click_tree_link on the execute column (typically column '2') for SPRO activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idYes
node_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already signal this is not read-only and not destructive. The description adds nuance about SPRO trees where double-click may open documentation rather than executing an activity. However, it does not explicitly state whether the action modifies state or what side effects occur, leaving some ambiguity.

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

Conciseness5/5

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

Two concise sentences that front-load the primary purpose and follow with a specific exception. No wasted words; every sentence adds value.

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

Completeness4/5

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

Given the tool's simplicity (clicking a node) and the existence of an output schema, the description covers the main scenario and the SPRO edge case. However, it does not compare with sibling tools like sap_double_click_tree_item, which might be similar, leaving some contextual gaps.

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

Parameters2/5

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

Schema coverage is 0% (no descriptions for parameters tree_id and node_key). The description does not explain what these parameters represent or how to obtain them, failing to add meaning beyond the raw schema. It only mentions 'node' generically.

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

Purpose5/5

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

The description clearly states 'Double-click a node in a tree control' with the specific verb and resource, and explains it 'often opens details or drills down'. It also distinguishes the SPRO case from normal usage, making the purpose unmistakable.

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?

The description explicitly tells when to use this tool (for tree nodes) and when not to (for SPRO activities, recommending sap_click_tree_link instead on the execute column). It provides a clear alternative and context for the SPRO scenario.

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

sap_execute_transactionA

Execute (start/run) an SAP transaction code (tcode), e.g. MM03, VA01, SM30.

Navigates to the transaction's initial screen. Always check the screen info in the response to understand what screen you landed on. Some transactions require /n prefix for SCWM (e.g., /n/SCWM/MON). A bare /n leaves the current transaction (unsaved data is lost).

Subject to transaction blocklist/allowlist. Use sap_get_session_info to see the current transaction before navigating away.

ParametersJSON Schema
NameRequiredDescriptionDefault
tcodeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The annotations only provide readOnlyHint=false and destructiveHint=false, so the description carries the behavioral burden. It adds meaningful details: it navigates to initial screens, is subject to transaction blocklist/allowlist, and warns that a bare /n can lose unsaved data. This goes well beyond the structured annotations.

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 sentences are compact and front-loaded with the core action, then examples, navigation behavior, restrictions, and related-tool guidance. Every sentence earns its place and there is no filler or restatement of the schema.

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 single-parameter tool with an output schema, the description covers what an agent needs before calling: what tcode means, what screen to expect, the blocklist/allowlist constraint, the /n caveat, and the related sap_get_session_info tool. Return-value details are covered by the output schema, so their absence here is acceptable.

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 schema only defines a required string tcode with no description, so the description's identification of it as an SAP transaction code and the examples (MM03, VA01, SM30) are essential semantic context. It also adds the /n prefix nuance, though it does not exhaustively document every valid tcode or formatting edge case.

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

Purpose5/5

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

The description states a specific action — execute/start/run an SAP transaction code — against a clear resource (tcode), with concrete examples (MM03, VA01, SM30). It also clarifies the immediate behavior by saying it navigates to the transaction's initial screen, which separates it from the many read/navigation sibling tools.

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?

Provides actionable conditions: always check the screen info in the response, use the /n prefix for certain SCWM transactions, and consult sap_get_session_info before navigating away. It does not explicitly contrast this tool with an alternative execution tool, so it stops short of a full when-to-use/when-not-to-use guide.

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

sap_expand_tree_nodeA

Expand a folder node in a tree control to reveal its children.

After expanding, use sap_get_tree_node_children or sap_read_tree to see the newly visible child nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idYes
node_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate destructiveHint: false and readOnlyHint: false, so the description correctly implies a state-changing (non-read-only) but non-destructive action. It adds the behavioral detail that children become visible after expansion, which is useful context beyond what annotations provide.

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 consists of two succinct sentences: the first states the primary purpose, and the second provides actionable follow-up steps. No extraneous information is included.

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

Completeness4/5

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

Given the presence of an output schema (handling return values), the description covers the essential usage scenario: how to perform the action and what to do next. It lacks explicit mention of prerequisites (e.g., node must be collapsible) or error conditions, but these are typical for such a simple 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?

With 0% schema description coverage, the description must compensate. It implicitly explains tree_id and node_key as identifiers for the tree control and the node to expand. However, it does not provide explicit details like data types, format expectations, or restrictions, leaving some ambiguity.

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

Purpose5/5

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

The description clearly states the action (expand) and the target (folder node in a tree control) to reveal children. It distinguishes itself from the sibling tool sap_collapse_tree_node by focusing on expansion, and provides specific follow-up tools (sap_get_tree_node_children, sap_read_tree).

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

Usage Guidelines4/5

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

The description explicitly instructs to use sap_get_tree_node_children or sap_read_tree after expansion to see children. While it doesn't explicitly state when not to use it, the context is clear for a simple expand operation, and the sibling list includes a collapse tool, implying alternative use cases.

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

sap_find_tree_node_by_pathB
Read-only

Find a tree node key by its path.

E.g., '2\1\2' = 2nd child of root, then 1st child, then 2nd.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
tree_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

The description is consistent with annotations (readOnlyHint=true) and does not contradict them. However, it adds no behavioral context beyond the annotations, such as what happens if the path is invalid or if the operation is read-only.

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 extremely concise with two sentences, front-loading the purpose and including a helpful example. Every element 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?

Given the simplicity of the tool and the existence of an output schema, the description is minimally adequate. It lacks guidance on return values or error handling, but these may be covered by the output schema.

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

Parameters2/5

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

Only the 'path' parameter is partially explained via the example, while 'tree_id' receives no description. With 0% schema coverage, the description should compensate more fully for both parameters.

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

Purpose4/5

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

The description clearly states the tool finds a tree node key by its path and provides an illustrative example. However, it does not explicitly distinguish itself from sibling tools like sap_search_tree_nodes or sap_select_tree_node, which could cause ambiguity.

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. There is no mention of prerequisites, conditions, or scenarios where another tool would be more appropriate.

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

sap_get_alv_toolbarA
Read-only

Get all toolbar buttons from an ALV grid.

Returns button IDs, texts, and types. Use this to discover available actions (sort, filter, export, etc.) before pressing them with sap_press_alv_toolbar_button. Only works on GuiGridView (ALV), not GuiTableControl.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds information about return values (IDs, texts, types) and the grid type limitation, which adds value beyond annotations.

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 sentence description with front-loaded purpose and no extraneous text. Every sentence is informative.

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 tool with one parameter and an existing output schema, the description covers purpose, usage, return types, and limitations thoroughly.

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?

With only one parameter (grid_id) and zero schema description coverage, the description does not explicitly describe the parameter, but the name and context ('from an ALV grid') imply its meaning. Sufficient for a simple parameter.

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

Purpose5/5

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

The description clearly states the verb 'Get', resource 'all toolbar buttons from an ALV grid', and distinguishes from sibling tools like sap_get_toolbar_buttons by specifying the grid type.

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?

The description explicitly says to use this before pressing buttons with sap_press_alv_toolbar_button, and excludes GuiTableControl, providing clear when-to-use and when-not-to-use guidance.

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

sap_get_cell_infoA
Read-only

Get detailed cell metadata from an ALV grid.

Returns value, changeable, cell_type (Normal, CheckBox, ValueList, Button, ...), state (Normal, Error, Warning, Info: why a cell was rejected), f4_help, hotspot, color, tooltip, max_length; plus checked for a checkbox and list_box_count (entries) for a dropdown cell. Does NOT work on GuiTableControl.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
columnYes
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description goes beyond them by explaining the meaning of the returned 'state' field (why a cell was rejected) and the supported control type, which is genuinely useful behavioral context.

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 the core purpose, then a compact enumeration of return fields, closing with the control-type limitation. The field list is dense but each entry adds information; nothing reads as padding.

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?

An output schema exists, so the description needn't fully restate return values, and the GuiTableControl exclusion is a useful caveat. However, the complete absence of parameter semantics for a three-required-parameter tool leaves a significant gap for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% and the description says nothing about grid_id, row, or column — not their format, indexing base, accepted column identifiers, or validity constraints. With all three required parameters undocumented in both schema and description, an agent has to guess how to address a cell.

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 ('Get detailed cell metadata from an ALV grid') and enumerates the metadata fields, making it distinguishable from siblings like sap_get_current_cell or sap_get_table_control_row_info. The explicit exclusion 'Does NOT work on GuiTableControl' further pins down the target control type.

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?

Offers one negative constraint ('Does NOT work on GuiTableControl'), which is real routing value, but gives no positive when-to-use statement and never names the alternative tool to use for GuiTableControl. Usage is left largely to inference.

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

sap_get_column_infoA
Read-only

Get detailed column info from an ALV grid or table control.

Returns column names, titles and tooltips; for an ALV grid also each column's data_type (string, date, decimal, ...) and key flag, for a table control each column's cell_type and cell_id template. For a lighter alternative, use sap_read_table with columns_only=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. Beyond that, the description discloses behavior that varies by control type: ALV grids yield data_type and key flags, table controls yield cell_type and cell_id templates. It does not cover pagination, cost, or how to obtain a valid grid_id.

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 the core capability front-loaded and the call-to-action (alternative tool) at the end. The per-control-type detail is packed into one clause rather than padding, so every sentence earns its place.

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

Completeness4/5

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

An output schema exists, so return-value explanation is a bonus rather than a requirement, and annotations cover the safety profile. The description handles both supported control types and the sibling alternative, leaving only the unresolved question of how an agent obtains a valid grid_id.

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 0% for the single grid_id parameter, and the description never explains its format or provenance. The phrase 'ALV grid or table control' only indirectly hints that grid_id identifies such a control, so it does not fully compensate for the coverage gap.

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 ('Get detailed column info') plus resource and explicit scope ('from an ALV grid or table control'). It further distinguishes itself from the sibling sap_read_table by naming the lighter alternative, so an agent can pick between them 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 Guidelines4/5

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

Explicitly routes the agent to a cheaper alternative ('For a lighter alternative, use sap_read_table with columns_only=true'), giving a clear when-to-prefer-other condition. It stops short of stating prerequisites or when this tool is mandatory (e.g., before sap_modify_cell), so it is clear context rather than full when/when-not guidance.

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

sap_get_combobox_entriesA
Read-only

List all entries in a combobox/dropdown.

Returns key-value pairs so you know which values are valid.

ParametersJSON Schema
NameRequiredDescriptionDefault
combobox_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already show readOnlyHint=true and destructiveHint=false. The description adds minimal behavioral insight beyond returning key-value pairs, which is already implied.

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, front-loaded sentences contain all essential information without 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?

Given simple input, clear output, and annotations, the description is mostly complete. Could mention that the return format is suitable for validation or selection.

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

Parameters2/5

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

With 0% schema coverage, the description should clarify the 'combobox_id' parameter. It only mentions 'combobox/dropdown' without explaining how to obtain the ID or what format it is.

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

Purpose5/5

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

The description clearly states it lists all entries in a combobox/dropdown and returns key-value pairs, distinguishing it from sibling tools like sap_select_combobox_entry.

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 the tool is used to get valid values before selection, but does not explicitly state when to use it or when not to, missing explicit alternatives.

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

sap_get_current_cellB
Read-only

Get the currently focused cell position in an ALV grid or table control.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe read operation. The description adds that the tool retrieves the focused cell position in specific control types (ALV grid or table control), which provides context beyond annotations but does not detail return format or side effects. No contradictions with annotations.

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, concise sentence that directly states the tool's function without any extraneous information. It is appropriately sized for the tool's simplicity and immediately front-loads the core purpose.

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 existence of an output schema (as indicated by context signals), the description does not need to explain return values. However, it omits important context such as the requirement that a cell must be focused for the tool to succeed, and does not mention error conditions. The description is minimally adequate but leaves gaps for a robust understanding.

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

Parameters2/5

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

The schema has 0% description coverage, and the tool description provides no information about the 'table_id' parameter. The agent has no guidance on what value to provide or how to obtain it. The parameter name is somewhat self-explanatory, but the description should clarify its purpose to compensate for the missing schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'currently focused cell position in an ALV grid or table control'. It effectively distinguishes from sibling tools like sap_get_cell_info (gets cell info by coordinates) and sap_set_current_cell (sets focus). The purpose is unambiguous and specific to the current focus.

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 usage guidelines are provided. The description does not explain when to use this tool versus alternatives such as sap_get_cell_info or sap_read_table. There is no indication of prerequisites or context in which the tool is appropriate.

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

sap_get_popup_windowA
Read-only

Check if a popup/modal dialog is open (wnd[1], wnd[2], etc.).

Returns the popup's title, text content, and available buttons so you know how to respond. Also classifies the popup and suggests a safe next action. Returns {popup_exists: false} if no popup.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only; description adds detail on return values including classification and suggested action, which is helpful.

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

Conciseness5/5

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

Two concise sentences front-load the purpose and key output details without waste.

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?

Simple tool with output schema; description covers essentials: what it checks, what it returns, and special case (no popup).

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?

No parameters exist; baseline 4 applies as description does not need to add parameter info.

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?

Clearly states it checks for open popups and returns their content, differentiating from sibling sap_handle_popup which likely responds to popups.

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 use before responding to popups but does not explicitly exclude alternatives or state when not to use it.

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

sap_get_screen_elementsA
Read-only

Discover all elements on the current SAP screen.

Useful for finding field IDs when working with a new screen.

Use type_filter and changeable_only to reduce response size on complex screens (e.g. type_filter="GuiTextField,GuiCTextField" to find only input fields).

max_depth controls how deep to recurse into containers (default 2). Use max_depth=1 for a quick overview, max_depth=3+ for deeply nested layouts (splitter containers, tab strips with sub-containers).

Pass container_id='wnd[0]/mbar' to discover the menu bar structure.

A table control (SM30-style) is ONE element here, not one per cell: use sap_read_table(columns_only=true) for its columns and cell_id templates. A classic list (report WRITE output, SE16 standard list, F4 hit list) is left out and reported under 'lists': read it with sap_read_list. expand_tables=true lists every visible cell of both (large).

Docking containers sit BESIDE the user area, not inside it: the dialog-structure tree of a view cluster (SM34, most IMG activities) and the SE80 tree are under 'wnd[0]/shellcont'. When the window has any, the response lists them as docking_containers; discover them with that id, or pass container_id='wnd[0]' (max_depth=1) for all top-level areas.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNo
type_filterNo
container_idNownd[0]/usr
expand_tablesNo
changeable_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare a safe read-only operation, and the description adds substantial behavioural context beyond them: tables collapse to a single element rather than per-cell, classic lists are omitted and surfaced under 'lists', docking containers live under 'wnd[0]/shellcont' and are reported as 'docking_containers', and expand_tables produces large responses. These are exactly the surprises that would otherwise cause a wrong call.

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 the purpose and free of throwaway sentences; each paragraph covers a distinct case (filters/depth, menu bar, tables/lists, docking containers). It is long, however, and reads as a flat block of prose where the table/list contrast and the docking-container caveat would scan faster as a short list or heading.

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?

An output schema exists, so return-value detail is correctly left out, and the description instead supplies the domain-specific gotchas an agent needs for this complex SAP UI tree (single-element tables, excluded lists, docking containers beside the user area). Nothing needed to call it correctly on a new or unusual screen appears 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?

With 0% schema description coverage the description carries the load and mostly does: max_depth explained with default 2 and concrete values (1 for overview, 3+ for nested layouts), type_filter shown with real class names ('GuiTextField,GuiCTextField'), container_id illustrated with two example paths, and expand_tables with its size cost. changeable_only is only mentioned as a way to 'reduce response size' — its filtering semantics are implied rather than stated, a minor gap.

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 — 'Discover all elements on the current SAP screen' — plus the concrete goal ('finding field IDs when working with a new screen'). It also differentiates itself from siblings by name, e.g. tables are 'ONE element here' and should be read with sap_read_table, and lists are excluded in favour of sap_read_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 (new screen, need field IDs) and when-not (tables, classic lists) with the alternative tool named for each excluded case. It also routes the agent for special situations: container_id='wnd[0]/mbar' for the menu bar and 'wnd[0]' with max_depth=1 for top-level areas.

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

sap_get_screen_infoA
Read-only

Get current SAP screen info: transaction, program, screen number, window title, and status bar message (success/error/warning text).

Reads from session.ActiveWindow so the response always reflects what the user sees. The active_window field tells you which window is in focus (e.g. wnd[0] for the main screen, wnd[1] for a popup). The title comes from the active window.

Every action tool (press_button, send_key, select_menu, etc.) returns this same screen info, so you always know when a popup appears. Use sap_get_popup_window for full popup content (texts, buttons).

Present only when true: message_has_long_text (sap_press_button on 'wnd[0]/sbar' opens it) and message_as_popup (the message also sits in a popup that must be closed first).

Present only when set: subscreens, the sub-screens on the active window as "program:dynnr", outer first (program / screen_number name only the main screen, so an RF step, a tab page or a detail area that changes shows only here), and cursor, the ID of the field the cursor is in. A screen redisplayed without a message, e.g. for an empty required field, still moves the cursor to that field.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and non-destructive, so the bar is lower. The description adds real value beyond that: it explains the source (session.ActiveWindow), the meaning of the active_window field, and which fields are conditionally present (message_has_long_text, message_as_popup, subscreens, cursor) and why. It also notes the subtle behavior that a redisplayed screen still moves the cursor.

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?

Well structured with a summary line, then source/behavior in paragraphs, then conditional fields. It is somewhat long and could be tightened, but almost every sentence carries information about field presence conditions that would otherwise be unknown.

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 has an output schema, so return values need not be enumerated fully, but the description still explains non-obvious semantics like conditional fields and cursor movement. With zero params and annotations covering safety, the description is nearly complete and adds behavioral context the schema cannot.

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 baseline is 4. There is nothing to document beyond the response, and the description correctly focuses on return values rather than params.

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 (Get) and resource (current SAP screen info) and enumerates exactly what is returned: transaction, program, screen number, window title, status bar message. An agent can distinguish this from siblings like sap_get_session_info or sap_get_screen_elements immediately.

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 routes to the alternative sap_get_popup_window for full popup content, and explains that every action tool returns this same screen info so callers know when popups appear. No explicit 'when not to use' for other read tools, but context is clear.

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

sap_get_session_infoA
Read-only

Get information about the current SAP session (system, client, user, transaction, screen).

Also the SAP GUI release (sap_gui_version) and scripting_read_only: when true, the SAP server allows read-only scripting and write tools refuse.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds genuinely useful behavioral context by explaining that sap_gui_version and scripting_read_only are returned, and that scripting_read_only=true causes write tools to refuse. That cross-tool side effect is information an agent cannot get from the annotations or schema.

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, front-loaded sentences with no wasted filler, and the enumerated fields come first. The second sentence is slightly awkwardly worded around the scripting_read_only condition, but the size is appropriate.

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 an output schema present, the description need not enumerate return fields in detail, yet it usefully summarizes them. Combined with the scripting_read_only warning, an agent has enough to call and interpret this tool correctly, though the absence of routing guidance to sibling info tools is a minor gap.

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 the baseline is 4. There is no parameter semantics to document, and the description correctly focuses on returned content instead.

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 (Get) and resource (information about the current SAP session) and enumerates what is returned (system, client, user, transaction, screen). It is clearly a metadata-read tool, though it does not explicitly differentiate itself from the closely named sibling sap_get_screen_info.

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 resource type — you call this to inspect current session context — but there is no explicit when-to-use or when-not-to-use guidance, and no pointer to alternatives such as sap_get_screen_info or sap_list_connections for related needs.

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

sap_get_table_control_row_infoA
Read-only

Get row metadata (selectable, selected) from a GuiTableControl.

If rows is omitted, queries all visible rows. Does NOT work on ALV grids.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsNo
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive. The description adds valuable behavioral context: it works specifically on GuiTableControl (not ALV grids) and the default behavior when rows is omitted. This goes beyond what annotations provide.

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, front-loaded with the main purpose, no redundant information. Every word earns its place.

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?

Given the existence of an output schema, the description adequately covers purpose, scope, and parameter behavior. It does not need to describe return values. All critical aspects are addressed for a read-only metadata retrieval 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 0%, so the description must compensate. It explains that omitting rows queries all visible rows, adding meaning to that parameter. However, table_id is not elaborated, and the description does not add substantial detail beyond the schema. 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?

The description clearly states the tool retrieves row metadata (selectable, selected) from a GuiTableControl, differentiating it from ALV grids. This specific verb+resource combination, along with the explicit exclusion of ALV, effectively distinguishes it from sibling tools like sap_read_table.

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

Usage Guidelines4/5

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

The description provides a clear usage condition: 'If rows is omitted, queries all visible rows.' It also warns against use on ALV grids. While it does not explicitly name alternative tools, the context is sufficient for an agent to infer when to use this tool versus other table-related tools.

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

sap_get_toolbar_buttonsA
Read-only

List all buttons on the system toolbar (tbar[0]) and app toolbar (tbar[1]).

Returns button IDs, text, tooltip, and enabled state. This is for standard SAP toolbars, NOT ALV (use sap_get_alv_toolbar for ALV).

ParametersJSON Schema
NameRequiredDescriptionDefault
window_idNownd[0]

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds that it returns button IDs, text, tooltip, and enabled state, and specifies it works on tbar[0] and tbar[1]. No contradictions, but does not mention prerequisites like being connected to a session, which is minor given the tool's simplicity.

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, no redundant information. Every sentence adds value.

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?

Given the presence of an output schema (context indicates it exists), the description covers purpose, scope (which toolbars), return fields, and differentiation from sibling. Complete for a simple read-only list tool.

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

Parameters2/5

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

Input schema has one optional parameter 'window_id' with a default, but the description provides no explanation for it. Schema description coverage is 0%, so description should compensate, but it does not. The parameter is simple, but still lacks clarification.

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

Purpose5/5

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

Description clearly states the tool lists all buttons on system toolbar (tbar[0]) and app toolbar (tbar[1]), specifying returned fields (IDs, text, tooltip, enabled state). It distinguishes from ALV toolbar tool by naming a specific sibling.

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 it is for standard SAP toolbars, not ALV, and directly references the alternative tool 'sap_get_alv_toolbar'. Provides clear when-to-use and when-not-to-use guidance.

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

sap_get_transaction_guideA
Read-only

Return a generic, read-first guide for a supported SAP transaction.

Available transactions:

  • /SCWM/MON: EWM Warehouse Monitor with tree navigation and ALV results.

  • SM30: table/view maintenance and view clusters (SM34) - also what most IMG activities open: reading the table, the docked dialog-structure tree, new entries, saving and the customizing request prompt.

Aliases accepted: SCWM/MON, warehouse monitor, ewm warehouse monitor, SM34, table maintenance, view maintenance, view cluster.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNo
transactionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'read-first' phrasing is consistent. It adds scope details about supported transactions but does not disclose additional behavioral traits like error handling, permission requirements, or side effects beyond the read-only nature.

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 concise, front-loaded with the core purpose, and uses bullet points for readability. Every sentence adds value—intro, transaction details, and aliases—with no filler or repetition.

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

Completeness3/5

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

The description covers the main transaction parameter and provides useful context for two transactions, but misses the 'task' parameter semantics and does not mention error behavior for unsupported transactions. The presence of an output schema mitigates return-format gaps, but the parameter gap remains.

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?

With schema description coverage at 0%, the description compensates for the 'transaction' parameter by listing valid values and aliases, but completely omits the optional 'task' parameter, leaving its purpose unclear. Partial coverage of parameters reduces clarity for the agent.

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

Purpose5/5

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

The description clearly states the tool returns a read-first guide for supported SAP transactions, with specific verb and resource. It distinguishes from siblings like sap_execute_transaction by emphasizing read-first nature and enumerating exact supported transactions and aliases.

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 usage for obtaining a guide on specific transactions but does not explicitly compare with alternatives like sap_execute_transaction or sap_get_workflow_guide. It lists valid inputs but lacks when-not-to-use or alternative routing, leaving selection to inference.

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

sap_get_tree_node_childrenA

Get direct children of a tree node. Much faster than read_tree for step-by-step navigation of deep trees (e.g., SPRO).

Omit node_key or pass empty string for root-level nodes. Set expand=true to expand the node first (requires write permission).

ParametersJSON Schema
NameRequiredDescriptionDefault
expandNo
tree_idYes
node_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations indicate not read-only and not destructive. Description adds that expand=true requires write permission, disclosing a behavioral trait beyond annotations. Also notes performance characteristic (much faster). No contradictions.

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

Conciseness5/5

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

Three sentences, each serving a distinct purpose: purpose, node_key usage, expand usage. No fluff, clear and front-loaded. Every sentence earns its place.

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

Completeness4/5

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

Output schema exists, so return values need not be explained. Description covers main usage and constraints. Could mention error conditions or tree_id validity, but overall sufficient given tool complexity and sibling tools.

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 has 0% description coverage. Description adds meaning for node_key (omission for root nodes) and expand (purpose and permission requirement). This compensates significantly for the lack of schema descriptions.

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

Purpose5/5

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

Description explicitly states 'Get direct children of a tree node.' It uses a specific verb and resource, and distinguishes from sibling tool 'sap_read_tree' by highlighting faster step-by-step navigation for deep trees like SPRO.

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?

Provides clear context for when to use (faster than read_tree for step-by-step deep tree navigation) and how to use (omit node_key for root nodes, expand requires write permission). Does not explicitly state when not to use, but the comparison to read_tree implies alternatives.

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

sap_get_workflow_guideA
Read-only

Return step-by-step guidance for a common SAP workflow.

Available workflows:

  • search_help: F4 search help on a field. target = field ID.

  • table_export: Paginated table export. target = table element ID.

  • spro_navigate: SPRO customizing navigation. target = activity name.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
workflowYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds little behavioral context beyond stating it returns guidance. It does not contradict annotations, but it does not reveal additional traits like response format or potential 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?

The description is concise (two sentences plus bullet points) and front-loads the purpose. Every part is informative without redundancy. The structure makes it easy to scan.

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

Completeness4/5

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

Given the output schema exists (not shown), the description adequately covers the tool's function and input parameters. It lists all available workflows and their target usage. However, it does not describe the output format or handle potential edge cases, but the output schema likely fills that gap.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description is essential. For the 'workflow' enum, it explains each value and what the 'target' should be. This adds significant meaning, though the 'target' parameter lacks format or constraint details beyond the examples.

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 it returns step-by-step guidance for SAP workflows, listing three specific workflows. While it is distinct from sibling tools that perform actions, it does not explicitly differentiate from sap_get_transaction_guide, which may be similar. Overall purpose is clear but not fully distinguished.

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 when to use the tool (when guidance is needed for listed workflows) by specifying the workflows and their target parameters. However, it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions.

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

sap_handle_popupA

Read and optionally act on the current popup/modal dialog.

Use when active_window shows wnd[1] or higher. Combines popup inspection and response in a single call.

Actions:

  • read: return popup content without acting (default)

  • confirm: press OK/Yes/Continue/Enter on the popup

  • cancel: press Cancel (or F12) on the popup; never No, which on a save prompt drops the changes

  • press: press a specific button by its text or tooltip

  • auto: take only a clearly safe action; otherwise return the popup read-only

A press that may save (a Save button, or Yes/OK on a popup about saving, e.g. "Save the changes first?") asks the user first, like F11 in sap_send_key. So does any answer but Cancel when the popup's question cannot be read (question_readable: false; SAP GUI's Edge browser control). On such a popup, confirm never falls back to Enter, and auto only reads. An accepted press reports confirmed_by_user: true.

Returns the popup contents plus classification, requested action, and post-action screen/popup state when something was pressed.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoread
button_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that presses which may save prompt the user first, that unreadable questions (question_readable: false, Edge control) restrict behavior, that confirm never falls back to Enter in that case, and that accepted presses report confirmed_by_user: true. This is exactly the kind of consequence-level context annotations (readOnlyHint/destructiveHint) cannot convey.

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-loads the one-line purpose and the usage trigger before the action list, and the bullet structure makes scanning easy. It is somewhat long, with a dense paragraph on confirmation/safety behavior, but nearly every clause carries actionable information rather than padding.

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 mutating, multi-mode dialog tool with an output schema present, the description covers triggers, per-action semantics, safety constraints, and the user-confirmation contract. Since an output schema exists it needn't detail return shape, though it usefully notes what is reported back. Nothing needed to call it correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must carry the parameter burden, and it does: all five enum values of 'action' are defined with their distinct effects, and 'press' is explained as 'press a specific button by its text or tooltip', covering button_text's meaning. This fully compensates for the undocumented 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?

States a specific verb+resource ('Read and optionally act on the current popup/modal dialog') and explicitly notes it 'Combines popup inspection and response in a single call', which distinguishes it from the read-only sibling sap_get_popup_window and from sap_press_button. The action enum is spelled out so an agent knows exactly what operations are available.

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 an explicit trigger ('Use when active_window shows wnd[1] or higher') and enumerates each action with when-to-use semantics, including a negative rule ('never No, which on a save prompt drops the changes') and the conservative fallback ('auto: take only a clearly safe action; otherwise return the popup read-only'). Alternatives like sap_send_key F11 are referenced for the confirmation-prompt case.

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

sap_list_connectionsA
Read-only

List all open SAP connections and sessions.

Covers SAP Logon plus SAP Business Client / embedded SAP GUI sessions (host: saplogon | sapguiserver). A connection with no sessions and scripting_disabled: true means the server parameter sapgui/user_scripting is off, so no session can be read.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: the two host sources it spans (saplogon | sapguiserver) and the diagnostic meaning of a connection having no sessions with scripting_disabled=true.

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?

Front-loaded with the core action in the first sentence, followed by two short sentences that each add distinct value (coverage scope, diagnostic interpretation). No filler or restatement of the tool name.

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?

With zero parameters and an output schema present, the description does not need to enumerate return values. It supplies exactly the extra framing an agent needs: what is listed, which SAP clients are covered, and how to read the scripting_disabled condition.

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 input parameters, so the baseline is 4 and there is nothing to clarify on the input side. The host/scripting_disabled details in the description pertain to returned fields rather than parameters, and the output schema covers those returns.

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 opens with a specific verb and resource: 'List all open SAP connections and sessions,' and further scopes it to SAP Logon plus Business Client / embedded GUI sessions. It is clear what the tool returns, but it never names the nearest sibling (e.g. sap_get_session_info) to sharpen the boundary.

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: an agent can infer this is the entry point for enumerating connections before calling session-level tools, and the final sentence gives a diagnostic interpretation. There is no explicit 'use this when' or 'use X instead' guidance naming alternatives such as sap_get_session_info.

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

sap_modify_cellA

Modify the value of a cell in an ALV grid or table control.

Only works on editable cells. Use sap_get_cell_info to check if a cell is changeable before attempting to modify it.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
valueYes
columnYes
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate this is a non-read-only, non-destructive operation. The description adds that it only modifies editable cells, which is a behavioral constraint beyond the annotations. It does not disclose authentication needs or error states, but for a simple cell modification this is acceptable.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core purpose, and contains no fluff. Every sentence adds value.

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 complexity of SAP automation and the number of siblings, the description is somewhat brief. It does not explain success/failure behavior, return value (though an output schema exists), or error handling. While the core usage is clear, more context about return or side effects would improve completeness.

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

Parameters2/5

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

The input schema has 4 parameters (grid_id, row, column, value) with 0% schema description coverage. The description only implies these parameters by saying 'Modify the value of a cell' but does not explain their semantics, format (e.g., 0-based vs 1-based indices), or constraints. More detail is needed to compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the action 'Modify the value of a cell' and identifies the resource as 'an ALV grid or table control'. It is specific and distinguishes from sibling tools like sap_get_cell_info (read) and sap_set_current_cell (focus setting).

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?

The description provides explicit guidance: it says it only works on editable cells and advises using sap_get_cell_info to check editability first. This tells the agent when to use the tool and what prerequisite to check.

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

sap_press_alv_toolbar_buttonA

Press a toolbar button on an ALV grid (e.g., sort, filter, export).

Use sap_get_alv_toolbar to find button IDs. A menu button (Menu / ButtonAndMenu) opens its menu and the response lists menu_items (text and function_code); pick one with sap_select_alv_context_menu_item.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes
button_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare that this is neither read-only nor destructive. The description adds real behavioral context beyond that: a button press can open a menu whose menu_items (text and function_code) come back in the response, and that follow-up action routes to a different tool. It does not discuss permissions or how much UI state the press changes.

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 its examples, then the discovery prerequisite and the menu-button follow-up. No filler or restated metadata.

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?

An output schema exists, so return-value explanation is not required, and the description usefully adds that menu responses expose menu_items. The remaining gap is the unexplained grid_id and no note on side effects or permissions for a non-read-only action.

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 0%, so the description carries the burden for both parameters. It partially compensates for button_id by pointing at sap_get_alv_toolbar as the source of valid IDs, but grid_id is never explained, so an agent gets no help on which grid identifier to supply.

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 (press) and resource (toolbar button on an ALV grid), with concrete examples (sort, filter, export). It implicitly separates itself from the generic sap_press_button and from sap_get_alv_toolbar, which it names as the discovery counterpart.

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 a clear prerequisite workflow: find button IDs via sap_get_alv_toolbar, and use sap_select_alv_context_menu_item to complete a menu-button interaction. It stops short of stating when to prefer the generic sap_press_button or any exclusions, so it is clear context rather than full when/when-not guidance.

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

sap_press_buttonA

Press (click) a pushbutton or toolbar button on the current SAP screen.

Returns screen info after the press so you can detect navigation or popups. Use sap_get_toolbar_buttons to discover toolbar button IDs. Use sap_get_screen_elements to find on-screen button IDs. When screen info has message_has_long_text, pressing 'wnd[0]/sbar' opens that long text (Diagnosis / Procedure), usually as a list popup: read it with sap_read_list(window_id='wnd[1]').

A popup button is checked like sap_handle_popup's press: a press that may save, or any answer but Cancel to a popup question the tool cannot read, asks the user first (confirmed_by_user: true when accepted).

ParametersJSON Schema
NameRequiredDescriptionDefault
button_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false) by disclosing post-condition output ('Returns screen info after the press so you can detect navigation or popups') and a user-confirmation policy: presses that may save or ambiguous popup answers prompt the user and surface confirmed_by_user: true. That is exactly the kind of consequence/auth context an agent needs for a mutating click.

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 the core action, then progressively adds discovery, long-text, and confirmation details — all sentences are actionable rather than filler. Slightly dense for a single-parameter tool, but nothing is clearly redundant.

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?

An output schema exists, so return values need not be spelled out, yet the description still notes that screen info is returned and how to interpret it for navigation/popup detection. Combined with the ID-discovery and confirmation guidance, an agent has enough to invoke this correctly; only the ALV-button disambiguation 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?

Schema coverage for button_id is 0%, so the description must carry the load, and it does reasonably: it tells the agent where to obtain valid IDs (toolbar/screen-element discovery tools) and shows an example path syntax ('wnd[0]/sbar'). It stops short of stating the ID format rules in general, so a small gap remains.

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 ('Press (click) a pushbutton or toolbar button on the current SAP screen'), so an agent immediately knows the action and target. It differentiates from discovery siblings by pointing at sap_get_toolbar_buttons and sap_get_screen_elements, though it never explicitly contrasts itself with the very similar sap_press_alv_toolbar_button.

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 concrete usage context: discover IDs via sap_get_toolbar_buttons or sap_get_screen_elements, and a specific conditional workflow for message_has_long_text (press 'wnd[0]/sbar', then read with sap_read_list(window_id='wnd[1]')). It lacks an explicit when-not-to-use or a direct steer away from the ALV toolbar sibling, which leaves one plausible ambiguity unresolved.

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

sap_press_column_headerA

Click a column header in an ALV grid (triggers sort). Does NOT work on GuiTableControl.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnYes
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Discloses the behavioral effect (triggers sort) and a limitation (does not work on GuiTableControl). Annotations only indicate non-read-only, non-destructive, so description adds value.

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

Conciseness5/5

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

Two concise sentences, front-loaded with action and limitation, 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?

Covers basic use and limitation, but lacks details on parameter values or output. Has output schema, so return not needed. Missing guidance on how to obtain grid_id.

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

Parameters2/5

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

Schema has 0% parameter descriptions; the description does not explain grid_id or column beyond implying they refer to ALV grid and column header. Minimal value added over schema.

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

Purpose5/5

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

The description clearly states the action (click), target (column header in ALV grid), effect (triggers sort), and a limitation (not on GuiTableControl). This distinguishes it from sibling tools like sap_click_tree_link.

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?

Provides explicit context: when to use (to sort an ALV grid column) and what not to use (not on GuiTableControl). Lacks explicit alternatives, but sibling list provides context.

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

sap_previewA
Read-only

Render a preview card of the current SAP screen for the user: screenshot, session/transaction info, status bar, and the values the agent is about to write (pending_fields). Call before significant writes (batch fills, F11 save) or whenever the user asks to see what's about to happen. Read-only: nothing is written or saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
pending_fieldsNo
include_screenshotNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description reinforces this with 'Read-only: nothing is written or saved.' It adds useful context about the tool's behavior: it renders a preview card including screenshot, session info, status bar, and pending fields. There is no contradiction with annotations.

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 sentences with no wasted words. It front-loads the core purpose, follows with usage guidance, and ends with the read-only note. Each sentence earns its place, and the structure is logical and easy to scan.

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

Completeness3/5

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

The description covers the tool's function, when to use it, and its read-only nature. However, it does not describe the output/return value (no output schema exists), and it leaves the note parameter entirely unexplained. For a simple preview tool with optional parameters, it is adequate but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the parameters. It explicitly mentions pending_fields ('the values the agent is about to write (pending_fields)') but does not mention note or include_screenshot. The parameter names are self-explanatory to some degree, but the description does not clarify their purpose or relationships. Given the low coverage, the description fails to fully compensate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Render a preview card of the current SAP screen' and lists its contents (screenshot, session/transaction info, status bar, pending_fields). It distinguishes itself from siblings like sap_screenshot (which only captures a screenshot) and sap_get_screen_info (which only fetches info) by combining these into a preview card. The purpose is specific and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly states when to call: 'Call before significant writes (batch fills, F11 save) or whenever the user asks to see what's about to happen.' This provides clear context and timing. However, it does not explicitly mention when not to use it or alternative tools, so it stops short of a full when/when-not/alternatives treatment.

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

sap_read_fieldA
Read-only

Read the value of a field on the current SAP screen.

Returns value, type, changeable status, and labels (left/right). For a dropdown, value is the selected entry's text and key its key. Use sap_get_screen_elements to discover field IDs on unknown screens.

ParametersJSON Schema
NameRequiredDescriptionDefault
field_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: what the read returns, that 'changeable' status is included, and specifically that a dropdown's value is the selected text with key as the key.

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?

Four short sentences, front-loaded with the core purpose, then return shape, then the dropdown edge case, then the prerequisite pointer. Every sentence carries distinct information with no repetition.

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 an output schema present, the return-shape sentence is supplementary rather than required, and annotations carry the safety profile, so the critical gaps are closed. The remaining shortfall is the undocumented field_id format, which is not fully resolved by the sap_get_screen_elements pointer 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 0% and the single field_id parameter is undocumented in the schema. The description partially compensates by pointing to sap_get_screen_elements for discovering field IDs, but it never says what form a field ID takes or how to read it off a screen.

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 ('Read') and resource ('the value of a field on the current SAP screen'), with scope limiting it to the active screen. This distinguishes it from sap_set_field (write counterpart) and from the table/textedit readers whose targets are named differently.

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 a concrete prerequisite rule: 'Use sap_get_screen_elements to discover field IDs on unknown screens.' That tells the agent what to do first when the field ID is unknown. It lacks explicit when-to-prefer-this-over-alternatives guidance (e.g. vs sap_read_textedit or sap_get_cell_info), so it stops short of a 5.

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

sap_read_listA
Read-only

Read a classic ABAP list (WRITE output of a report) as lines of text.

Use it when a report shows a plain list rather than an ALV grid (program SAPMSSY0, screen 120), and for F4 hit lists in a popup (window_id= 'wnd[1]'). Such a list has no table object: every word is its own label, so sap_get_screen_elements leaves the cells out and reports it under 'lists'. This returns the page as the lines the user sees, with no screenshot needed.

  • colors: rows whose text has a semantic list colour, e.g. 'negative' (red, errors), 'positive' (green), 'total', 'heading'

  • scroll: present when the list is longer than the page; pass scroll_to=position+page_size to read the next page

  • with_ids=true adds the ID of each line's first label, to set the focus on a line (sap_set_focus) before F2 / double-click

  • is_list=false means this screen has no list: use sap_read_table

ParametersJSON Schema
NameRequiredDescriptionDefault
with_idsNo
max_linesNo
scroll_toNo
window_idNownd[0]

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true / destructiveHint=false, yet the description still adds real behavioural context: no screenshot is required, the response shape (lines as the user sees them), colour semantics ('negative' = red errors, 'positive' = green, 'total', 'heading'), and the scroll/pagination convention ('pass scroll_to=position+page_size to read the next page'). It stops short of stating limits on max_lines or truncation behaviour, so it is strong but not exhaustive.

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

Conciseness5/5

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

The core purpose and routing rule are front-loaded in the first paragraph, followed by a tight bullet list where each bullet adds a distinct fact (colours, scrolling, IDs, the negative case). No sentence repeats a sibling name or the schema without adding meaning.

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?

An output schema exists, so return values need not be re-explained; the description instead covers the remaining decision surface — when this tool applies, when it does not, and how to continue paginating. For a read-only 4-parameter tool this is complete enough to call correctly on the first attempt.

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 0%, so the description must carry the parameter burden, and it does for three of four: with_ids (adds the first label's ID for setting focus via sap_set_focus), scroll_to (defined operationally as position+page_size for the next page), and window_id (pinned to popup hit lists). max_lines and the default values are never explained, leaving one parameter undocumented in both schema and prose.

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

Purpose5/5

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

The description names a specific verb and resource ('Read a classic ABAP list ... as lines of text') and immediately distinguishes it from the sibling that handles the other case ('a plain list rather than an ALV grid'). It also explains why the resource is special ('every word is its own label, so sap_get_screen_elements leaves the cells out'), so an agent can route correctly without opening any 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?

Explicit when-to-use ('when a report shows a plain list rather than an ALV grid', 'for F4 hit lists in a popup (window_id='wnd[1]')') is paired with an explicit when-not plus alternative ('is_list=false means this screen has no list: use sap_read_table'). This is the strongest form of routing guidance.

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

sap_read_shell_contentA
Read-only

Read content from a GuiShell subtype (e.g., HTMLViewer).

An HTML viewer's page text and URL are readable only with the Internet Explorer browser control; with the Edge control (SAP GUI 7.70+ default, e.g. the F1 Performance Assistant) the response says so in note. Use sap_get_screen_elements first to find shell element IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
shell_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this is a safe read (readOnlyHint=true, destructiveHint=false), so the bar is lower, and the description adds genuine behavioral context: content is only readable with the IE browser control, and the Edge control path (SAP GUI 7.70+ default) returns an explanatory `note` instead. This platform-dependent behavior is valuable disclosure beyond structured fields.

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-loads the purpose, then the platform caveat, then the prerequisite — a logical order. Three sentences with no filler, though the middle sentence is dense with parenthetical asides.

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?

An output schema exists (so return values like `note` need not be explained), and annotations cover the safety profile. The description adds the platform limitation and the ID-source prerequisite, making it largely complete for a one-parameter read tool, with only the ID format left implicit.

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 0% for the single `shell_id` parameter, so the description must carry the load. It partially compensates by pointing to sap_get_screen_elements as the source of valid IDs, but never describes the ID format or type, leaving a real gap for the only parameter.

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 (Read) and resource (content from a GuiShell subtype such as HTMLViewer), which distinguishes it from sibling read tools like sap_read_field, sap_read_textedit, and sap_read_tree that target other UI element types. It does not explicitly name a competing sibling, 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 Guidelines4/5

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

Gives a concrete prerequisite workflow: 'Use sap_get_screen_elements first to find shell element IDs,' and explains the runtime condition under which content is actually readable (IE control vs Edge control). It omits explicit when-not/alternative guidance for reading shell content versus other read tools, so it is clear context rather than a full routing rule.

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

sap_read_tableA
Read-only

Read rows from a table on the current screen — ALV grid (report/list output) or TableControl (SM30 maintenance view, customizing screens).

Auto-detects the table type. The response includes a 'table_type' field ('GuiGridView' for ALV or 'GuiTableControl') so you know which type-specific tools to use next (e.g., sap_get_alv_toolbar for ALV, sap_scroll_table_control for TableControl).

Use columns_only=true for schema discovery (returns column metadata only, no data). For a TableControl it also gives each column's cell_type and a cell_id template ({row} = zero-based visible row) for sap_set_batch_fields. Use columns to fetch only specific columns (CSV). Use start_row to paginate through large tables. On a TableControl a start_row (0 included) scrolls there first; without one the read starts where the table is scrolled now (e.g. after Position...). first_visible_row says which row is on top.

A TableControl's total_rows counts its empty lines too (SM30 pads the view). When the read reaches the first empty row, the response has empty_rows_from, that row's absolute index: the data ends there.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNo
max_rowsNo
table_idYes
start_rowNo
columns_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only cover readOnly/destructive, so the description adds substantially: auto-detection, the table_type field, that start_row=0 scrolls first, that total_rows includes SM30 padding lines, and how empty_rows_from marks data end. It omits max_rows/column-format details but the behavioral trait disclosure is rich and non-obvious.

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-loads purpose then the table_type routing hint, then usage paragraphs. Content is dense and mostly earns its place; a few parenthetical asides (the Position... example, SM30 padding note) add length but are genuinely informative.

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

Completeness4/5

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

Given an output schema exists, return-field explanation is not strictly required, yet the description still clarifies table_type, total_rows, first_visible_row, and empty_rows_from—useful non-schema context. Coverage is strong; only max_rows semantics remain unclear.

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 0%, so the description must compensate and does: it explains columns_only, columns (CSV), start_row (including null/default 'current scroll' semantics), and touches on rows. It doesn't define max_rows or clarify table_id format, leaving one of five params undocumented.

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 (read rows from a table) and explicitly scopes to the two types it handles (ALV grid and TableControl), even naming the SM30 maintenance-view case. The 'table_type' return field lets an agent route to the right type-specific sibling, so it is clearly distinguished from tools like sap_read_shell_content or sap_read_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?

Gives explicit when-to-use routing: columns_only=true for schema discovery, columns to fetch specific columns, start_row to paginate, and points to sap_get_alv_toolbar vs sap_scroll_table_control based on detected type. Also explains the start_row vs current-scroll behavior, removing ambiguity about read position.

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

sap_read_texteditA
Read-only

Read the content of a multiline text editor (GuiTextedit) — long texts, notes, comments, document text.

Returns full text and line count. Use max_lines to cap output for large text editors (0 = all lines).

ParametersJSON Schema
NameRequiredDescriptionDefault
max_linesNo
textedit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by specifying that the tool returns full text and line count, and explains the max_lines parameter behavior. No contradiction with annotations.

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 front-loaded purpose and no redundant content. Every sentence adds value: first defines what it does, second explains return and parameter usage.

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

Completeness4/5

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

The tool is simple; description covers purpose, return values, and key parameter. Output schema exists to detail return structure. Missing prerequisites like requiring an active connection, but that is likely shared context from sibling tools.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It explains max_lines (cap output, 0=all lines) but does not describe textedit_id beyond implicitly referencing it. Partial coverage of 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 clearly states the verb "Read" and the resource "multiline text editor (GuiTextedit)", listing use cases. It distinguishes from sibling tools like sap_read_field or sap_read_table by specifying the target UI element.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (reading multiline text editors), but does not explicitly mention when not to use it or contrast with alternatives like sap_set_textedit. However, the context is sufficient for an AI agent to infer appropriate usage.

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

sap_read_treeA
Read-only

Read data from a tree control (TableTreeControl, ColumnTreeControl, etc.).

Returns node hierarchy with texts and column values. For large trees (e.g., SPRO with 1000+ nodes), use sap_get_tree_node_children for step-by-step navigation instead. Use sap_search_tree_nodes to find specific nodes by text.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idYes
max_nodesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by stating the output format (node hierarchy with texts and column values), though it does not detail edge cases or performance characteristics beyond the large tree hint.

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 sentences with no superfluous content, front-loaded with the primary purpose, and efficiently covers key information.

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?

Given the presence of an output schema (documenting return format), the description adequately covers purpose, usage guidance, and parameter context. It is complete for the tool's complexity.

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?

With 0% schema description coverage, the description relies on context to explain parameters. It implies tree_id identifies the tree and hints at max_nodes via the large tree alternative, but does not explicitly describe max_nodes as a node limit. Partial compensation but not fully clear.

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

Purpose5/5

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

The description clearly identifies the tool as reading data from tree controls, specifies the returned structure (node hierarchy with texts and column values), and distinguishes it from sibling tools like sap_get_tree_node_children for large trees and sap_search_tree_nodes for searching.

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?

The description explicitly advises against using this tool for large trees, directing to sap_get_tree_node_children, and for finding specific nodes, directing to sap_search_tree_nodes, providing clear when-to-use guidance.

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

sap_screenshotA
Read-only

Take a screenshot of the current SAP window.

Use as a fallback when structured tools (sap_get_screen_elements, sap_read_field, sap_read_table) return empty or confusing results, e.g., on Web Dynpro screens where the element tree is non-standard.

To put a screenshot into a document, pass save_path (must end in .png, directory must exist, existing files are never overwritten). The file keeps SAP GUI's full resolution; the inline image is capped at 1920px. The response then also reports the absolute path and pixel size. Set inline=False to skip the image when only the file is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
inlineNo
save_pathNo

TDQS

A4.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, and the description aligns with those. It adds valuable behavioral details beyond annotations: existing files are never overwritten, the saved file keeps full SAP GUI resolution, inline images are capped at 1920px, and the response includes the absolute path and pixel size. This is meaningful operational context.

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

Conciseness5/5

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

The description is organized into three compact sections: core purpose, fallback usage, and parameter behavior. Every sentence carries operational information with no filler. The main purpose is front-loaded, and the parameter details are grouped logically.

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 tool with two optional parameters, no output schema, and safe annotations, the description covers purpose, when to use it, parameter constraints, file behavior, and response contents. Nothing essential for an agent to call it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It explains save_path must end in .png, the directory must exist, files are never overwritten, and the file keeps full resolution. It also clarifies inline controls whether the image is embedded and that inline=False skips the image when only the file is needed.

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: 'Take a screenshot of the current SAP window.' It also differentiates itself from structured inspection tools by positioning itself as a fallback for screens where the element tree is non-standard. This is unambiguous among many SAP sibling tools.

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 says when to use the tool: as a fallback when structured tools like sap_get_screen_elements, sap_read_field, and sap_read_table return empty or confusing results. It also gives concrete guidance for when to set inline=False, making the selection criteria clear.

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

sap_scroll_table_controlA

Scroll a GuiTableControl to a specific row position.

Does NOT work on ALV grids (they handle scrolling internally). For reading data at a specific offset, prefer sap_read_table with start_row parameter — it handles scrolling automatically.

position in the response is the row SAP actually put at the top, which can differ from the one asked for (then requested_position and a note say so). Cell IDs ([col,row]) count visible rows from that row.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYes
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false, so the safety profile is thin; the description compensates by disclosing that the resulting top row may differ from the requested one, that requested_position/note signal the mismatch, and that cell IDs are relative to the visible top row. It does not cover other behavioral details (e.g. whether the scroll is reversible or session state side effects), so it stops short of a 5.

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 primary action is front-loaded in the first sentence, followed by the exclusion, the preferred alternative, and the response caveat. 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.

Completeness5/5

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

An output schema exists, so return-format details are not required, and the description still adds the one non-obvious return caveat (position vs requested_position). For a 2-param scroll tool, nothing an agent needs to invoke it correctly 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?

Schema coverage is 0% and the schema gives only integer/string types, so the description must carry the load; it meaningfully explains that 'position' becomes the top row, that the applied position may differ, and how cell IDs index off it. 'table_id' remains self-evident but undocumented, keeping it below a full 5.

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 concrete verb and resource ('Scroll a GuiTableControl to a specific row position') and explicitly excludes ALV grids, which is the key ambiguity given the sibling tools sap_get_alv_toolbar and sap_press_alv_toolbar_button. An agent can distinguish this from the many other table/row siblings 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?

Explicitly names when not to use it (ALV grids, which scroll internally) and routes the agent to a concrete alternative with the exact parameter to use ('prefer sap_read_table with start_row parameter'). This is the when/when-not/alternative pattern in full.

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

sap_search_tree_nodesA
Read-only

Search for tree nodes by text. Returns matches with full ancestor paths.

Useful for finding nodes in deep trees where the same label appears in multiple branches. Case-insensitive substring match. Optionally pass column to search in a specific column instead of node text.

Important limitation: Only searches nodes that are already loaded (expanded) in the tree. Collapsed subtrees are not searched. If you don't find what you expect, expand parent nodes first using sap_get_tree_node_children with expand=true, then search again.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnNo
tree_idYes
max_resultsNo
search_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds crucial behavioral context: only searches already loaded/expanded nodes, case-insensitive substring match, and option to search in a specific column. No contradictions.

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?

Four clear paragraphs with front-loaded purpose. Each sentence adds value: first paragraph states function, second gives use cases, third details parameter options, fourth highlights limitation with actionable resolution. No wasted words.

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?

Given the presence of an output schema (not shown but indicated), the description does not need to detail return values. It provides all necessary context for a tree search tool, including a key limitation and reference to a sibling tool (sap_get_tree_node_children).

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 0%, so the description must compensate. It explains tree_id and search_text as required, column for specific column search, and max_results with defaults. However, it does not detail possible values or formats for tree_id or search_text beyond obvious usage.

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

Purpose5/5

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

The description clearly states it searches for tree nodes by text and returns matches with full ancestor paths. It specifies the verb 'search' and resource 'tree nodes', and distinguishes from siblings like sap_find_tree_node_by_path by focusing on text search within loaded nodes.

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 says when to use (deep trees, same labels in multiple branches) and when not to use (collapsed subtrees not searched). Provides guidance to expand parent nodes using sap_get_tree_node_children with expand=true before searching, which is a clear alternative step.

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

sap_select_all_rowsA

Select all rows in an ALV grid. Does NOT work on GuiTableControl.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive behavior. The description adds the critical behavioral constraint that it does not work on GuiTableControl, which is useful for agents. It stops short of explaining side effects like event triggers.

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 extremely concise with two sentences: the first states the core function, the second adds a crucial limitation. No unnecessary details, well 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?

While the description is concise and covers the main purpose, it lacks explanation of the parameter and prerequisites (e.g., needing an active SAP connection, the ALV grid must be visible). For a tool with one parameter and no schema description, more context is needed to be fully actionable.

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

Parameters2/5

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

The schema has 0% description coverage for the single required parameter 'grid_id', and the description does not explain what grid_id is, how to obtain it, or its format. This is a significant gap for an agent to correctly invoke the tool.

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

Purpose5/5

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

The description clearly states the action: select all rows in an ALV grid. It also specifies the limitation about not working on GuiTableControl, which helps distinguish from other table-related tools.

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

Usage Guidelines4/5

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

The description mentions when to use (ALV grid) and when not to (GuiTableControl), providing clear usage boundaries. However, it does not explicitly suggest alternative tools for GuiTableControl or mention context like selection mode requirements.

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

sap_select_all_table_control_columnsA

Select or deselect all columns in a GuiTableControl. Does NOT work on ALV grids.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNo
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate mutation (readOnlyHint=false, destructiveHint=false). Description adds context that it affects GuiTableControl specifically, not ALV grids, which is valuable. Does not mention side effects such as scrolling or state changes, but for a simple selection toggle this is adequate.

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?

Single sentence conveying purpose and a critical limitation. No wasted words; front-loaded with essential 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?

Given simple parameters (table_id and boolean select) and presence of an output schema, the description captures the core behavior and key limitation. Could be slightly more detailed about the boolean parameter's effect, but overall adequate.

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

Parameters3/5

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

Schema has 0% description coverage, so description must clarify parameters. It implies the boolean 'select' controls selection/deselection but does not explain 'table_id' or provide concrete syntax. Partial value added, but insufficient for full understanding.

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?

Clearly states the action (select/deselect) and resource (all columns in GuiTableControl) with an explicit exclusion of ALV grids. Differentiates from siblings like sap_select_all_rows.

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?

Provides a when-to-use description (selecting/deselecting columns in GuiTableControl) and a when-not (does not work on ALV grids). Does not explicitly mention alternative tools for ALV grids, but the exclusion is helpful.

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

sap_select_alv_context_menu_itemA

Select an item from an opened ALV context menu.

First use sap_press_alv_toolbar_button on a Menu button to open it, then use this to select an item. Alternatively, pass toolbar_button_id to open the menu and select in one atomic call (recommended).

menu_item_id can be a technical function code (for example @M00006), visible menu text (for example Confirm WT in Foreground), or a position descriptor. You can pass human-readable menu text directly. The menu_items of sap_press_alv_toolbar_button list what a menu offers.

select_by controls how selection is performed:

  • auto (default): heuristic based on whether menu_item_id has spaces

  • id: function code

  • text: visible menu text

  • position: position descriptor

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes
select_byNoauto
menu_item_idYes
toolbar_button_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is already covered. The description adds genuine behavioral context beyond that: the menu must be in an opened state, and the toolbar_button_id parameter collapses open+select into one atomic operation rather than two dependent calls. It stops short of saying what the selected command actually triggers or what happens on failure, so it falls short of a 5.

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?

Front-loads purpose, then the workflow, then parameter semantics, using a compact bulleted list for the enum decoding. Every sentence adds information -- no restatement of the title, no filler.

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?

Output schema exists, so return values need no prose; annotations cover the safety profile; the description covers the state prerequisite, the alternative call sequence, and all meaningful parameter formats. Nothing an agent needs in order to invoke this correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so well: it enumerates the accepted formats for menu_item_id (function code like @M00006, visible text, or position descriptor), decodes every select_by enum value including the auto heuristic, and explains toolbar_button_id's role in the atomic path. Only grid_id is left implicit, which is reasonable given the name.

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?

Opens with a precise verb+resource ('Select an item from an opened ALV context menu') and immediately scopes it away from the siblings it could be confused with, sap_press_alv_toolbar_button (opens menus) and sap_select_menu. An agent can distinguish it from those without reading either 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?

Explicitly states the two usage paths -- call sap_press_alv_toolbar_button first, or pass toolbar_button_id for a single atomic call -- and marks the atomic path as recommended. It even points to where the available items are listed, 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.

sap_select_checkboxA

Select or deselect a checkbox on the current SAP screen.

Set selected=false to uncheck. Use sap_get_screen_elements with type_filter='GuiCheckBox' to find checkbox IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectedNo
checkbox_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations indicate this is not read-only (readOnlyHint=false) and not destructive, which aligns with the description's write operation. The description adds that it can both check and uncheck, but does not disclose failure behavior or prerequisites. Adequate but not rich.

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

Conciseness5/5

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

Two efficient sentences: first states purpose, second provides usage details. No filler or redundancy.

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

Completeness4/5

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

Given the tool has an output schema (handling return details), the description covers input acquisition and the toggle action. It references a sibling tool for input, closing the loop. Slightly lacking in error handling details but complete for typical use.

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 0%, so the description compensates by explaining the 'selected' parameter's effect ('Set selected=false to uncheck') and how to obtain the 'checkbox_id' via another tool. Adds significant meaning beyond the schema.

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

Purpose5/5

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

Clearly states the verb 'select or deselect' and resource 'checkbox on the current SAP screen'. Distinguishes from siblings like sap_select_radio_button and sap_press_button by explicitly targeting checkboxes.

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?

Provides explicit instructions: 'Set selected=false to uncheck' and recommends using sap_get_screen_elements with type_filter='GuiCheckBox' to find checkbox IDs. Gives clear context for how to obtain required input.

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

sap_select_combobox_entryA

Select an entry in a combobox/dropdown by its key or display value text.

Accepts either the technical key or the visible display text. Use sap_get_combobox_entries first to see all valid options. F4 opens nothing on a dropdown; sap_set_field selects entries the same way.

ParametersJSON Schema
NameRequiredDescriptionDefault
combobox_idYes
key_or_valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation-but-safe profile is known. The description adds the behavioral note that F4 does nothing on a dropdown, but omits what happens on an invalid key/text, whether an existing selection is overwritten, and any error signaling.

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?

Purpose is front-loaded and the sentences are short, but sentence 2 ('Accepts either the technical key or the visible display text') restates sentence 1's 'by its key or display value text', which is redundant filler. The F4/parenthetical contrast sentence earns its place but sits awkwardly.

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 an output schema present, return details are not needed, and annotations cover the safety profile. The description supplies the prerequisite, the alternative, and the accepted value formats, leaving only edge-case/error behavior unaddressed for a two-parameter mutation tool.

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 0%, so the description must carry parameter meaning, and it does explain that key_or_value accepts either a technical key or visible display text and points to sap_get_combobox_entries for valid values. combobox_id remains undocumented, but the non-obvious parameter is well covered.

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 ('Select an entry in a combobox/dropdown') plus the accepted value forms, so the agent knows exactly what the call does. It also differentiates itself from relatives by naming sap_get_combobox_entries as a prerequisite and sap_set_field as an equivalent alternative.

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 sap_get_combobox_entries first to see all valid options' gives a concrete prerequisite/order of operations, and the F4 remark steers the agent away from keyboard-driven selection. There is no explicit when-not or failure condition, but the routing context is clear.

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

sap_select_menuA

Select a menu item from the menu bar or a submenu.

Example: 'wnd[0]/mbar/menu[1]/menu[0]'. Use sap_get_screen_elements on 'wnd[0]/mbar' to discover menu structure. Returns screen info after selection so you can detect navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
menu_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations show non-read-only and non-destructive. Description explains selection action and return of screen info, clarifying navigational 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 sentences that front-load purpose, then example, then guidance and return info. No extraneous content.

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 tool with one parameter and output schema implied, the description covers purpose, parameter format, prerequisite discovery, and return value. Sufficient for an agent to use 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?

Input schema has one string parameter with 0% coverage, but the description provides a concrete example of the menu_id format ('wnd[0]/mbar/menu[1]/menu[0]'), adding meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool selects a menu item from menu bar or submenu, with an example path. This distinguishes it from sibling tools like sap_select_checkbox.

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?

Provides explicit guidance to use sap_get_screen_elements to discover menu structure and mentions return value for detecting navigation. Does not explicitly exclude alternatives but sufficiently contextualizes use.

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

sap_select_multiple_rowsB

Select multiple rows at once in an ALV grid or table control.

Pass a list of row indices (e.g., [0, 2, 5]).

ParametersJSON Schema
NameRequiredDescriptionDefault
rowsYes
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Annotations are minimal (readOnlyHint=false, destructiveHint=false) and the description does not disclose behavioral traits beyond the action. It does not mention side effects like clearing previous selections, whether the action requires a visible grid, or any other UI state changes.

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, front-loaded sentences with no extraneous information. Every sentence serves a purpose: stating the action and providing a usage example.

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

Completeness3/5

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

The tool has only two parameters and an output schema, so the description is somewhat adequate for a simple selection operation. However, it lacks prerequisites (e.g., container must be visible) and does not mention what the output schema provides, which is acceptable given the presence of an output schema.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It adds meaning for the 'rows' parameter with an example and explanation of indices, but entirely omits any explanation for 'table_id', which is a required string parameter. This leaves a significant gap.

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

Purpose5/5

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

The description clearly states the tool selects multiple rows in an ALV grid or table control, specifying the verb 'select' and the resource 'ALV grid or table control'. This distinguishes it from siblings like 'sap_select_table_row' (single row) and 'sap_select_all_rows' (all rows).

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 provides a basic instruction to pass a list of row indices with an example, but lacks explicit guidance on when to use this tool versus alternatives like 'sap_select_table_row' or 'sap_select_all_rows'. Usage context is implied but not clearly stated.

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

sap_select_radio_buttonA

Select a radio button on the current SAP screen.

Use sap_get_screen_elements with type_filter='GuiRadioButton' to find radio button IDs on the current screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
radio_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already indicate non-read-only and non-destructive. The description adds context on how to obtain the radio ID, but does not elaborate on behavioral details like deselection of other radio buttons. It is adequate but minimal.

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

Conciseness5/5

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

Two concise sentences: first states the purpose, second provides actionable guidance. No unnecessary words, efficient and clear.

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 action tool, the description covers the essential aspects: what it does and how to get the parameter. It doesn't mention return values, but that is not critical given the simplicity. The presence of an output schema is noted but not explained, but still adequate.

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 schema has 0% description coverage, but the description explains how to find the radio_id parameter value via sap_get_screen_elements, adding meaningful guidance beyond the schema definition.

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

Purpose5/5

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

The description clearly states 'Select a radio button on the current SAP screen', using a specific verb and resource. It distinguishes from sibling tools that handle other UI elements like checkboxes, tree nodes, or buttons.

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

Usage Guidelines4/5

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

The description tells the agent to use sap_get_screen_elements with type_filter='GuiRadioButton' to find the radio ID, providing a clear usage context. It does not explicitly list when to use alternatives, but the guidance is sufficient for typical use.

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

sap_select_tabA

Select a tab in a tab strip control.

Returns screen info after selection (tab content changes). Tab IDs typically look like 'wnd[0]/usr/tabsTABSTRIP/tabpTAB01'.

ParametersJSON Schema
NameRequiredDescriptionDefault
tab_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations by explaining that after selection, screen info is returned and tab content changes. This is valuable since annotations only indicate non-readonly and non-destructive behavior. However, it does not mention error cases (e.g., invalid tab_id).

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 extremely concise: two sentences, with the first clearly stating the purpose and the second adding a behavioral note and example. Every word earns its place with no redundancy or superfluous 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 simple selection tool with one parameter and an output schema (mentioned), the description is fairly complete: it explains the action, the return value, and gives a parameter example. It could mention prerequisites like an active session, but that is implicit given the sibling context.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by providing a concrete example of a tab ID format ('wnd[0]/usr/tabsTABSTRIP/tabpTAB01'), adding meaning to the otherwise bare string parameter. This significantly aids the agent in understanding the expected input.

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 the specific action 'Select a tab in a tab strip control' and distinguishes this tool from sibling selection tools by naming the resource type ('tab') and providing an example of typical tab IDs. This is a specific verb and resource with clear differentiation.

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

Usage Guidelines3/5

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

While the description implies the tool should be used when a tab selection is needed, it does not explicitly state when not to use it or compare with alternatives like sap_select_checkbox or sap_select_tree_node. The guidance is implied but lacks explicit exclusion criteria.

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

sap_select_table_rowA

Select a row in a table/grid.

Works on both ALV grids and table controls. Row index is zero-based. For ALV: uses absolute row index. For TableControl: scrolls to make the row visible first if needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
table_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Discloses key behaviors: zero-based indexing, absolute row index for ALV, and scrolling for TableControl. Annotations indicate non-read-only and non-destructive, which the description supplements with these behavioral details.

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 concise with four sentences. The first sentence clearly states the purpose. No unnecessary information, and the structure is well-organized.

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 tool with two parameters and clear UI action, the description covers essential behaviors and variations. It could mention that selection is purely a GUI action, but annotations already indicate non-destructive. An output schema exists, so return values are documented elsewhere.

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 0%, so the description must compensate. It adds meaning to the 'row' parameter by explaining zero-based indexing, but the 'table_id' parameter has no description. Partial coverage prevents a higher score.

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

Purpose5/5

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

The description clearly states the tool selects a row in a table/grid. It specifies it works on both ALV grids and table controls, and distinguishes from siblings like select_all_rows or select_multiple_rows by focusing on single row selection.

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

Usage Guidelines4/5

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

The usage is clear: for selecting a single row. However, it does not explicitly mention when not to use it (e.g., for multiple rows) or reference sibling tools like sap_select_multiple_rows. The context is clear but lacks comparative guidance.

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

sap_select_tree_nodeA

Select a node in a tree control.

Highlights the node without opening it. For SPRO-style trees, use sap_click_tree_link on the execute icon column instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_idYes
node_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, destructiveHint=false) indicate a mutating but non-destructive action. The description adds that it 'highlights the node without opening it', clarifying the specific behavior. No contradictions, but could mention any side effects like deselecting others.

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

Conciseness5/5

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

Two concise sentences that efficiently convey purpose, behavior, and alternative. Every sentence adds value with no redundancy or 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?

The description adequately covers the tool's function and usage context. However, the lack of parameter explanations and reliance on output schema for completeness slightly reduces the score. For a simple selection tool, it is nearly complete.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameters. The description does not mention 'tree_id' or 'node_key', leaving their meaning entirely to inference. This is a significant gap.

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

Purpose5/5

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

The description clearly states the action ('Select a node in a tree control') and specifies that it highlights the node without opening it. It also distinguishes itself from the sibling tool sap_click_tree_link by explaining the alternative for SPRO-style trees.

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?

The description provides explicit guidance on when to use this tool (to highlight/select a node without opening) and when to use an alternative (sap_click_tree_link for opening in SPRO-style trees). This helps an agent decide appropriately.

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

sap_send_keyA

Press a keyboard key / function key in the SAP window (sendVKey).

Common keys: Enter (confirm), F1 (Help), F3 (Back), F4 (search help / value help), F5 (Refresh), F8 (Execute), F11 (Save), F12 (Cancel/Escape). Also supports Shift+F1..F9 and Ctrl+F, Ctrl+G, Ctrl+P.

A key that is not active on the screen is not sent: the response has an error and available_keys, the keys this screen accepts.

F11 / Save requires user confirmation via elicitation before proceeding; the response then has confirmed_by_user: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the inactive-key failure mode and the exact response field (available_keys) for recovery, plus the F11/Save elicitation flow and the confirmed_by_user response flag. These are concrete behavioral traits an agent could not infer from readOnlyHint=false/destructiveHint=false.

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 blocks, front-loaded with the core action, then key meanings, then failure/confirmation behavior. Every sentence earns its place, though the 'Common keys' enumeration partially restates enum members rather than adding new meaning for all of them.

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 an output schema present, return-value documentation is not required, and the description still flags the two response fields an agent must react to. It covers failure and confirmation paths well; the only gap is that it never mentions session/connection prerequisites despite sap_connect and sap_connect_existing being siblings.

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 0%, so the description carries the burden and largely does: it explains the semantics of most enum values (Enter=confirm, F3=Back, F4=value help, F8=Execute, F11=Save, F12=Cancel) and names the Shift+/Ctrl+ variants. It leaves F2, F6, F7, F9, F10 and the Shift+F1..F9 behaviors unexplained, so the mapping is incomplete for a 30-value enum.

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

Purpose4/5

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

The description names a specific verb+resource ('Press a keyboard key / function key in the SAP window') and disambiguates the keyboard-input surface from mouse-oriented siblings like sap_press_button or sap_select_menu. It stops short of naming an alternative explicitly, but the scope is unambiguous.

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

Usage Guidelines3/5

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

It gives practical context (what each common key does, standard Enter/F3/F8/F12 flows) and a useful failure/recovery note about inactive keys returning available_keys. However, it never states when to prefer this tool over sap_press_button, sap_select_menu, or sap_execute_transaction, 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.

sap_set_batch_fieldsA

Fill in multiple input fields at once (dict of field_id to value).

Use this to fill a form or selection screen in one call — more efficient than repeated sap_set_field calls. Table-control cells work too: take the cell_id template of each column from sap_read_table(columns_only=true) and replace {row}. A dropdown (cmb) takes an entry's key or text, as in sap_set_field.

The result gives counts; results lists only the fields that did NOT succeed (all of them with verbose=true).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesDict mapping field_id -> value.
verboseNoList every field in `results`, not only the failures.
validateNoPress Enter after setting fields and return status-bar feedback. Skipped when no fields were actually set.
skip_readonlyNoSilently skip fields whose element reports Changeable == False instead of counting them as failures.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation profile is covered. The description adds genuinely useful behavior beyond that: dropdown values accept an entry's key or text, table cells use a {row}-substituted template, and results contains only failures unless verbose=true. It stops short of describing failure/partial-application semantics or whether a failed field leaves the screen partially filled.

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 blocks: what it does, when to use it / special cases, and what comes back. Every sentence carries information, though the second paragraph packs several distinct rules (table cells, dropdowns) that could be segmented for faster scanning.

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 an output schema present, the description needn't document return shape, yet it still does so briefly. Combined with 100% schema coverage and the cell_id template guidance, an agent has enough to invoke correctly. The only soft spot is that it never says where general field_ids come from for non-table fields (e.g. sap_read_field / sap_get_screen_elements), leaving the discovery path for the primary input unstated.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns credit above it by explaining the shape and construction of the `fields` dict (field_id -> value, cell_id templates with {row}) and clarifying that `verbose` expands `results` to all fields rather than only failures. The untyped `additionalProperties: true` dict is the case where prose was most needed, and it is supplied.

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?

Opens with a specific verb+resource and scope: 'Fill in multiple input fields at once (dict of field_id to value)', which immediately distinguishes it from the single-field sibling sap_set_field. It also pre-empts confusion by noting table-control cells and dropdowns are covered, so an agent knows the blast radius of this tool.

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 it ('fill a form or selection screen in one call') and names the alternative it replaces ('more efficient than repeated sap_set_field calls'). It further routes the agent to sap_read_table(columns_only=true) to obtain the cell_id template, so the prerequisite step is prescribed rather than inferred.

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

sap_set_confirmation_pointsA
Read-only

Choose which SAP operations need the user's explicit approval first.

Replaces this session's set of confirmation points. When a point is active, every matching tool call pauses and asks the user to approve it (MCP elicitation) before anything reaches SAP; declining returns an error and nothing is executed.

Points:

  • transactions: sap_execute_transaction

  • batch_fields: sap_set_batch_fields

  • field_writes: sap_set_field, sap_modify_cell, sap_set_textedit, sap_select_checkbox, sap_select_radio_button, sap_select_combobox_entry

  • all_writes: every write-tagged tool. Strict and noisy — many write tools only select, scroll or navigate, and they will all prompt. Under all_writes, sap_send_key("F11") asks twice: once for the category and once for the unchanged save gate.

'save' (F11 / Save key, Save toolbar button) is always on and cannot be turned off. Points set by the server's --confirm flag cannot be removed either. Adding a point is silent; removing one asks the user first, and a declined removal keeps the point.

Confirmation prompts block until the user answers, and on clients without elicitation support the gated call fails instead of running unconfirmed (same fail-closed rule as the save gate). On such a client points also cannot be removed, so activating one there blocks that whole category for the rest of the session. Call sap_preview before a gated action so the user can see the screen and pending values first.

ParametersJSON Schema
NameRequiredDescriptionDefault
pointsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say readOnlyHint=true and destructiveHint=false; the description adds enormous behavioral context beyond that: removal of a point itself asks for approval, declined removal keeps the point, prompts block until answered, fail-closed behavior on clients without elicitation support, and the session-long block when a point cannot be removed. It also explains the double-prompt under all_writes. This is exemplary disclosure of behavior the annotations do not cover.

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 well-organized with a front-loaded summary line and clear paragraph breaks, but it runs roughly 450 words. The F11 double-prompt illustration and the dense fail-closed/client-without-elicitation passage are informative yet could be tightened without losing meaning. Long, but every section earns its place given the tool's behavioral complexity — it just isn't a model of economy.

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 complex configuration tool, the description covers the essential ground: what each point does, the always-on save gate, server-flag interactions, fail-closed semantics, and a usage hint (call sap_preview first). The only thing left unexplained is the return value, but an output schema exists to cover that. Complete enough for an agent to use it correctly.

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

Parameters5/5

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

Schema coverage is 0% and there is only one parameter (points, an enum array), yet the description fully compensates: it maps every enum value to its affected tools (transactions → sap_execute_transaction; batch_fields → sap_set_batch_fields; field_writes → the six write tools; all_writes → every write-tagged tool) and characterizes their real-world impact. The agent can choose values correctly with zero schema help.

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 opening line states a specific verb+resource: 'Choose which SAP operations need the user's explicit approval first.' It immediately clarifies this is a policy/configuration tool that replaces the session's confirmation-point set, and it distinguishes itself from all 60+ sibling tools (which are execution, navigation, or read tools) by being the only one that manages approval gating. 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 Guidelines5/5

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

The description gives unusually rich usage context: it enumerates exactly which tools fall under each point category, explains that 'save' is always on and cannot be turned off, warns that all_writes is 'strict and noisy' with the F11 double-prompt example, notes server --confirm points cannot be removed, and explicitly advises calling sap_preview before a gated action. It tells the agent both what to do and what side effects to expect, which is rare and valuable.

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

sap_set_current_cellA

Set the current (focused) cell in an ALV grid or table control.

Useful before pressing toolbar buttons that act on the current cell.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
columnYes
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate non-readonly and non-destructive behavior. Description adds that it sets focus, which is consistent. No extra behavioral details beyond what is obvious from the name and schema.

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

Conciseness5/5

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

Two concise sentences with no redundancy. Front-loaded with action and resource, followed by a valuable usage hint.

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?

Output schema exists, so return value details are covered. For a simple targeting tool, the description sufficiently explains purpose and usage context. Minor gap in parameter explanations is already accounted for in parameter_semantics.

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

Parameters2/5

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

Schema coverage is 0% with no parameter descriptions. The description does not explain the meaning of grid_id, row, or column. While schema names are somewhat self-explanatory, the description should clarify coordinate system or format, especially for row/column indexing.

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

Purpose5/5

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

Description clearly states verb 'Set' and resource 'current (focused) cell in an ALV grid or table control'. It distinguishes from siblings like sap_get_current_cell and related cell manipulation tools by specifying the focusing action.

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?

Provides a concrete use case: 'Useful before pressing toolbar buttons that act on the current cell.' This guides the agent on when to use it, though it does not explicitly exclude other contexts or compare to alternatives.

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

sap_set_fieldA

Set (type/enter) a value into an input field on the current SAP screen.

Works on GuiTextField and GuiCTextField input fields, and on dropdowns (GuiComboBox, ID prefix cmb): there value picks the entry by its key or its text, and the response reports the key and text selected. For filling in multiple fields of a form at once, use sap_set_batch_fields instead. After setting a field, you may need to press Enter to trigger validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
field_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false); the description adds real behavioral context beyond that: key-vs-text entry resolution for dropdowns and the post-edit Enter/validation step. It stops short of stating failure modes or what happens to an invalid key/text, but the added workflow detail is genuine.

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?

Purpose leads, supported cases and the alternative follow in a logical order, and every sentence carries information. Slightly dense in the dropdown sentence, but 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?

For a two-parameter mutation tool with annotations covering safety and an output schema covering return values, the description supplies the missing pieces: supported widget types, dropdown value semantics, and the follow-up Enter step. Only the field_id format and combobox-sibling routing are 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 description coverage is 0%, so the description must carry the load. It does clarify that 'value' is interpreted as a key or text on dropdowns, but 'field_id' is left unexplained beyond the incidental 'ID prefix cmb' note, and no general format for field identifiers is given.

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 and resource ('Set (type/enter) a value into an input field on the current SAP screen') and names the sibling it is not (sap_set_batch_fields). The supported field classes (GuiTextField, GuiCTextField, GuiComboBox with 'cmb' prefix) further disambiguate it from generic setter siblings.

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 routes multi-field form filling to sap_set_batch_fields and advises pressing Enter after setting to trigger validation. However, it does not route dropdown selection to the sibling sap_select_combobox_entry, even though it advertises dropdown support, leaving a potential overlap unresolved.

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

sap_set_focusA

Set focus to any screen element by its ID.

Some SAP actions require focus on a specific element before they work (e.g., F4 search help on a field). Use this to set focus before sending keys with sap_send_key.

ParametersJSON Schema
NameRequiredDescriptionDefault
element_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and destructiveHint=false. The description adds behavioral context: setting focus is a UI state change required for subsequent actions. It does not detail error cases or side effects, but it adequately conveys the main behavioral trait beyond annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action. Every sentence earns its place: the first states what it does, the second provides usage context and a specific example. No fluff.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, output schema exists), the description covers the main scenario. It mentions a common use case (sap_send_key), but does not address potential errors or prerequisites like connection existence. Still, it is sufficient for a straightforward focus action.

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

Parameters2/5

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

The schema has one parameter 'element_id' with no description (coverage 0%). The description only says 'by its ID,' without specifying format, examples, or how to obtain the ID. This adds minimal value beyond the schema, leaving the agent to infer details.

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: 'Set focus to any screen element by its ID.' It uses a specific verb and resource, but does not explicitly differentiate from sibling tools that may also manipulate focus (e.g., sap_set_current_cell). The mention of a specific use case with sap_send_key adds context.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Use this to set focus before sending keys with sap_send_key.' It explains why focus is needed (e.g., F4 search help) and implies when to use it (as a prerequisite). It does not mention when not to use alternatives, but the guidance is clear.

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

sap_set_policy_profileA
Read-only

Switch the active policy profile for this session.

Profiles control which tools are visible:

  • exploration: read-only tools (discover, inspect, screenshot)

  • operator: read + write tools (normal SAP interaction)

  • full: all tools including destructive (transaction execution)

A session can only restrict, never widen: if the server was started with --profile, a request above that floor is capped to the floor. Default profile is 'full' unless the server was started with --profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark the tool as readOnlyHint=true and destructiveHint=false, and the description aligns with this by describing a session-level configuration change rather than a data mutation. The description adds behavioral transparency by explaining that the profile change is capped by the server's startup profile and that the default is 'full', which are important operational details beyond the annotations.

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 concise and well-structured, front-loading the core purpose and then efficiently explaining the profile options and restrictions. Every sentence contributes value, from the one-line purpose to the bullet-like list and the final note on default and restriction. There is no wasted text.

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?

Given that an output schema exists, the description doesn't need to explain return values. The description covers the purpose, profile semantics, default behavior, and restrictions, which is complete for a simple configuration tool. An agent has all the information needed to select the appropriate profile and understand the limitations.

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

Parameters5/5

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

With schema description coverage at 0%, the description fully compensates by explaining what each enum value (exploration, operator, full) means in terms of tool visibility. This adds meaning beyond the raw enum names, making the parameter's semantics clear. The single required parameter is well-documented through the profile descriptions.

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

Purpose5/5

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

The description clearly states 'Switch the active policy profile for this session' and then explains what each profile does, making the tool's purpose unambiguous. It distinguishes itself from sibling tools by describing the session-level configuration effect, which is unique among the listed SAP tools.

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

Usage Guidelines4/5

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

The description provides context on when to use the tool by explaining the three profile options (exploration, operator, full) and their tool visibility effects. It also notes the restriction that a session can only restrict, never widen, and mentions the default profile and server-side cap, which gives practical usage guidance. However, it doesn't explicitly state alternatives or scenarios where you would choose this over other configuration tools, though that's not critical here.

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

sap_set_texteditA

Write text into a multiline text editor (GuiTextedit) — long texts, notes, comments, document text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
textedit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds 'Write text', confirming mutation but does not disclose whether text overwrites or appends, nor any permission or state requirements. The description does not contradict annotations and provides minimal extra behavioral context.

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 one sentence with a dash for elaboration, making it concise and front-loaded. However, it could be better structured by adding parameter explanations as separate bullet points, but overall it is efficient.

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

Completeness3/5

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

The tool is simple with two parameters, and an output schema exists. The description covers the purpose and content type but omits how to locate the textedit_id and whether the write replaces or appends. While not incomplete for an expert, a new agent would need more detail.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate. It only states the tool writes text into a GuiTextedit and gives content examples but fails to explain the 'textedit_id' parameter (how to obtain it, what it represents) or any constraints on the 'text' parameter (e.g., length, newlines). This leaves significant gaps for the agent.

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

Purpose5/5

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

The description clearly states the verb 'Write' and the resource 'text into a multiline text editor (GuiTextedit)'. It provides examples like 'long texts, notes, comments, document text', which distinguishes it from siblings like sap_read_textedit (read) and sap_set_field (single-line).

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 usage for multiline text editors but does not explicitly state when to use this tool versus alternatives like sap_set_field. No exclusions, prerequisites, or alternative tool names are mentioned, leaving the agent to infer context.

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. 1 tool updatev0.5.2
    • Changedsap_read_table3 fields changed
      • addedInput schema / properties / start_row / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / start_row / default
        Previous value: -0New value: +null
      • removedInput schema / properties / start_row / type
        Removed value: -"integer"
  2. 6 tool updatesv0.4.0
    • Changedsap_get_screen_elements1 field changed
      • addedInput schema / properties / expand_tables
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Addedsap_preview
    • Addedsap_read_list
    • Changedsap_screenshot2 fields changed
      • addedInput schema / properties / inline
        Added value: +{
        +  "default": true,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / save_path
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
    • Changedsap_set_batch_fields1 field changed
      • addedInput schema / properties / verbose
        Added value: +{
        +  "default": false,
        +  "description": "List every field in `results`, not only the failures.",
        +  "type": "boolean"
        +}
    • Addedsap_set_confirmation_points
  3. 1 tool updatev0.2.2
    • Changedsap_set_batch_fields3 fields changed
      • addedInput schema / properties / fields / description
        Added value: +"Dict mapping field_id -> value."
      • addedInput schema / properties / skip_readonly / description
        Added value: +"Silently skip fields whose element reports\nChangeable == False instead of counting them as failures."
      • addedInput schema / properties / validate / description
        Added value: +"Press Enter after setting fields and return status-bar\nfeedback. Skipped when no fields were actually set."
  4. 57 tool updatesv0.2.0
    • First observedsap_click_tree_link
    • First observedsap_collapse_tree_node
    • First observedsap_connect
    • First observedsap_connect_existing
    • First observedsap_disconnect
    • First observedsap_double_click_cell
    • First observedsap_double_click_tree_item
    • First observedsap_double_click_tree_node
    • First observedsap_execute_transaction
    • First observedsap_expand_tree_node
    • First observedsap_find_tree_node_by_path
    • First observedsap_get_alv_toolbar
    • First observedsap_get_cell_info
    • First observedsap_get_column_info
    • First observedsap_get_combobox_entries
    • First observedsap_get_current_cell
    • First observedsap_get_popup_window
    • First observedsap_get_screen_elements
    • First observedsap_get_screen_info
    • First observedsap_get_session_info
    • First observedsap_get_table_control_row_info
    • First observedsap_get_toolbar_buttons
    • First observedsap_get_transaction_guide
    • First observedsap_get_tree_node_children
    • First observedsap_get_workflow_guide
    • First observedsap_handle_popup
    • First observedsap_list_connections
    • First observedsap_modify_cell
    • First observedsap_press_alv_toolbar_button
    • First observedsap_press_button
    • First observedsap_press_column_header
    • First observedsap_read_field
    • First observedsap_read_shell_content
    • First observedsap_read_table
    • First observedsap_read_textedit
    • First observedsap_read_tree
    • First observedsap_screenshot
    • First observedsap_scroll_table_control
    • First observedsap_search_tree_nodes
    • First observedsap_select_all_rows
    • First observedsap_select_all_table_control_columns
    • First observedsap_select_alv_context_menu_item
    • First observedsap_select_checkbox
    • First observedsap_select_combobox_entry
    • First observedsap_select_menu
    • First observedsap_select_multiple_rows
    • First observedsap_select_radio_button
    • First observedsap_select_tab
    • First observedsap_select_table_row
    • First observedsap_select_tree_node
    • First observedsap_send_key
    • First observedsap_set_batch_fields
    • First observedsap_set_current_cell
    • First observedsap_set_field
    • First observedsap_set_focus
    • First observedsap_set_policy_profile
    • First observedsap_set_textedit

TDQS

A3.7/5.0

Scored across 60 tools

Disambiguation4/5

Most tools target clearly distinct SAP GUI controls or actions (ALV vs TableControl vs tree vs list vs popup), and descriptions explicitly note incompatibilities. However, with 60 tools there remains some overlap, e.g. sap_set_field vs sap_select_combobox_entry for dropdowns, and sap_get_popup_window vs sap_handle_popup, which could cause occasional misselection.

Naming Consistency5/5

All tools use a consistent sap_ prefix and snake_case verb_noun naming. Minor semantic variation between read_* for content and get_* for metadata is predictable, not chaotic.

Tool Count1/5

60 tools is an extreme mismatch for a single MCP server, far beyond the 3-15 well-scoped range. Even though SAP GUI automation is broad, the surface is too large for an agent to navigate efficiently and risks tool-choice overload.

Completeness5/5

The set covers connection management, screen and session inspection, fields, tables/ALV grids, tree controls, lists, popups, text editors, toolbars, guided workflows, policy profiles, screenshots, previews, and gated writes. No obvious CRUD or lifecycle operation for the stated SAP GUI automation domain is missing.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    An MCP server that enables AI assistants to interact with SAP systems via the ABAP Development Tools (ADT) REST API. It allows users to read ABAP source code, inspect DDIC objects, and execute SQL queries directly.
    66
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An enterprise-grade MCP server that enables AI agents to execute SAP RFC functions and read business data securely through the Model Context Protocol.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A production-ready MCP server that enables LLMs to automate SAP GUI using RoboSAPiens, supporting both stdio and SSE modes.
    13
    Apache 2.0