# ARC-1 (oci · ghcr.io/arc-mcp/arc-1)

MCP server for SAP ABAP systems

- Trust score: 46/100 (low)
- Change this week: +2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `arc-1`: 85/100, [markdown](https://verifymcp.io/servers/arc-mcp-arc-1/arc-1.md), [page](https://verifymcp.io/servers/arc-mcp-arc-1/arc-1)
- oci · `ghcr.io/arc-mcp/arc-1`: 46/100 (this document), [markdown](https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1.md), [page](https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/arc-mcp/arc-1`
- Version: `1.10.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.
- **Provenance & Transparency**: 23/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 51/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 8929 tokens (~992/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the ARC-1 MCP server?

ARC-1 runs locally as a container image, launched with docker run --rm -i -e SAP_URL -e SAP_USER -e SAP_PASSWORD -e SAP_CLIENT -e SAP_LANGUAGE -e SAP_INSECURE -e SAP_ALLOW_WRITES -e SAP_TRANSPORT ghcr.io/arc-mcp/arc-1:1.10.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add arc-mcp-arc-1 -- docker run --rm -i -e SAP_URL -e SAP_USER -e SAP_PASSWORD -e SAP_CLIENT -e SAP_LANGUAGE -e SAP_INSECURE -e SAP_ALLOW_WRITES -e SAP_TRANSPORT ghcr.io/arc-mcp/arc-1:1.10.0
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Cursor

```json
{
  "mcpServers": {
    "arc-mcp-arc-1": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "SAP_URL",
        "-e",
        "SAP_USER",
        "-e",
        "SAP_PASSWORD",
        "-e",
        "SAP_CLIENT",
        "-e",
        "SAP_LANGUAGE",
        "-e",
        "SAP_INSECURE",
        "-e",
        "SAP_ALLOW_WRITES",
        "-e",
        "SAP_TRANSPORT",
        "ghcr.io/arc-mcp/arc-1:1.10.0"
      ]
    }
  }
}
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### VS Code

```json
{
  "servers": {
    "arc-mcp-arc-1": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "SAP_URL",
        "-e",
        "SAP_USER",
        "-e",
        "SAP_PASSWORD",
        "-e",
        "SAP_CLIENT",
        "-e",
        "SAP_LANGUAGE",
        "-e",
        "SAP_INSECURE",
        "-e",
        "SAP_ALLOW_WRITES",
        "-e",
        "SAP_TRANSPORT",
        "ghcr.io/arc-mcp/arc-1:1.10.0"
      ]
    }
  }
}
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Codex

```bash
codex mcp add arc-mcp-arc-1 -- docker run --rm -i -e SAP_URL -e SAP_USER -e SAP_PASSWORD -e SAP_CLIENT -e SAP_LANGUAGE -e SAP_INSECURE -e SAP_ALLOW_WRITES -e SAP_TRANSPORT ghcr.io/arc-mcp/arc-1:1.10.0
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "arc-mcp-arc-1": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "-e",
        "SAP_URL",
        "-e",
        "SAP_USER",
        "-e",
        "SAP_PASSWORD",
        "-e",
        "SAP_CLIENT",
        "-e",
        "SAP_LANGUAGE",
        "-e",
        "SAP_INSECURE",
        "-e",
        "SAP_ALLOW_WRITES",
        "-e",
        "SAP_TRANSPORT",
        "ghcr.io/arc-mcp/arc-1:1.10.0"
      ],
      "enabled": true
    }
  }
}
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Hermes

```yaml
mcp_servers:
  arc-mcp-arc-1:
    command: "docker"
    args: ["run", "--rm", "-i", "-e", "SAP_URL", "-e", "SAP_USER", "-e", "SAP_PASSWORD", "-e", "SAP_CLIENT", "-e", "SAP_LANGUAGE", "-e", "SAP_INSECURE", "-e", "SAP_ALLOW_WRITES", "-e", "SAP_TRANSPORT", "ghcr.io/arc-mcp/arc-1:1.10.0"]
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Netclaw

```json
{
  "McpServers": {
    "arc-mcp-arc-1": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "-e",
        "SAP_URL",
        "-e",
        "SAP_USER",
        "-e",
        "SAP_PASSWORD",
        "-e",
        "SAP_CLIENT",
        "-e",
        "SAP_LANGUAGE",
        "-e",
        "SAP_INSECURE",
        "-e",
        "SAP_ALLOW_WRITES",
        "-e",
        "SAP_TRANSPORT",
        "ghcr.io/arc-mcp/arc-1:1.10.0"
      ]
    }
  }
}
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Other

```json
{
  "mcpServers": {
    "arc-mcp-arc-1": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "SAP_URL",
        "-e",
        "SAP_USER",
        "-e",
        "SAP_PASSWORD",
        "-e",
        "SAP_CLIENT",
        "-e",
        "SAP_LANGUAGE",
        "-e",
        "SAP_INSECURE",
        "-e",
        "SAP_ALLOW_WRITES",
        "-e",
        "SAP_TRANSPORT",
        "ghcr.io/arc-mcp/arc-1:1.10.0"
      ]
    }
  }
}
```

This image reads SAP_URL, SAP_USER, SAP_PASSWORD, SAP_CLIENT, SAP_LANGUAGE, SAP_INSECURE, SAP_ALLOW_WRITES and SAP_TRANSPORT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-03 (score 46, 0)

- [functional] Package version: 1.9.0 → 1.10.0

### 2026-11-01 (score 46, +1)

- [security] Stability: 0.97 → pass

### 2026-10-30 (score 45, +1)

- [security regression] Provenance: unverified → fail

### 2026-10-29 (score 44, 0)

- [security regression] Provenance: fail → unverified

### 2026-10-28 (score 44, +1)

No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-26 (score 43, +1)

- [functional] Package version: 1.5.1 → 1.9.0

### 2026-10-23 (score 42, +1)

- [functional] Package version: 1.8.0 → 1.9.0

### 2026-10-22 (score 41, 0)

- [security regression] Stability: 0.63 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional] Schema quality: excellent → good
- [functional] Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional] Package version: 1.6.0 → 1.8.0
- [functional] Package version: 1.6.0 → 1.7.0

## MCP tools (9)

### `SAPRead` (~1720 tokens)

Read SAP ABAP source/metadata. DDIC metadata: omit format. SHLP: active partial interface metadata; missing headers/assignments/appends are explicit. No drafts or source formats. For specs, reviews or pre-change context, prefer SAPContext first. TABLE_QUERY: filter with where, data preview required; CDS needs SAP_BASIS 752+. TABLE_CONTENTS: unfiltered preview. INACTIVE_OBJECTS: no name. TABL/DTT: technical settings. SYNTAX: read-only check (objectType+name, optional source). Global class declaration/implementation: MAIN (omit include). definitions/implementations contain local helpers.

Input parameters:

- `action` (string): Set to "diff" for a unified diff between two source versions (uses from/to) — cheaper than fetching both sources. Source types only: PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, BDEF, SRVD, DDLX,…
- `columns` (array): TABLE_QUERY only: columns to select (default all), e.g. ["MATNR","BWART"].
- `enhancementContext` (object): INCL only: owning main object.
- `expand_includes` (boolean): PROG/INCL/FUGR: add nested includes as "=== name ===" blocks; bounded, a closing note reports omissions. With grep: search all (FUGR: implied). No dynpros.
- `extensions` (string): Full reads: summary; partial: none. sources adds labelled bodies. CLAS: hooks/native; BDEF: verified index. INTF/inactive limited.
- `force_refresh` (boolean): For source reads: bypass cached source and inactive-list state before reading. Use when you know the object changed outside ARC-1.
- `format` (string): Default text. structured: CLAS metadata+includes (omit method), DEVC {objects,listing}, diff JSON. editable: fresh {source,sourceHash} for guarded SAPWrite; omit version/method/grep, select CLAS incl…
- `from` (string): action="diff" OLD side: "active" (default), "inactive", a revision id from SAPRead(type="VERSIONS"), or a /sap/bc/adt/ revision URI.
- `fromLabel` (string): Diff OLD-side display label; does not change source resolution.
- `grep` (string): Case-insensitive source regex: matching lines, 1-based numbers and ±3 context; invalid regex becomes literal. CLAS adds owning class/method; include scopes a section. Never combine with method. Works…
- `group` (string): Function group of the function module for FUNC, VERSIONS, or API_STATE with objectType=FUNC. Auto-resolved via SAPSearch if omitted.
- `include` (string): TABL: indexes. CLAS: omit include or use main for global class; definitions/implementations are local helpers; macros/testclasses as named. Explicit include wins over method routing. DDLS: elements r…
- `includeSignature` (boolean): FUNC: JSON {source,signature,processingType?,updateTaskKind?}. Signature and descriptions come from source. Default false: raw source.
- `lineEnd` (integer): Last source line (inclusive); requires lineStart. Clamped to the source end; a start beyond the source is an error.
- `lineStart` (integer): First source line (1-based, inclusive); requires lineEnd. Text reads only: CLAS, INTF, DDLS, DCLS, BDEF, SRVD, DDLX, TABL, PROG, FUNC, INCL. Supports CLAS include; incompatible with grep, method, dif…
- `maxResults` (number): DEVC output cap: default 200, clamp 1–1000. Metadata reports possible truncation; total/completeness unknown. Direct mode does not cap SAP responses.
- `maxRows` (number): Returned row cap for TABLE_CONTENTS/TABLE_QUERY (default 100, max 10,000; byte limit may apply sooner).
- `method` (string): CLAS: method body; "*" lists methods. Without include, lhc_x~m/lcl_x~m use implementations, ltc_x~m testclasses, others MAIN. Explicit include wins. SOBJ: method implementation; omit for catalog.
- `methodView` (string): CLAS: own MAIN declaration with parameters/exceptions. Bare method only; no locals, interfaces, inheritance or other selectors. Omit for body.
- `name` (string): Object name (e.g., ZTEST_PROGRAM, ZCL_ORDER, MARA)
- `objectType` (string): DEVC direct: exact folder (CLAS/OC, TABL/DS). SYNTAX: required type (CLAS, PROG, DDLS). API_STATE: inferred. VERSIONS: endpoint type; inferred from CL_/IF_/CX_, else PROG. TEXT_ELEMENTS: PROG (defaul…
- `packageScope` (string): DEVC direct contents, no recursion/descriptions (16 folders/2 MiB/10s). Omit for indexed search.
- `source` (string): SYNTAX only: proposed source to check without saving. Omit to check stored version (default active; inactive checks draft). Object must exist; version=auto is unsupported.
- `sqlFilter` (string): TABLE_CONTENTS condition expression only (no WHERE, no SELECT); broken on 758 (SAP expects SELECT). Use TABLE_QUERY where.
- `to` (string): action="diff" NEW side (default "inactive" = pending unactivated changes). Same values as from.
- `toLabel` (string): Diff NEW-side display label; does not change source resolution.
- `type` (string, required): Repository or metadata type. TABL includes structures. KTD aliases SKTD; MESSAGES aliases MSAG. FTG2 aliases FEATURE_TOGGLE. SYNTAX requires objectType+name. Server-driven: discovery-gated XML metada…
- `version` (string): Source defaults active; inactive requests a draft (SAP may return active if none); auto selects developer view. DTEL/ENQU/server-driven types default to developer view. Server-driven types return an…
- `versionUri` (string): VERSION_SOURCE: canonical source/revision URI from VERSIONS .revisions[].uri; rejects unrelated ADT endpoints, absolute URLs, traversal, queries, and fragments.
- `where` (array): For TABLE_QUERY: structured WHERE conditions, ANDed together. Each item: {field, op, value?}. Ops: =, <>, <, <=, >, >=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL; STARTS_WITH: literal prefix.…

### `SAPSearch` (~571 tokens)

Search for ABAP objects, exact object-directory entries, or source code. Modes:
1\. Object search (default): name pattern with wildcards (*); returns type, name, package, description, ADT URI.
2\. TADIR lookup (searchType="tadir_lookup"): exact cross-package lookup of one or more names (prefer over long SAPQuery TADIR IN-lists).
3\. Source code search (searchType="source_code"): full-text search across source (SAP_BASIS ≥ 7.51).
Tips: BOR objects appear as SOBJ; the uri field feeds SAPNavigate, objectType feeds SAPRead/SAPWrite/SAPActivate. Searches object NAMES only — for field names use SAPRead(type='DDLS', include='elements') or SAPQuery on DD03L.

Input parameters:

- `maxResults` (number): Maximum results (default 100 for object, 50 for source_code)
- `names` (array): For tadir_lookup: exact object names to resolve across packages. Prefer this over long SAPQuery TADIR IN-lists.
- `objectType` (string): Object search: SAP-side type filter before the result limit (e.g., UIAC, CLAS, CLAS/OC). Source search: type filter (e.g., PROG, CLAS, FUNC). For tadir_lookup: single type filter; use objectTypes for…
- `objectTypes` (array): For tadir_lookup: optional ADT/TADIR type filters (e.g., TABL, DDLS, BDEF, SRVB, CLAS/OC).
- `packageName` (string): For source_code search: filter by package name
- `query` (string): Search pattern. For object search: name pattern with wildcards (e.g., ZCL_ORDER*, Z*TEST*). For tadir_lookup: exact name or comma/whitespace-separated names. For source_code search: text string to fi…
- `searchType` (string): Search mode: "object" (default) searches by object name, "source_code" searches within ABAP source code, "tadir_lookup" does exact cross-package object lookup.
- `source` (string): For tadir_lookup only: data source for the lookup. "adt" (default) uses the ADT info-system endpoint — workbench-resolvable objects only. "db" issues SQL against table TADIR — also surfaces orphan/gh…

### `SAPNavigate` (~614 tokens)

Navigate code: definitions, references, completion, hierarchy. references: where-used objects by default; detail=positions/snippets adds bounded native usages; 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.

Input parameters:

- `action` (string, required): Navigation action
- `column` (number): Column (0-based integer)
- `depth` (integer): relations: native steps (default 1), not source-call hops.
- `detail` (string): references: objects (default), or expand at most 10 native nodes for positions/snippets. Method positions can be component-relative; inspect usageDetails limits.
- `direction` (string): relations: incoming=users; outgoing=dependencies (default).
- `expandPackages` (array): relations: expand exact packages beyond root; others visible. Not authorization.
- `line` (number): Line (1-based integer)
- `maxResults` (number): references: max entries (default 100, max 1000). "total" counts every match of the filter. relations: node cap incl. root, 1–100 (default 50); may stop earlier.
- `name` (string): Object name — alternative to uri for references.
- `objectType` (string): references RESULT filter, not the root type: CLAS/OC, PROG/P, FUGR/FF. Omit for all consumer types. A bare prefix ("CLAS") matches every subtype.
- `packages` (array): references: exact package names (e.g. ["$TMP"]); no wildcards or implicit subpackages. Native scope when available, otherwise local filtering.
- `source` (string): Current source for definition/completion
- `type` (string): Root object type, paired with name instead of uri (e.g. type="INTF"). Not the result-type filter. relations: CLAS, INTF, DDLS, DCLS, BDEF, SRVD, TABL, TTYP, DTEL, DOMA, PROG, INCL, FUGR, FUNC, VIEW,…
- `uri` (string): Definition/completion: source URI with line, column, source. References: uri or type+name.

### `SAPLint` (~325 tokens)

Run local abaplint rules on ABAP/CDS source (auto-selects cloud or on-prem rules by system type). Actions:
\- "lint": check source (errors+warnings) for ABAP (PROG/CLAS/INTF/FUNC) and CDS (DDLS).
\- "lint_and_fix": lint + auto-fix fixable issues (keyword case, obsolete statements); returns fixed source.
\- "list_rules": list rules + current config (no source).
\- "format": pretty-print via SAP's ADT formatter (needs source).
\- "get_formatter_settings" / "set_formatter_settings": read/update the system's global PrettyPrinter (indentation bool, style keywordUpper|keywordLower|keywordAuto|none; set is blocked read-only).
lint/lint_and_fix/list_rules run locally; format/*_formatter_settings call SAP. Syntax: SAPRead(type="SYNTAX"); ATC/unit tests: SAPDiagnose.

Input parameters:

- `action` (string, required): Check type
- `indentation` (boolean): PrettyPrinter: indent source (for set_formatter_settings)
- `name` (string): Object name (used for filename detection)
- `rules` (object): Rule overrides: { "rule_name": false } to disable, { "rule_name": { "severity": "Warning" } } to configure. Overrides system defaults.
- `source` (string): ABAP or CDS source code to lint/format (not needed for list_rules/get_formatter_settings)
- `style` (string): PrettyPrinter: keyword casing (for set_formatter_settings)

### `SAPDiagnose` (~1579 tokens)

ABAP diagnostics:
\- "syntax": check objects[] (CLAS/INTF/PROG/DDLS; version active/inactive). Single: prefer SAPRead SYNTAX.
\- "unittest": harmless ABAP Unit for CLAS/PROG/FUGR or DEVC (exact; includeSubpackages recurses).
\- "unittest_ci": harmless package tests with source reconciliation; empty/incomplete runs fail.
\- "atc": ATC (name+type/DEVC tree or objects [{type,name}], max 20). Omit variant for system default; unknown variant errors. "atc_variants": read variants/default, optional variant name filter.
\- "atc_ci": BTP-only package ATC CI; on-prem: atc type DEVC.
\- "cds_testcases": read suggested CDS Unit tests (name; SAP_BASIS 8.16+).
\- "object_state": active/inactive ETags/hashes/divergence (name+type; CLAS includes). No server-driven types.
\- "quickfix": proposals: name+type+source+line; optional column/sourceUri.
\- "apply_quickfix": text deltas, no save; quickfix inputs + proposalUri/proposalUserContent.
\- "dumps": ST22, newest: user/from/to/maxResults/filters; id=detail.
\- "feed_schema": optional dump filters; action only.
\- "traces": list profiler traces; id+analysis analyzes one.
\- "trace_start": arm NEXT matching execution (write; defaults HTTP, SQL on); reproduce, then read "traces".
\- "trace_requests": list armed traces. "trace_cancel": cancel by id (write).
\- "system_messages": list SM02 messages. "gateway_errors": list /IWFND/ERROR_LOG (on-prem; detailUrl or id+errorType for detail).
\- "odata_perf": read OData timing (url: host-relative; DB/ABAP/framework/auth); needs allowDataPreview.
\- "authorization_trace": read STUSERTRACE/SUAUTHVALTRC (on-prem; needs SAP_ALLOW_DATA_PREVIEW).
\- "cds_sql": read CDS native SQL (name).
\- "sql_trace_state" / "set_sql_trace_state" (sqlOn; needs SAP_ALLOW_WRITES) / "sql_trace_directory": ST05 SQL-trace control.
Quickfix: syntax/ATC → quickfix → apply_quickfix → SAPWrite.

Input parameters:

- `action` (string, required)
- `aggregate` (boolean): trace_start aggregation (default true).
- `analysis` (string): traces with id: hitlist=hot spots, statements=call tree, dbAccesses=DB access stats.
- `authObject` (string): Authorization object filter, e.g. S_TCODE.
- `column` (number): Quickfix source column (default 0).
- `configuration` (string): atc_ci: optional configuration.
- `coverage` (boolean): unittest only: collect statement/branch/procedure coverage and methodsBelowFull. Unavailable measurements do not discard test results. Default false.
- `description` (string): trace_start label.
- `detailUrl` (string): Detail path: canonical /sap/bc/adt/gw/errorlog/...; no absolute URLs.
- `errorType` (string): gateway_errors: required with id instead of detailUrl, e.g. "Frontend Error".
- `expiresHours` (number): trace_start expiry in hours (default 24).
- `failOnSeverity` (string): atc_ci failure threshold (default error).
- `filters` (array): AND ≤8 incl. user: [{attribute:"runtimeError",operator:"equals",values:["MESSAGE_TYPE_X"]}].
- `from` (string): Inclusive lower time bound for dumps/system_messages/gateway_errors; ISO or YYYYMMDDHHMMSS.
- `id` (string): dumps/traces: omit to list, supply for detail. trace_cancel: request ID.
- `includeFullText` (boolean): dumps detail: include full formattedText (default false).
- `includeReportXml` (boolean): CI XML reports (default false; 256 KiB total cap).
- `includeSubpackages` (boolean)
- `line` (number): Required quickfix/apply_quickfix source line.
- `maxExecutions` (number): trace_start executions to capture (default 1).
- `maxResults` (number): Result limit (default 50; authorization_trace 100). Caps: dumps 500, system_messages/gateway_errors 200, authorization_trace 10000.
- `name` (string): syntax/unittest/atc/object_state object name; cds_testcases/cds_sql CDS entity or DDLS name.
- `objectType` (string): trace_start match type; defaults: http→url, dialog→transaction, batch→report, rfc→functionModule.
- `objects` (array): ATC/syntax list instead of name/type/url. ATC may verify once. Missing reports stay incomplete. No packages.
- `onlyFailures` (boolean): authorization_trace: only denied checks (RC<>0), like SU53.
- `packageTrees` (array): CI packages including subpackages.
- `packages` (array): CI exact packages; 1–50 total with packageTrees.
- `processType` (string): trace_start work process (default http/OData): dialog=SAP GUI, batch=background job, rfc=RFC.
- `proposalAffectedObjects` (array): quickfix affectedObjects; provide current content for each source unit when applying multi-object fixes.
- `proposalUri` (string): Quickfix proposal URI from quickfix action (required for apply_quickfix).
- `proposalUserContent` (string): Opaque userContent from quickfix action (required for apply_quickfix). May be an empty string; pass through exactly.
- `resultFormat` (string): unittest: legacy|structured|junit; atc: legacy|structured; other actions reject it.
- `sections` (array): dumps detail chapter IDs, e.g. ["kap0","kap3","kap8"]; omit for focused defaults.
- `source` (string): Current source code (required for quickfix/apply_quickfix).
- `sourceUri` (string): quickfix/apply_quickfix source URI; default type/name main source. Set for includes, e.g. /includes/definitions.
- `sqlOn` (boolean): set_sql_trace_state: true arms ST05 SQL trace, false disarms; user filters the SAP user.
- `sqlTrace` (boolean): trace_start SQL capture (default true; required for analysis="dbAccesses").
- `timeoutSeconds` (number): Timeout 1–3600s: unittest/atc default 300; CI overall default 600.
- `to` (string): Inclusive upper time bound for dumps/system_messages/gateway_errors; ISO or YYYYMMDDHHMMSS.
- `traceUser` (string): trace_start/trace_requests SAP user (default connected user).
- `type` (string): Object type; unittest accepts CLAS, PROG, FUGR, or DEVC.
- `url` (string): odata_perf: host-relative OData path from the app network request (e.g. /sap/opu/odata4/sap/.../Entity?$filter=…). Absolute URLs rejected.
- `user` (string): SAP-user filter for dumps, feeds, or authorization_trace.
- `variant` (string): atc/atc_ci variant; atc_variants name filter (*=all)
- `version` (string): syntax source version (default active); inactive checks pending changes.

### `SAPContext` (~873 tokens)

SHLP: default/deps returns active partial interface metadata, as SAPRead; no KTD or dependency traversal. Primary tool for understanding ABAP/CDS objects. KTD when available, then dependency contracts. Use SAPRead after SAPContext for exact source/methods/grep/drafts.

Decision rule — pick the action from the user's question:
\- "What breaks if I change <CDS>?" / "Who consumes <I_*>?" / "Blast radius" → action="impact" (DDLS only).
\- "Which includes/appends extend <TABL>?" → action="structure", type="TABL".
\- "What does <object> do?" / "Explain" / "deps before editing" → action="deps" (default); type+name required.
\- "Find all callers of <object>" → action="usages" (live SAP where-used lookup).

impact: upstream CDS dependencies, downstream where-used in RAP buckets, and sibling-consistency hints. Prefer it to SQL source scans. See action/options below.
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.

Input parameters:

- `action` (string): Action: "impact" = CDS blast-radius analysis (DDLS only). USE THIS for any question like "what breaks if I change <view>", "who consumes <I_*>", "impact analysis on <CDS>", "downstream of <view>". Re…
- `depth` (number): Dependency depth: 1 = direct deps only (default), 2 = deps of deps, 3 = maximum. Higher depth = more context but more SAP calls.
- `group` (string): Required for FUNC type. The function group containing the function module.
- `includeIndirect` (boolean): impact: Include indirect (transitive) downstream where-used entries. Default false.
- `includeKtd` (boolean): deps: When true/default, prepend the object Knowledge Transfer Document (KTD/SKTD) when one exists. Set false to skip the KTD lookup.
- `maxDeps` (number): Max dependencies to resolve (default 20). Lower = faster + fewer tokens.
- `maxResults` (number): usages: max entries (default 100); impact: max per downstream bucket (default 50). Max 1000. "usageCount"/"summary" stay true totals, not page sizes.
- `name` (string, required): Object name (e.g., ZCL_ORDER)
- `siblingCheck` (boolean): impact: Enable sibling metadata-extension consistency analysis. Default true.
- `siblingMaxCandidates` (number): impact: Maximum sibling DDLS candidates to compare. Default 4; hard cap 10.
- `source` (string): Optional: provide source directly instead of fetching from SAP. Saves one round-trip if you already have the source from SAPRead.
- `type` (string): Root type. deps requires type+name, even with source. Optional for action="impact" (defaults to DDLS) or usages (unique name lookup); structure requires TABL.

### `SAPManage` (~1042 tokens)

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:
\- "features": cached feature status (fast, no round-trip; id, available, mode, probedAt). "probe": re-probe now (feature probes + auth + discovery refresh). "cache_stats": object cache health.
\- "create_package" / "delete_package" / "change_package": DEVC lifecycle via ADT packages API.
\- FLP read: flp_list_catalogs, flp_list_groups, flp_list_tiles (catalogId). FLP write: flp_create_catalog, flp_create_group, flp_create_tile, flp_add_tile_to_group, flp_delete_catalog. Classic designer tile/target-mapping model, deprecated since S/4HANA 2023; Work Zone exposure v2 needs LADIs (SAPRead type=UIAD).
\- "set_api_state": release/revoke an object's API release contract (objectUri, or name+objectType; apiState defaults RELEASED, contract defaults C1 — C0 for SRVD, C3 for classic views). Write counterpart of SAPRead(type="API_STATE").

Returns features + systemType ("onprem"/"btp"); "available: false" means do NOT attempt dependent operations.

Input parameters:

- `action` (string, required): Action to execute. Read actions: features, probe, cache_stats, flp_list_catalogs, flp_list_groups, flp_list_tiles. Mutating package/FLP actions require writable safety config and write scope in authe…
- `apiState` (string)
- `apiVisibility` (array): set_api_state RELEASED: complete visibility selection; [] means none. Omit for SAP defaults. Read API_STATE first.
- `catalogId` (string): FLP catalog identifier — accepts either full ID (X-SAP-UI2-CATALOGPAGE:MY_CAT) or domain ID (MY_CAT). Required for flp_list_tiles, flp_create_tile, flp_add_tile_to_group, flp_delete_catalog.
- `contract` (string): set_api_state: contract (default C1); SRVD uses C0, classic VIEW uses C3. Unsupported choices report supported contracts. SAP validates contract requirements.
- `description` (string): Package description (required for create_package).
- `domainId` (string): Domain ID — required for flp_create_catalog (e.g., ZARC1_SALES).
- `groupId` (string): FLP group/page identifier (required for flp_create_group, flp_add_tile_to_group).
- `name` (string): Package name (required for create_package and delete_package).
- `newPackage` (string): Target package to move the object to. Required for change_package.
- `objectName` (string): Object name to move (e.g., ZCL_MY_CLASS). Required for change_package.
- `objectType` (string): ADT object type (e.g., CLAS/OC, DDLS/DF, PROG/P). Required for change_package. For set_api_state: object type of "name" when objectUri is omitted (e.g. CLAS, INTF, DDLS, TABL).
- `objectUri` (string): ADT URI of the object to move (e.g., /sap/bc/adt/oo/classes/zcl_my_class). If not provided, resolved automatically from objectName + objectType via search. For set_api_state: the object whose API rel…
- `oldPackage` (string): Current package of the object. Required for change_package.
- `packageType` (string): Package type for create_package (default: development).
- `recordChanges` (boolean): Whether the created package records object changes in transport requests. Defaults to true for non-LOCAL software components or when a transport layer is set; false for literal LOCAL packages.
- `responsible` (string): Person-responsible: an existing ABAP user (XUBNAME, max 12 chars); an email is rejected. Defaults to the connection user; pass explicitly under principal propagation. BTP: auto-resolved from prior cr…
- `softwareComponent` (string): Software component for create_package (default: LOCAL on-prem, ZLOCAL on BTP).
- `superPackage` (string): Parent package for create_package (defaults to empty root package).
- `tile` (object): Tile definition for flp_create_tile.
- `tileInstanceId` (string): Tile instance ID in the source catalog (required for flp_add_tile_to_group).
- `title` (string): Title — required for flp_create_catalog and flp_create_group.
- `transport` (string): Optional transport request (corrNr) for create_package, delete_package, or change_package.
- `transportLayer` (string): Transport layer for create_package (optional; required by some transportable landscapes).

### `SAPTransport` (~1521 tokens)

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.

Input parameters:

- `action` (string, required): list: show transports (defaults to current user, modifiable only). Pass summary=true for a headers-only overview that omits each transport's object lists (keeps an objectCount) — far cheaper when man…
- `description` (string): Transport description text (required for create)
- `group` (string): check/history: parent group for INCL L<group>… or a new FUNC; existing FUNC auto-resolves.
- `id` (string): Transport request ID, e.g. A4HK900123 (required for get/diff/release/delete/reassign/release_recursive/remove_object)
- `limit` (number): diff: objects per call (default 20, max 40); page with offset.
- `maxResults` (number): Maximum list rows or check/history assignment candidates (defaults: list/history 50, check 10; max 1000).
- `name` (string): Object name (for check, history, or remove_object actions)
- `offset` (number): diff: first object to diff (default 0).
- `operation` (string): Check mode: create (default) or modify.
- `owner` (string): New owner SAP username (required for reassign)
- `package` (string): Package name. For create: optional — defaults to $TMP; an explicit package influences the route/target, while the request remains Workbench type K. For check: required.
- `pgmid` (string): Program ID for remove_object: "R3TR" (whole object) or "LIMU" (sub-object). Required — object type alone does not determine pgmid.
- `recursive` (boolean): Apply recursively to child tasks (for delete/reassign). release_recursive always recurses.
- `removeLockedObjects` (boolean): For delete only. Strip locked objects from each task before deleting, so a request that still holds a locked object (e.g. a deleted object's lingering record → HTTP 400 "...contains locked objects")…
- `resultFormat` (string): release actions: legacy (default) or structured JSON.
- `status` (string): Transport status filter (for list). D=modifiable (default), R=released, "*"=all statuses.
- `summary` (boolean): diff: true omits hunks, retaining counts and evidence (same SAP reads). For list, DEFAULT true: headers-only — drops each transport's (and task's) object lists, keeping id/description/owner/status/ta…
- `target` (string): Explicit transport target (Transportziel / TR_TARGET) for create — what the user means by "create a transport with target X". Forms: a system ("C11"), system.client ("C11.021"), or target group ("/TR…
- `timeoutSeconds` (number): release timeout seconds: 1-1800; default 300.
- `transportLayer` (string): Transport layer for create (optional, advanced). Sent as the ?transportLayer= query param to override which consolidation route — and therefore which target — SAP resolves. OMIT IT by default: SAP re…
- `type` (string): Object type for check/history/remove_object actions (PROG, CLAS, DDLS, etc.). Not used by create, which creates a Workbench (K) request.
- `user` (string): List user (default: current SAP user; "*" means all visible owners).

### `SAPGit` (~284 tokens)

Git reads and gated abapGit workflows. gCTS mutations are quarantined. abapGit mutations need write/Git gates and allowedPackages ROOT/** or *; clone/pull evidence is unverified. external_info is gated HTTPS SAP egress.

Input parameters:

- `action` (string, required)
- `backend` (string): Backend override; omit to auto-select (gCTS preferred).
- `branch` (string): Branch name for switch_branch/create_branch.
- `commit` (string): Commit SHA for history/pull-by-commit actions.
- `limit` (number): Optional limit for history queries.
- `message` (string): Commit message required for abapGit push.
- `objects` (array): For abapGit push, the changed objects to commit; omit to select every local change.
- `package` (string): abapGit clone package. Mutations require an allowedPackages ROOT/** or * grant; not gCTS evidence.
- `password` (string): Remote repository password/token secret.
- `repoId` (string)
- `token` (string): Remote repository access token. abapGit sends it as basic auth user "x-access-token".
- `transport` (string): Optional transport request where supported by the backend.
- `url` (string): HTTPS remote for clone/external_info; embedded credentials are rejected.
- `user` (string): Remote repository username.

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1#diagnostics

## Score history

- 2026-11-05: 46
- 2026-11-04: 46
- 2026-11-03: 46
- 2026-11-02: 46
- 2026-11-01: 46
- 2026-10-31: 45
- 2026-10-30: 45
- 2026-10-29: 44
- 2026-10-28: 44
- 2026-10-27: 43
- 2026-10-26: 43
- 2026-10-25: 42
- 2026-10-24: 42
- 2026-10-23: 42
- 2026-10-22: 41
- 2026-10-21: 41
- 2026-10-20: 40
- 2026-10-19: 40
- 2026-10-18: 39
- 2026-10-17: 39
- 2026-10-16: 39
- 2026-10-15: 39
- 2026-10-14: 38
- 2026-10-13: 38
- 2026-10-12: 37
- 2026-10-10: 5
- 2026-10-04: 5
- 2026-10-03: 33
- 2026-10-02: 33

## Common questions

### What is the ARC-1 MCP server?

ARC-1 is an MCP server listed in the public MCP registry as io.github.arc-mcp/arc-1. MCP server for SAP ABAP systems. This page covers its container image (ghcr.io/arc-mcp/arc-1).

### Is the ARC-1 MCP server safe to use?

ARC-1 scores 46 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the ARC-1 MCP server expose?

ARC-1 exposes 9 tools: SAPRead, SAPSearch, SAPNavigate, SAPLint, SAPDiagnose, and 4 more. Their descriptions and schemas cost roughly 8,529 tokens of context every time the server is loaded.

### Is the ARC-1 MCP server still maintained?

ARC-1 is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the ARC-1 MCP server under?

ARC-1 declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

### What did VerifyMCP test on the ARC-1 MCP server?

VerifyMCP ran 12 checks on ARC-1, covering Source repository, Provenance, License, Maintenance and 8 more. 4 items could not be completed, a gap on our side rather than a finding about ARC-1: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to a container image, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- GitHub Container Registry: https://ghcr.io/arc-mcp/arc-1
- Website: https://docs.arc-1-mcp.com/
- Changelog RSS feed: https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1.xml
- Changelog JSON feed: https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1.json
- HTML version of this page: https://verifymcp.io/servers/arc-mcp-arc-1/ghcr-io-arc-mcp-arc-1
