sap_analytics_cloud_mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAC_BASE_URL | Yes | Tenant root URL (no trailing slash) | |
| SAC_CLIENT_ID | Yes | OAuth Client ID | |
| SAC_TOKEN_URL | Yes | OAuth token endpoint | |
| SAC_CLIENT_SECRET | Yes | OAuth Client Secret |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Returns pong — useful for verifying connectivity |
| sac_stories_listA | List stories via GET /api/v1/stories. WARNING: This endpoint does NOT support OData filtering. All query parameters ($filter, $top, $orderby, etc.) are silently ignored by the SAC API — it always returns every story on the tenant (3000+). The response does NOT include an 'owner' field. Response fields per story: storyId, name, createdBy, changedBy (and optionally model metadata). TO FILTER STORIES BY USER OR TYPE use sac_filerepository_list instead, which supports real OData $filter on createdBy, modifiedBy, resourceType, createdTime, etc. |
| sac_stories_copyD | Copy a story. |
| sac_stories_renameC | Rename a story. |
| sac_stories_deleteB | Delete a story. |
| sac_metadata_getA | Get OData metadata document for the SAC REST API. |
| sac_resources_listA | List resources via GET /api/v1/Resources (OData v2, returns XML/Atom format — not recommended for filtering). Use sac_filerepository_list for JSON responses with working OData $filter support. |
| sac_resources_getC | Get a single resource by ID. |
| sac_filerepository_listA | List story types, enumerate content types, and filter file repository resources via GET /api/v1/filerepository/Resources. Use to list all story types (standard story, story template, analytic application), enumerate design experiences (Classic vs Optimized), or filter stories/apps by user, date, or type. OData $filter, $top, $orderby, $select, $count all work. IMPORTANT — visibility scope: By default (applyManagePrivilege=false), only content the service account has Read access to is returned (typically a small subset of tenant content). Set applyManagePrivilege=true to get ALL tenant content (all users' private folders, public folders, workspaces) — requires the service account to have the "Manage" permission for Private Files and Public Files. Always use applyManagePrivilege=true when the user wants to search/list across the whole tenant. Response fields: resourceId, objectId, name, description, resourceType, resourceSubtype, createdTime, createdBy, modifiedTime, modifiedBy, folderType, workspaceId, workspaceName, openURL, isMobile, isFeatured. Filterable fields: resourceType (values: STORY, APPLICATION, DATAACTION, PLANNINGSEQUENCE, MULTIACCOUNT, DIMENSION, ANALYTIC_MODEL), createdBy (exact username/ID), modifiedBy, createdTime, modifiedTime, name, folderType (PUBLIC, PRIVATE, SYSTEM, INPUT_SCHEDULE). STORY TYPES — resourceSubtype and objectId encoding: resourceSubtype="" (empty) → standard story (covers both Classic and Optimized design experience) resourceSubtype="TEMPLATE" → story template resourceSubtype="APPLICATION" → Analytic Application (scripted, code-based) Design experience is NOT in resourceSubtype — it is encoded in the objectId prefix: objectId prefix "t.D:" → Classic design experience (legacy) objectId prefix "t.B:" → Optimized design experience (recommended, newer) To list story types: $select=name,resourceSubtype,objectId and $orderby=resourceSubtype asc — groups stories by subtype and lets you read the objectId prefix for design experience. Filter examples: $filter=resourceType eq 'STORY' — all stories $filter=resourceType eq 'STORY' and createdBy eq 'USERNAME' — stories by a specific user $filter=resourceType eq 'STORY' and modifiedBy eq 'USERNAME' — stories last modified by user $filter=resourceType eq 'STORY' and createdTime gt 2024-01-01T00:00:00Z — recently created WORKSPACE / TEAM FILES: To list all workspaces (team files spaces), filter by folderType eq 'INPUT_SCHEDULE' and workspaceId ne null. This returns exactly one entry per workspace with its workspaceId and workspaceName. Example: $filter=folderType eq 'INPUT_SCHEDULE' and workspaceId ne null with $select=workspaceId,workspaceName and $orderby=workspaceName asc. |
| sac_repositories_listC | List repositories. Supports OData query params. |
| sac_widget_get_dataC | Get widget data from a story. |
| sac_export_list_namespacesA | List data export namespaces (sac, sac_currency_tables, sac_public_dimensions, sac_unit_conversion). |
| sac_export_get_namespaceC | Get namespace details. |
| sac_export_list_providersB | List data providers (models) in a namespace. |
| sac_export_list_subscriptionsA | List all data export subscriptions. |
| sac_export_get_subscriptionC | Get subscription by composite key. |
| sac_export_list_provider_subscriptionsC | List subscriptions for a provider. |
| sac_export_create_subscriptionB | Create data export subscription for delta tracking. |
| sac_export_delete_subscriptionB | Delete data export subscription(s). |
| sac_export_admin_metadataC | Get OData metadata for admin service. |
| sac_export_get_provider_metadataB | Get OData metadata (EDMX) for a provider. |
| sac_export_get_provider_entitiesC | List available entity sets for a provider. |
| sac_export_get_fact_dataC | Get fact data. Supports OData params, delta tracking (trackChanges/deltaid/externalid), CSV export. |
| sac_export_get_fact_data_aggregationA | Get aggregated fact data grouped by dimensions and measures. PREREQUISITE: call sac_import_get_model_metadata first to discover valid dimension and measure names for $select. Use $select for dims/measures. 'provider' is the model ID — resolve name→ID via sac_filerepository_list ($filter=name eq 'MODEL_NAME' and resourceType eq 'ANALYTIC_MODEL'). Namespace for analytic models is 'sac'. |
| sac_export_get_fact_data_differenceB | Get measure value differences over subscription period. Requires trackChanges or deltaid. |
| sac_export_get_master_dataB | Get master data and level-based hierarchies for all dimensions. |
| sac_export_get_dimension_masterC | Get master data for a single dimension ({DimensionName}Master entity set). |
| sac_export_get_dimension_master_hierarchyC | Get master data with parent-child hierarchy for a dimension. |
| sac_export_get_audit_dataB | Get audit data (change history). Requires Data Audit enabled on model. |
| sac_export_get_currency_tableC | Get currency conversion rates. Namespace: sac_currency_tables. |
| sac_export_get_conversion_ratesC | Get unit conversion rates. Namespace: sac_unit_conversion. |
| sac_export_get_public_dimension_dataB | Get public dimension master data. Namespace: sac_public_dimensions. |
| sac_export_get_dataC | Generic: get data from any provider entity set. For Distinct queries use '{col}___Distinct'. |
| sac_import_list_modelsA | List models available for data import. Does NOT support name filtering — returns all models. To find a model ID by name, use sac_filerepository_list with $filter=name eq 'MODEL_NAME' and resourceType eq 'ANALYTIC_MODEL' — the returned resourceId is the model ID. |
| sac_import_get_modelB | Get model import types, versions, settings, and metadata URL. |
| sac_import_get_model_metadataA | Get model dimension names, measure names and field types. Call this BEFORE sac_export_get_fact_data_aggregation to discover valid $select fields (e.g. PD_O_BusinessUnit, SignedData). Required whenever field names are unknown. Use when: aggregating fact data, exporting by dimension, querying model structure. |
| sac_import_create_jobC | Create import job for a model. Returns JobID/JobURL. |
| sac_import_list_jobsC | List all import jobs. |
| sac_import_upload_dataB | Upload data to an import job. Returns upserted/failed row counts. |
| sac_import_validate_jobB | Validate import job before running. |
| sac_import_run_jobC | Execute validated import job. |
| sac_import_get_job_statusB | Get job status: READY_FOR_DATA, READY_FOR_WRITE, PROCESSING, COMPLETED, FAILED. |
| sac_import_get_invalid_rowsB | Get rejected rows with rejection reasons. |
| sac_import_delete_jobC | Delete an import job. |
| sac_import_oneclickB | One-click: create job, upload, validate, run in one request. |
| sac_import_list_public_dimensionsA | List public dimensions available for import. |
| sac_import_get_public_dimensionB | Get public dimension import types and metadata URL. |
| sac_import_get_public_dimension_metadataB | Get public dimension metadata: columns, types, keys. |
| sac_import_create_public_dimension_jobB | Create import job for a public dimension. |
| sac_import_list_currency_conversionsC | List currency conversion tables for import. |
| sac_import_get_currency_conversionC | Get currency conversion import types and settings. |
| sac_import_get_currency_conversion_metadataB | Get currency conversion metadata: columns, types, keys. |
| sac_import_create_currency_conversion_jobB | Create import job for a currency conversion table. |
| sac_import_list_unit_conversionsC | List unit conversion tables for import. |
| sac_import_get_unit_conversionC | Get unit conversion import types and settings. |
| sac_import_get_unit_conversion_metadataA | Get unit conversion metadata: columns, types, keys. |
| sac_import_create_unit_conversion_jobC | Create import job for a unit conversion table. |
| sac_multi_action_executeB | Execute a multi action. ID format: :. Body requires parameterValues array (empty if none). |
| sac_multi_action_get_statusC | Get execution status of a multi action. |
| sac_calendar_get_eventB | Get a calendar event by ID. |
| sac_calendar_update_eventC | Update a calendar event (partial). |
| sac_calendar_copy_eventC | Copy/create a calendar event. |
| sac_transport_create_export_jobC | Create a content transport export job. |
| sac_transport_get_job_statusB | Get content transport job status. |
| sac_transport_create_import_jobC | Create a content transport import job. |
| sac_transport_delete_contentC | Delete a content item. |
| sac_transport_get_content_itemB | Get content item details within a wave. |
| sac_transport_get_permissionsB | Get permissions for a content item. |
| sac_transport_move_itemC | Move a content item to a target location. |
| sac_users_listC | List users (SCIM v2). |
| sac_users_getA | Get a user by UUID. |
| sac_users_createB | Create a user (SCIM v2). |
| sac_users_updateB | Full replace of a user (SCIM v2 PUT). |
| sac_users_patchC | Partial update of a user (SCIM v2 PATCH). |
| sac_users_deleteC | Delete a user. |
| sac_teams_listA | List user security groups via SCIM v2 (/api/v1/scim2/Groups). Returns groups used for role assignments and access control (e.g. T_SALES, T_HR). These are identity/authorization groups, not file storage folders. |
| sac_teams_createB | Create a team/group (SCIM v2). |
| sac_teams_patchB | Partial update of a team/group (SCIM v2 PATCH). |
| sac_users_bulkB | Bulk SCIM operations (create/update/delete multiple users/groups). |
| sac_audit_exportC | Export audit activity logs with OData query params. |
| sac_monitoring_getC | Get monitoring data for a model. |
| sac_schedule_get_templateB | Get schedule creation template with defaults. |
| sac_schedule_createC | Create a publication schedule. |
| sac_schedule_updateC | Update a publication schedule (partial). |
| sac_schedule_deleteB | Delete a publication schedule. |
| sac_translation_list_artifactsC | List translatable artifacts. |
| sac_translation_get_artifactC | Get metadata for a translatable artifact. |
| sac_translation_download_xliffB | Download XLIFF translation file for an artifact. |
| sac_translation_download_xliff_bulkC | Download XLIFF files for multiple artifacts. |
| smart_queryB | Execute a SQL-like query against SAC. Auto-selects OData vs Widget Query based on query type. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| explore_content | |
| analyze_story | |
| system_health_check | |
| audit_user_activity |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| server-info |
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/JumenEngels/sap_analytics_cloud_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server