MCP SAP GUI Server
Interact with SAP GUI for Windows via MCP: connect to open sessions, read/write screen fields, tables, grids, trees, and lists; navigate transactions and menus; handle popups; take screenshots; enforce security policies and confirmation gates.
Connect & session management: connect to SAP by system name or attach to existing session, list connections, get session info, disconnect.
Navigation: execute transactions, press keys (Enter, F8, F11, etc.), select menus, get current screen info.
Field & UI interaction: read/set fields, batch-fill forms, write textedit, select checkboxes/radio buttons/combobox entries, switch tabs, set focus.
Tables & grids: read ALV grids and table controls (with pagination/column selection), get column info, modify cells, select rows, double-click cells, scroll table controls, get cell metadata, press ALV toolbar buttons, interact with context menus, sort via column headers.
Trees: read, expand, collapse, select, double-click, click links, search nodes, find by path.
Popups & dialogs: detect, read popup content, handle popups (confirm/cancel/press/auto), classify and suggest next steps.
Inspection & discovery: list screen elements with filters, get toolbar buttons, read shell content (HTML viewer), take screenshots (inline or to file).
Workflow guidance: get step-by-step guides for transactions like /SCWM/MON, SM30/SM34, SPRO navigation, and common workflows (search help, table export).
Preview & confirmation: sap_preview shows screenshots and pending values before writes; sap_set_confirmation_points enforces approval for write categories.
Policy & security: apply read-only mode, transaction whitelists/blocklists, policy profiles, audit logging, credential handling via .env, ID validation.
Provides tools to connect to SAP systems, execute transactions, read/write screen fields, interact with ALV grids, tree controls, and take screenshots via SAP GUI Scripting API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP SAP GUI ServerWhat system am I logged into?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP SAP GUI Server
An MCP (Model Context Protocol) server that enables AI assistants to interact with SAP GUI for Windows through the SAP GUI Scripting API.
It is client-agnostic: if your MCP client can launch a local stdio server, it can use this project. Examples in this README use Claude because the setup is easy to demonstrate, but the same server can be used from Codex, GitHub Copilot, Gemini CLI, and similar MCP-capable tools.
Current release: 0.4.0 for local Windows use over MCP stdio.
Status
GitHub workflows are included for
CI,Docs,Dependency Audit, and tag-basedRelease.Primary repository: GitHub (
kts982/mcp-sap-gui).
Related MCP server: SAP RFC MCP Server
What's New
0.4.0 — shaped by two days of real agent work on a live system. The lesson was that token cost per call hurts more than missing tools, and that a few screens could not be reached at all:
Lighter responses. A table control is one discovery element instead of one per cell (an SM30 screen went from 231 elements to 3), element IDs come back in the short
wnd[0]/...form, and batch fills and popup actions report what matters instead of echoing everything.sap_read_listreads a classic report list (WRITEoutput, F4 hit lists) as lines of text with list colours and paging — 43 lines instead of 492 label elements, and no screenshot needed.View clusters work. Docking containers (
wnd[0]/shellcont) are valid IDs and discovery points to them, so the dialog structure of SM34 and most IMG activities can be navigated. A newSM30transaction guide covers table maintenance and view clusters end to end.Your transaction policy. Presets (
default,abap-dev,strict) plus a policy file with glob patterns replace the hard-coded blocklist. Details: Security Considerations.Popups announce pre-filled values. When an action opens a popup, its response already says what the popup is and which inputs hold values you never chose — such as a customizing request pre-filled with another project's request.
Screenshots to a file.
sap_screenshot(save_path=...)writes a full-resolution PNG for documents and never overwrites a file.
sap_preview — see it before it happens. The agent can now show you an approval card at any checkpoint: before a batch write, before saving, or whenever you ask ("before adding country GR, show me the values"). It carries the current screenshot, session context, and the exact values about to be written — password-shaped values masked. On MCP Apps hosts (VS Code Copilot Chat) it renders as a rich inline card; everywhere else you get the same summary as text plus the screenshot. Saving still goes through the confirmation gate. Details: Rendered Preview Cards.
Confirmation points — nothing is written without you. Tell the agent once ("ask me before every field write") and the server enforces it: sap_set_confirmation_points activates categories of write operations that pause for your explicit approval before anything reaches SAP. Enforced server-side by middleware — declining blocks the call no matter what the agent does, removing a gate asks you first, and admins can pin gates for every session with --confirm. Details: Security Considerations.
What This Does
This server allows AI assistants to:
Connect to SAP systems (like double-clicking in SAP Logon Pad)
Execute transactions (MM03, VA01, /SCWM/MON, etc.)
Read and write screen fields, checkboxes, radio buttons, comboboxes, and tabs
Select menu items from the menu bar (Table View, Edit, Selection, etc.)
Navigate through SAP screens using keyboard keys and buttons
Extract data from ALV grids (GuiGridView) and classic table controls (GuiTableControl)
Read classic report lists (
WRITEoutput) as text, including the colour of a lineInteract with ALV toolbar buttons and context menus
Read and interact with tree controls (TableTree, ColumnTree, SimpleTree), including the docked dialog structure of view clusters
Take screenshots of SAP windows, inline or saved as a full-resolution file
Discover screen elements for automation
Show you previews before writing, and pause for your approval at confirmation points you choose
Example Conversation
User: "What's the description for material MAT-001 in system D01?"
Assistant: [connects to D01]
[executes MM03]
[enters material number]
[reads description field]
"The material MAT-001 is described as 'High-Grade Steel Plate 10mm'
in system D01."Quick Start
Install uv (it ships with
uvx), if not already installed:
pip install uvStart SAP Logon Pad and open an SAP GUI session, or at least have SAP Logon running.
Configure your MCP client to launch this server. No clone or manual install needed —
uvxfetches 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.)
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 tablesap_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) andstreamable HTTPtransportsPer-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):
Open SAP GUI → Options → Accessibility & Scripting → Scripting
Check "Enable scripting"
Optionally uncheck "Notify when a script..." for smoother automation
Server-side (SAP System):
Transaction
RZ11→ Parametersapgui/user_scripting→ Set toTRUERequires 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 ( | Effect |
| Master switch; required for any scripting |
| Scripting works only for users holding authorization object |
| Scripts may read screen state but cannot send anything that changes server state (SAP Note 692245) |
| Users always see a notification/consent dialog when a script attaches; cannot be suppressed in local SAP GUI options (SAP Note 3591984) |
| 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_SCRholders, read-only for everyone else (SAP Note 2565390).A dynamic
RZ11change tosapgui/user_scriptingis not persistent — it reverts at the next application server restart, which suits a time-boxed evaluation on a development system.Server-side, scripted actions run under the SAP user's normal authorizations and appear in logs as ordinary user activity. The user's authorization profile is the effective security boundary — pair a dedicated minimal-authorization account with this server's transaction policy (
--policy-preset,--policy-file),--profile, and--audit-logoptions 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
From PyPI (recommended for users)
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]" --helpThe [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 --debugMCP 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: stdioRunning 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.
Client Setup Links
Claude Code / Claude Desktop: setup examples are included below
Codex: configure an MCP server in Codex and point it at the command above. Official MCP docs: https://developers.openai.com/learn/docs-mcp
GitHub Copilot: configure a local MCP server in Copilot Chat / agent mode. Official docs: https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp
Gemini CLI: add the server under
mcpServersin your Gemini CLI settings. Official docs: https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md
Below are full examples for the most common local SAP GUI setup paths.
For a client-by-client setup guide, see docs/CLIENTS.md.
Option 1: Claude Code (Recommended for development)
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
claudeClaude 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.jsonmacOS:
~/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--directoryflag is required souvfinds the project's virtual environment regardless of the working directory Claude Desktop uses.
Read-only mode (recommended when exploring/querying data):
{
"mcpServers": {
"sap-gui": {
"command": "uvx",
"args": ["mcp-sap-gui[screenshots]", "--read-only"]
}
}
}With transaction whitelist (only allow specific transactions):
{
"mcpServers": {
"sap-gui": {
"command": "uvx",
"args": [
"mcp-sap-gui[screenshots]",
"--allowed-transactions", "MM03", "VA03", "ME23N"
]
}
}
}After editing the config, restart Claude Desktop for changes to take effect.
Option 3: Any MCP-compatible client
The server uses stdio transport. Point any MCP client at:
Command: uvx mcp-sap-gui[screenshots]
Arguments: [--read-only] [--profile exploration|operator|full] [--confirm POINT ...] [--audit-log FILE] [--debug] [--policy-preset default|abap-dev|strict] [--policy-file FILE] [--allowed-transactions T1 T2 ...]
Transport: stdioFor 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-guideResource — Detailed reference guide available on-demand viaresources/read. Covers element types, ID naming conventions, transaction code formats, table type comparison, status bar messages, and step-by-step patterns for SPRO and table maintenance views.
These prevent common agent mistakes like guessing element IDs, ignoring popups, pressing F5 (="New Entries") when meaning to refresh, using double_click_tree_node in SPRO (which opens docs instead of executing the activity) or in a view cluster (where it does nothing), or reading a classic report list from a screenshot instead of with sap_read_list.
Available Tools
The server currently exposes 60 MCP tools.
Category | Count | What it covers |
Connection & Policy | 7 | Connect to SAP, attach to open sessions, inspect sessions, disconnect, set policy profile, set confirmation points |
Navigation | 3 | Execute transactions, send keys, inspect current screen |
Fields & UI | 13 | Read/write fields, buttons, tabs, comboboxes, textedit, focus |
Tables & Grids | 17 | ALV grids, TableControls, row selection, column info, cell ops |
Popup / Toolbar / Shell / Lists | 5 | Popup inspection and handling, toolbar discovery, shell content, classic report lists |
Trees | 10 | Read/search/expand/select/click SAP tree controls |
Discovery | 2 | Screen element discovery and screenshots |
Preview | 1 | Show the user the current screen plus the values the agent is about to write |
Workflow Guidance | 1 | Return step-by-step guidance for known multi-tool SAP workflows |
Transaction Guidance | 1 | Return a generic, read-first guide for supported SAP transactions |
The most important patterns:
sap_get_screen_elementsto discover IDs instead of guessingsap_read_tableto start with any SAP table/gridsap_read_listwhen a report prints a plain list instead of an ALV gridEvery action response carries a short
popupdigest when a popup opened (classification, texts, button labels, andprefilled_inputswith a notice when inputs already hold values);sap_get_popup_windowgives the full details and suggests a safe next stepsap_handle_popup(action="auto")when you want the server to dismiss only clearly safe informational popups and otherwise leave the dialog untouchedsap_previewbefore significant writes (batch field fills,F11/ Save) so the user sees the screen and the pending values firstsap_set_confirmation_pointsto make categories of writes ask the user for approval before they runsap_get_workflow_guidewhen you want the proven sequence for a known workflowsap_get_transaction_guidewhen you want a generic guide for a supported transaction:/SCWM/MON(alsowarehouse monitor), orSM30for table/view maintenance and view clusters (alsoSM34,view cluster)sap_read_treeplus 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
Transaction Policy - Which transactions an agent may start. What is dangerous depends on who runs the server and against which system, so it is configurable:
--policy-preset default(the default) blocks user and role administration (SU01,SU10,SU01D,PFCG,SU53), logs and dumps (SM21,ST22), development and program execution (SE38,SA38,SE80,SE37,SE16N), and system administration (STMS,SCC4,RZ10,RZ11,SM36,SM49,SM69,SM59,STRUST,SICF,SM01,SM18,SM19). Customizing and display work (SM30,SM34,SPRO,SE16,SE11) stays open--policy-preset abap-devadditionally allowsSA38,SE11andSE80, for developers testing their own programs--policy-preset strictblocks everything the policy file does not allow--policy-file policy.jsonadds to the preset:{"preset": "abap-dev", "block": ["ZHR*"], "allow": ["SM59"]}. Entries are codes or glob patterns (SU*,/SCWM/*);allowalways wins overblock. Without the flag the server reads$MCP_SAP_GUI_POLICY_FILE, else%APPDATA%\mcp-sap-gui\policy.jsonif it exists. Keep the file outside the agent's workspaceTwo examples ship in
examples/:policy.example.jsonstarts fromdefault, additionally blocks a customer namespace (ZHR*) andSE16, and allowsST22for dump analysis;policy.strict.example.jsonis an allowlist for a display-only agent. To make one your per-user policy on Windows:New-Item -ItemType Directory -Force "$env:APPDATA\mcp-sap-gui"; Copy-Item examples\policy.example.json "$env:APPDATA\mcp-sap-gui\policy.json"The policy is read once at startup and written to the audit log (with the file's SHA-256). No tool can change it, and a policy file that cannot be read stops the server instead of falling back to something more permissive
Case-insensitive matching; handles
/n,/o,/*prefixes and whitespaceIt is a guardrail against agent mistakes, not a security boundary: a blocked transaction can often be reached another way (a menu path, a screen you left open). The SAP user's authorizations are the boundary
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 policyRead-Only Mode -
--read-onlyflag disables all mutating operations (field writes, button presses, transaction execution, key sends, tree/table interactions)Transaction Whitelist - For production use an allowlist: the
strictpolicy preset with anallowlist in the policy file (supports patterns such as/SCWM/*). The older--allowed-transactions T1 T2 ...flag still works and restricts on top of the policy.Policy Profiles -
--profilecontrols which tools are visible:exploration(read-only),operator(read + write),full(all, default). Profiles can also be switched per-session viasap_set_policy_profile— but the server--profileis a floor: a session can restrict itself further, never grant itself more than the server allowsTool Tags - Every tool is tagged
readorwritefor policy profile filtering. All tools carry MCPreadOnlyHint/destructiveHintannotations so clients can display appropriate UI hintsSave Confirmation -
sap_send_key("F11")andsap_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.Confirmation Points - Named categories of write operations that require blocking user approval before the server executes them.
save(theF11/Savekey and thewnd[0]/tbar[0]/btn[11]Save toolbar button) is always on.transactions,batch_fields,field_writesandall_writescan be activated per session withsap_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-modesandbox. Adding a point is silent; removing a session point asks the user first, and points set by--confirmcannot 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_writescovers every write-tagged tool, including selection, scrolling and navigation helpers that change no business data — it is deliberately strict and noisy, and under itsap_send_key("F11")prompts twice (once for the category, once for the unchanged save gate).Audit Logging -
--audit-log FILEwrites every tool call (name, arguments, timing, outcome) as JSON lines. Secrets in arguments are masked automaticallySecure Credential Resolution -
sap_connectresolves credentials from a.envfile (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.exampleto.envto get startedID Validation And Normalization - User-supplied SAP window and element IDs are validated before
findById()is called. Standard IDs likewnd[0]/usr/...are accepted, and full session paths like/app/con[0]/ses[0]/wnd[0]/usr/...are normalized to the short form automatically.
Recommendations for Production Use
Never expose to untrusted users
Use read-only mode for exploration/queries
Implement transaction whitelists for automation
Enable audit logging on SAP side
Use dedicated service accounts with minimal authorizations
Enable scripting per-user, not globally —
sapgui/user_scripting_per_userwith theS_SCRauthorization 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 feedbackShow 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 elicitationProject 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.mdTroubleshooting
"Cannot connect to SAP GUI"
Ensure SAP Logon Pad is running
Check that SAP GUI Scripting is enabled in SAP GUI options
"Scripting disabled" error
Enable scripting server-side:
RZ11→sapgui/user_scripting=TRUERequires 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 IDsField IDs vary between SAP systems due to customization
COM errors on startup
Ensure dependencies are installed:
uv syncRun
uv run python -m win32com.client.makepyif 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 syncfirst so the environment and dependencies exist
"The tool is available, but the action is blocked"
Check whether the server is running with
--read-onlyCheck whether the transaction policy blocks it: the error names the active preset. Allow the transaction in a policy file (
--policy-file, see Security Considerations) or pick another--policy-preset, then restart the server. The policy cannot be changed from inside a sessionCheck 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/Related
License
MIT. See LICENSE.
Disclaimer
This project is not affiliated with, endorsed by, or sponsored by SAP SE. SAP, SAP GUI, and other SAP products mentioned are trademarks of SAP SE.
Use of this software with SAP systems should comply with your SAP licensing agreement and your organization's security policies.
Available Tools
60 toolssap_click_tree_linkA
Click a hyperlink in a tree node item.
For SPRO/customizing trees, click on the execute icon column (typically item_name='2') to run an activity. Use sap_read_tree to see which columns have link-type items.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| node_key | Yes | ||
| item_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 context by specifying that clicking a link in an SPRO tree runs an activity, but does not detail any side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loading the action and immediately providing context. Every sentence adds value without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description mentions a companion tool ('sap_read_tree') for preparation, and given that an output schema exists, it covers the essential usage context. It is complete enough 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides specific guidance for the 'item_name' parameter (e.g., often '2' for execute icon), which adds value beyond the schema. However, 'tree_id' and 'node_key' are not described beyond their names, and schema coverage is 0%, so the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Click a hyperlink') and the resource ('tree node item'), and distinguishes it from sibling tools like 'sap_double_click_tree_item' by focusing on link-type items. The mention of SPRO/customizing trees provides specific context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises to use 'sap_read_tree' to identify link-type columns, providing clear guidance on how to determine the correct column. It also gives a typical example (item_name='2') for SPRO trees, though it does not explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_collapse_tree_nodeC
Collapse a folder node in a tree control (e.g. SPRO/customizing tree).
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| node_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_connectARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | No | ||
| client | No | ||
| language | No | ||
| system_description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_existingARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_index | No | ||
| connection_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_disconnectARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | ||
| column | Yes | ||
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| node_key | Yes | ||
| item_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| node_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells when to use this tool (for tree nodes) and when not to (for SPRO activities, recommending sap_click_tree_link instead on the execute column). It provides a clear alternative and context for the SPRO scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_execute_transactionA
Execute (start/run) an SAP transaction code (tcode), e.g. MM03, VA01, SM30.
Navigates to the transaction's initial screen. Always check the screen info in the response to understand what screen you landed on. Some transactions require /n prefix for SCWM (e.g., /n/SCWM/MON). A bare /n leaves the current transaction (unsaved data is lost).
Subject to transaction blocklist/allowlist. Use sap_get_session_info to see the current transaction before navigating away.
| Name | Required | Description | Default |
|---|---|---|---|
| tcode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only provide readOnlyHint=false and destructiveHint=false, so the description carries the behavioral burden. It adds meaningful details: it navigates to initial screens, is subject to transaction blocklist/allowlist, and warns that a bare /n can lose unsaved data. This goes well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The sentences are compact and front-loaded with the core action, then examples, navigation behavior, restrictions, and related-tool guidance. Every sentence earns its place and there is no filler or restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description covers what an agent needs before calling: what tcode means, what screen to expect, the blocklist/allowlist constraint, the /n caveat, and the related sap_get_session_info tool. Return-value details are covered by the output schema, so their absence here is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines a required string tcode with no description, so the description's identification of it as an SAP transaction code and the examples (MM03, VA01, SM30) are essential semantic context. It also adds the /n prefix nuance, though it does not exhaustively document every valid tcode or formatting edge case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action — execute/start/run an SAP transaction code — against a clear resource (tcode), with concrete examples (MM03, VA01, SM30). It also clarifies the immediate behavior by saying it navigates to the transaction's initial screen, which separates it from the many read/navigation sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides actionable conditions: always check the screen info in the response, use the /n prefix for certain SCWM transactions, and consult sap_get_session_info before navigating away. It does not explicitly contrast this tool with an alternative execution tool, so it stops short of a full when-to-use/when-not-to-use guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_expand_tree_nodeA
Expand a folder node in a tree control to reveal its children.
After expanding, use sap_get_tree_node_children or sap_read_tree to see the newly visible child nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| node_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_pathBRead-only
Find a tree node key by its path.
E.g., '2\1\2' = 2nd child of root, then 1st child, then 2nd.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| tree_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_toolbarARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_infoARead-only
Get detailed cell metadata from an ALV grid.
Returns value, changeable, color, tooltip, style, max_length. Does NOT work on GuiTableControl.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | ||
| column | Yes | ||
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_infoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_entriesARead-only
List all entries in a combobox/dropdown.
Returns key-value pairs so you know which values are valid.
| Name | Required | Description | Default |
|---|---|---|---|
| combobox_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_cellBRead-only
Get the currently focused cell position in an ALV grid or table control.
| Name | Required | Description | Default |
|---|---|---|---|
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_windowARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_elementsARead-only
Discover all elements on the current SAP screen.
Useful for finding field IDs when working with a new screen.
Use type_filter and changeable_only to reduce response size on complex screens (e.g. type_filter="GuiTextField,GuiCTextField" to find only input fields).
max_depth controls how deep to recurse into containers (default 2). Use max_depth=1 for a quick overview, max_depth=3+ for deeply nested layouts (splitter containers, tab strips with sub-containers).
Pass container_id='wnd[0]/mbar' to discover the menu bar structure.
A table control (SM30-style) is ONE element here, not one per cell: use sap_read_table(columns_only=true) for its columns and cell_id templates. expand_tables=true lists every visible cell (large).
Docking containers sit BESIDE the user area, not inside it: the dialog-structure tree of a view cluster (SM34, most IMG activities) and the SE80 tree are under 'wnd[0]/shellcont'. When the window has any, the response lists them as docking_containers; discover them with that id, or pass container_id='wnd[0]' (max_depth=1) for all top-level areas.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | ||
| type_filter | No | ||
| container_id | No | wnd[0]/usr | |
| expand_tables | No | ||
| changeable_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful behavior beyond the readOnly/destructive annotations: default max_depth of 2, recursion behavior, docking containers being listed separately in the response, table controls collapsing to one element, and expand_tables causing large output. It also warns about response size on complex screens, which helps an agent anticipate outcomes before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every sentence adds operational value. It front-loads the core purpose and usefulness, then systematically covers each parameter and edge case, with examples inline. Nothing is filler; the length is proportionate to the tool's complexity and the absence of schema-level parameter descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for an agent to select and invoke this tool correctly. It covers purpose, when-to-use, alternatives, parameter semantics, special screen regions, table-control behavior, and response-size considerations. An output schema exists, so not detailing the return shape is acceptable, and the description still mentions key response concepts like 'docking_containers'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full burden for all five parameters, and it does. It explains max_depth with concrete values, type_filter with a real example ('GuiTextField,GuiCTextField'), container_id with default and special targets, expand_tables with the 'lists every visible cell (large)' caveat, and changeable_only as a response-reduction switch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Discover all elements on the current SAP screen,' which is a specific verb-resource pairing, then explains its main use case: 'finding field IDs when working with a new screen.' It also distinguishes itself from sibling tools like sap_read_table by explaining that a table control is 'ONE element here, not one per cell.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit and comprehensive. It tells agents when to use the tool, when to use alternatives ('use sap_read_table(columns_only=true) for its columns and cell_id templates'), and how to adapt calls to the situation: type_filter for input fields, max_depth=1 for overview, max_depth=3+ for nested layouts, and container_id='wnd[0]/mbar' for menu bars. No conditions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_get_screen_infoARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_infoARead-only
Get information about the current SAP session (system, client, user, transaction, screen)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_infoARead-only
Get row metadata (selectable, selected) from a GuiTableControl.
If rows is omitted, queries all visible rows. Does NOT work on ALV grids.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_buttonsARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| window_id | No | wnd[0] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_guideARead-only
Return a generic, read-first guide for a supported SAP transaction.
Available transactions:
/SCWM/MON: EWM Warehouse Monitor with tree navigation and ALV results.
SM30: table/view maintenance and view clusters (SM34) - also what most IMG activities open: reading the table, the docked dialog-structure tree, new entries, saving and the customizing request prompt.
Aliases accepted: SCWM/MON, warehouse monitor, ewm warehouse monitor,
SM34, table maintenance, view maintenance, view cluster.
| Name | Required | Description | Default |
|---|---|---|---|
| task | No | ||
| transaction | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'read-first' phrasing is consistent. It adds scope details about supported transactions but does not disclose additional behavioral traits like error handling, permission requirements, or side effects beyond the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and uses bullet points for readability. Every sentence adds value—intro, transaction details, and aliases—with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main transaction parameter and provides useful context for two transactions, but misses the 'task' parameter semantics and does not mention error behavior for unsupported transactions. The presence of an output schema mitigates return-format gaps, but the parameter gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description compensates for the 'transaction' parameter by listing valid values and aliases, but completely omits the optional 'task' parameter, leaving its purpose unclear. Partial coverage of parameters reduces clarity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a read-first guide for supported SAP transactions, with specific verb and resource. It distinguishes from siblings like sap_execute_transaction by emphasizing read-first nature and enumerating exact supported transactions and aliases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining a guide on specific transactions but does not explicitly compare with alternatives like sap_execute_transaction or sap_get_workflow_guide. It lists valid inputs but lacks when-not-to-use or alternative routing, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_get_tree_node_childrenA
Get direct children of a tree node. Much faster than read_tree for step-by-step navigation of deep trees (e.g., SPRO).
Omit node_key or pass empty string for root-level nodes. Set expand=true to expand the node first (requires write permission).
| Name | Required | Description | Default |
|---|---|---|---|
| expand | No | ||
| tree_id | Yes | ||
| node_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_guideARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | ||
| workflow | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | read | |
| button_text | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_connectionsARead-only
List all open SAP connections and sessions
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | ||
| value | Yes | ||
| column | Yes | ||
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_id | Yes | ||
| button_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| button_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| column | Yes | ||
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_previewARead-only
Render a preview card of the current SAP screen for the user: screenshot, session/transaction info, status bar, and the values the agent is about to write (pending_fields). Call before significant writes (batch fills, F11 save) or whenever the user asks to see what's about to happen. Read-only: nothing is written or saved.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| pending_fields | No | ||
| include_screenshot | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description reinforces this with 'Read-only: nothing is written or saved.' It adds useful context about the tool's behavior: it renders a preview card including screenshot, session info, status bar, and pending fields. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. It front-loads the core purpose, follows with usage guidance, and ends with the read-only note. Each sentence earns its place, and the structure is logical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's function, when to use it, and its read-only nature. However, it does not describe the output/return value (no output schema exists), and it leaves the note parameter entirely unexplained. For a simple preview tool with optional parameters, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It explicitly mentions pending_fields ('the values the agent is about to write (pending_fields)') but does not mention note or include_screenshot. The parameter names are self-explanatory to some degree, but the description does not clarify their purpose or relationships. Given the low coverage, the description fails to fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Render a preview card of the current SAP screen' and lists its contents (screenshot, session/transaction info, status bar, pending_fields). It distinguishes itself from siblings like sap_screenshot (which only captures a screenshot) and sap_get_screen_info (which only fetches info) by combining these into a preview card. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call: 'Call before significant writes (batch fills, F11 save) or whenever the user asks to see what's about to happen.' This provides clear context and timing. However, it does not explicitly mention when not to use it or alternative tools, so it stops short of a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_read_fieldARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| field_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_listARead-only
Read a classic ABAP list (WRITE output of a report) as lines of text.
Use it when a report shows a plain list rather than an ALV grid (program SAPMSSY0, screen 120), and for F4 hit lists in a popup (window_id= 'wnd[1]'). Such a list has no table object: every word is its own label, so sap_get_screen_elements returns ~500 elements for one page. This returns the page as the lines the user sees, with no screenshot needed.
colors: rows whose text has a semantic list colour, e.g. 'negative' (red, errors), 'positive' (green), 'total', 'heading'
scroll: present when the list is longer than the page; pass scroll_to=position+page_size to read the next page
with_ids=true adds the ID of each line's first label, to set the focus on a line (sap_set_focus) before F2 / double-click
is_list=false means this screen has no list: use sap_read_table
| Name | Required | Description | Default |
|---|---|---|---|
| with_ids | No | ||
| max_lines | No | ||
| scroll_to | No | ||
| window_id | No | wnd[0] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds useful behavioral context: it returns lines without screenshots, explains the 'no table object' behavior (every word is a label), and describes scroll semantics (scroll_to=position+page_size). This goes beyond what annotations provide, though it doesn't mention return structure details (output schema exists, so that's covered).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening, a use-case context paragraph, and a bulleted list of key features. It front-loads the main purpose and then details specifics. Slightly verbose in the second paragraph but each sentence adds value; the bullet list makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema (not shown) and annotations covering safety, the description is largely complete. It covers usage context, parameters, color handling, scrolling, and focus. The only minor gap is not explicitly stating what happens with max_lines (e.g., truncated output), but this is likely inferable from the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain parameters, and it does. It explains with_ids (adds line IDs for focus setting), scroll_to (for pagination), and window_id (default wnd[0], but example shows wnd[1] for popup). max_lines is implied but not explicitly described; still, the coverage is strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a classic ABAP list as lines of text, specifies the exact input type (WRITE output, SAPMSSY0 screen 120), and distinguishes it from ALV grids and other list-like structures. It also explicitly differentiates from sap_read_table and sap_get_screen_elements, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use this tool (plain lists, F4 hit lists) and when not to use it (is_list=false means use sap_read_table). It also provides concrete guidance on scrolling, colors, and focus setting, covering both use cases and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_read_shell_contentARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| shell_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_tableARead-only
Read rows from a table on the current screen — ALV grid (report/list output) or TableControl (SM30 maintenance view, customizing screens).
Auto-detects the table type. The response includes a 'table_type' field ('GuiGridView' for ALV or 'GuiTableControl') so you know which type-specific tools to use next (e.g., sap_get_alv_toolbar for ALV, sap_scroll_table_control for TableControl).
Use columns_only=true for schema discovery (returns column metadata only, no data). For a TableControl it also gives each column's cell_type and a cell_id template ({row} = zero-based visible row) for sap_set_batch_fields. Use columns to fetch only specific columns (CSV). Use start_row to paginate through large tables.
| Name | Required | Description | Default |
|---|---|---|---|
| columns | No | ||
| max_rows | No | ||
| table_id | Yes | ||
| start_row | No | ||
| columns_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though readOnlyHint=true and destructiveHint=false already cover the safety profile, the description adds substantial operational behavior: auto-detection of table type, the table_type field in the response, columns_only=true returning metadata with no data, per-column cell_type and cell_id template for TableControls, and start_row pagination semantics. This goes well beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description runs ~120 words and is dense but every sentence earns its place: purpose, auto-detection behavior, table_type routing, columns_only mode, column filtering, and pagination. It is front-loaded with the core purpose and follows a logical order. It could be tightened slightly, but there is no fluff or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and read-only annotations, the description covers most of what an agent needs: table type scope, mode switching, column selection, pagination, and next-step routing. The main completeness gap is the undocumented required table_id (where to get it) and max_rows semantics, which matter for correct invocation on a 5-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the full burden and does explain columns_only (schema discovery, cell_type/cell_id template), columns (CSV selection), and start_row (pagination) meaningfully. However, it never explains the required table_id parameter — where an agent obtains it or what identifies a table — nor does it clarify max_rows behavior. Missing the one required parameter is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Read rows from a table on the current screen') and precisely scopes the target to two UI constructs: ALV grid and TableControl. This clearly distinguishes it from siblings like sap_read_field (single field), sap_read_list (list output), and sap_get_cell_info (individual cell), so an agent can select it correctly without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context for when to use the tool: any table on the current screen, with the ALV-vs-TableControl distinction spelled out. It also routes the agent to the correct follow-up tools based on the returned table_type (sap_get_alv_toolbar vs sap_scroll_table_control). It stops short of explicitly naming alternatives NOT to use (e.g., sap_read_field), but the scoping is clear enough that exclusion is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_read_texteditARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| max_lines | No | ||
| textedit_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_treeARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| max_nodes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_screenshotARead-only
Take a screenshot of the current SAP window.
Use as a fallback when structured tools (sap_get_screen_elements, sap_read_field, sap_read_table) return empty or confusing results, e.g., on Web Dynpro screens where the element tree is non-standard.
To put a screenshot into a document, pass save_path (must end in .png, directory must exist, existing files are never overwritten). The file keeps SAP GUI's full resolution; the inline image is capped at 1920px. The response then also reports the absolute path and pixel size. Set inline=False to skip the image when only the file is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| inline | No | ||
| save_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, and the description aligns with those. It adds valuable behavioral details beyond annotations: existing files are never overwritten, the saved file keeps full SAP GUI resolution, inline images are capped at 1920px, and the response includes the absolute path and pixel size. This is meaningful operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into three compact sections: core purpose, fallback usage, and parameter behavior. Every sentence carries operational information with no filler. The main purpose is front-loaded, and the parameter details are grouped logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two optional parameters, no output schema, and safe annotations, the description covers purpose, when to use it, parameter constraints, file behavior, and response contents. Nothing essential for an agent to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It explains save_path must end in .png, the directory must exist, files are never overwritten, and the file keeps full resolution. It also clarifies inline controls whether the image is embedded and that inline=False skips the image when only the file is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Take a screenshot of the current SAP window.' It also differentiates itself from structured inspection tools by positioning itself as a fallback for screens where the element tree is non-standard. This is unambiguous among many SAP sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use the tool: as a fallback when structured tools like sap_get_screen_elements, sap_read_field, and sap_read_table return empty or confusing results. It also gives concrete guidance for when to set inline=False, making the selection criteria clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_scroll_table_controlA
Scroll a GuiTableControl to a specific row position.
Does NOT work on ALV grids (they handle scrolling internally). For reading data at a specific offset, prefer sap_read_table with start_row parameter — it handles scrolling automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| position | Yes | ||
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_nodesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| column | No | ||
| tree_id | Yes | ||
| max_results | No | ||
| search_text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| select | No | ||
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| selected | No | ||
| checkbox_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| combobox_id | Yes | ||
| key_or_value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_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]).
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| radio_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | ||
| table_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_id | Yes | ||
| node_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a list of common keys with their functions (e.g., Enter confirm, F1 Help) but does not explicitly state when to use this tool versus alternatives like pressing a button. Usage context is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_set_batch_fieldsA
Fill in multiple input fields at once (dict of field_id to value).
Use this to fill a form or selection screen in one call — more efficient than repeated sap_set_field calls. Table-control cells work too: take the cell_id template of each column from sap_read_table(columns_only=true) and replace {row}.
The result gives counts; results lists only the fields that did NOT
succeed (all of them with verbose=true).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Dict mapping field_id -> value. | |
| verbose | No | List every field in `results`, not only the failures. | |
| validate | No | Press Enter after setting fields and return status-bar feedback. Skipped when no fields were actually set. | |
| skip_readonly | No | Silently skip fields whose element reports Changeable == False instead of counting them as failures. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so the agent knows this mutates but is not destructive. The description adds return-behavior detail (counts, `results` lists failures by default, all with verbose=true) and the table-cell template approach. This adds meaningful context beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short paragraphs with zero filler. The primary purpose is front-loaded, and the efficiency comparison to sap_set_field is stated in the first sentence. Every sentence adds value—no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and an output schema, the description covers the main use case, return semantics, and the table-cell edge case. It doesn't explain prerequisites or field_id format, but those are likely inferable from the schema and existing patterns. Given the output schema exists, the description is adequately complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters clearly. The description adds only a minor note about table-control cells and restates the verbose behavior that is already in the schema. It does not compensate with extra detail for any parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fills multiple input fields at once via a dict, with a specific verb ('fill') and resource ('multiple input fields'). It explicitly contrasts with sap_set_field, so an agent can distinguish it from the single-field sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to fill a form or selection screen in one call — more efficient than repeated sap_set_field calls', naming the alternative and the condition that selects it. It also explains table-control cell usage with a pointer to sap_read_table. This is unambiguous when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_set_confirmation_pointsARead-only
Choose which SAP operations need the user's explicit approval first.
Replaces this session's set of confirmation points. When a point is active, every matching tool call pauses and asks the user to approve it (MCP elicitation) before anything reaches SAP; declining returns an error and nothing is executed.
Points:
transactions: sap_execute_transaction
batch_fields: sap_set_batch_fields
field_writes: sap_set_field, sap_modify_cell, sap_set_textedit, sap_select_checkbox, sap_select_radio_button, sap_select_combobox_entry
all_writes: every write-tagged tool. Strict and noisy — many write tools only select, scroll or navigate, and they will all prompt. Under all_writes, sap_send_key("F11") asks twice: once for the category and once for the unchanged save gate.
'save' (F11 / Save key, Save toolbar button) is always on and cannot be turned off. Points set by the server's --confirm flag cannot be removed either. Adding a point is silent; removing one asks the user first, and a declined removal keeps the point.
Confirmation prompts block until the user answers, and on clients without elicitation support the gated call fails instead of running unconfirmed (same fail-closed rule as the save gate). On such a client points also cannot be removed, so activating one there blocks that whole category for the rest of the session. Call sap_preview before a gated action so the user can see the screen and pending values first.
| Name | Required | Description | Default |
|---|---|---|---|
| points | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=true and destructiveHint=false; the description adds enormous behavioral context beyond that: removal of a point itself asks for approval, declined removal keeps the point, prompts block until answered, fail-closed behavior on clients without elicitation support, and the session-long block when a point cannot be removed. It also explains the double-prompt under all_writes. This is exemplary disclosure of behavior the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a front-loaded summary line and clear paragraph breaks, but it runs roughly 450 words. The F11 double-prompt illustration and the dense fail-closed/client-without-elicitation passage are informative yet could be tightened without losing meaning. Long, but every section earns its place given the tool's behavioral complexity — it just isn't a model of economy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex configuration tool, the description covers the essential ground: what each point does, the always-on save gate, server-flag interactions, fail-closed semantics, and a usage hint (call sap_preview first). The only thing left unexplained is the return value, but an output schema exists to cover that. Complete enough for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and there is only one parameter (points, an enum array), yet the description fully compensates: it maps every enum value to its affected tools (transactions → sap_execute_transaction; batch_fields → sap_set_batch_fields; field_writes → the six write tools; all_writes → every write-tagged tool) and characterizes their real-world impact. The agent can choose values correctly with zero schema help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb+resource: 'Choose which SAP operations need the user's explicit approval first.' It immediately clarifies this is a policy/configuration tool that replaces the session's confirmation-point set, and it distinguishes itself from all 60+ sibling tools (which are execution, navigation, or read tools) by being the only one that manages approval gating. The purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives unusually rich usage context: it enumerates exactly which tools fall under each point category, explains that 'save' is always on and cannot be turned off, warns that all_writes is 'strict and noisy' with the F11 double-prompt example, notes server --confirm points cannot be removed, and explicitly advises calling sap_preview before a gated action. It tells the agent both what to do and what side effects to expect, which is rare and valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_set_current_cellA
Set the current (focused) cell in an ALV grid or table control.
Useful before pressing toolbar buttons that act on the current cell.
| Name | Required | Description | Default |
|---|---|---|---|
| row | Yes | ||
| column | Yes | ||
| grid_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| field_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| element_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_profileARead-only
Switch the active policy profile for this session.
Profiles control which tools are visible:
exploration: read-only tools (discover, inspect, screenshot)
operator: read + write tools (normal SAP interaction)
full: all tools including destructive (transaction execution)
A session can only restrict, never widen: if the server was started with --profile, a request above that floor is capped to the floor. Default profile is 'full' unless the server was started with --profile.
| Name | Required | Description | Default |
|---|---|---|---|
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true and destructiveHint=false, and the description aligns with this by describing a session-level configuration change rather than a data mutation. The description adds behavioral transparency by explaining that the profile change is capped by the server's startup profile and that the default is 'full', which are important operational details beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, front-loading the core purpose and then efficiently explaining the profile options and restrictions. Every sentence contributes value, from the one-line purpose to the bullet-like list and the final note on default and restriction. There is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description doesn't need to explain return values. The description covers the purpose, profile semantics, default behavior, and restrictions, which is complete for a simple configuration tool. An agent has all the information needed to select the appropriate profile and understand the limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description fully compensates by explaining what each enum value (exploration, operator, full) means in terms of tool visibility. This adds meaning beyond the raw enum names, making the parameter's semantics clear. The single required parameter is well-documented through the profile descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Switch the active policy profile for this session' and then explains what each profile does, making the tool's purpose unambiguous. It distinguishes itself from sibling tools by describing the session-level configuration effect, which is unique among the listed SAP tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool by explaining the three profile options (exploration, operator, full) and their tool visibility effects. It also notes the restriction that a session can only restrict, never widen, and mentions the default profile and server-side cap, which gives practical usage guidance. However, it doesn't explicitly state alternatives or scenarios where you would choose this over other configuration tools, though that's not critical here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_set_texteditA
Write text into a multiline text editor (GuiTextedit) — long texts, notes, comments, document text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| textedit_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.4.0- Changed
sap_get_screen_elements1 field changed- added
Input schema / properties / expand_tablesAdded value: +{ + "default": false, + "type": "boolean" +}
- Added
sap_preview - Added
sap_read_list - Changed
sap_screenshot2 fields changed- added
Input schema / properties / inlineAdded value: +{ + "default": true, + "type": "boolean" +} - added
Input schema / properties / save_pathAdded value: +{ + "default": "", + "type": "string" +}
- Changed
sap_set_batch_fields1 field changed- added
Input schema / properties / verboseAdded value: +{ + "default": false, + "description": "List every field in `results`, not only the failures.", + "type": "boolean" +}
- Added
sap_set_confirmation_points
1 tool update
v0.2.2- Changed
sap_set_batch_fields3 fields changed- added
Input schema / properties / fields / descriptionAdded value: +"Dict mapping field_id -> value." - added
Input schema / properties / skip_readonly / descriptionAdded value: +"Silently skip fields whose element reports\nChangeable == False instead of counting them as failures." - added
Input schema / properties / validate / descriptionAdded value: +"Press Enter after setting fields and return status-bar\nfeedback. Skipped when no fields were actually set."
57 tool updates
v0.2.0- First observed
sap_click_tree_link - First observed
sap_collapse_tree_node - First observed
sap_connect - First observed
sap_connect_existing - First observed
sap_disconnect - First observed
sap_double_click_cell - First observed
sap_double_click_tree_item - First observed
sap_double_click_tree_node - First observed
sap_execute_transaction - First observed
sap_expand_tree_node - First observed
sap_find_tree_node_by_path - First observed
sap_get_alv_toolbar - First observed
sap_get_cell_info - First observed
sap_get_column_info - First observed
sap_get_combobox_entries - First observed
sap_get_current_cell - First observed
sap_get_popup_window - First observed
sap_get_screen_elements - First observed
sap_get_screen_info - First observed
sap_get_session_info - First observed
sap_get_table_control_row_info - First observed
sap_get_toolbar_buttons - First observed
sap_get_transaction_guide - First observed
sap_get_tree_node_children - First observed
sap_get_workflow_guide - First observed
sap_handle_popup - First observed
sap_list_connections - First observed
sap_modify_cell - First observed
sap_press_alv_toolbar_button - First observed
sap_press_button - First observed
sap_press_column_header - First observed
sap_read_field - First observed
sap_read_shell_content - First observed
sap_read_table - First observed
sap_read_textedit - First observed
sap_read_tree - First observed
sap_screenshot - First observed
sap_scroll_table_control - First observed
sap_search_tree_nodes - First observed
sap_select_all_rows - First observed
sap_select_all_table_control_columns - First observed
sap_select_alv_context_menu_item - First observed
sap_select_checkbox - First observed
sap_select_combobox_entry - First observed
sap_select_menu - First observed
sap_select_multiple_rows - First observed
sap_select_radio_button - First observed
sap_select_tab - First observed
sap_select_table_row - First observed
sap_select_tree_node - First observed
sap_send_key - First observed
sap_set_batch_fields - First observed
sap_set_current_cell - First observed
sap_set_field - First observed
sap_set_focus - First observed
sap_set_policy_profile - First observed
sap_set_textedit
TDQS
Scored across 60 tools
Every tool targets a specific action on a specific UI element type (field, button, tree, table, popup, etc.), and descriptions explicitly cross-reference related tools to clarify boundaries (e.g., ALV vs TableControl, standard toolbar vs ALV toolbar). Only minor overlap exists between schema-discovery tools, but they point to each other.
All tools share the sap_ prefix and follow a consistent verb_noun snake_case pattern (e.g., read_field, set_field, select_checkbox, double_click_cell). A few exceptions like connect_existing and screenshot are still readable and predictable within the overall scheme.
60 tools is far beyond the well-scoped range, even for the broad SAP GUI domain. The surface is heavily fragmented into many narrowly targeted tools (e.g., 10 tree-related tools, 8 table/grid tools, multiple selection tools), which makes it feel over-fragmented and could overwhelm an agent.
The tool set covers nearly every major SAP GUI interaction: connection management, screen discovery, all common control types (fields, buttons, menus, tabs, combos, trees, tables, popups), batch operations, screenshots, and workflow guides. There are no obvious dead ends, and even edge cases like SPRO trees and popup handling have dedicated tools.
Maintenance
Related MCP Connectors
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- FlicenseBqualityNot gradedmaintenanceAn 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-
- AlicenseNot gradedqualityNot gradedmaintenanceAn enterprise-grade MCP server that enables AI agents to execute SAP RFC functions and read business data securely through the Model Context Protocol.MIT

dassian-adtofficial
AlicenseNot gradedqualityDmaintenanceMCP server for SAP ABAP development via the ADT API. Connect AI assistants to your SAP system — read, write, test, and deploy ABAP code without SAP GUI.10MIT- AlicenseNot gradedqualityFmaintenanceA production-ready MCP server that enables LLMs to automate SAP GUI using RoboSAPiens, supporting both stdio and SSE modes.13Apache 2.0