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

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)

  • Interact with ALV toolbar buttons and context menus

  • Read and interact with tree controls (TableTree, ColumnTree, SimpleTree)

  • Take screenshots of SAP windows

  • 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 --allowed-transactions, --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] [--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, or using double_click_tree_node in SPRO (which opens docs instead of executing the activity).

Available Tools

The server currently exposes 59 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

4

Popup inspection and handling, toolbar discovery, shell content

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_get_popup_window when active_window reports a popup; it now classifies the dialog 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 such as /SCWM/MON, SCWM/MON, or warehouse monitor

  • 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 Blocklist - Sensitive transactions blocked by default:

    • SU01, SU10, SU01D (User administration)

    • PFCG (Role administration)

    • SE16N, SE38, SA38, SE80 (Direct table/program access)

    • STMS, SCC4, RZ10, RZ11, SM36, SM49, SM59, SM69 (high-risk admin/system actions)

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

  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 - --allowed-transactions limits execution to specific approved t-codes. This is the recommended production mode.

  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 globallysapgui/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: RZ11sapgui/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 is blocked by the default blocklist

  • 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

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

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

A5/5.0
Behavior5/5

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

Discloses that it navigates to initial screen, subject to blocklist/allowlist, and includes /n prefix requirement. Annotations indicate non-read-only and non-destructive, consistent with description. 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?

Concise three-paragraph structure: core action, usage guidance, and constraints. Every sentence adds value, front-loaded with 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?

Covers all important aspects: execution, screen navigation, special prefixes, restrictions, and cross-reference to related tool. Output schema exists, so return values are already documented.

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?

Only parameter 'tcode' is documented with examples and prefix guidance, compensating for 0% schema description coverage. Provides practical usage details beyond 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 executes SAP transaction codes, provides examples (MM03, VA01, SM30), and distinguishes from sibling tools like sap_get_transaction_guide by focusing on starting the transaction.

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

Usage Guidelines5/5

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

Explicit guidance on checking screen info from response, /n prefix for SCWM, blocklist/allowlist, and recommending sap_get_session_info before navigating away. Clearly tells when to use and what to check.

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.

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and destructiveHint=false, so no contradiction. The description adds behavioral context beyond annotations: it explains recursion behavior via max_depth, filtering via type_filter, and special value container_id for menu bar. This provides valuable operational insight.

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?

Description is six sentences, each serving a clear purpose: main action, use case, parameter guidance for three parameters, and a special example. Front-loaded with the main purpose, it is well-structured and concise.

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 (not shown but indicated), the description does not need to detail return values. It covers purpose, usage context, and parameter details comprehensively. A minor gap: no mention of error handling or performance considerations, but overall 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.

Parameters5/5

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

The input schema provides 4 parameters with defaults but no descriptions. The description compensates fully: it explains type_filter (comma-separated class names), changeable_only (boolean), max_depth (integer, with example values and effect), and container_id (default wnd[0]/usr, specific path for menu bar). This 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?

The description clearly states 'Discover all elements on the current SAP screen,' which is a specific verb+resource. It distinguishes from sibling tools like sap_read_field or sap_press_button, which have different purposes.

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 concrete guidance on when to use the tool: 'Useful for finding field IDs when working with a new screen.' It also explains how to reduce response size with type_filter and changeable_only, and adjust max_depth for nested layouts. However, it does not explicitly state when not to use it or mention alternatives.

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

Aliases accepted: SCWM/MON, warehouse monitor, ewm warehouse monitor.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNo
transactionYes

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?

The description aligns with annotations by noting 'read-first guide,' confirming read-only behavior. It adds context that the guide is generic and lists available transactions, but no further behavioral traits (e.g., what happens if transaction is unsupported). Annotations already declare readOnlyHint true, so the description provides marginal additional value.

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 very short and front-loaded with the core purpose. However, the absence of parameter descriptions suggests opportunities to add structure without sacrificing conciseness.

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

Completeness2/5

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

Given the tool has 2 parameters with 0% schema coverage, the description should elaborate on both parameters, especially the optional 'task' field. It also lacks detail on what the guide contains or how to interpret the output. The output schema exists but is not shown; still, the description should be more 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% and the description does not explain the 'task' parameter. The 'transaction' parameter is partially clarified by listing available values, but without formal descriptions. This leaves the agent with insufficient guidance for correct parameter 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 the tool's purpose: returning a generic, read-first guide for a supported SAP transaction. It also names a specific transaction and aliases, distinguishing it from sibling tools that execute transactions or navigate screens.

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 when a guide is needed but does not explicitly state when to use this tool over alternatives like sap_execute_transaction or sap_get_workflow_guide. No exclusions or when-not-to-use guidance provided.

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

A3.9/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 valuable context: auto-detection of table type, inclusion of 'table_type' in response, and pagination via start_row. It could mention default max_rows but the schema provides that default.

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, well-structured into three clear paragraphs: purpose, auto-detection/response, and parameter usage. No redundant or unnecessary 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?

For a tool with 5 parameters, 0% schema coverage, and no output schema details shown, the description covers essential usage and response content (table_type). It assumes knowledge of table_id but otherwise provides sufficient context for an agent to use the tool effectively.

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 description explains the purpose of columns_only (schema discovery), columns (specific columns), and start_row (pagination). It does not explain how to identify table_id, which is the only required parameter, nor max_rows. Given 0% schema coverage, this adds meaning to 3 of 5 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 'Read rows from a table on the current screen' and specifies the two table types (ALV grid or TableControl). It distinguishes from siblings by mentioning type-specific tools like sap_get_alv_toolbar and sap_scroll_table_control, but does not explicitly differentiate from other read tools such as sap_read_field.

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 detailed guidance on parameter usage (columns_only for schema discovery, columns for specific columns, start_row for pagination) and mentions that the response includes a 'table_type' field to guide subsequent tool choice. However, it lacks explicit guidance on when not to use this tool or alternatives like sap_read_field.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already indicate read-only and non-destructive behavior. Description adds the fallback context but does not disclose what the screenshot output contains (e.g., image format). Some behavioral gaps remain.

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

Conciseness5/5

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

Two sentences, no fluff, front-loaded with action and purpose. Every word 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 and lack of output schema, the description provides sufficient context for its fallback role. However, it omits details about the output format, which slightly reduces completeness.

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

Parameters4/5

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

No parameters exist; schema coverage is 100%. Baseline for 0 params is 4, and the description adds no additional semantic meaning as none 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 tool's action ('Take a screenshot of the current SAP window') and distinguishes it from siblings by positioning it as a fallback for structured tools, which are listed in siblings.

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 'Use as a fallback when structured tools return empty or confusing results, e.g., on Web Dynpro screens', providing clear context and exclusion criteria.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesDict mapping field_id -> value.
validateNoPress Enter after setting fields and return status-bar feedback. Skipped when no fields were actually set.
skip_readonlyNoSilently skip fields whose element reports Changeable == False instead of counting them as failures.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=false and destructiveHint=false, so the description's mention of 'fill in' and 'more efficient' adds limited behavioral context. It does not contradict annotations but lacks disclosure of potential side effects (e.g., screen navigation, validation behavior). With annotations carrying the safety profile, a score of 3 is appropriate.

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 with no wasted words. The first sentence clearly states the action, and the second provides usage context and efficiency comparison. It is front-loaded and earns every word.

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 (not shown) and the description covers purpose and usage well, it is fairly complete. However, it could briefly mention the behavioral effect of the 'validate' or 'skip_readonly' parameters, though these are described in the schema. Overall, adequate for a batch input tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all three parameters. The description reiterates the 'dict of field_id to value' pattern for the 'fields' parameter but adds no additional semantic detail beyond the schema. Baseline for high coverage is 3.

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

Purpose5/5

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

The description uses a specific verb-resource combination ('Fill in multiple input fields at once') and explicitly distinguishes from the sibling tool sap_set_field by stating it is 'more efficient than repeated sap_set_field calls'. This makes the purpose clear and differentiated.

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 says to use this 'to fill a form or selection screen in one call' and compares it to repeated calls of sap_set_field, providing clear guidance on when to use. However, it does not explicitly mention scenarios where it should not be used (e.g., when field-by-field validation is needed), preventing a perfect score.

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)

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 indicate readOnlyHint=true and destructiveHint=false. The description adds detail about the profile definitions and default, which is useful context beyond the annotations. No contradiction detected.

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, uses bullet points for clarity, and front-loads the main purpose. 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?

For a simple tool with one parameter and existing annotations and output schema, the description is complete and covers all necessary aspects for correct usage.

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?

The only parameter 'profile' is fully described in the description with meanings for each enum value, compensating for 0% schema coverage. The description adds significant value over the plain 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 that the tool switches the active policy profile for the session, and explains the three profiles. This distinguishes it firmly from sibling tools that handle SAP GUI interactions.

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 when to use the tool (to switch profiles) and notes the default profile, but does not explicitly state when not to use it or suggest alternatives.

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. Dates show when Glama detected each change.

  1. 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."
  2. 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

A4/5.0
Disambiguation5/5

Each tool targets a specific UI element or action (tree, table, field, popup, toolbar) with detailed descriptions that clarify overlap. Even similar tools like sap_read_tree and sap_get_tree_node_children are clearly distinguished by use case.

Naming Consistency5/5

All tools consistently follow the 'sap_verb_noun' pattern with snake_case. Verbs like 'get', 'set', 'read', 'select', 'press' are used uniformly, making the tool surface predictable and easy to navigate.

Tool Count4/5

57 tools is high for typical servers, but the SAP GUI domain is complex with many control types (trees, tables, ALV, popups, menus). Each tool serves a distinct purpose, justifying the count. A slight reduction could be possible by merging some utilities, but it remains reasonable.

Completeness5/5

The tool set covers the full spectrum of SAP GUI interactions: connection, session management, navigation, all major UI controls (trees, tables, fields, toolbars, menus, popups), and includes supplementary features like screenshots and policy profiles. No obvious gaps for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kts982/mcp-sap-gui'

If you have feedback or need assistance with the MCP directory API, please join our Discord server