SAP Released Objects Server
Provides real-time knowledge of which SAP objects are released for ABAP Cloud / Clean Core, including search, details, successors, compliance checks, and statistics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SAP Released Objects ServerIs MARA available for ABAP Cloud?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ROSA — Released Objects Search Assistant
ROSA gives AI agents real-time knowledge of which SAP objects are released for ABAP Cloud / Clean Core — and what to use instead when they're not.
It plugs into the SAP Cloudification Repository (the official source of truth) and exposes it two ways, sharing the same business logic — no feature gap between them:
Access mode | Protocol | Use case |
MCP Server | Model Context Protocol on | AI agents with native MCP support (Claude Desktop, Claude Code, Cline, Cursor…) |
REST API |
| LLM skills, scripts, CI pipelines — anything that speaks HTTP |
Ask "Is table MARA available in ABAP Cloud?" and the agent instantly knows: no — use
I_PRODUCTinstead.
Quick start — Hosted instance (recommended)
ROSA is publicly hosted — no install, no server to run. Connect your AI agent directly:
MCP (Claude Desktop, Claude Code, Cursor, Cline…)
Claude Code (.mcp.json) / Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"rosa": {
"type": "url",
"url": "https://sap-released-objects-server-production.up.railway.app/mcp"
}
}
}Cursor (~/.cursor/mcp.json or .cursor/mcp.json):
{
"mcpServers": {
"rosa": {
"type": "url",
"url": "https://sap-released-objects-server-production.up.railway.app/mcp"
}
}
}REST API
All endpoints are GET, return JSON, and support CORS:
curl "https://sap-released-objects-server-production.up.railway.app/api/search?query=purchase+order"
curl "https://sap-released-objects-server-production.up.railway.app/api/object?object_type=TABL&object_name=MARA"
curl "https://sap-released-objects-server-production.up.railway.app/api/compliance?object_names=MARA,BSEG,I_PRODUCT"For LLM-skill usage, two ready-made skills expose the full API reference:
skills/sap-released-objects/SKILL.md— points at the hosted public instance; use as-is.skills/rosa-global/SKILL.md— for your own self-hosted deployment: copy it and replace the{{ROSA_BASE_URL}}placeholder with your instance URL.
Related MCP server: ABAP Transport Analyzer MCP Server
Self-hosted / alternative deployments
I want to… | Use | One-liner |
Run locally via npx (stdio) | npm |
|
Run without Node.js installed | Native executable | download from Releases |
Run as a server / self-host | Docker |
|
Deploy on a generic Node host | Node PaaS | Railway / Render / Fly.io — set |
Deploy on SAP BTP Cloud Foundry | MTA or npm wrapper | see DEPLOYMENT |
Deploy on classic Cloud Foundry |
|
Full details for every option: docs/DEPLOYMENT.md.
Local MCP (stdio mode)
{
"mcpServers": {
"rosa": {
"command": "npx",
"args": ["-y", "@rosa-mcp/server"]
}
}
}Features
Search SAP objects — classes, CDS views, tables, data elements, BDEFs…
Filter by Clean Core Level (A / B / C / D) — the model replacing the 3-tier system since August 2025.
Find successors for deprecated or non-released objects.
Clean Core compliance check for a list of objects (with compliance rate).
Statistics — counts by level, type, and application component.
Smart search — multi-token scoring (
"purchase order"→I_PURCHASEORDER).Multi-system — S/4HANA Cloud Public, BTP ABAP Environment, Private Cloud, On-Premise; PCE versions discovered dynamically.
Data is fetched from SAP's public GitHub repository at runtime and cached in memory for 24h — no SAP system connection required.
Clean Core Level Concept
Level | Meaning | Upgrade safety |
A | Released APIs (ABAP Cloud) | ✅ Upgrade-safe |
B | Classic APIs | ⚠️ Upgrade-stable |
C | Internal / unclassified | 🟡 Manageable risk |
D | noAPI (not recommended) | 🔴 High risk |
MCP tools & REST endpoints
Each MCP tool on POST /mcp has an identical REST counterpart under /api:
MCP tool | REST endpoint | Purpose |
|
| Search objects, ranked by relevance, with filters |
|
| Full details + Clean Core assessment for one object |
|
| Successor(s) of a deprecated / non-released object |
|
| Compliance rate for a list of objects |
|
| Available S/4HANA PCE versions |
|
| TADIR object types with per-level counts |
|
| Repository statistics |
Parameters and response shapes are documented in
skills/sap-released-objects/SKILL.md.
Server modes & authentication
ROSA runs over stdio (default; local MCP clients) or HTTP (--http /
TRANSPORT=http; remote/self-hosted). On HTTP it auto-detects four
authentication modes from the environment — public, OIDC / OAuth 2.1,
XSUAA (SAP BTP), and API keys — with no rebuild:
Mode | Trigger |
Public | no auth env vars |
OIDC / OAuth 2.1 |
|
XSUAA |
|
API keys |
|
How transports, auth auto-detection, the auth × deployment matrix, and the system diagram work: docs/ARCHITECTURE.md.
Usage examples
You: "Is table MARA available in ABAP Cloud?"
Agent: → sap_get_object_details(TABL, MARA) → "deprecated; successor I_PRODUCT"
You: "My code uses BSEG, MARA, CL_GUI_ALV_GRID. Is it Clean Core?"
Agent: → sap_check_clean_core_compliance(...) → "Compliance rate: 0%"
You: "What's available for sending emails on BTP?"
Agent: → sap_search_objects(query="send email", system_type="btp")Documentation
Doc | For |
Transports, auth modes, system diagram, MCP tools | |
Every deployment option + config reference + troubleshooting | |
Classic (non-BTP) Cloud Foundry | |
Release train & pipeline (maintainers) | |
Dev setup, tests, commit convention | |
Notable changes |
Contributing & releases
PRs welcome — see CONTRIBUTING.md. This repo uses Conventional Commits; releases are cut by an automated release train that publishes the npm package, the multi-arch Docker image, and native executables from a single tag.
License
Available Tools
7 toolssap_check_clean_core_complianceCheck Clean Core ComplianceARead-onlyIdempotent
Check the Clean Core compliance of a list of SAP objects. Provide a comma-separated list of object names and get their Clean Core Level classification, compliance status, and successor recommendations. Essential for assessing existing custom code during ABAP Cloud migration.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | S/4HANA version for Private Cloud or On-Premise systems. Use 'latest' for the most recent version. Format: YEAR for base release, or YEAR_FPS where FPS is the Feature Pack Stack / SP number. IMPORTANT: '2022_1' = FPS01/SP01, '2023_3' = FPS03/SP03, etc. Always use the YEAR_N format when a specific SP/FPS is requested. Use sap_list_versions to see all currently available versions. Ignored for public_cloud and btp systems. Default: latest. | latest |
| system_type | No | SAP system type. 'public_cloud' = S/4HANA Cloud Public Edition (Level A Released APIs only). 'btp' = BTP ABAP Environment / Steampunk (Level A Released APIs only, separate dataset from public_cloud). 'private_cloud' = S/4HANA Cloud Private Edition (Levels A-D, version-specific files available). 'on_premise' = S/4HANA on-premise (Levels A-D, version-specific files available). Default: public_cloud. | public_cloud |
| object_names | Yes | Comma-separated list of object names to check (e.g., 'MARA,BSEG,CL_GUI_ALV_GRID,BAPI_MATERIAL_GET_ALL'). Optionally prefix with type: 'TABL:MARA,CLAS:CL_GUI_ALV_GRID'. | |
| target_level | No | Target Clean Core Level for compliance. 'A' = strict (Released APIs only). 'B' = pragmatic (Released + Classic APIs). Default: A. | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds minimal behavioral insight beyond stating the check action. No contradictions are present, but the description does not disclose additional behaviors like rate limits, authorization requirements, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of three sentences. Each sentence serves a purpose: stating the action, specifying input and output, and providing usage context. No extraneous information is present, and the critical details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema) and the availability of annotations, the description is mostly complete. It explains the core functionality, input format, and return values. However, it could be improved by detailing the structure of the output or mentioning any limitations, such as a maximum number of objects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents all 4 parameters (100% coverage). The description adds value by explaining the expected input format ('comma-separated list'), allowing optional type prefixes, and clarifying what the tool returns ('Clean Core Level classification, compliance status, and successor recommendations'), which compensates for the lack of an output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check') and resource ('Clean Core compliance of a list of SAP objects'). It clearly conveys the tool's primary function but does not explicitly distinguish it from sibling tools like sap_search_objects or sap_get_object_details, which could also involve objects and compliance checks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('Essential for assessing existing custom code during ABAP Cloud migration'), but does not provide explicit when-to-use or when-not-to-use guidance, nor does it reference sibling tools as alternatives. The context suggests usage, but lacks direct comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_find_successorFind SAP Object SuccessorARead-onlyIdempotent
Find the released successor(s) of a deprecated or non-released SAP object. Essential for ABAP Cloud migration: when your code uses a non-released object (e.g., table MARA), this tool finds the replacement (e.g., CDS view I_PRODUCT). Also useful for checking if a deprecated API has a modern replacement.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | S/4HANA version for Private Cloud or On-Premise systems. Use 'latest' for the most recent version. Format: YEAR for base release, or YEAR_FPS where FPS is the Feature Pack Stack / SP number. IMPORTANT: '2022_1' = FPS01/SP01, '2023_3' = FPS03/SP03, etc. Always use the YEAR_N format when a specific SP/FPS is requested. Use sap_list_versions to see all currently available versions. Ignored for public_cloud and btp systems. Default: latest. | latest |
| object_name | Yes | Object name to find successor for (e.g., 'MARA', 'CL_AUNIT_ASSERT', 'BAPI_MATERIAL_GET_ALL'). The search is case-insensitive and matches partial names. | |
| object_type | No | Optional TADIR object type to narrow the search (e.g., 'TABL', 'CLAS', 'FUGR'). Leave empty to search all types. | |
| system_type | No | SAP system type. 'public_cloud' = S/4HANA Cloud Public Edition (Level A Released APIs only). 'btp' = BTP ABAP Environment / Steampunk (Level A Released APIs only, separate dataset from public_cloud). 'private_cloud' = S/4HANA Cloud Private Edition (Levels A-D, version-specific files available). 'on_premise' = S/4HANA on-premise (Levels A-D, version-specific files available). Default: public_cloud. | public_cloud |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds value by explaining the tool finds 'released' successors and is used for migration, which goes beyond the annotations. No contradiction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) effectively front-loaded with the main purpose and key use cases. Every sentence adds essential information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity and the rich annotations/schema, the description covers the core functionality well. It could mention the return format (e.g., list of successor objects), but the current information is sufficient for a competent 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter coverage with detailed descriptions, so baseline is 3. The tool description adds value by providing examples (e.g., 'MARA', 'CL_AUNIT_ASSERT') and clarifying case-insensitive partial matching, which enhances understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find the released successor(s) of a deprecated or non-released SAP object' and gives concrete examples like 'MARA' to 'I_PRODUCT'. This verb-resource combination distinguishes it from sibling tools like sap_search_objects or sap_get_object_details which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions 'Essential for ABAP Cloud migration' and 'Also useful for checking if a deprecated API has a modern replacement', providing clear usage context. It does not specify when not to use it or list alternatives, but the context is sufficient for an agent to understand appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_get_object_detailsGet SAP Object DetailsARead-onlyIdempotent
Get detailed information about a specific SAP object by its exact type and name. Returns Clean Core Level, state, successor info, application component, and more. Use this to check if a specific object (table, class, CDS view...) is released for ABAP Cloud and what its Clean Core Level is.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | S/4HANA version for Private Cloud or On-Premise systems. Use 'latest' for the most recent version. Format: YEAR for base release, or YEAR_FPS where FPS is the Feature Pack Stack / SP number. IMPORTANT: '2022_1' = FPS01/SP01, '2023_3' = FPS03/SP03, etc. Always use the YEAR_N format when a specific SP/FPS is requested. Use sap_list_versions to see all currently available versions. Ignored for public_cloud and btp systems. Default: latest. | latest |
| object_name | Yes | Exact object name (e.g., 'MARA', 'CL_ABAP_UNIT_ASSERT', 'I_PRODUCT'). | |
| object_type | Yes | TADIR object type (e.g., 'TABL', 'CLAS', 'DDLS', 'DTEL', 'INTF', 'BDEF'). | |
| system_type | No | SAP system type. 'public_cloud' = S/4HANA Cloud Public Edition (Level A Released APIs only). 'btp' = BTP ABAP Environment / Steampunk (Level A Released APIs only, separate dataset from public_cloud). 'private_cloud' = S/4HANA Cloud Private Edition (Levels A-D, version-specific files available). 'on_premise' = S/4HANA on-premise (Levels A-D, version-specific files available). Default: public_cloud. | public_cloud |
| clean_core_level | No | Maximum Clean Core Level to include in results (cumulative). Replaces the 3-tier extensibility model since August 2025. Level A: Released APIs only (ABAP Cloud, fully upgrade-safe). Level B: + Classic APIs (upgrade-stable, governance recommended). Level C: + Internal/unclassified objects (manageable risk, consult changelog). Level D: + noAPI objects (not Clean Core, should be remediated). For public_cloud and btp systems, only Level A is available. Default: A. | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly=true and destructive=false. Description adds behavioral context by specifying what is returned (Clean Core Level, state, successor info, etc.), complementing annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose and use case. No wasted words; every sentence is meaningful and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no output schema, description sufficiently covers purpose, return fields, and usage context. It could benefit from explicitly listing all return fields, but 'and more' suffices. Annotations cover side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description does not add significant parameter information beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves detailed information for a specific SAP object by type and name, listing returned fields. It distinguishes from siblings like sap_search_objects (searching) and sap_find_successor (finding successor).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description gives clear use case: checking if an object is released for ABAP Cloud. It explicitly references sap_list_versions for version info, providing an alternative. However, it does not explicitly state when not to use this tool vs. all siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_get_statisticsGet Repository StatisticsARead-onlyIdempotent
Get overall statistics about the SAP Cloudification Repository: total object counts by Clean Core Level, by object type, by state, and top application components. Useful for understanding the scope of available APIs and planning ABAP Cloud migration efforts.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | S/4HANA version for Private Cloud or On-Premise systems. Use 'latest' for the most recent version. Format: YEAR for base release, or YEAR_FPS where FPS is the Feature Pack Stack / SP number. IMPORTANT: '2022_1' = FPS01/SP01, '2023_3' = FPS03/SP03, etc. Always use the YEAR_N format when a specific SP/FPS is requested. Use sap_list_versions to see all currently available versions. Ignored for public_cloud and btp systems. Default: latest. | latest |
| system_type | No | SAP system type. 'public_cloud' = S/4HANA Cloud Public Edition (Level A Released APIs only). 'btp' = BTP ABAP Environment / Steampunk (Level A Released APIs only, separate dataset from public_cloud). 'private_cloud' = S/4HANA Cloud Private Edition (Levels A-D, version-specific files available). 'on_premise' = S/4HANA on-premise (Levels A-D, version-specific files available). Default: public_cloud. | public_cloud |
| clean_core_level | No | Maximum Clean Core Level to include in results (cumulative). Replaces the 3-tier extensibility model since August 2025. Level A: Released APIs only (ABAP Cloud, fully upgrade-safe). Level B: + Classic APIs (upgrade-stable, governance recommended). Level C: + Internal/unclassified objects (manageable risk, consult changelog). Level D: + noAPI objects (not Clean Core, should be remediated). For public_cloud and btp systems, only Level A is available. Default: A. | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the description's behavioral burden is low. The description adds context by specifying the content of statistics (counts by level, type, state, components) and the practical benefit (migration planning). No contradiction, and it provides useful behavioral context beyond the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action ('Get overall statistics'), list key output categories, and end with a practical use case. Every sentence contributes value, no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three optional parameters, no required fields, and no output schema, the description adequately covers the tool's purpose and output content (counts by categories). It could briefly mention the return format (e.g., JSON) or note that parameters filter the statistics, but the schema already handles parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: all three parameters (version, system_type, clean_core_level) have clear descriptions with defaults and enums. The description does not add any new meaning to these parameters beyond what the schema already provides, so it meets the baseline with no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and resource 'overall statistics about the SAP Cloudification Repository,' listing detailed groupings (by Clean Core Level, object type, state, top application components). It clearly distinguishes from sibling tools like sap_search_objects or sap_get_object_details, which are for searching or individual object details, by framing this as an aggregation/overview tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is 'useful for understanding the scope of available APIs and planning ABAP Cloud migration efforts,' providing a clear use case. However, it does not explicitly state when NOT to use it (e.g., for specific object details) or directly reference sibling alternatives, leaving some ambiguity for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_list_object_typesList SAP Object TypesARead-onlyIdempotent
List all available TADIR object types in the Cloudification Repository with their counts per Clean Core Level. Useful to understand what kind of objects are available (classes, CDS views, tables, BDEFs, etc.) and their distribution across Levels A-D.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | S/4HANA version for Private Cloud or On-Premise systems. Use 'latest' for the most recent version. Format: YEAR for base release, or YEAR_FPS where FPS is the Feature Pack Stack / SP number. IMPORTANT: '2022_1' = FPS01/SP01, '2023_3' = FPS03/SP03, etc. Always use the YEAR_N format when a specific SP/FPS is requested. Use sap_list_versions to see all currently available versions. Ignored for public_cloud and btp systems. Default: latest. | latest |
| system_type | No | SAP system type. 'public_cloud' = S/4HANA Cloud Public Edition (Level A Released APIs only). 'btp' = BTP ABAP Environment / Steampunk (Level A Released APIs only, separate dataset from public_cloud). 'private_cloud' = S/4HANA Cloud Private Edition (Levels A-D, version-specific files available). 'on_premise' = S/4HANA on-premise (Levels A-D, version-specific files available). Default: public_cloud. | public_cloud |
| clean_core_level | No | Maximum Clean Core Level to include in results (cumulative). Replaces the 3-tier extensibility model since August 2025. Level A: Released APIs only (ABAP Cloud, fully upgrade-safe). Level B: + Classic APIs (upgrade-stable, governance recommended). Level C: + Internal/unclassified objects (manageable risk, consult changelog). Level D: + noAPI objects (not Clean Core, should be remediated). For public_cloud and btp systems, only Level A is available. Default: A. | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying the output includes counts per Clean Core Level and listing example object types, which provides behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, directly front-loaded with the action and resource. Every sentence provides essential information without unnecessary words or repetition, achieving high conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list operation with 3 fully described parameters and no output schema, the description adequately explains the output (list of object types with counts per level) and provides examples. It covers the most important aspects for an agent to understand what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter. The description adds context about counts per Clean Core Level, which relates to the clean_core_level parameter, but does not add significant meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list') and resource ('TADIR object types') along with the context of counts per Clean Core Level, clearly distinguishing it from siblings like sap_list_versions (versions) and sap_search_objects (specific objects).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is 'useful to understand what kind of objects are available and their distribution across Levels A-D,' providing clear usage context. It does not explicitly exclude alternatives but implies when to use this tool for overview vs. other search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_list_versionsList Available S/4HANA VersionsARead-onlyIdempotent
List all available S/4HANA PCE versions for Private Cloud and On-Premise systems. Versions are discovered dynamically from the SAP Cloudification Repository on GitHub. Use this to find which versions can be passed to other tools (sap_search_objects, sap_get_object_details, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. The description adds that versions are discovered dynamically from GitHub, which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with purpose and ends with usage guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description fully covers purpose, source, and usage. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description does not need to add parameter info. Baseline 4 is appropriate as the description adds value through usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'list all available S/4HANA PCE versions' for specific system types, and mentions the dynamic discovery from GitHub, distinguishing it from sibling tools that deal with objects or details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to find which versions can be passed to other tools' and names specific siblings (sap_search_objects, sap_get_object_details), guiding when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_search_objectsSearch SAP ObjectsARead-onlyIdempotent
Search for SAP objects (classes, interfaces, CDS views, tables, data elements, function groups, RAP artifacts, etc.) in the SAP Cloudification Repository. Filter by Clean Core Level (A/B/C/D), object type, application component, and state. Use this tool to find released APIs for ABAP Cloud development, check if a specific object is available for your target system, or discover alternatives when an object is not released.
SEARCH TIPS:
Use separate words for business concepts: 'purchase order' not 'PURCHASEORDER'
SAP abbreviations are automatically resolved: 'billing document' also finds BILLGDOC*, BILDOC* objects
Compound abbreviations work too: 'purchase order' finds PO* objects, 'bill of material' finds BOM*
Separate words trigger fuzzy matching on SAP abbreviations (e.g., 'physical inventory' finds both PHYSICALINVENTORY* and PHYSINVTRY* objects)
Use exact SAP names only when you know the precise object name (e.g., 'I_PRODUCT', 'MARA')
Combine with app_component filter for targeted results (e.g., query='inventory', app_component='MM-IM')
Prefer singular forms: 'handling unit' not 'handling units' (plural 's' can reduce match accuracy)
Keep queries to 2-3 words maximum; use filters instead of adding more words
System types:
public_cloud (S/4HANA Cloud Public Edition): Only Level A Released APIs
btp (BTP ABAP Environment / Steampunk): Only Level A Released APIs (separate, smaller dataset)
private_cloud / on_premise: Levels A-D available, version-specific
Clean Core Levels (cumulative filter):
A: Released APIs only (ABAP Cloud, upgrade-safe)
B: + Classic APIs (upgrade-stable)
C: + Internal/unclassified objects
D: + noAPI objects (not Clean Core)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (1-100). Default: 25. | |
| query | Yes | Search string to match against object names (case-insensitive). Supports two search styles: 1) SAP technical names for exact/prefix matching: 'I_PRODUCT', 'CL_ABAP', 'MARA', 'BAPI_MATERIAL', '/SCWM/PACKING' 2) Natural language with SEPARATE WORDS for fuzzy matching across SAP abbreviations: 'purchase order', 'handling unit', 'physical inventory', 'delivery document' IMPORTANT: Prefer natural language with separate words when searching by business concept. SAP often abbreviates compound names (PHYSICALINVENTORY → PHYSINVTRY, PURCHASEORDER → PURCHORD). Separate words like 'physical inventory' will find BOTH I_PHYSICALINVENTORY* AND I_PHYSINVTRY* objects, while the concatenated form 'PHYSICALINVENTORY' only finds the first group. Keep queries to 2-3 words maximum and use app_component filter to narrow by functional area. | |
| state | No | Filter by specific object state. 'released' = Level A, publicly released APIs. 'deprecated' = Was released, now deprecated (usually has a successor). 'classicAPI' = Level B, classic but upgrade-stable. 'notToBeReleased' = Level C, internal object. 'noAPI' = Level D, not recommended. 'stable' = Level C, stable but without release contract. Leave empty to include all states within the selected Clean Core Level. | |
| offset | No | Number of results to skip for pagination. Default: 0. | |
| version | No | S/4HANA version for Private Cloud or On-Premise systems. Use 'latest' for the most recent version. Format: YEAR for base release, or YEAR_FPS where FPS is the Feature Pack Stack / SP number. IMPORTANT: '2022_1' = FPS01/SP01, '2023_3' = FPS03/SP03, etc. Always use the YEAR_N format when a specific SP/FPS is requested. Use sap_list_versions to see all currently available versions. Ignored for public_cloud and btp systems. Default: latest. | latest |
| object_type | No | Filter by TADIR object type (e.g., 'CLAS', 'DDLS', 'TABL'). Use the sap_list_object_types tool to discover all available types and their counts. Leave empty to search all types. | |
| system_type | No | SAP system type. 'public_cloud' = S/4HANA Cloud Public Edition (Level A Released APIs only). 'btp' = BTP ABAP Environment / Steampunk (Level A Released APIs only, separate dataset from public_cloud). 'private_cloud' = S/4HANA Cloud Private Edition (Levels A-D, version-specific files available). 'on_premise' = S/4HANA on-premise (Levels A-D, version-specific files available). Default: public_cloud. | public_cloud |
| app_component | No | Filter by SAP application component prefix (case-insensitive, partial match). Examples: 'MM-PUR' (Purchasing), 'FI-GL' (General Ledger), 'SD-SLS' (Sales), 'BC-SRV' (Basis Services), 'EWM' (Extended Warehouse Management). Leave empty to search all components. | |
| clean_core_level | No | Maximum Clean Core Level to include in results (cumulative). Replaces the 3-tier extensibility model since August 2025. Level A: Released APIs only (ABAP Cloud, fully upgrade-safe). Level B: + Classic APIs (upgrade-stable, governance recommended). Level C: + Internal/unclassified objects (manageable risk, consult changelog). Level D: + noAPI objects (not Clean Core, should be remediated). For public_cloud and btp systems, only Level A is available. Default: A. | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description confirms the read-only, idempotent nature (consistent with annotations), explains result pagination via limit/offset, and clarifies search behavior for different system types and clean core levels without contradicting any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and front-loaded purpose, but it is lengthy due to extensive tips and explanations; some redundancy could be trimmed without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers all necessary aspects: search behavior, pagination, filtering by multiple criteria, system type differences, and clean core levels; it is fully adequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 9 parameters have schema descriptions (100% coverage). The description adds significant extra context with search tips, system type meanings, and clean core level definitions, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it searches for SAP objects in the SAP Cloudification Repository, lists object types, and clearly distinguishes this search tool from sibling tools like sap_get_object_details which focus on details of specific objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides extensive search tips and behavior (natural language vs exact names, query length, singular forms) and explains system types and clean core levels. However, it does not explicitly state when to use alternatives like sap_get_object_details for post-search details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v1.14.0- First observed
sap_check_clean_core_compliance - First observed
sap_find_successor - First observed
sap_get_object_details - First observed
sap_get_statistics - First observed
sap_list_object_types - First observed
sap_list_versions - First observed
sap_search_objects
TDQS
Each tool has a clearly distinct purpose: listing versions, searching objects, getting details, finding successors, listing types, statistics, and compliance checking. No overlap.
All tool names follow a consistent 'sap_verb_noun' pattern (e.g., sap_list_versions, sap_search_objects). No deviations.
7 tools is an appropriate number for this domain, covering key operations without being excessive or insufficient.
The tool surface covers the full lifecycle of exploring and assessing SAP released objects: version discovery, search, detail, successor, types, statistics, and compliance. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Let AI agents query data and act across all your business apps via MCP.
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to securely connect with SAP ABAP and BTP services, allowing execution of function modules, BAPIs, table reads, and various BTP operations through MCP.1Apache 2.0
- FlicenseAqualityCmaintenanceEnables AI-driven analysis of SAP transport requests, including metadata retrieval, code diff analysis, and risk detection for ABAP objects.2-
- FlicenseAqualityCmaintenanceEnables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.424-
- FlicenseNot gradedqualityCmaintenanceConnects to SAP ABAP Development Tools (ADT) via MCP, enabling AI assistants to manage SAP systems through natural language.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ClementRingot/ROSA'
If you have feedback or need assistance with the MCP directory API, please join our Discord server