SAP Cloud Application Programming Model
Capabilities
Entries
CAP integration with SAP Integration Suite advanced event mesh
Not as a gateway or proxy for SAP Application APIs: capire's guide states that CAP-level agents are intended only for exposing custom CAP application services and are not an SAP-endorsed architecture or pathway for agentic access to those APIs, and sends the reader to the SAP Architecture Center for the endorsed routes. Not as the screen a user of the application talks to, either — the chat preview in the generic index.html page is marked experimental and for local development.
CDS plugin for building agents inside a CAP service
Value-help recommendations and SAP AI Core as a CAP service
Exports AsyncAPI documents for a CAP service's events
CAP Node.js attachments with database, S3, Azure or GCP storage
CAP integration with the SAP Audit Log service
Generates Helm charts for the CAP Operator on Kubernetes
Test support for CAP Node.js: server start, HTTP client, assertions
Generates TypeScript types from a CDS model
Type definitions for the CAP Node.js SDK
Change history for annotated CAP entities
Connects a running CAP application to the CAP console
Inspects database entities and contents at CAP service level
CAP integration with SAP Data Privacy Integration
Base service shared by CAP's SQLite, PostgreSQL and HANA services
Consumes events from SAP Cloud Application Event Hub in CAP
GraphQL protocol adapter generated from the CDS model
SAP HANA database service for CAP
SAP prohibits gateway/proxy use for SAP Application APIs; the Atlas applies that prohibition to CAP wrappers around those APIs. Data changes require application-defined unbound actions, and the adapter supplies no rate limiting, agent-action audit logging, approval workflows or policy enforcement. In beta, with nine releases in the six weeks after the first, so pin it.
Exposes CAP services as MCP servers for AI agents
The tools are documented as meant for AI models and not a stable API, so anything built to parse `cds-mcp` output rather than to feed a model can break between releases. Its corpus is the CAP documentation, so Fiori elements, BTP service or ABAP questions are not in what `search_docs` indexes.
MCP server for CAP development: model and docs search
Triggers n8n workflows from a CAP application
Business notifications from CAP to SAP Build WorkZone
Generates OpenAPI documents from a CDS service
Generates Open Resource Discovery documents from a CAP model
PostgreSQL database service for CAP
Prints documents held in CAP entities through SAP Print service
Starts and manages SAP Build Process Automation processes from CAP
If document versions are required, [@cap-js/sdm](artifact:cap-js-sdm) excludes versioned repositories in its [documented restrictions](https://raw.githubusercontent.com/cap-js/sdm/ad13b61f21816ebead2d08264a74521cfb75846c/README.md).
CAP attachments stored in an SAP Document Management repository
SQLite database service for CAP, in memory during development
OpenTelemetry instrumentation for CAP services
When your adoption policy excludes experimental dependencies: the [maintainer’s README](https://github.com/cap-js/cds-federation-synonyms#about-this-project) explicitly labels this plugin experimental.
CAP-to-CAP data federation over SAP HANA synonyms
SAP CDS language support for IntelliJ IDEA
GitHub Action setting up the Cloud Foundry CLI
Monorepo of CAP's SQL database services
Details
History
- @cap-js/agentsThe page carried only an index line while capire's CAP-level Agents guide documents the whole surface. Written from that guide re-read on 2026-10-15: the generated tools and ReAct loop, the AGENTS.md and SKILL.md route, @agent.hitl, the database-backed short-term memory, the quotas, the optional audit-logging and telemetry packages, subagents over A2A and the three LLM kinds. when_not_to_use carries the guide's own caution that CAP-level agents are not an SAP-endorsed pathway for agentic access to SAP Application APIs, and that the chat preview is experimental and for local development.
- @cap-js/agentscapability:agent-tooling declared four comparison properties on 2026-10-15 beside the existing protocols property. All five values are answered from the guide re-read the same day and scoped to the node flavor, the only one this plugin states: the plugin serves the agent itself, the harness underneath is named as LangChain or Pi, it serves A2A and generates MCP tools, short-term memory is in the connected primary database, and @agent.hitl requires human approval before an action runs.
- @cap-js/agentsHow the agent reaches a model was nowhere on the entry, while the Java module of the same plugin already carried the edge. capire's configuration table states that aicore is the default for the production and hybrid profiles and connects to SAP AI Core, with auto and mock as the development kinds, so the requirement is conditional and the condition names the alternatives.
- @cap-js/aicapability:llm-integration declared two comparison properties on 2026-10-15. This one is answered from the README's own opening line, re-read the same day, and from the sentence that names the binding a production deployment needs. The second property, response_streaming, is left absent: the README says nothing about streaming, and absent is not no.
- @cap-js/aiRe-read for the capability's impact assessment. The page still carries the claim, now in a longer sentence that also names the automatic service-binding resolution and the tenant-aware resource groups and deployments the coverage paragraph leans on, so the quote is the full sentence and the date is today's.
- @cap-js/telemetryTelemetry curation for the CAP door. The entry carried no paragraph and no property values, so the capability's comparison had nothing from the runtime's own answer on Node.js. Read against the README at commit e97874b, the 2.1.0 release, and capire's plugins page.
- @cap-js/mcpGenerated tools invoke service queries and unbound operations; service-contract selection and custom instructions are documented, and the SAP Application API gateway/proxy restriction remains explicit.
- @cap-js/mcpGenerated tools invoke service queries and unbound operations; service-contract selection and custom instructions are documented, and the SAP Application API gateway/proxy restriction remains explicit.
- @cap-js/mcpConverts the text answer to controlled list values. Its documented conditions remain in the capability relationship; original citations and runtime scope are retained.
- @cap-js/mcpConverts the text answer to controlled list values. Its documented conditions remain in the capability relationship; original citations and runtime scope are retained.
- @cap-js/mcpConverts the text answer to controlled list values. Its documented conditions remain in the capability relationship; original citations and runtime scope are retained.
- @cap-js/mcpConverts the text answer to controlled list values. Its documented conditions remain in the capability relationship; original citations and runtime scope are retained.
- @cap-js/mcpBackfills the previously unrecorded staged expansion: describe-tool context, generic/custom server instructions, dedicated service projections/actions, and service execution without direct CRUD tools. These facts were already in the staged paragraph and cited CAP documentation; this history repair does not introduce additional implementation claims.
- @cap-js/mcpPlaces the published SAP gateway/proxy restriction in selection guidance and labels the CAP-wrapper exclusion as the Atlas assessment boundary accepted in ADR-0066; it is not presented as a separate publisher statement.
- @cap-js/mcpMoves the gateway/proxy selection restriction to description.when_not_to_use and retains the service-execution, operation and context facts on the contribution. Structured values and runtime scopes remain unchanged; the implementation restriction remains on the artifact under accepted ADR-0066.
- @cap-js/mcpIndependent review found that a separately introduced Atlas scope exclusion misstates ADR-0066. The decision records the wrapper case as covered by SAP’s gateway/proxy prohibition; the wording now identifies that decision without attributing an explicit wrapper sentence to SAP’s guide.
- @cap-js/mcpThe maintainer explicitly approved this public wording after independent review. Keeps the accepted ADR-0066 application of the SAP gateway/proxy prohibition in history, removes the internal decision identifier from reader-facing prose, and preserves all implementation restrictions.
- @cap-js/attachmentsThe README names the scan and the HTTP 429 the service answers with, so the connection lands on the scan API SAP Malware Scanning service states (CONCEPT-005 §3.3, decision 10); the Object Store edge stays at the box, since the README says a bound instance and no more.
- cf-setupA GitHub Action runs in a pipeline; it is what ci-cd is about, and deployment is what the pipeline does with it. Filed under deployment before ci-cd reached the CAP door.
- @cap-js/aiThe second reader's follow-up: the condition had dropped the README's qualifier, 'for UI smoke tests', and read as never needed outside production. The README's test section names the binding for this repository's own integration tests, which is a contributor's setup and not a requirement of an application using the plugin, so it is not a condition here.
- @cap-js/hanaThe database service had no edge to the database it serves, which left the CAP-native way of answer-a-question-from-records-in-a-cap-service without an edge between its parts. From capire's HANA guide, quoted: the standard database for production, added as this package, reached through the hdb driver and a binding.
- @cap-js/hanaThe second reader's follow-ups on the edges accepted 2026-09-23: the driver sentence supports edges to hdb and, once added, @sap/hana-client, and carries the connection's via; the requirement on the database is conditional, as the Java sibling records it, because the guide puts the HANA configuration behind a profile and SQLite is the development default; the runtime's own README states the runtime; the one_line names the sibling database services and links them as such; the connection's via carries the override as its condition.
- @cap-js/ainpm run check:usecases listed the path of answer-a-question-from-records-in-a-cap-service this entry is a part of with no edge between its parts. The README names the runtime with a version range, quoted now. The second reader also named the README's conditional requirement on SAP AI Core for the recommendations in production, which had no edge; it has one now.
- @cap-js/attachmentsThe second reader read the connects batch of 2026-09-19 on 2026-09-22, after its acceptance, and found: the connection to the malware scanner carried no condition while the requires edge beside it and the README both state one.
- @cap-js/audit-loggingThe second reader read the connects batch of 2026-09-19 on 2026-09-22, after its acceptance, and found: the README states the service as the shipped integration and an own store as an alternative, and both edges asserted it as fixed; the bare requires is now object form, conditional, with the two sentences quoted.
- @cap-js/printThe old line was the repository's own description of what SAP Print service does, entered as the plugin's. The README says the plugin integrates with that service and requires a subscription to it; the queues and the reach to the printers are the service's.
- @cap-js/printThe page carried no answer to what the plugin does. Written from the README at commit 74cb8f7: the annotation and what it generates, the model requirement, the subscription, the local mock and the manual route.
- @cap-js/printThe README states the subscription requirement plainly and package.json binds a vcap service labelled print, but neither edge existed, so the service the plugin cannot print without was invisible from its page. SAP Print service entered the graph on 2026-09-15, after this entry was written.
- @cap-js/printpackage.json declares @sap/cds >= 9 as a peer dependency and a subscriptionDependency on uaa; the changelog records multitenancy support added in 0.2.0. Declared by the maintainer, not verified here.
- @cap-js/printThe edge carried no statement of what the plugin contributes to the capability, and nothing to check it against.
- @cap-js/printThe changelog dates two moves in the plugin's own answer: multitenancy and draft-enabled entities in 0.2.0, translated labels in 0.2.1. Without them nothing said whether a piece written in 2025 predates either.
- @cap-js/aicapire's CAP-native Embeddings guide names this plugin as what makes the standard sqlite database produce semantic embeddings locally, and the README lists local vector embeddings as one of its features. The declared scope travels with the edge rather than being dropped from it: the README calls the facility experimental and sends production vector workloads to SAP HANA's vector engine.
- @cap-js/aiThe line named two of the README's three features. The third is why the package now appears as an option on retrieval-augmented generation, so leaving it out of the index line would have made the option look unexplained.
- @cap-js/aicapire states the version range the local embeddings need, @sap/cds ^10.1 and @cap-js/sqlite ^3.1. The database plugin is the one of the two that is an edge; the runtime range belongs to the plugin's own manifest, which was not read here.
- @cap-js/cds-dbsThe repository's README titles itself 'Welcome to the @cap-js/cds-dbs Monorepo', and that scope is not on npm — a request for @cap-js/cds-dbs returns 404. The bare name is taken: npm's cds-dbs is one release, 1.3.1 of 2024-12-10, published by cosmo83 (arava@sat-infotech.com) with the description 'This is a monorepo for our SQL Database Services.' copied from this README. Because the crawler resolves a package by the entry's name, that stranger's record is what data/crawled/health.json carries for this artifact today: latest_version 1.3.1, one release, four weekly downloads, one maintainer and a 'SEE LICENSE' licence, beside GitHub facts read from cap-js/cds-dbs. The repository's own name ends the mis-join.
- @cap-js/cds-dbsThe monorepo is not an option anyone adds to a project. Its README states what is: 'Each of the subfolders is published as individual npm module', and 'In general, all you need to do is to install one of the database packages, as follows:'. The four packages carry the capability edge; the repository listed beside them made five options out of four. It stays a node — the four now point up at it with part_of.
- @cap-js/cds-dbsThe page led with a one-line index entry and nothing that said the root installs nothing. Written from the repository README, re-read 2026-09-20.
- @cap-js/db-serviceThe link named the root of a monorepo, so every crawl read the repository README — 'This is a monorepo for our SQL Database Services' — and filed it as this package's own: data/crawled/readmes/cap-js-db-service.md is that root README today. npm declares the directory as 'main/db-service', which the crawler cannot use as a path, so the subfolder URL is where it has to come from.
- @cap-js/db-serviceThe entry named no registry page, so the only address it offered was a repository it shares with three other packages.
- @cap-js/db-serviceThe repository's README states the relation: the four subfolders are parts of one monorepo, each published on its own.
- @cap-js/db-serviceRe-read on the package's own README in the repository — the document the subfolder link now resolves to — which carries the second sentence about forming the core of all supported databases as well.
- @cap-js/hanaThe link named the root of a monorepo, so every crawl read the repository README — 'This is a monorepo for our SQL Database Services' — and filed it as this package's own: data/crawled/readmes/cap-js-hana.md is that root README today. npm's record for @cap-js/hana declares no repository directory, so the subfolder URL is the only place it can come from.
- @cap-js/hanaThe entry named no registry page, so the only address it offered was a repository it shares with three other packages.
- @cap-js/hanaThe repository's README states the relation: the four subfolders are parts of one monorepo, each published on its own.
- @cap-js/hanaSame sentence, re-read on the package's own README in the repository — the document the subfolder link now resolves to.
- @cap-js/postgresThe link named the root of a monorepo, so every crawl read the repository README — 'This is a monorepo for our SQL Database Services' — and filed it as this package's own: data/crawled/readmes/cap-js-postgres.md is that root README today, even though the flavor already cited the postgres subfolder. npm's record for @cap-js/postgres declares no repository directory, so the subfolder URL is the only place it can come from.
- @cap-js/postgresThe entry named no registry page, so the only address it offered was a repository it shares with three other packages.
- @cap-js/postgresThe repository's README states the relation: the four subfolders are parts of one monorepo, each published on its own.
- @cap-js/sqliteThe link named the root of a monorepo, so every crawl read the repository README — 'This is a monorepo for our SQL Database Services' — and filed it as this package's own: data/crawled/readmes/cap-js-sqlite.md is that root README today. npm's record for @cap-js/sqlite declares no repository directory, so the subfolder URL is the only place it can come from, and it is the form the corpus already uses for a package inside a monorepo.
- @cap-js/sqliteThe entry named no registry page, so the only address it offered was a repository it shares with three other packages.
- @cap-js/sqliteThe repository's README states the relation: the four subfolders are parts of one monorepo, each published on its own.
- @cap-js/sqliteThe flavor rested on an install line in the monorepo's README. The package's own README says it in a sentence, and that is the document the repository link now resolves to.
- @cap-js/advanced-event-meshThe plugin had no edge to the service it integrates. From its README: the broker it connects to, the trust in Cloud Identity Services that connection presupposes, the token it fetches there, and the binding to the validation plan it states as a must.
- @cap-js/advanced-event-meshThe README states the binding as a must, to the plan `aem-validation-service`; the second reader named the missing edge.
- @cap-js/attachments@cap-js/attachments required both services; the connections say what is sent to each, and that the scanner is spoken to over HTTP.
- @cap-js/audit-loggingThe plugin required the Audit Log service and said nothing of what passes between them.
- @cap-js/telemetry@cap-js/telemetry names SAP Cloud Logging as one of its predefined export targets, and the graph had no edge between the two.
- @cap-js/attachmentsRefresh storage and upload boundaries from the pinned README; make storage and scanning prerequisites conditional.
- @cap-js/sdmDocument non-versioned repository scope and non-draft support. README contradicts itself on file size (100 MB versus uploads above 400 MB); no file-size value asserted.
- cds-federation-synonymsRetrieved the maintainer README on 2026-09-17: “This plugin is still experimental.” Record its declared status as conditional adoption guidance without inferring a production prohibition.
- @cap-js/agentsPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/attachmentsPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/audit-loggingPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/cds-dbsTyped cds-plugin by placement, which defaults every candidate to that. It is not one.
- @cap-js/cds-dbsPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/data-privacyPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/db-serviceTyped cds-plugin by placement, which defaults every candidate to that. It is not one.
- @cap-js/db-servicePlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/graphqlPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/hanaPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/notificationsPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/openapiPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/postgresPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/sdmPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- @cap-js/sqlitePlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- cds-federation-synonymsPlacement copied the package's own npm description. Replaced with a line written for this graph — what it does and where it sits — because an unattributed sentence is an unattributed claim.
- First entry seenDiscovered via npm registry, capire · plugins, The discovery pass, GitHub API · cap-js, capire, GitHub API.
Profile
For your agent
- Ref
actor:cap-js- JSON
- /actors/cap-js.json
- MCP
- Connecting an agent