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.4.0 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.4.0 — shaped by two days of real agent work on a live system. The lesson was that token cost per call hurts more than missing tools, and that a few screens could not be reached at all:

  • Lighter responses. A table control is one discovery element instead of one per cell (an SM30 screen went from 231 elements to 3), element IDs come back in the short wnd[0]/... form, and batch fills and popup actions report what matters instead of echoing everything.

  • sap_read_list reads a classic report list (WRITE output, F4 hit lists) as lines of text with list colours and paging — 43 lines instead of 492 label elements, and no screenshot needed.

  • View clusters work. Docking containers (wnd[0]/shellcont) are valid IDs and discovery points to them, so the dialog structure of SM34 and most IMG activities can be navigated. A new SM30 transaction guide covers table maintenance and view clusters end to end.

  • Your transaction policy. Presets (default, abap-dev, strict) plus a policy file with glob patterns replace the hard-coded blocklist. Details: Security Considerations.

  • Popups announce pre-filled values. When an action opens a popup, its response already says what the popup is and which inputs hold values you never chose — such as a customizing request pre-filled with another project's request.

  • Screenshots to a file. sap_screenshot(save_path=...) writes a full-resolution PNG for documents and never overwrites a file.

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

  • 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 Logon Pad running (for COM connections)

  • SAP GUI Scripting enabled on your SAP systems

  • Python 3.10+

  • uv (recommended Python package manager)

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

  • 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 is running

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

"Scripting disabled" error

  • 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

"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. Use sap_list_connections to see all sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_indexNo
connection_indexNo

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=true and destructiveHint=false. Description adds minor context about being a common starting point but no additional behavioral traits. No contradiction.

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 core purpose. No redundant or irrelevant 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?

Simple tool with 2 parameters, annotations, and output schema. Description covers main usage. Lacks error handling details (e.g., when no session exists), but adequate for typical use.

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. Description explains that indices 0 refer to first session, adding meaning beyond schema defaults. Does not cover other possible index values.

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 'Connect to an already open SAP session', specifying verb and resource. Distinguishes from sibling tools like sap_connect (new connection) and sap_disconnect.

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

Usage Guidelines4/5

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

Explicitly states when to use ('when SAP is already logged in') and references alternative sap_list_connections to explore sessions. Lacks explicit when-not-to-use scenarios.

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, color, tooltip, style, max_length. Does NOT work on GuiTableControl.

ParametersJSON Schema
NameRequiredDescriptionDefault
rowYes
columnYes
grid_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/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 value by listing the returned metadata fields (value, changeable, color, tooltip, style, max_length) and highlighting the incompatibility with GuiTableControl. No contradictions and no missing behavioral traits.

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

Conciseness4/5

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

The description is concise at two sentences, front-loading the purpose and key details. It efficiently communicates the core functionality and a critical limitation. Minor improvement could come from structuring the return fields as a list, but current form is functional.

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

Completeness3/5

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

Given the tool has an output schema, the description adequately covers return values by listing the fields. However, the lack of parameter descriptions means the description is incomplete for invocation. For a tool with three required parameters and no schema descriptions, the agent needs more context to use it correctly.

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 description provides no explanation of the parameters (grid_id, row, column) beyond their names. With 0% schema description coverage, the burden on the description is high. Without explaining what grid_id refers to (e.g., the ID from sap_get_screen_elements) or the expected format for row and column, the agent lacks sufficient guidance to invoke the tool correctly.

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 gets detailed cell metadata from an ALV grid, specifying the exact fields returned. It explicitly notes it does not work on GuiTableControl, distinguishing it from sibling tools like sap_get_current_cell or sap_read_table. The verb 'Get' and resource 'cell metadata' make the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear guidance by stating it works on ALV grids and explicitly excluding GuiTableControl. However, it does not mention alternative tools for other grid types or when to prefer this over closely related siblings, such as sap_get_current_cell. This is a minor gap, 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_get_column_infoA
Read-only

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

Returns column names, titles, widths, and visibility. Useful for understanding table structure. 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 establish readOnlyHint=true and destructiveHint=false, ensuring the agent knows it's a safe read operation. The description adds value by specifying the kind of information returned (column names, titles, widths, visibility), providing behavioral context 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 concise (four lines) and front-loaded with the main action and return values. Every sentence serves a purpose, and the structure is well-organized with 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?

The output schema exists (though not shown), so return values may be documented there. However, the single parameter 'grid_id' lacks any explanation in both the schema and the description. For a tool with only one parameter, the omission of parameter context makes it incomplete 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.

Parameters2/5

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

Schema description coverage is 0%, meaning the parameter 'grid_id' has no description in the schema. The tool description does not mention or explain this parameter at all. Given the low coverage, the description should compensate but fails to do so, leaving the agent uncertain about what value to provide for grid_id.

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 ('Get detailed column info') and the resources ('ALV grid or table control'). It also explicitly mentions the returned data (column names, titles, widths, visibility) and distinguishes from the sibling tool 'sap_read_table' by suggesting it as a lighter alternative.

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 states the tool is 'useful for understanding table structure' and offers an alternative ('For a lighter alternative, use sap_read_table with columns_only=true'). This clearly indicates when to use this tool versus when to use a sibling.

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. expand_tables=true lists every visible cell (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

A5/5.0
Behavior5/5

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

The description discloses meaningful behavior beyond the readOnly/destructive annotations: default max_depth of 2, recursion behavior, docking containers being listed separately in the response, table controls collapsing to one element, and expand_tables causing large output. It also warns about response size on complex screens, which helps an agent anticipate outcomes before calling.

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 long, but every sentence adds operational value. It front-loads the core purpose and usefulness, then systematically covers each parameter and edge case, with examples inline. Nothing is filler; the length is proportionate to the tool's complexity and the absence of schema-level parameter descriptions.

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?

The description is complete for an agent to select and invoke this tool correctly. It covers purpose, when-to-use, alternatives, parameter semantics, special screen regions, table-control behavior, and response-size considerations. An output schema exists, so not detailing the return shape is acceptable, and the description still mentions key response concepts like 'docking_containers'.

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 carry the full burden for all five parameters, and it does. It explains max_depth with concrete values, type_filter with a real example ('GuiTextField,GuiCTextField'), container_id with default and special targets, expand_tables with the 'lists every visible cell (large)' caveat, and changeable_only as a response-reduction switch.

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

Purpose5/5

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

The description opens with 'Discover all elements on the current SAP screen,' which is a specific verb-resource pairing, then explains its main use case: 'finding field IDs when working with a new screen.' It also distinguishes itself from sibling tools like sap_read_table by explaining that a table control is 'ONE element here, not one per cell.'

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?

Usage guidance is explicit and comprehensive. It tells agents when to use the tool, when to use alternatives ('use sap_read_table(columns_only=true) for its columns and cell_id templates'), and how to adapt calls to the situation: type_filter for input fields, max_depth=1 for overview, max_depth=3+ for nested layouts, and container_id='wnd[0]/mbar' for menu bars. No conditions are left 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_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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The description reveals that the tool reads from `session.ActiveWindow` so the response always reflects what the user sees, and explains the `active_window` field and title. This adds valuable behavioral context beyond the annotations (readOnlyHint=true, destructiveHint=false). 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.

Conciseness4/5

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

The description is a bit lengthy but well-structured with a clear main sentence followed by additional context. Every sentence adds value, covering the source of data, what fields are returned, and how it relates to other tools. Slightly verbose but still concise for the information provided.

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 zero parameters and the presence of an output schema, the description provides complete context: it lists the returned fields, explains the data source, and mentions the relation to action tools. The agent has all necessary information to understand and use the tool 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?

The tool has zero parameters, and the schema coverage is 100%. The description does not need to add parameter semantics, but it effectively explains what the tool returns. Baseline of 4 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 that it retrieves current SAP screen info including transaction, program, screen number, window title, and status bar message. It also distinguishes itself from the sibling tool sap_get_popup_window by noting that the latter is for full popup content.

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 explains that every action tool returns this same screen info, so the agent knows when a popup appears. It also suggests using sap_get_popup_window for full popup content, providing clear guidance on when to use this tool vs. alternatives. However, it does not explicitly 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_session_infoA
Read-only

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

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=true and destructiveHint=false, ensuring safe usage. The description adds value by specifying the exact data returned (system, client, user, transaction, screen), which is beyond the annotations. 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?

The description is a single, concise sentence that front-loads the verb and resource. Every word is necessary and there is no 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?

With zero parameters and an output schema existing, the description is complete. It clearly explains what information the tool retrieves, which is sufficient for a simple read operation.

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 zero parameters, so the baseline is 4. The description does not need to explain parameters, and it meets the requirement for a parameterless 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 verb 'Get information' and the resource 'current SAP session', listing specific attributes (system, client, user, transaction, screen). This distinguishes it from sibling tools like sap_get_screen_info which retrieve different data.

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 retrieving session metadata but does not explicitly state when to use or alternatives. Given the tool's simplicity and zero parameters, minimal guidance is acceptable but not explicit.

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/No/F12 on the popup

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

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

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.8/5.0
Behavior5/5

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

Discloses behavioral traits for each action (e.g., 'press a specific button by its text or tooltip', 'auto: take only a clearly safe action; otherwise return the popup read-only'). Annotations are minimal but no contradiction; description adds valuable 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?

Well-structured with a clear first sentence and bullet-pointed actions. Every sentence adds value without unnecessary length.

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?

Covers all necessary aspects: return value description includes popup contents, classification, requested action, and post-action state. Output schema exists but description still provides helpful summary.

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?

Despite 0% schema description coverage, the description fully explains the 'action' enum values and the role of 'button_text' when action is 'press'. This compensates completely for the lack of schema comments.

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 'Read and optionally act on the current popup/modal dialog', lists specific actions (read, confirm, cancel, press, auto), and distinguishes from sibling tools like sap_get_popup_window by combining inspection and response.

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 usage condition 'Use when active_window shows wnd[1] or higher' and explains each action's purpose. Lacks explicit when-not or alternatives but is clear enough for correct usage.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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's 'list' verb aligns. No additional behavioral traits disclosed (e.g., performance, error handling).

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 of 8 words, direct and front-loaded with key information. No unnecessary 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?

Given zero parameters, strong annotations, and an output schema (not shown), the description covers the basics. Could mention that it only lists connections in the current SAP GUI session, but not essential.

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, so schema coverage is 100%. Description adds no parameter info, which is acceptable as there is nothing to add.

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

Purpose5/5

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

Description uses specific verb 'list' and resource 'open SAP connections and sessions', clearly stating the tool's function without tautology. Differentiates from siblings like sap_connect or sap_get_session_info.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as sap_get_session_info or sap_get_screen_info. The description is silent on context or exclusions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
grid_idYes
button_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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, indicating the action modifies state but is not destructive. The description adds no further behavioral context (e.g., what occurs after pressing, error behavior). However, it does not contradict annotations, and the verb 'press' implies a standard UI interaction, so the description is minimally 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?

The description is two succinct sentences. The first sentence clearly states the action and examples. The second immediately provides a useful cross-reference to a related tool. No wasted words, and the most critical information is 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?

Given the presence of an output schema (not shown), the description does not need to detail return values. The tool is simple (press a button). However, it lacks details on preconditions (e.g., grid must be visible), error handling (e.g., button not found), or side effects (e.g., navigation). Still, for a straightforward UI action, it is adequate.

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 0% description coverage, so the description carries the full burden of explaining parameters. It does not describe grid_id (identifying the ALV grid) or button_id (the button identifier). Although the tool's purpose hints at these, no additional semantic detail is provided beyond what is obvious from the parameter names.

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

Purpose5/5

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

The description uses a specific verb ('press') and identifies the exact resource ('toolbar button on an ALV grid') with concrete examples ('sort, filter, export'). This clearly differentiates it from sibling tools like sap_press_button (generic button) or sap_select_alv_context_menu_item (context menu).

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 directs the agent to use sap_get_alv_toolbar to find button IDs, which is a crucial preparatory step. It does not provide when-not-to-use scenarios or alternatives, but the mention of the prerequisite tool provides good context for usage.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
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?

The description discloses that after pressing, it returns screen info to detect navigation or popups, adding value beyond the annotations. Annotations indicate non-read-only and non-destructive, but the description clarifies the post-action behavior and side-effect detection.

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 with no wasted words. The first sentence presents the core action, the second explains return value, and the third provides discovery guidance. Efficient and front-loaded.

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

Completeness4/5

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

Given the tool's simplicity (one required parameter, output schema exists), the description adequately covers the purpose, usage hints, and return behavior. It is complete enough 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.

Parameters3/5

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

The input schema has no description coverage (0%), so the description must compensate. It explains that button_id can be discovered from other tools, but does not specify format or validation rules. This adds some meaning but not deep detail.

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 ('Press (click) a pushbutton or toolbar button') and the target ('on the current SAP screen'). It distinguishes the tool from siblings like sap_click_tree_link and sap_press_alv_toolbar_button by specifying the button type and interaction.

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

Usage Guidelines4/5

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

The description provides guidance on when to use the tool (to press buttons) and how to discover button IDs via sap_get_toolbar_buttons or sap_get_screen_elements. However, it does not explicitly state when not to use it or mention alternatives, 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_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). 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.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. The description adds value by detailing the return structure (value, type, changeable status, labels) and specifying the context (current SAP screen), which aids agent understanding of behavior 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 three sentences, each serving a distinct purpose: stating the action, listing returns, and providing usage guidance. No redundant or unnecessary text; highly efficient.

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

Completeness4/5

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

Given the output schema exists (not shown), the description is complete enough: it explains the purpose, parameter acquisition, and return data. It could mention error scenarios (e.g., invalid field_id) but is otherwise sufficient for a simple read 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?

The schema has no description for field_id (0% coverage). The description indirectly explains how to get valid field IDs (via sap_get_screen_elements) but does not elaborate on the format or constraints of field_id itself. This adds some value but does not fully compensate for the missing parameter documentation.

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

Purpose5/5

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

The description clearly states the tool reads a field value from the current SAP screen, specifies the return data (value, type, changeable status, labels), and distinguishes from the sibling tool sap_get_screen_elements which is for discovering field IDs. Verb+resource is explicit.

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 the agent to use sap_get_screen_elements to discover field IDs when the field ID is unknown, providing a clear alternative and when to switch tools. This is a high-quality guideline.

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 returns ~500 elements for one page. 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.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, so the safety profile is known. The description adds useful behavioral context: it returns lines without screenshots, explains the 'no table object' behavior (every word is a label), and describes scroll semantics (scroll_to=position+page_size). This goes beyond what annotations provide, though it doesn't mention return structure details (output schema exists, so that's covered).

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 well-structured with a clear opening, a use-case context paragraph, and a bulleted list of key features. It front-loads the main purpose and then details specifics. Slightly verbose in the second paragraph but each sentence adds value; the bullet list 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 there is an output schema (not shown) and annotations covering safety, the description is largely complete. It covers usage context, parameters, color handling, scrolling, and focus. The only minor gap is not explicitly stating what happens with max_lines (e.g., truncated output), but this is likely inferable from the output schema.

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 explain parameters, and it does. It explains with_ids (adds line IDs for focus setting), scroll_to (for pagination), and window_id (default wnd[0], but example shows wnd[1] for popup). max_lines is implied but not explicitly described; still, the coverage is strong.

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 reads a classic ABAP list as lines of text, specifies the exact input type (WRITE output, SAPMSSY0 screen 120), and distinguishes it from ALV grids and other list-like structures. It also explicitly differentiates from sap_read_table and sap_get_screen_elements, making its purpose unambiguous.

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 explains when to use this tool (plain lists, F4 hit lists) and when not to use it (is_list=false means use sap_read_table). It also provides concrete guidance on scrolling, colors, and focus setting, covering both use cases and exclusions.

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

Extracts HTML, URL, or text depending on the shell type. 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

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnly and non-destructive behavior. The description adds that output depends on shell type, providing further behavioral context. It does not detail error cases but is sufficient.

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 earning its place: purpose, behavior, usage tip. Front-loaded and efficient with no wasted 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?

Given the output schema exists (no need to explain returns), the description covers purpose, behavioral nuance, and prerequisite. It omits error handling but is complete enough for an agent on a medium-complexity 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?

With no schema parameter descriptions (0% coverage), the description compensates by explaining how to obtain the shell_id via another tool. This adds practical meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states the verb 'Read' and resource 'content from a GuiShell subtype'. It specifies the types of content (HTML, URL, text) and distinguishes this tool from siblings like clicks and selections.

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_screen_elements first to find shell element IDs, providing a clear prerequisite. While it doesn't state when not to use, the guidance is practical and contextually complete.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNo
max_rowsNo
table_idYes
start_rowNo
columns_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Even though readOnlyHint=true and destructiveHint=false already cover the safety profile, the description adds substantial operational behavior: auto-detection of table type, the table_type field in the response, columns_only=true returning metadata with no data, per-column cell_type and cell_id template for TableControls, and start_row pagination semantics. This goes well beyond what annotations alone provide.

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 runs ~120 words and is dense but every sentence earns its place: purpose, auto-detection behavior, table_type routing, columns_only mode, column filtering, and pagination. It is front-loaded with the core purpose and follows a logical order. It could be tightened slightly, but there is no fluff or repetition of schema 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?

With an output schema present and read-only annotations, the description covers most of what an agent needs: table type scope, mode switching, column selection, pagination, and next-step routing. The main completeness gap is the undocumented required table_id (where to get it) and max_rows semantics, which matter for correct invocation on a 5-parameter 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?

With 0% schema description coverage, the description carries the full burden and does explain columns_only (schema discovery, cell_type/cell_id template), columns (CSV selection), and start_row (pagination) meaningfully. However, it never explains the required table_id parameter — where an agent obtains it or what identifies a table — nor does it clarify max_rows behavior. Missing the one required parameter 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 opens with a specific verb+resource ('Read rows from a table on the current screen') and precisely scopes the target to two UI constructs: ALV grid and TableControl. This clearly distinguishes it from siblings like sap_read_field (single field), sap_read_list (list output), and sap_get_cell_info (individual cell), so an agent can select it correctly without inspecting 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?

The description gives explicit context for when to use the tool: any table on the current screen, with the ALV-vs-TableControl distinction spelled out. It also routes the agent to the correct follow-up tools based on the returned table_type (sap_get_alv_toolbar vs sap_scroll_table_control). It stops short of explicitly naming alternatives NOT to use (e.g., sap_read_field), but the scoping is clear enough that exclusion is mostly implied.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionYes
table_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 indicate readOnlyHint=false and destructiveHint=false. The description adds value by specifying the tool does not work on ALV grids, which is a key behavioral constraint. It does not elaborate on other behaviors like requiring visibility or scroll limits, but the annotations already cover safety.

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: three sentences with no filler. The first sentence states the core action, the second adds a critical constraint, and the third provides an alternative. 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?

Given the tool has 2 required parameters and an output schema (not shown but exists), the description covers the key behavioral aspects: action, constraint on ALV grids, and an alternative. It could mention that the table control must be visible or that scrolling is relative, but overall it is adequately 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 coverage is 0%, so the description must compensate for the missing parameter documentation. The description does not explain what table_id or position mean beyond the implicit 'row position'. The agent must infer the meaning, which could lead to misuse. Minimal value added for parameter semantics.

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 scrolls a GuiTableControl to a specific row position using a specific verb and resource. It differentiates from siblings like sap_read_table by specifying it does not work on ALV grids, though it does not explicitly mention it is for navigation within the visible window.

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 states when not to use it (does not work on ALV grids) and suggests an alternative tool (sap_read_table with start_row) for reading data at an offset. This provides clear guidance on appropriate usage.

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. SAP GUI does not expose a way to enumerate GuiGridView context menu items.

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 indicate readOnlyHint=false (modification) and destructiveHint=false, which are consistent. Description adds context about prerequisite (menu must be open) and atomic alternative. Could mention if selection triggers actions, but sufficient.

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?

Concise with 7 sentences; front-loaded main purpose. Every sentence adds value, no 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?

Covers purpose, prerequisite, alternative usage, parameter details, limitations. Has output schema, so return values are handled. Complete for a context menu selection tool.

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% but description explains menu_item_id can be function code, text, or position descriptor, and clarifies select_by modes with examples. Fully compensates for 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 'Select an item from an opened ALV context menu,' specifying the action and resource. It distinguishes from sibling tools like sap_press_alv_toolbar_button and sap_select_menu by focusing on context menus.

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?

Provides explicit guidance: use sap_press_alv_toolbar_button first or pass toolbar_button_id for atomic call. Explains select_by options and limitations (no way to enumerate menu items).

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
combobox_idYes
key_or_valueYes

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 readOnlyHint=false and destructiveHint=false, which is consistent with the description's 'Select' action. The description adds behavioral detail by noting that the tool accepts either a technical key or display text, which is not captured in annotations. This adds value beyond the annotated metadata.

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 concise sentences with no extraneous information. The first sentence states the primary purpose, and the second adds key usage details (dual input and prerequisite). It is front-loaded and efficient.

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

Completeness4/5

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

Given the tool's low complexity (2 required string parameters), the presence of an output schema, and annotations, the description covers the essential aspects: purpose, input alternatives, and a prerequisite step. It does not elaborate on error handling or exact behavior upon selection, but for a simple UI interaction, this is adequate. A score of 4 reflects minor omissions.

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 that 'key_or_value' can be either a technical key or visible display text. The 'combobox_id' parameter is not explicitly described but is inferable from the tool name and context. The partial explanation for one of two parameters justifies a score of 4.

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

Purpose5/5

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

The description explicitly states the action ('Select') and resource ('entry in a combobox/dropdown') and specifies the method (by key or display value). It clearly distinguishes this tool from siblings like 'sap_select_checkbox' or 'sap_select_radio_button' by focusing on combobox/dropdown interaction.

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 advises using 'sap_get_combobox_entries first to see all valid options', providing a clear prerequisite. While it does not explicitly state when not to use this tool, the context of sibling tools makes the resource type differentiation clear. A score of 4 reflects the useful guideline without full exclusions.

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.

F11 / Save requires user confirmation via elicitation before proceeding.

ParametersJSON Schema
NameRequiredDescriptionDefault
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 only provide readOnlyHint=false and destructiveHint=false. Description adds a critical behavioral detail: 'F11 / Save requires user confirmation via elicitation before proceeding.' This discloses a prerequisite for a specific key that could affect automation.

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 action and common keys. Each sentence adds value: action + common keys + special behavior for F11. No wasted 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?

The tool is simple with one parameter and output schema exists (so return values are covered). The description explains the parameter well and highlights a behavioral trap (F11 confirmation). Could mention error handling for invalid keys, but enum prevents that.

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% but the parameter is an enum of 30 keys. The description maps common enum values to their SAP functions (e.g., F1=Help, F11=Save with confirmation note). This adds meaning beyond the enum names alone.

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 'Press' and the resource 'keyboard key / function key in the SAP window'. The list of common keys further clarifies the purpose and distinguishes it from sibling tools like sap_press_button.

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?

Provides a list of common keys with their functions (e.g., Enter confirm, F1 Help) but does not explicitly state when to use this tool versus alternatives like pressing a button. Usage context is implied rather than directed.

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

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.4/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 agent knows this mutates but is not destructive. The description adds return-behavior detail (counts, `results` lists failures by default, all with verbose=true) and the table-cell template approach. This adds meaningful context beyond the annotations without contradicting them.

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 paragraphs with zero filler. The primary purpose is front-loaded, and the efficiency comparison to sap_set_field is stated in the first sentence. Every sentence adds value—no redundancy.

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

Completeness4/5

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

For a tool with 4 parameters and an output schema, the description covers the main use case, return semantics, and the table-cell edge case. It doesn't explain prerequisites or field_id format, but those are likely inferable from the schema and existing patterns. Given the output schema exists, the description is adequately complete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters clearly. The description adds only a minor note about table-control cells and restates the verbose behavior that is already in the schema. It does not compensate with extra detail for any parameter, so 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 fills multiple input fields at once via a dict, with a specific verb ('fill') and resource ('multiple input fields'). It explicitly contrasts with sap_set_field, so an agent can distinguish it from the single-field 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?

The description explicitly says 'Use this to fill a form or selection screen in one call — more efficient than repeated sap_set_field calls', naming the alternative and the condition that selects it. It also explains table-control cell usage with a pointer to sap_read_table. This is unambiguous 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_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. 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 indicate non-read-only and non-destructive. The description adds context: it works on specific field types and notes that pressing Enter may be needed for validation. This goes beyond annotations, though it doesn't mention error handling or 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, each serving a distinct purpose: action, field type clarification, and usage note/alternative. No extraneous information, well-structured and front-loaded.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema shown), the description covers the main behavior, field types, and a post-action note. It does not mention prerequisites (e.g., how to obtain field_id) or error states, but overall it is fairly complete for its scope.

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 2 required parameters (field_id, value) with 0% schema description coverage. The description merely rephrases their purpose ('set a value into an input field'), adding no additional meaning such as expected formats, how to obtain field_id, or constraints. It fails 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 (set a value), the resource (input field on current SAP screen), specifies the field types it works on (GuiTextField, GuiCTextField), and distinguishes from sibling tool sap_set_batch_fields. It uses a specific verb and resource, making the purpose 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 mentions an alternative tool (sap_set_batch_fields) for filling multiple fields, guiding when not to use this tool. It implies single-field usage context but does not cover other scenarios or prerequisites.

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. 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
  2. 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."
  3. 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.9/5.0

Scored across 60 tools

Disambiguation5/5

Every tool targets a specific action on a specific UI element type (field, button, tree, table, popup, etc.), and descriptions explicitly cross-reference related tools to clarify boundaries (e.g., ALV vs TableControl, standard toolbar vs ALV toolbar). Only minor overlap exists between schema-discovery tools, but they point to each other.

Naming Consistency5/5

All tools share the sap_ prefix and follow a consistent verb_noun snake_case pattern (e.g., read_field, set_field, select_checkbox, double_click_cell). A few exceptions like connect_existing and screenshot are still readable and predictable within the overall scheme.

Tool Count2/5

60 tools is far beyond the well-scoped range, even for the broad SAP GUI domain. The surface is heavily fragmented into many narrowly targeted tools (e.g., 10 tree-related tools, 8 table/grid tools, multiple selection tools), which makes it feel over-fragmented and could overwhelm an agent.

Completeness5/5

The tool set covers nearly every major SAP GUI interaction: connection management, screen discovery, all common control types (fields, buttons, menus, tabs, combos, trees, tables, popups), batch operations, screenshots, and workflow guides. There are no obvious dead ends, and even edge cases like SPRO trees and popup handling have dedicated tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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