{"ref":"artifact:arc-mcp-arc-1-extension-sample","page":"/artifacts/arc-mcp-arc-1-extension-sample","json":"/artifacts/arc-mcp-arc-1-extension-sample.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"arc-mcp-arc-1-extension-sample","name":"arc-1-extension-sample","artifact_type":"sample","ecosystem":"abap","domain":"ai-and-agents","origin_ring":"independent","description":{"one_line":"A sample [arc-1](artifact:arc-mcp-arc-1) extension in TypeScript, with no ABAP, whose ten `Custom_*` tools each show one way the plugin API reaches SAP: ADT and OData reads, an OData write, class and report execution, a custom ICF service and classic RFC.","short":"Sample arc-1 extension in TypeScript with ten custom tools","what_it_solves":"It is the smoke test for the extension framework of [arc-1](artifact:arc-mcp-arc-1) (FEAT-61), reported verified live against a real S/4HANA system, and the repository ARC-1's extensions page tells a reader to clone and adapt. Reads go through the gated `ctx.http`, `Custom_RunClass` and `Custom_RunReport` use ARC-1's gated ADT run operations, `Custom_CreateSalesOrder` writes to OData behind `SAP_ALLOW_PLUGIN_RAW_WRITES`, and `Custom_ReadProgram` is a read declared as a JSON manifest in place of code. Three tools drive the translation service of [LISA](artifact:clementringot-lisa) through its custom ICF endpoint. `Custom_RfcSystemInfo` calls `RFC_SYSTEM_INFO` over classic RFC with [open-rfc](artifact:marianfoo-open-rfc), outside `ctx.http`, and the README lists the eight controls that tool brings itself because ARC-1's write ceiling and package restrictions do not reach the call.","when_not_to_use":"It consumes the `@experimental` public API, which the README says may break in any release. The RFC tool dials as one shared technical user with its own credentials, so SAP's log records that user and not the person behind the agent."},"links":{"repo":"https://github.com/arc-mcp/arc-1-extension-sample"},"type_properties":{"form":{"value":"snippets","sources":[{"url":"https://github.com/arc-mcp/arc-1-extension-sample","title":"arc-1-extension-sample — README","checked":"2026-10-18","quote":"A sample ARC-1 extension — the playground for FEAT-61."}]}},"maintainers":["actor:arc-mcp"],"demonstrates":["capability:agent-code-access"],"requires":[{"ref":"artifact:arc-mcp-arc-1","requirement":"required","for":"the server whose `arc-1/public` extension API the sample consumes and which loads it with `ARC1_PLUGINS`","sources":[{"url":"https://raw.githubusercontent.com/arc-mcp/arc-1-extension-sample/main/README.md","title":"arc-mcp/arc-1-extension-sample — README","checked":"2026-10-04","quote":"Consumes the **`@experimental` `arc-1/public` API**."}]},{"ref":"artifact:marianfoo-open-rfc","requirement":"conditional","condition":"`Custom_RfcSystemInfo` is used","for":"the SDK-free RFC client the RFC tool dials classic RFC with, pinned to 0.2.3","sources":[{"url":"https://raw.githubusercontent.com/arc-mcp/arc-1-extension-sample/main/README.md","title":"arc-mcp/arc-1-extension-sample — README, RFC","checked":"2026-10-04","quote":"This route requires open-rfc 0.2.3 or newer."}]},{"ref":"artifact:clementringot-lisa","requirement":"conditional","condition":"the three translation tools are used","for":"the ABAP ICF service `ZCL_I18N_SERVICE` the three translation tools post to, imported from LISA","sources":[{"url":"https://raw.githubusercontent.com/arc-mcp/arc-1-extension-sample/main/README.md","title":"arc-mcp/arc-1-extension-sample — README, Integrating LISA","checked":"2026-10-04","quote":"Import LISA's handler class first, then:"}]},{"ref":"artifact:btp-connectivity","requirement":"conditional","condition":"the RFC tool runs on Cloud Foundry","for":"the bound service whose short-lived OAuth token and SOCKS5 proxy carry the RFC call to the on-premise system","sources":[{"url":"https://raw.githubusercontent.com/arc-mcp/arc-1-extension-sample/main/README.md","title":"arc-mcp/arc-1-extension-sample — README, RFC","checked":"2026-10-04","quote":"On Cloud Foundry the tool reads exactly one bound BTP Connectivity service, obtains a short-lived"}]}],"history":[{"date":"2026-10-04","field":"entry","from":null,"to":"created","reason":"Entered by intake from the README, found through ARC-1's extensions page, which links it as the worked sample."}],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-10-04"},"contributors":["actor:marianfoo"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"fair","evidence":"1 contributor, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"4 test files"},{"label":"Docs","tier":"good","evidence":"docs/ with 2 pages, README 18 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":1,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":1,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-10-17","license_spdx":null,"org_owned":true,"default_branch":"main","created_at":"2026-06-17T17:50:25Z","tree_truncated":false,"test_files":4,"workflows":0,"other_ci":false,"readme_bytes":18196,"docs_files":2,"changelog":false,"license_file":false,"dts_files":0,"first_commit":"2026-06-17","last_commit":"2026-10-17","commits":11,"contributors":1,"readme_path":"README.md","readme_sha":"bd5cd679b5847759e0adb312d1eac86a807a6fc3","open_prs":0,"repo_read":"2026-10-24"},"edges":{"maintainers":[{"ref":"actor:arc-mcp","name":"ARC MCP","json":"/actors/arc-mcp.json"}],"contributors":[{"ref":"actor:marianfoo","name":"Marian Zeis","json":"/actors/marianfoo.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}