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 |
Capabilities
Features and capabilities supported by this server
| 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
- 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