Let your AI ask SAP. Keep every answer on the record.
QSAP sits between AI assistants and SAP S/4HANA Cloud. People sign in with single sign-on, see only what their SAP authorisations allow, and every call is written to a tamper-evident audit trail. It calls SAP's released OData APIs directly, so there is no Integration Suite message metering in the AI path.
Built by Quantana for manufacturers on S/4HANA Cloud and SAP BTP.
-
list_open_work_ordersokprev 9f3a…c21ehash 1b7e…04d9
-
check_order_shortagesokprev 1b7e…04d9hash 6c02…a7f3
-
check_order_shortagesokprev 6c02…a7f3hash d41b…3e80
-
list_open_work_ordersdeniedprev d41b…3e80hash 82aa…f115
Chain verified: no record altered or removed
AI on SAP is easy to demo and hard to approve.
Integration Suite metering adds up
Route chatty AI traffic through Cloud Integration and every lookup becomes a billable message. An assistant that asks five follow-up questions costs five times as much as a report that runs once.
Governance has no answer for "who asked?"
A shared technical user lets a model read everything that user can read. Auditors want to know which person saw which data, under which authorisation, and whether the log could have been edited.
Raw OData is heavy for a model
An unfiltered entity set returns dozens of fields, metadata blocks and deferred links per row. The model pays to read all of it and answers no better for it.
How it works
QSAP is a Model Context Protocol (MCP) server. Your AI assistant connects to it like any other tool. QSAP holds the SAP connection, checks every request, and calls SAP's released APIs as the signed-in person.
Sign in once
Users authenticate through your identity provider when they first connect their assistant. QSAP never sees a SAP password.
Policy before SAP
Role groups decide which tools and plants each person can use. Denied requests stop here and are still recorded.
Call SAP as the person
With OAuth 2.0 SAML Bearer principal propagation, SAP sees the real user and enforces their own authorisations.
Answer compactly, log permanently
Responses are trimmed to the fields that matter, and the call is appended to a hash-chained audit trail.
Security and governance your auditors can check
QSAP follows SAP's guidance for third-party MCP servers and its API policy: use released APIs only, authenticate and authorise every call, and respect rate limits.
- Single sign-on
- Users sign in through your identity provider, such as SAP Cloud Identity Services. Sessions are short-lived and tied to that identity.
- Per-user SAP authorisation
- Choose principal propagation with OAuth 2.0 SAML Bearer, so SAP authorises each person, or an administrator-chosen technical user with QSAP enforcing per-user policy.
- Role and plant policy
- Map identity groups to the tools and plants they may use. A plant manager sees plant 1710; a viewer can check stock and nothing else.
- Tamper-evident audit trail
- Every call is stored with the person, tool, SAP request, status and timing. Each record carries the hash of the one before it, so edits and deletions show up when the chain is verified in the audit viewer.
- Released APIs only
- QSAP uses a fixed set of released OData APIs with field projection and capped result sizes. There is no generic query tool for a model to misuse.
- Guarded inputs and rate limits
- Arguments are validated before any SAP call, filter values are escaped, and each user has a call budget per minute.
The model reads what it needs and nothing more
Fewer tokens per answer means lower model cost and less room for the model to get lost. QSAP gets there four ways.
- Field projection. Every SAP call asks only for the fields a tool needs.
- Response shaping. OData envelopes, metadata and deferred links are stripped before the model sees anything.
- Authorisation-aware caching. Repeat questions are served from a short-lived cache keyed by the user's identity and roles, so one person's results never leak to another.
- Summary, then detail. Tools come in tiers: list the open orders first, fetch the full record only for the ones that matter.
{"d":{"results":[{"__metadata":{"id":"…/A_ProductionOrder_2('1000231')",
"uri":"…","type":"API_PRODUCTION_ORDER_2_SRV.A_ProductionOrder_2Type"},
"ManufacturingOrder":"1000231","ManufacturingOrderCategory":"10",
"ManufacturingOrderType":"YBM1","OrderIsCreated":"","OrderIsReleased":"X",
"OrderIsPrinted":"","OrderIsConfirmed":"","OrderIsPartiallyConfirmed":"",
"OrderIsDelivered":"","OrderIsDeleted":"","OrderIsPreCosted":"X",
"MfgOrderCreationDate":"\/Date(1790380800000)\/", … 80 more fields,
"to_ProductionOrderComponent":{"__deferred":{"uri":"…"}}, …
{"id":"1000231","material":"FG-DIV-200","status":"released",
"short":[{"component":"CART-35","need":40,"available":12}]}
Benchmark coming: a reproducible comparison against a pass-through integration, run on the same questions and data, with the method published alongside the results.
A planner's question, answered in one turn
The assistant picks the tools, QSAP checks the planner's role and runs the calls, and the answer arrives with the order numbers a planner can act on. Illustrative example on demo data for a bath-fittings manufacturer.
Production planner
Which production orders in plant 1710 are short of components?
list_open_work_orders plant 1710, 6 released orders
check_order_shortages run for each of the 6 orders
Assistant
Two of the six released orders in plant 1710 are short:
| Order | Product | Short component | Need | Available |
|---|---|---|---|---|
| 1000231 | Diverter, 3-way | Ceramic cartridge 35 mm | 40 | 12 |
| 1000237 | Basin mixer | Aerator M24 | 150 | 90 |
The other four orders have full component cover. Want me to check the cartridge stock in plant 1720?
Runs where your SAP landscape already lives
QSAP is a single service with a small footprint. Your data travels between SAP, QSAP and the model provider you choose, and the audit trail stays in your environment.
| Option | Good fit when | Notes |
|---|---|---|
| SAP BTP, Cloud Foundry | You already run extensions on BTP | Deployed into your subaccount next to your other BTP apps |
| SAP BTP, Kyma runtime | Your team standardises on Kubernetes within BTP | Shipped as a container image |
| Your own container platform | You prefer your own cloud or data centre | Docker image with automatic TLS; any Kubernetes cluster or VM |
What's next
The same tools, policy and audit trail, opened up to more people and more ways of working.
- Coming
QSAP Portal
A web chat for people without an AI assistant licence. Bring your own model key through OpenRouter and use any supported model, with the same SSO, policy and audit.
- Coming
Dashboards
Save the answers you ask for every week as dashboards that refresh from SAP.
- Coming
Report downloads
Export any answer as CSV, Excel or PDF, with the audit reference attached.
- Coming
Published token benchmark
A reproducible comparison against a pass-through integration, method included.
Questions IT leaders ask
How does QSAP affect our SAP licensing?
QSAP works within your existing SAP user licensing: each request runs as a named SAP user or as a technical user your administrator chooses. Commercial terms differ between contracts, so validate how AI-driven access is treated with your SAP account team.
Where does our data go?
QSAP runs in your BTP subaccount or your own infrastructure, so you choose the region. SAP data passes from SAP to QSAP and then to the model provider your users connect with. The audit trail is stored where QSAP is deployed. Pick a model provider and region that meet your data-residency rules.
Which SAP versions does it support?
QSAP is built for SAP S/4HANA Cloud and its released OData APIs, including stock, production orders, bills of material and sales orders. If you run S/4HANA Cloud Private Edition or on-premise with the same released APIs exposed, talk to us about your landscape.
Do we need SAP Integration Suite?
Not for QSAP. It calls released APIs directly, so AI traffic does not consume Integration Suite messages. Your existing integrations can keep running on Integration Suite as they do today.
Can the AI change data in SAP?
No. Today's tools are read-only. Any future write action will go through the same policy and audit trail and will need explicit approval.
Which AI assistants work with it?
Any client that supports the Model Context Protocol, such as Claude. The upcoming portal will let teams use other models with their own OpenRouter key.