ABAPilot
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| sap_analyze_queryA | Analyze a natural language query and return intelligent guidance for building the SAP query. This tool examines your query and returns: - Candidate tables to query - Query type (simple, multi-table, aggregation) - Detected date ranges - Aggregation hints (TOP N, SUM, COUNT) - Field recommendations with semantic context USE THIS FIRST before building complex queries to get field guidance! |
| sap_check_notes_relevancyA | Check relevancy of one or more SAP Note numbers against this system (component/SP levels, download state, implementation readiness). Composite tool: classifies each note via the /classify_note_v2 gateway endpoint and aggregates the results. Notes that were never downloaded into SNOTE are reported with needs_download=true — run sap_download_note_v2 (requires OSS connectivity) or sap_upload_note_v2 first for a definitive verdict on those. |
| sap_check_type_existsA | Checks whether a type exists in the SAP Data Dictionary and returns its kind. Returns type_kind: TABL (transparent/cluster/pool table — queryable), STRU (structure — NOT queryable, cannot SELECT from it), VIEW (database view — queryable), DTEL (data element), TTYP (table type), BUILTIN, TYPEPOOL. Use this to verify whether an object is a real database table before attempting sap_read_table_data or sap_count_rows. |
| sap_count_rowsA | Estimate row count for a table BEFORE fetching data. Use this to check if a query will return too much data. Returns estimated count and recommendation (direct_read, use_pagination, use_streaming). ALWAYS use this before querying large tables like BKPF, EKKO, VBAK without date filters! |
| sap_diagnose_messageA | Diagnose a SAP error/warning/info message end-to-end. USE THIS when a user shares a SAP message — whether as a screenshot, text, or message ID. This tool performs a full diagnostic chain: 1. Resolves message class + number (from T100 text search if only text is provided) 2. Locates the exact source code line where the message is raised 3. Reads surrounding code to understand the triggering condition 4. Checks for active enhancements that may interfere 5. Returns a structured diagnosis with root cause analysis and fix suggestions. INPUT: Provide EITHER message_id + message_number (if known) OR message_text (from screenshot). Optionally provide transaction or program_name to scope the search. |
| sap_discover_change_objectA | Find the change document OBJECTCLAS for a table by querying TCDOB. Use this before querying change documents if you don't know the object class. |
| sap_get_enhancementsA | List ALL enhancements for a SAP transaction or program in one call. Returns BAdIs (new + classic), customer exits (SMOD/CMOD), enhancement spots (implicit/explicit), and BTEs (Business Transaction Events). Each entry includes: type, name, implementation, active status, program, and include name. USE THIS when the user asks about enhancements, BAdIs, customer exits, user exits, SMOD, CMOD, SE18, SE19, BTEs, extension points, or custom code on a transaction. Pass transaction (e.g., 'BP', 'VA01', 'XD01') or program_name (e.g., 'SAPMV45A'). DO NOT manually query SXS_ATTR, SXC_ATTR, MODSAP, or MODACT — use this tool instead. |
| sap_get_field_metadataA | Get enriched metadata for SAP table fields with semantic classification. Returns field classifications including: - Amount fields (for SUM) with their currency field mappings - Customer fields distinguished by role (sold_to=KUNAG, payer=KUNRG, bill_to, ship_to) - Status/flag fields (deletion, cancellation indicators) with filter recommendations - Date fields for filtering - Currency fields USE THIS BEFORE building queries to understand which fields to use! Example: For 'top customers by sales', this tells you to use KUNAG (sold-to) not KUNRG (payer). |
| sap_infer_joinsB | Automatically detect join keys between two tables based on domain matching. Compares field domains to suggest join keys with confidence levels. |
| sap_list_package_objectsA | List all ABAP repository objects in a development package (DEVCLASS). Returns objects grouped by type: programs (PROG), classes (CLAS), function groups (FUGR), tables (TABL), data elements (DTEL), domains (DOMA), structures (STRU), views (VIEW), etc. Use this to discover and inventory a codebase for documentation, migration analysis, or code review. Supports wildcard package names (e.g., 'Z*' for all Z packages). Also returns sub-packages if they exist. For custom namespace codebases, pass the top-level package and set include_subpackages=true. |
| sap_lookup_errorA | Analyze a SAP error message using all available external knowledge sources. Queries: T100 message table, SAP Help Portal, web search (SAP community, StackOverflow), SAP Notes (if S-user configured), and previously learned error patterns. Use this AFTER getting dump/syslog data to understand root cause. Returns ranked results from multiple sources with links to documentation. |
| sap_lookup_t100A | Look up a specific SAP T100 message by message class and number. Use this when you see a message code like 'ME 003' or 'MM 001' in error messages, dumps, or syslog entries. Returns the full message text with placeholder descriptions. |
| sap_multi_table_queryA | Execute a multi-table query with proper joins and optional aggregation. Use this when you need data from 2+ tables that must be merged. Provide a JSON query plan with steps for each table, merge configuration, and optional aggregation. SUPPORTS AGGREGATION: For 'top N' queries, use the aggregation section to group, sum, sort, and limit results. IMPORTANT: Use this instead of multiple sap_read_table_data calls when you need joined data! CRITICAL - depends_on: When querying lookup/master data tables (KNA1, LFA1, MARA, etc.), ALWAYS use 'depends_on' and 'filter_field' to filter by keys from the primary table. This avoids querying the ENTIRE master data table. Example: To get customer names for sales orders, set KNA1 step with depends_on='orders', filter_field='KUNNR' — this queries only the customers in your order results. Without depends_on, KNA1 returns ALL customers (100K+) causing timeouts. NOTE: If the query returns more than 1000 rows, you will receive a 'requires_confirmation' response. You MUST ask the user if they want to see all the data. For 'last N' or 'most recent' requests, use sort_by + sort_order + limit instead of confirmed=true. Example: sort_by='WADAT_IST', sort_order='desc', limit=10 returns the 10 most recent deliveries. Fields in WHERE clauses and field lists are validated against table structure. Use sap_get_field_metadata or sap_read_table_structure first to discover correct field names. |
| sap_patch_codeA | Forward a source-patching request to the configured /patch_code endpoint. The public Node connector does not retrieve source, apply replacements in Python or perform compatibility fixes itself. Read the current source before preparing replacements, then verify supported object types, patch arguments and validation behavior against the installed endpoint. |
| sap_read_change_docsA | Query change documents from CDHDR/CDPOS tables. Shows who changed what data and when. Use sap_discover_change_object first to find the correct OBJECTCLAS. |
| sap_read_change_docs_v2A | Optimized change document query using function modules. Supports additional filtering by table name (TABNAME). Preferred over legacy endpoint. |
| sap_read_codeA | Retrieves the source code of an ABAP object (program, class, or function group). Optional |
| sap_read_domain_valuesA | Retrieves the fixed values defined for a domain. Useful for understanding valid values for fields like material type, document type, etc. |
| sap_read_dump_detailsA | Get detailed information for a specific short dump including full error texts, cause, and solution. Use this after sap_read_dumps to drill into a specific dump. Pass date, time, user, server, and error_id directly from the sap_read_dumps results. |
| sap_read_dumpsB | Query ABAP runtime errors (short dumps) from SAP's ST22 transaction. Returns dump information including date, time, user, program, and error details. |
| sap_read_dynprosA | Retrieves screen definitions for a program including field lists. |
| sap_read_field_domain_valuesA | Get domain fixed values for a specific table field. Unlike /read_domain_values which requires the domain name, this finds the domain automatically from the field. |
| sap_read_foreign_keysA | Read foreign key relationships for a table from Data Dictionary (DD08L). Shows which tables are related and can be joined. |
| sap_read_includesB | Retrieves all include files for a program with their source code. |
| sap_read_jobsA | Query background job information from SAP's SM37 transaction. Returns job status, execution times, and scheduling details. |
| sap_read_object_detailsA | Read comprehensive details about any SAP repository or DDIC object. Supports: DTEL (data elements), DOMA (domains with fixed values), TRAN (transactions — shows linked program), MSAG (message classes — all messages), TABL/STRU (table/structure fields), VIEW (database views), TTYP (table types), SHLP (search helps), ENQU (lock objects). For source code objects (PROG, CLAS, FUGR, FUNC), use sap_read_code instead. Returns structured data including descriptions, field definitions, relationships, and metadata. |
| sap_read_object_infoB | Get metadata about an ABAP object including creation date, last changed date, author, and package. |
| sap_read_syslogA | Query system log entries from SAP's SM21 transaction. Shows system events, warnings, and errors. |
| sap_read_table_dataA | Reads actual data from a SAP table with optional WHERE clause filtering and metadata inclusion. Use this for small to medium datasets (up to a few thousand rows). IMPORTANT: If the query returns more than 1000 rows, you will receive a 'requires_confirmation' response with a preview. You MUST ask the user if they want to see all the data before calling again with confirmed=true. |
| sap_read_table_data_enhancedA | Query data from an SAP table with optional WHERE clause filtering. Use this to retrieve business data like materials (MARA), purchase orders (EKKO), sales orders (VBAK), vendors (LFA1), customers (KNA1), etc. Supports ABAP WHERE clause syntax for filtering. For audit/compliance queries requiring ALL records, set audit_mode=true. Fields in WHERE clause and field_list are validated against table structure. Use sap_get_field_metadata or sap_read_table_structure first to discover correct field names. |
| sap_read_table_paginatedA | Read table data with pagination support for large result sets. Use offset and limit to page through results. Recommended for tables with 500-5000 rows. For larger tables, consider streaming. Fields in WHERE clause and field_list are validated against table structure. Use sap_get_field_metadata or sap_read_table_structure first to discover correct field names. |
| sap_read_table_structureA | Retrieves the metadata of a Data Dictionary table including field definitions, data types, keys, and descriptions. |
| sap_read_textsB | Retrieves text elements (selection texts, text symbols) for a program. |
| sap_read_translationsA | Reads translatable texts from a SAP object in source and optionally target language. Equivalent to SE63 in SAP GUI. Supports: PROG (text pool), DTEL (data element), DOMA (domain values), MSAG (message class), TABL (table/field texts), FUNC (function module), CLAS (class description + method/component descriptions + class text pool), CUAD (GUI status: function texts, titles, menus), DYNP (dynpro screens: screen titles, custom field texts, frame titles). Returns text IDs, source texts, existing target translations, and max lengths. |
| sap_read_user_locksA | Query user lock status from USR02 table. Shows which users are locked and their last login information. |
| sap_read_where_usedA | Queries SAP's cross-reference tables (WBCROSSGT/WBCROSSI) to find what objects use a given object (forward) or what a given object uses (inverse). Equivalent to SAP's 'Where-Used List' functionality. IMPORTANT: For heavily-used tables (MARA, KNA1, LFA1), use name_filter='Z*' to avoid timeout! |
| sap_run_programA | Request execution of an ABAP report through the configured /run_program endpoint. Report name is required; variant-based selection and returned output depend on the installed backend. The public Node connector does not implement a 180-second timeout, background-job fallback or polling workflow. Agree the report and execution scope before use. |
| sap_run_transactionA | Run the ABAP report behind a report transaction code, optionally with a selection-screen variant, and return its list output. Resolves the transaction to its program via TSTC, then runs it like sap_run_program (extended timeout with background-job fallback). Parameter 'tcode' (required) is the transaction code. Parameter 'variant' (optional) is a selection-screen variant (create it with sap_save_variant for programs with mandatory fields). LIMITATION: only report transactions (TSTC-PGMNA set) can run headlessly; pure dialog transactions are not supported. |
| sap_save_variantA | Create or overwrite an ABAP selection-screen VARIANT for a report, so it can be reused by sap_run_program (and the performance trace / headless runs) for programs whose selection screen has mandatory fields. Parameter 'report' (required) is the program name. Parameter 'variant' (required) is the variant name (<=14 chars). Parameter 'text' (optional) is a description. Parameter 'environment' (optional, default 'A') is 'A' online or 'B' batch. Parameter 'parameters' (required) is the selection values as a list of objects with keys: selname, kind ('P' parameter / 'S' select-option), sign ('I'/'E'), option ('EQ','BT','CP',...), low, high. To read a variant back use sap_call_function RS_VARIANT_CONTENTS_RFC (REPORT, VARIANT); to delete use RS_VARIANT_DELETE_RFC (REPORT, VARIANT). |
| sap_scan_security_notesA | Discover ABAP Security/HotNews notes for a SAP patch-day month and rank them by relevancy to this system. Fetches the public SAP Focused Run CSA note policy (github.com/SAP-samples/frun-csa-policies-best-practices), compares each note's fixed-in support-package levels against the system's installed components (CVERS), and classifies the affected ones via /classify_note_v2. min_priority=1 for HotNews only (1=HotNews .. 4=Low; includes priorities <= the given value). month defaults to the latest published patch day. |
| sap_search_knowledgeA | Search SAP documentation and community for information on any SAP topic. Queries SAP Help Portal and web sources (community.sap.com, StackOverflow, blogs.sap.com). Use this to research SAP concepts, find best practices, or look up configuration guides. Unlike sap_lookup_error, this is for general knowledge queries, not specific error messages. |
| sap_search_tablesA | Search the Data Dictionary for tables matching a keyword. Returns table names and descriptions. |
| sap_smart_table_queryA | Execute a table query with automatic metadata-driven enhancements. This tool: 1. Fetches table metadata and classifies fields 2. Adds recommendations for currency filtering, status exclusion 3. Warns if you're using the wrong customer field 4. Executes the query with proper field validation Use this instead of sap_read_table_data when you want intelligent guidance! |
| sap_stream_table_dataA | Streams large table data using offset-based pagination. Call repeatedly with increasing offset to retrieve all data. Ideal for tables with millions of rows. |
| sap_syntax_checkA | Validates ABAP source code for syntax errors without creating or activating it. |
| sap_translateA | Composite tool: reads translatable texts from a SAP object, translates them using AI, and optionally writes them back. Workflow: 1) Read source texts 2) AI translate with SAP terminology 3) Return translations for review (or auto-deploy if auto_deploy=true). Preserves SAP placeholders (&1, &2, etc.) and respects max_length constraints. Supports: PROG, DTEL, DOMA, MSAG, TABL, FUNC, CLAS, CUAD, DYNP. |
| sap_write_codeA | Forward an ABAP source-write request to the configured /write_code endpoint. This connector does not redirect class writes, apply compatibility fixes, run a separate syntax check or activate objects itself. Confirm supported object types, authorization, validation and activation behavior on the installed backend before allowing writes. |
| sap_write_code_safeB | Forward a request to the configured /write_code_safe endpoint. Validation, compatibility fixes, retries and deployment behavior depend on that installed endpoint; the tool name does not establish those safeguards. The public Node connector does not implement the Python bridge workflow, provide an abap://syntax-rules resource or route writes through ADT itself. Verify the backend contract and required arguments before use; the current input schema is incomplete. |
| sap_write_translationsA | Writes translated texts back to a SAP object. Equivalent to saving translations in SE63. Provide an array of translations with text_id (from sap_read_translations) and the translated_text. Supports: PROG, DTEL, DOMA, MSAG, TABL, FUNC, CLAS, CUAD, DYNP. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NicoHern/abapilot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server