Skip to main content
Glama

SAPManage

Destructive

Probe SAP system capabilities, manage package (DEVC) lifecycle, and configure Fiori Launchpad catalogs, groups, and tiles.

Instructions

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.

  • "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 Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoPackage name (required for create_package and delete_package).
tileNoTile definition for flp_create_tile.
titleNoTitle — required for flp_create_catalog and flp_create_group.
actionYesAction 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 authenticated mode.
groupIdNoFLP group/page identifier (required for flp_create_group, flp_add_tile_to_group).
apiStateNoFor set_api_state: target state of the object's API release contract — RELEASED (mark released for ABAP Cloud / Clean Core) or NOT_RELEASED (revoke). Default RELEASED. Visibility (ABAP Cloud / Key User Apps) follows the contract's defaults. Read the current state first with SAPRead(type="API_STATE").
contractNoFor set_api_state: which release contract to set. Default C1 (Key-User/Cloud — the common clean-core contract). Object types support different contracts: e.g. service definitions (SRVD) only support C0, classic DDIC views only C3, behavior definitions and tables support C0+C1. If the object does not support the chosen contract, the error lists the ones it does.
domainIdNoDomain ID — required for flp_create_catalog (e.g., ZARC1_SALES).
catalogIdNoFLP 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.
objectUriNoADT 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 release contract to set (or pass name + objectType instead).
transportNoOptional transport request (corrNr) for create_package, delete_package, or change_package.
newPackageNoTarget package to move the object to. Required for change_package.
objectNameNoObject name to move (e.g., ZCL_MY_CLASS). Required for change_package.
objectTypeNoADT 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).
oldPackageNoCurrent package of the object. Required for change_package.
descriptionNoPackage description (required for create_package).
packageTypeNoPackage type for create_package (default: development).
responsibleNoBTP only: the internal ABAP user (XUBNAME, e.g. CB9980000000) for the new package person-responsible. Auto-resolved from prior object creates if omitted; the IAS email is rejected.
superPackageNoParent package for create_package (defaults to empty root package).
recordChangesNoWhether 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.
tileInstanceIdNoTile instance ID in the source catalog (required for flp_add_tile_to_group).
transportLayerNoTransport layer for create_package (optional; required by some transportable landscapes).
softwareComponentNoSoftware component for create_package (default: LOCAL on-prem, ZLOCAL on BTP).
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses behavioral traits beyond the destructiveHint annotation: it explains that 'available: false' means do not attempt dependent operations, describes caching behavior for 'features', and notes that certain actions require writable safety config and write scope. This adds valuable context without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear intro, bullet lists for actions, and separate sections. It is slightly long but every section serves a purpose. The front-loading of the main use case aids quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (23 params, no output schema), the description covers the main actions, return values (features + systemType + available flag), and important caveats (e.g., write scope requirements). It could be more complete by explaining error handling or pagination for list actions, but overall it provides sufficient context for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all parameters. The description adds some value by linking parameters to specific actions (e.g., 'name' required for create_package/delete_package, 'tile' for flp_create_tile) and explaining defaults (e.g., apiState default RELEASED). This is helpful but mostly parallel to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool probes and reports SAP system capabilities, handles package lifecycle (DEVC), and FLP operations. It distinguishes itself from siblings like SAPRead (pure read) and SAPTransport (transports only) by being a management tool with both read and write actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use BEFORE operations that depend on optional features' for feature probes. It also breaks down actions into read and write categories. However, it does not explicitly state when NOT to use this tool versus alternatives (e.g., when SAPRead or SAPTransport would be more appropriate), which prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arc-mcp/arc-1'

If you have feedback or need assistance with the MCP directory API, please join our Discord server