Skip to content

ARC-1 Tool Reference

Complete documentation for all MCP tools available in ARC-1.

ARC-1 exposes 11 intent-based tools designed for AI agents. Instead of 200+ individual tools (one per object type per operation), ARC-1 groups by intent with a type parameter for routing. This keeps the LLM's tool selection simple and the context window small (~5K schema tokens).


SAPRead

Read any SAP ABAP object.

Parameters:

Parameter Type Required Description
type string Yes Object type (see below)
name string No Object name (e.g., ZTEST_PROGRAM, ZCL_ORDER, MARA)
include string No For CLAS: testclasses, definitions, implementations, macros
group string No For FUNC: function group name
maxRows number No For TABLE_CONTENTS: max rows (default 100)
sqlFilter string No For TABLE_CONTENTS: SQL WHERE clause filter

Supported types:

Type Description
PROG Program source
CLAS Class source
INTF Interface source
FUNC Function module source
FUGR Function group structure
INCL Include source
DDLS CDS view source
DDLX CDS metadata extension (UI annotations for Fiori Elements)
BDEF Behavior definition
SRVD Service definition
SRVB Service binding (structured JSON: OData version, binding type, publish status)
TABL Table definition (structure)
VIEW DDIC view
TABLE_CONTENTS Table data (rows)
DEVC Package contents
SYSTEM System info (SID, release, kernel)
COMPONENTS Installed software components
MESSAGES Message class texts
TEXT_ELEMENTS Program text elements
VARIANTS Program variants

Examples:

SAPRead(type="PROG", name="ZTEST_REPORT")
SAPRead(type="CLAS", name="ZCL_ORDER", include="testclasses")
SAPRead(type="DDLX", name="ZC_TRAVEL")          — metadata extension with UI annotations
SAPRead(type="SRVB", name="ZUI_TRAVEL_O4")       — service binding metadata as JSON
SAPRead(type="TABLE_CONTENTS", name="MARA", maxRows=10, sqlFilter="MATNR LIKE 'Z%'")
SAPRead(type="SYSTEM")


SAPSearch

Search for ABAP objects by name pattern with wildcards.

Parameters:

Parameter Type Required Description
query string Yes Search pattern (e.g., ZCL_ORDER*, Z*TEST*)
maxResults number No Maximum results (default 100)

Returns: Object type, name, package, and description for each match.

Examples:

SAPSearch(query="ZCL_ORDER*")
SAPSearch(query="Z*INVOICE*", maxResults=20)


SAPWrite

Create or update ABAP source code. Handles lock/modify/unlock automatically.

Parameters:

Parameter Type Required Description
action string Yes create, update, or delete
type string Yes PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD
name string Yes Object name
source string No ABAP source code (for create/update)
package string No Package for new objects (default $TMP)
transport string No Transport request number

Note: Blocked when --read-only is active.


SAPActivate

Activate (publish) ABAP objects. Supports single object or batch activation.

Parameters:

Parameter Type Required Description
name string No Object name (for single activation)
type string No Object type (PROG, CLAS, DDLS, DDLX, BDEF, SRVD, SRVB, etc.)
objects array No For batch: array of {type, name} objects to activate together

Use batch activation for RAP stacks where objects depend on each other (DDLS, BDEF, SRVD, DDLX, SRVB must be activated together).

Examples:

SAPActivate(type="CLAS", name="ZCL_ORDER")
SAPActivate(objects=[{type:"DDLS",name:"ZI_TRAVEL"},{type:"BDEF",name:"ZI_TRAVEL"},{type:"SRVD",name:"ZSD_TRAVEL"}])

Note: Blocked when --read-only is active.


SAPNavigate

Navigate code: find definitions, references, and code completion.

Parameters:

Parameter Type Required Description
action string Yes definition, references, or completion
uri string Yes Source URI of the object
line number No Line number (1-based)
column number No Column number (1-based)
source string No Current source code

SAPQuery

Execute ABAP SQL queries against SAP tables.

Parameters:

Parameter Type Required Description
sql string Yes ABAP SQL SELECT statement
maxRows number No Maximum rows (default 100)

Important: Uses ABAP SQL syntax, NOT standard SQL: - Use ASCENDING/DESCENDING (not ASC/DESC) - Use maxRows parameter (not LIMIT) - GROUP BY, COUNT(*), WHERE all work

Examples:

SAPQuery(sql="SELECT carrid, COUNT(*) as cnt FROM sflight GROUP BY carrid ORDER BY cnt DESCENDING")
SAPQuery(sql="SELECT * FROM mara WHERE matnr LIKE 'Z%'", maxRows=50)

Note: Blocked when --block-free-sql is active.


SAPTransport

Manage CTS transport requests.

Parameters:

Parameter Type Required Description
action string Yes list, get, create, or release
id string No Transport request ID (for get/release)
description string No Description (for create)
user string No Filter by user (for list)

Note: Only available when --enable-transports or not in --read-only mode.


SAPContext

Get compressed dependency context for an ABAP object. Returns only the public API contracts (method signatures, interface definitions, type declarations) of all objects that the target depends on — NOT the full source code. Typical compression: 7-30x fewer tokens.

What gets extracted per dependency: - Classes: CLASS DEFINITION with PUBLIC SECTION only. PROTECTED, PRIVATE sections and CLASS IMPLEMENTATION are stripped. - Interfaces: Full interface definition (interfaces are already public contracts). - Function modules: FUNCTION signature block only (IMPORTING/EXPORTING parameters). Function body is stripped.

Filtering: SAP standard objects (CL_ABAP_*, IF_ABAP_*, CX_SY_*) are excluded by default. Custom objects (Z*, Y*) are prioritized in the output.

Dependency detection: Uses @abaplint/core AST parsing to find TYPE REF TO, NEW, CAST, INHERITING FROM, INTERFACES, CALL FUNCTION, RAISING, CATCH, and static method calls (=>).

Parameters:

Parameter Type Required Description
type string Yes Object type: CLAS, INTF, PROG, FUNC
name string Yes Object name (e.g., ZCL_ORDER)
source string No Provide source directly instead of fetching from SAP
group string No Required for FUNC type. The function group name.
maxDeps number No Maximum dependencies to resolve (default 20)
depth number No Dependency depth: 1 = direct only (default), 2 = deps of deps, 3 = max

Examples:

SAPContext(type="CLAS", name="ZCL_ORDER")
SAPContext(type="CLAS", name="ZCL_ORDER", depth=2, maxDeps=10)
SAPContext(type="INTF", name="ZIF_ORDER", source="<already fetched source>")

Output format:

* === Dependency context for ZCL_ORDER (3 deps resolved) ===

* --- ZIF_ORDER (intf, 4 methods) ---
INTERFACE zif_order PUBLIC.
  METHODS create IMPORTING order TYPE t_order.
  ...
ENDINTERFACE.

* --- ZCL_ITEM (clas, 3 methods) ---
CLASS zcl_item DEFINITION PUBLIC.
  PUBLIC SECTION.
    METHODS get_price RETURNING VALUE(result) TYPE p.
    ...
ENDCLASS.

* Stats: 5 deps found, 3 resolved, 0 failed, 25 lines


SAPLint

Check ABAP code quality. Runs abaplint rules locally and/or ATC checks on the SAP system.

Parameters:

Parameter Type Required Description
action string Yes lint, atc, or syntax
source string No ABAP source code (for lint)
name string No Object name (for atc/syntax)
type string No Object type (for atc/syntax)

Examples:

SAPLint(action="lint", source="DATA lv_test TYPE string.\nlv_test = 'hello'.")


SAPDiagnose

System diagnostics: runtime errors (short dumps), ABAP profiler traces, SQL traces.

Parameters:

Parameter Type Required Description
action string Yes dumps, dump_detail, traces, trace_detail, sql_traces, call_graph, object_structure
name string No Object or dump ID
user string No Filter by user
maxResults number No Maximum results

SAPManage

Probe and report SAP system capabilities. Use this before attempting operations that depend on optional features (abapGit, RAP/CDS, AMDP, HANA, UI5/Fiori, CTS transports).

Actions: - features — Get cached feature status from last probe (fast, no SAP round-trip). - probe — Re-probe the SAP system now (makes 6 parallel HEAD requests, ~1-2s).

Parameters:

Parameter Type Required Description
action string Yes features or probe

Probed features: hana, abapGit, rap, amdp, ui5, transport. Each returns available (bool), mode (auto/on/off), message, and probedAt timestamp.

Examples:

SAPManage(action="probe")     → discover system capabilities
SAPManage(action="features")  → get cached results

Note: Blocked when --read-only is active.