abapsmith
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ABAP_SID | Yes | The SAP system ID, e.g. A4H | |
| ABAP_URL | Yes | The base URL of the ABAP system with ADT enabled, e.g. https://abap.example.com:44300 | |
| ABAP_MODE | No | Permission mode: read (default), edit, or admin | read |
| ABAP_USER | Yes | The ABAP username with S_DEVELOP | |
| ABAP_CLIENT | Yes | The SAP client, e.g. 001 | |
| ABAP_PASSWORD | Yes | The password for the ABAP user | |
| ABAP_ALLOW_UI_PRESS | No | Set to true to allow UI automation in classic dynpro (off by default). | false |
| ABAP_ALLOW_DATA_PREVIEW | No | Set to true to enable data preview capability (off by default). | false |
| ABAP_ALLOW_DUMP_VARIABLES | No | Set to true to include variable contents in ST22 dumps (off by default). | false |
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 | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| abap_transportA | Inspect and manage CTS transport requests: list, show, check (does an object need a transport?), users, log (a request's export/import log per target system), queue (a target system's import buffer), create (kind="workbench" default, or "copies" with target), addUser, setOwner, delete, removeObject (drop one E071 entry and its CTS lock). list/show/check/users/log/queue are plain reads, always allowed; create/addUser/setOwner need write access; delete/removeObject additionally need the admin-only transport-delete ceiling. Release is a separate tool, abap_transport_release. Semantics of log/queue/copies/removeObject: doc/TOOLS/transports.md. |
| abap_bopfA | Reads a BOPF business object's design-time model: show (default, digest) | raw (v4 XML) | search (needs object_type) | check_refs (up to max_sites, default 25). |
| abap_enhA | Default op writes the root adtcore:description of an existing ENHO/XH, ENHO/XHH or ENHS/XS, optionally activating it. ENHO/XHH plug-in source body: use abap_write, not this tool. See operation for the other ops. |
| abap_readA | Read an ABAP object: source, pseudo-DDL, a DEVC/K package listing, or (SUSO/B, TABL/DI) a read-only catalog render; view= selects docu/digest/history/diff/definition/lineage/footprint. A CLAS/INTF/PROG/FUGR source above 150 lines or 8k chars answers with its outline by default — then method=, pattern= (regex, with context), offset/limit, or full=true. To learn a method's signature, use method= with include="definitions" (declaration only); method= also finds inherited members (superclasses and interfaces) and reports foundOn. Returns an etag; capped ~15k tokens, truncation marked. Example: {"object":"ZCL_FOO","type":"CLAS/OC"}. |
| abap_searchA | Find objects by name pattern (mode=objects, wildcards *), list consumers (mode=where_used; 20+ seconds on wide fan-in — narrow by type/query first), walk multiple levels of callers or callees (mode=call_graph, direction=callers|callees, depth<=4), or scan source text (mode=source; hits grouped per object, needs the fluid API and a package/objects scope). |
| abap_open_urlA | Browser-openable URL: ADT source/HTML (object=, type=/line=), keyword doc (keyword=), or Web Dynpro URL (webdynpro=). Exactly one required. Does not open a browser. |
| abap_imgA | Read the IMG customizing catalog: search (query) finds activities; show (activity) returns its path, objects and tables; tree (node/treeId optional) lists a node's children; objects (object, kind optional) returns a customizing object's DDIC tables and fields. search/tree page via after/limit (default 25, ceiling 200) — pass back the exact {"after": ""} a response gives; there is no numeric offset. Fields not valid for the mode are rejected. |
| abap_activateA | mode=check: syntax check, no lock. mode=activate: check then activate. mode=format: pretty-print (source=text, or object=format-and-save). |
| abap_journalA | History and undo for writes abapsmith made. Parameters: mode (list|show|undo|reconcile, default list), entry, object, detail, limit, session, force, activate, outcome, reason. Common calls: mode=list (recent writes with entry ids, each row's |
| abap_debugA | ABAP debugger driver: arm breakpoints, run a program, step, inspect the stack. One session at a time; frames observe-only. set_value changes a simple variable at a stop (edit/admin mode). |
| abap_debug_varsA | Survey of every variable in scope at a debugger stop; complex values come back as abap_debug_value stubs. |
| abap_debug_valueB | Tier-2 drill-in: render one variable path in detail, with a row window for tables. |
| abap_dumpsA | Read ABAP runtime errors (ST22 short dumps) from the system's dump repository — not the exception text of a run this server just triggered. mode=list filters the dump feed; mode=show returns one dump, chapter by chapter. The feed reaches back 8 DAYS ONLY: an empty list means "no dumps in the last 8 days matching this filter", never "nothing failed". Copy key from a list row VERBATIM. show returns a summary (exception, short text, error analysis, how to correct, source line, top of the call stack, chapter index); section or chapters returns chapter text — where terminated, source extract, system fields, call stack, and nothing else unless the operator enabled more. |
| abap_serviceA | OData contract a RAP SRVB publishes: entity sets, keys, fields, nav, CRUD/search/page perms; V2/V4 detected. Cannot read entity data — contract only. op="publish"/"unpublish" register or deregister the binding in the OData service runtime (admin-mode ceiling, confirm required to arm). Unpublished bindings named as such. |
| abap_traceA | ABAP runtime tracing (SAT): records everything a traced request's dispatch touches — time per call and every database access. op="run" (default) traces one execution of a class/report and reads the result back; op="start" arms a request to trace a later run yourself; op="list" shows existing runs/requests; op="read" reads a run's hit list, DB accesses, or call tree; op="delete" removes a run or request. |
| abap_writeC | Create, change or delete an ABAP object: save/check/activate. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_runC | Execute an IF_OO_ADT_CLASSRUN class or report and capture its output. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_testC | Run ABAP Unit tests and report each method's verdict. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_atcC | Run ABAP Test Cockpit static analysis on an object. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_quick_fixC | List and apply ADT quick fixes at one source position. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_uiB | Drive classic SAP dynpro screens via batch input: read one screen, or run a scripted transaction. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_fpm_readC | Read SAP FPM/FBI screen configurations; every call deploys a throwaway bridge class. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_img_editC | Preview and write IMG/customizing table rows. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_bopf_testC | Run a BOPF business object end to end, writing real rows. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_bopf_editA | Make one design-time edit to a BOPF business object, or create one. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_bopf_deleteB | Delete a BOPF business object. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_transport_releaseB | Release one CTS transport request — irreversible. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. ABAP_ALLOW_TRANSPORT_RELEASE does not enable releasing a transport request, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Set ABAP_ALLOW_TRANSPORT_RELEASE=true. Calling it returns a refusal and sends nothing to the SAP system. |
| abap_rapA | Generate a RAP stack (CDS, BDEF, class, SRVD, SRVB) from a table. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
| abap_fluidC | Deploy and run small generated ABAP tools inside $ABAPSMITH_FLUID_API. LOCKED on this server: ABAP_ALLOW_WRITE does not enable writes, and ABAP_MODE is not set, so that variable is what decides it. Set ABAP_ALLOW_WRITE=true (ABAP_ALLOW_PACKAGES is optional — it narrows the default, which is every package). Calling it returns a refusal and sends nothing to the SAP system. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| system | Connection state, system role, and the ADT feature inventory from /discovery. |
TDQS
Scored across 29 tools
Most tools target distinct resource-action pairs (search, read, write, debug, transport, BOPF, IMG, RAP) and descriptions are detailed enough to disambiguate. A few pairs like abap_read vs abap_search or abap_bopf vs abap_bopf_edit could cause hesitation, but the descriptions clarify their boundaries.
All tools share a consistent snake_case style with the abap_ prefix, which is good. However, the naming mixes nouns (abap_transport, abap_journal), verbs (abap_read, abap_write), and compounds (abap_transport_release, abap_debug_vars), so there is no uniform verb_noun pattern.
29 tools is on the heavy side, but the apparent scope is broad—ABAP development spans search, read/write, transports, BOPF, IMG, RAP, debugging, and testing. The count is justified by the domain, though many tools are locked on this server, adding surface area without live functionality.
The set covers the core ABAP lifecycle—search, read, write/activate, test, debug, and transport—plus specialized areas like BOPF, RAP, FPM, and IMG. Minor gaps exist (e.g., no dedicated object comparison tool), but common workflows are well supported and abap_write covers delete operations.