ARC-1
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ARC1_URL | No | URL of the SAP system (e.g., https://your-sap-host:44300). Required unless using BTP Destination Service. | |
| ARC1_USER | No | Username for SAP system authentication. Required for basic auth or API key methods. | |
| ARC1_API_KEY | No | Bearer token for API key authentication. | |
| ARC1_PROFILE | No | Safety profile: viewer, viewer-data, viewer-sql, developer, developer-data, developer-sql. | viewer |
| ARC1_PASSWORD | No | Password for SAP system authentication. Required for basic auth. | |
| ARC1_BLOCK_DATA | No | Block table data preview (true/false). | true |
| ARC1_OIDC_ISSUER | No | OpenID Connect issuer URL for OIDC/JWT authentication. | |
| ARC1_CACHE_WARMUP | No | Pre-warm cache at startup (true/false). | false |
| ARC1_BLOCK_FREE_SQL | No | Block free-form SQL queries (true/false). | true |
| ARC1_OIDC_CLIENT_ID | No | Client ID for OIDC/JWT authentication. | |
| ARC1_XSUAA_INSTANCE | No | XSUAA service instance name for BTP native auth. | |
| ARC1_OAUTH_CLIENT_ID | No | Client ID for OAuth 2.0 authentication (e.g., for BTP ABAP Environment). | |
| ARC1_ALLOWED_PACKAGES | No | Comma-separated list of packages for write operations (e.g., Z*,$TMP). | |
| ARC1_OIDC_CLIENT_SECRET | No | Client secret for OIDC/JWT authentication. | |
| ARC1_OAUTH_CLIENT_SECRET | No | Client secret for OAuth 2.0 authentication. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| SAPReadA | Read SAP ABAP source, metadata or syntax-check results. For purpose, explanations, specs, reviews or pre-change context, prefer SAPContext first. DDIC metadata: omit format (default text); structured is CLAS-only for ordinary reads. Types: PROG, CLAS, INTF, FUNC, FUGR (expand_includes=true for all include sources), INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD/KTD (KTD aliases SKTD), TABL (covers both transparent tables AND DDIC structures — no separate STRU type), TTYP, VIEW, DOMA, DTEL, TRAN, TABLE_CONTENTS (single-column filter), TABLE_QUERY (multi-column WHERE via the freestyle endpoint; gated by allowDataPreview; CDS views need SAP_BASIS 752+), DEVC, SOBJ (BOR — method param reads one method), SYSTEM, COMPONENTS, MSAG, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE (contract states C0-C4; objectType for non-class), INACTIVE_OBJECTS (no name; pending-activation list), AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. AUTH/FEATURE_TOGGLE/ENHO/VERSIONS/VERSION_SOURCE are on-prem only. SYNTAX: read-only SAP check (objectType+name, optional source for unsaved text). CLAS: method="*" for signatures, method="NAME" for one body, or grep. Global class declaration/implementation: MAIN (omit include). definitions/implementations contain local helpers. grep: case-insensitive regex; returns matching lines, context and line numbers, with owning class/method for CLAS. |
| SAPSearchA | Search for ABAP objects, exact object-directory entries, or source code. Modes:
|
| SAPNavigateA | Navigate code: definitions, references, completion, hierarchy. references: scope-based where-used with lines/snippets/package; objectType filters results (e.g. CLAS/OC, PROG/P); type+name replaces uri. hierarchy queries SEOMETAREL for superclass/interfaces/direct subclasses: requires data/SQL opt-in + matching scope; otherwise inspect class MAIN with SAPRead. CDS (DDLS) impact: SAPContext(action="impact") classifies where-used into RAP buckets. Experimental relations: dependency maps or package neighborhoods, then selected reads. Consumer locations: references; objectType="CLAS/OC" for class-only; otherwise omit. Active metadata, not source-call/runtime proof. Coverage unknown. type+name required, no uri/source. |
| SAPLintA | Run local abaplint rules on ABAP/CDS source (auto-selects cloud or on-prem rules by system type). Actions:
|
| SAPDiagnoseA | ABAP diagnostics and runtime analysis. Actions:
|
| SAPContextA | Primary tool for understanding ABAP/CDS objects before specs, reviews, explanations, or changes — use instead of SAPRead when the user asks what an object does. Returns intent first (the object KTD when available) then compressed dependency contracts. Use SAPRead after SAPContext for exact source/method bodies/grep/drafts. Decision rule — pick the action from the user's question:
impact (CDS blast-radius): upstream AST deps + downstream where-used, classified into RAP buckets (projectionViews, bdefs, serviceDefinitions, serviceBindings, accessControls, metadataExtensions, abapConsumers, documentation, tables, other) + sibling-consistency hints. Use this instead of text-scanning DDDDLSRC/ACMDCLSRC with SAPQuery (it filters the noise). Optional includeIndirect, siblingCheck, siblingMaxCandidates. deps: target KTD when available + selected dependency contracts, derived from source (not SAP-native relationships or a complete inventory). Counts distinguish root candidates from recursive attempts. Standard helper names are filtered. For CDS, includes dependency DDL/field catalogs for cl_cds_test_environment. structure (TABL only): the DDIC include/append tree. Non-CDS reverse-lookup: SAPNavigate(references); CDS: impact. Full detail: docs_page SAPContext. |
| SAPManageA | Probe and report SAP system capabilities. Use BEFORE operations that depend on optional features (abapGit, RAP/CDS, AMDP, HANA, UI5/Fiori, CTS transports, FLP). Also handles package (DEVC) lifecycle. Actions:
Returns features + systemType ("onprem"/"btp"); "available: false" means do NOT attempt dependent operations. |
| SAPTransportA | Manage CTS transport requests (SE09/SE10). Actions: list (current user, modifiable), get (tasks + objects), create (always a Workbench (K) request — the package/target sets target & layer, not the request category; optional explicit target), release, delete, remove_object (keep the request), reassign (change owner), release_recursive (tasks then parent), check (does a package need a transport — type, name, package), history (legacy name: current object lock plus assignment candidates — type, name; not complete transport history; read-only, no write scope needed). IDs look like A4HK900123. Status: D/L=modifiable, O/P=releasing, R/N=released. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool has a distinct top-level theme (read, search, navigate, context, diagnose, lint, manage, transport), but there is real overlap: SAPContext explicitly says to use it 'instead of SAPRead', SAPNavigate references overlaps with SAPContext usages, and SAPDiagnose 'syntax' overlaps with SAPRead(type='SYNTAX'). Extensive cross-referencing and decision rules mitigate the confusion, but an agent must read carefully to route correctly.
All 8 tools follow a uniform 'SAP' + singular-verb pattern (SAPNavigate, SAPContext, SAPDiagnose, SAPLint, SAPManage, SAPRead, SAPSearch, SAPTransport). Predictable and readable throughout with no deviations.
Eight tools is a good, well-scoped count for an SAP development assistant. However each 'tool' carries a very large action namespace (SAPDiagnose and SAPManage each expose 20+ actions), making the effective surface heavier than the count suggests.
The read/search/navigate/diagnose/transport surface is broad, but the write side is missing: descriptions repeatedly reference SAPWrite, SAPActivate, and API_STATE writes that are not present in this set, creating dead-end workflows (e.g. quickfix stops at apply_quickfix with 'write via SAPWrite').