CDS pluginCDS plugintypeInstalls into a CAP project and extends the runtime. CAP loads it through cds.requires or the plugin hook.See every one →What this type is →by SAPby SAPoriginPublished by SAP itself. A visible facet, never an input to a reading — a dormant official plugin reads exactly like a dormant independent one.See every one →

@cap-js/agents

SAP's own CDS plugin for building agents inside a CAP service, wired to audit logging and telemetry through peer dependencies rather than leaving observability to the author.

@agent on a service definition is the whole setup: the plugin generates MCP tools from that service's entities and actions, runs a ReAct loop over them and serves the result over A2A, with LangChain or Pi as the harness underneath. An AGENTS.md next to the service definition takes over from that generated agent — its frontmatter populates the agent card and its body is the system prompt — and SKILL.md files under a skills folder carry one workflow each, so what the agent is gets written in Markdown instead of in handlers. Around that sit the parts an application would otherwise build itself: @agent.hitl holds an action in A2A's input-required state until a person approves it, short-term memory goes to the connected primary database so a conversation survives a restart, quotas cap concurrent tasks, tasks per hour, tool calls and tokens per tenant and per user, and audit events and OpenTelemetry metrics appear when @cap-js/audit-logging and @cap-js/telemetry are installed. An @agent-ified service imported from another CAP project is reached as a subagent over A2A, so one agent can delegate to others. In the development profile the plugin fetches model credentials from a local Claude Code or OpenCode installation; the aicore kind, which is the default for production and hybrid, connects to SAP AI Core.

Facts

Latestv0.9.9ReleasedLast pushLicenceApache-2.0

Where it sits

Lives in
Provides
Agent toolingCAPAgent toolingcapabilityBuilding an agent into your own application — the tools it may call, the state it keeps between turns, and the framework it runs in. Distinct from MCP servers, which expose an application to somebody else's agent, and from agent guidance, which is knowledge handed to a coding agent.
Flavors
Requires
@sap/cds≥ 9@sap/cdsartifactThe peer range, as published.
Optional
SAP AI CoreSAP AI CoreartifactThe model the agent calls on each turn of its loop, reached through an SAP AI Core service instance.llm provider

Who is behind it

SAP Cloud Application Programming ModelSAP Cloud Application Programming ModelOrganisationMaintains this
In the atlas: maintains 34
@cap-js
maintainerJohannes VogtPersonContributes to this
In the atlas: maintains 1, contributes to 28, wrote 10
@Akatuoro
AnjanPersonContributes to this
In the atlas: contributes to 7
@anjan-poonacha
Daniel HutzelPersonContributes to this
In the atlas: contributes to 32, wrote 3
@danjoa
Guilherme DellagustinPersonContributes to this
In the atlas: contributes to 27
@dellagustin-sap
Julian BreukschPersonContributes to this
In the atlas: contributes to 3
@ignipae
Johannes VogelPersonContributes to this
In the atlas: contributes to 25
@johannes-vogel
Lisa Julia NebelPersonContributes to this
In the atlas: contributes to 15
@lisajulia
madankumarpichamuthuPersonContributes to this
In the atlas: contributes to 2
@madankumarpichamuthu
Maximilian EckertPersonContributes to this
In the atlas: contributes to 4
@maxieckert-sap
Marten SchiwekPersonContributes to this
In the atlas: contributes to 16
@schiwekM
15 contributors

Before choosing this

Conditions

LicenceSAP Developer License Agreement 3.2 CAP§ 1, 2, 3A cds-plugin is used with SAP CAP materials, or an artifact is explicitly identified as a CAP plugin or application.
  • § 1 License. Productive customer applications are limited to SAP BTP or another SAP-licensed platform, and mass extraction to a non-SAP product is restricted except where solely required for SAP interoperability.
  • § 2 Intellectual Property. The agreement retains SAP's rights in the covered materials and limits making APIs, tools or software available to third parties, while preserving ownership of customer applications subject to SAP's underlying rights.
  • § 3 Artificial Intelligence Training. The agreement prohibits use of the covered materials and customer applications for training artificial-intelligence models or systems.
SAP Developer License Agreement 3.2 CAP →
PracticalFunctional boundary

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.

PolicySAP API Policy 4.2026a§ 2.2.2from Agent toolingAn agent built into an application reaches SAP Application APIs, whether directly or through tools generated from a service that proxies them.
  • § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.

capire's own guide states that CAP-level agents are intended only for exposing custom CAP application services, and names section 2.2.2 for the agentic-access provisions. Check which endpoints the agent's tools end up calling, and consult SAP's reference architectures for the endorsed routes.

SAP API Policy 4.2026a →

What it declares

Every artifact

Type
CDS plugin
Origin
By SAP

As a CDS plugin

Declared for
>=9
Distributed through
does not say

For agent tooling

Between turns
Approval before an action
What it brings
Agent served from the service
Agent framework
LangChainPi
Protocols
A2AMCP
Where state is kept
In the application database
property statedstated nonot said

Tasks this contributes to8Beta

Answer a user's question inside the applicationSomeone using the application asks in plain words and the application answers from its own services, with the agent running inside the deployed application rather than in the asker's own AI client.Node.js, JavaCoversagent harness in the service
What it does

@agent on the service definition is the whole setup: the plugin generates MCP tools from that service's entities and actions, runs a ReAct loop over them and serves the result over A2A. capire's own walk shows the two halves of this outcome — asked to list books the agent calls the generated describe and query tools, and asked to order one it calls the service's action through the call tool. An AGENTS.md next to the service definition replaces the generated agent with one built from the directory, which is the route to take when the answer has to follow written instructions rather than whatever the model infers from the model.

Remaining work

Decide which service the agent is put on and what its projection exposes, since the tools come from that model. Configure a model: the development profile reads credentials from a local Claude Code or OpenCode installation, and production and hybrid use the aicore kind against SAP AI Core. Where the answer has to be deterministic, the AGENTS.md and the skill files are the project's to write.

All options on the Agent tooling page →
Give the agent a chat screen in the applicationA user of the application opens a screen in it and talks to the agent there, instead of reaching it from a separate AI client or over HTTP by hand.Covers, under conditionsthe preview the plugin itself serves
What it does

The plugin puts a chat preview in the generic index.html page, next to each A2A endpoint, and capire's walk uses it to ask the bookshop agent to list books and to order one. capire marks it Alpha in the heading and calls it rudimentary and experimental in the sentence under it.

Conditions

Local development: capire states the preview can be used in local development, and marks it experimental.

Remaining work

A screen for anyone other than the developer running cds watch is the project's own, or another option's. Nothing retrieved says the preview is served outside the development profile.

All options on the Agent tooling page →
Keep a conversation after the server restartsA conversation with the agent survives a restart, and a follow-up that lands on another instance carries on where the last one left off instead of starting again.Node.js, JavaCoversshort-term memory in the primary database
What it does

The harness keeps the conversation's short-term memory in the database the application is already connected to — SQLite in local development, SAP HANA in production — so conversational context and workflow checkpoints are written where the application's own data is. capire states this is what lets an agent resume a session after a server restart, and names clustered environments in the same sentence.

Remaining work

Nothing is installed for it; what remains is the deployment the claim depends on, a database the instances share rather than a local file, and a decision about how long a stored conversation is kept.

All options on the Agent tooling page →
Recall a user's preference in a later conversationSomething the agent was told or worked out in one conversation is available in the next one, so a returning user does not state their preferences again.Stated not supportedagent harness in the service
What it does

capire lists agent memory across sessions among the features it says it is working on and plans to release in the near future, and its persistence section covers short-term memory only: conversational state and checkpoints in the connected primary database, for context across interactions within a session.

Remaining work

What an agent recalls from an earlier conversation is the application's own to model, write and hand back to the agent, or another option's.

All options on the Agent tooling page →
Require a person's approval before the agent actsBefore the agent runs an action that changes something, the task stops and waits for a person to approve or reject it, and carries on from there.Node.js, JavaCoversthe gate itself
What it does

@agent.hitl on a CDS action is the whole declaration. When the agent decides to call that action the task pauses and moves to A2A's input-required state instead of running it, and the plugin emits an AgentInputRequired audit event when the agent asks and an AgentTaskResumed one when the approval or rejection comes back. The same mechanism carries the execution-time quota: on a timeout the graph interrupts rather than failing and asks through the gate whether to continue, with a summary of the progress so far.

Remaining work

Annotate the actions that need it, and handle the input-required state in whatever talks to the agent — the pause is served over A2A, so the approving client is the project's. Nothing here decides who may approve.

All options on the Agent tooling page →
Catch a change in what the application's AI feature answersA model, prompt or schema change is caught before it ships, by sending the application's own prompts over fixtures and judging the answers that come back.Node.js, JavaStated not supportedthe agent the application serves
What it does

capire's CAP-level Agents guide lists evals-based agent testing under More to come, so the released plugin does not test the agent it builds.

Remaining work

Watch the page. A released feature would change this from a roadmap line to an answer, and nothing else in the record would move.

All options on the Agent evals page →
Run a CAP service's model calls with no SAP AI Core bindingA CAP project whose handlers call a language model starts, serves and answers on a laptop or in a pipeline where no SAP AI Core instance is bound — either from a mock, or from a model running locally.Covers, under conditionslocal LLM kinds for an agent
What it does

Gives the development profile two kinds that are not SAP AI Core: capire documents auto as the default for development, using a local Claude or OpenCode configuration, and mock as a pure mock for development that provides dummy responses when called. aicore, the production and hybrid default, is the one that needs the binding.

Conditions

The call is a CAP-level agent's: the kinds are configured under cds.requires.llm, which capire documents with this plugin; For auto, a local Claude or OpenCode configuration already exists on the machine; For mock, what comes back is a dummy response, in capire's own words

Remaining work

Install the plugin and annotate a service as an agent, which is a larger change than configuring a client. auto reads a configuration this reading did not inspect, so what it sends where is not established.

All options on the LLM integration page →
Stream a model's answer out of a CAP serviceA CAP service receives a model's answer in pieces as the model writes it, rather than one payload after the model has finished, so a chat surface can show text appearing instead of a spinner.Assessed, not knownLLM connection for a CAP-level agent
What it does

Not established either way. capire's CAP-level Agents page lists advanced streaming among the features it says are being worked on and planned for release in the near future, which says that streaming for an agent is to improve and does not say what an agent streams today; nothing read on 2026-10-15 states that it does or that it does not.

Remaining work

Read what a CAP-level agent returns on a turn today, which this reading did not establish. Until then a chat surface over an agent cannot be planned on a stream from this page alone.

All options on the LLM integration page →

Connections5

@cap-js/agents connections@cap-js/agentsPROVIDES→ provides1provides stated Turns a service annotated @agent into an agent served over A2A, with MCP tools generated from the service's entities and actions and a ReAct loop; an AGENTS.md beside the service definition replaces that generated agent with one built from the directory, @agent.hitl holds an action for a person's approval, and the conversation's short-term memory sits in the connected primary database. CAP-level Agents — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents CAP-level Agents, Optional: AGENTS.md — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#optional-agentsmd CAP-level Agents, Optional: SKILL.mds — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#optional-skillmds CAP-level Agents, Using @agent.hitl — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#using-agent-hitl CAP-level Agents, Persistence — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#persistence CAP-level Agents, Subagents via A2A — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#subagents-via-a2a CAP-level Agents, Quotas — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#quotas CAP-level Agents, Audit Logging — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#audit-logging CAP-level Agents, Telemetry — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#telemetry CAP-level Agents, SAP API Policy — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#sap-api-policy CAP-level Agents, Using Chat Preview — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#using-chat-previewAgent toolingUSED BY← needed by2needed by derived The A2A endpoints and the @agent-annotated services this client discovers and talks to; the README pins the package to exactly 0.9.1. Through: inverted from its requires edge lemaiwo/cap-agent-ui5-webui — README, what it serves: https://github.com/lemaiwo/cap-agent-ui5-webui lemaiwo/cap-agent-ui5-webui — README, the pin: https://github.com/lemaiwo/cap-agent-ui5-webuicap-agent-ui5-webuineeded by derived The framework the agent itself is built in, served from the CAP application the example deploys. Through: inverted from its requires edge Reports Assistant with SAP Document Management — README, opening line: https://raw.githubusercontent.com/mi8y/cap-agents-addons/main/examples/cap-agents-sdm-backend/README.mdReports Assistant with SAP DocumentManagement← optionally used by1optionally used by derived If: the optional recovery agent or the Recall Agent is used The optional agents: the recovery agent reads the current impact and proposes one of the listed routes, and pauses before anything changes. Through: inverted from its requires edge Kamilkov/supply-chain-rescue — README, Recovery agent (optional): https://github.com/kamilkov/supply-chain-rescue Kamilkov/supply-chain-rescue — README, Recovery agent (optional): https://github.com/kamilkov/supply-chain-rescueSupply Chain RescueifNEEDS→ optionally needs1optionally needs stated If: The aicore kind is configured under cds.requires.llm, which capire states is the default for the production and hybrid profiles; development defaults to auto, which reads credentials from a local Claude Code or OpenCode installation, and mock returns dummy responses. The model the agent calls on each turn of its loop, reached through an SAP AI Core service instance. CAP-level Agents, cds.requires.llm — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#cdsrequiresllm CAP-level Agents, cds.requires.llm — capire: https://cap.cloud.sap/docs/guides/ai/cap-agents#cdsrequiresllmSAP AI Coreif

Install

npm add @cap-js/agents

Derived from the package name. No recipe recorded; the README has the configuration.

Learn more4

Readings
  1. CAP in the age of AI #5 - agents wrap-upDJ Adams, Johannes Vogt, Simon Engel, Stefan Rudi, Daniel Schlachter, YouTube — SAP Developers playlists
  2. CAP in the age of AI #4 - more on agentsDJ Adams, Johannes Vogt, YouTube — SAP Developers playlists
  3. CAP in the age of AI #3 - from MCP to A2ADJ Adams, Johannes Vogt, Stefan Rudi, YouTube — SAP Developers playlists
1 more
  1. CAP in the age of AIDJ Adams, Johannes Vogt, Simon Engel, Stefan Rudi, Daniel Schlachter, YouTube — SAP Developers playlists

Where it sits in your app

Download
Your CAP applicationYour SAP BTP subaccountdocumentedmay needif The aicore kind isconfigured undercds.requires.llm, which capire s…@cap-js/agents, module@cap-js/agentsSAP AI Core, service instanceSAP AI Core
SAPnot SAP's, or the project's ownunder a condition

README

quoted from cap-js/agents under Apache-2.0, read
cap-js/agents/README.mdOn GitHub

REUSE status

SAP Cloud Application Programming Model, agent development plugin for Node.js

About this project

CDS plugin for building agents based on the A2A protocol.

Usage

For detailed instructions about setup and usage, refer to the official documentation.

Support, Feedback, Contributing

This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.

Security / Disclosure

If you find any bug that may be a security problem, please follow the instructions found in our security policy on how to report it. Please do not create GitHub issues for security-related doubts or problems.

Code of Conduct

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.

Licensing

Copyright 2026 SAP SE or an SAP affiliate company and cap-js/mcp contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.

Apache-2.0, read

History

Latest

v0.9.9

Features 2, Changed 1, Fixes 5

Notes
Added
  • Very experimental and limited support for pi agents
  • Specifying MLflow log level. Default DEBUG level includes all spans as before, but INFO only shows the root node as well as the chat and tool spans
Changed
  • Use new AI Core API for content filtering to avoid preflight LLM call
Fixed
  • Improved checkpointer by not persisting verbose model state
  • aicore credentials are now also propagated from cds.requires.llm.credentials
  • Deal with potentially missing crypto.randomUUID fn
  • Reduced likelihood of summarization timeout
  • Show message if falling back from auto config of llm to mock
  1. v0.9.8

    Features 4, Changed 2, Fixes 12

    Notes
    Added
    • Tool and subagent calls are now exposed as artifact-update A2A events so any SSE consumer can observe invocations, arguments, and results; opt-in per request via userMessage.metadata["tool-status-update"]; also added to preview
    • Preview now shows context size and token usage
    • OpenAI provider support via llm kind openai
    • Model and model parameters are shown in evaluation runs in MLflow
    Changed
    • Consider static assertions in tests now in "output_correctness" and "success_rate" metrics of evaluation runs
    • The generic call action tool is now the default, matching @cap-js/mcp; per-action tools are opt-in via cds.env.mcp.per_action_tool: true. This replaces the former cds.env.agents.per_action_tool flag (which defaulted to per-action) and resolves the conflicting defaults between @cap-js/agents and @cap-js/mcp
    Fixed
    • @agent.hitl / @Common.IsActionCritical are now honored when actions are exposed through the generic call action tool (previously human-in-the-loop gating only took effect with per-action tools)
    • Human-in-the-loop edit decisions can no longer repoint the generic call action tool to a different action than the one approved
    • Correctly handle non @cap-js/mcp tools during PII masking
    • Correctly report A2A messages as failed when AI Core is configured but no AI Core credentials can be found
    • Correctly report input tokens for Anthropic models on AI Core. OpenTelemetry specifies that input_tokens includes cached tokens, but Anthropic did not include the cached tokens in input_tokens
    • Summarize on timeout prompts are now correctly shown in MLflow
    • Evaluation run metrics are now correctly aggregated in MLflow
    • Thinking steps are now correctly separated also inside a turn
    • Tasks are now moved into failed state on server crash to avoid quota issue on unstable servers
    • @agent.llm is now correctly considered for feature toggled services
    • SAP HANA Cloud based masking is now retried in case of HANA Cloud NLP connectivity issues
    • HITL tool rejections are now surfaced to the model as a deliberate user decision instead of a tool failure, so it no longer invents technical reasons (e.g. insufficient stock) for an action the user chose to reject
  2. v0.9.7

    Features 3, Fixes 3

    Notes
    Added
    • CAP query result fields which are marked as containing personal data will be masked for the LLM, that the LLM works with hashes
    • Incoming user messages are pseudonymized using SAP Data Privacy Integration service as well as HANA Cloud NLP when the respective services are enabled & cds.env.agents.masking = true
    • Chat preview queues messages submitted while the agent is busy
    Fixed
    • Chat preview keeps the message field height stable when typing the first character
    • Correct lookup for @agent.directory and @agent.card on BTP
    • triggerCleanup now uses a unique outbox job name per invocation, preventing the scheduled cleanup job from being silently replaced when a fresh instance starts or the 24h throttle expires
  3. v0.9.6

    Fixes 1

    Notes
    Fixed
    • Reuse entity filter logic from @cap-js/mcp for consistent behavior with Compositions
  4. v0.9.5

    Features 2, Changed 2, Fixes 6

    Notes
    Added
    • Two new metrics about HITL reporting for which tools HITL was enforced and how the user decided
    • Remote MCP connections support mcp.tools in cds.requires to restrict which tools are exposed to the agent
    Changed
    • Instead of failing when the agent reaches the maximum execution time, a HITL message is thrown asking the user whether to continue
    • Renamed config option cds.agents.pool to cds.agents.quotas
    Fixed
    • Services with @protocol: 'agent' now also register @agent specific handlers
    • Mask apiKey in debug logs read from claude / opencode settings
    • Adjusted error message to be more accurate
    • Prompts are now correctly uploaded to MLFlow for markdown-based agents
    • Judge.evaluate() assessments now also appear in Databricks UC MLflow
    • Propagate opentelemetry traceparent to subagents
  5. v0.9.4

    Features 1, Fixes 5

    Notes
    Added
    • Data parts can now be emitted based on tool output
    Fixed
    • Multiple tools with HITL needed in the same round no longer cause an error
    • Better message to the LLM on HITL rejection
    • Remote A2A response does not yield duplicate content
    • Added cds.folders.srvs to support adjacent agent markdowns ootb.
    • Resets quota counter correctly between tasks for task related quota
  6. v0.9.3

    Features 2, Changed 3, Fixes 3

    Notes
    Added
    • Added evaluation helpers & MLFlow integration to test the agents behaviour & functional correctness
    • Debug logs for tool calls
    Changed
    • Adjusted agent audit log attributes to follow latest recommendations
    • LLM timeout, retry and circuit-breaker resilience now use a zero-dependency Node-native implementation instead of @sap-cloud-sdk/resilience
    • Prompt caching is now applied when GPT models are used (previously it was only applied with anthropic models)
    Fixed
    • A2A agent card advertises https:// instead of http:// when deployed behind a cloud reverse proxy (CF, BTP, Kyma) by reading X-Forwarded-Proto
    • No longer emits orphaned spans during graph creation
    • Fixed remote MCP connections with authenticated server cards
  7. v0.9.2

    Features 4, Fixes 1

    Notes
    Added
    • cds.agents.retention (default 30d) to configure retention of Tasks and related assets stored for A2A and the agent
    • Outgoing MCP and A2A connections now consider credentials.path together with the destination
    • Added additional OpenTelemetry span attributes detailing how many content filters were active
    • Thinking steps are shown in the preview
    Fixed
    • Fixed skill loading for markdown-based agents
  8. v0.9.1

    Features 1

    Notes
    Added
    • Initial release
133downloads per week, npm
Weekly downloads for @cap-js/agents26 complete calendar weeks from 2026-04-27 to 2026-10-25; the latest total is 133.27 Apr – 3 May: 04 May – 10 May: 011 May – 17 May: 018 May – 24 May: 025 May – 31 May: 01 Jun – 7 Jun: 08 Jun – 14 Jun: 015 Jun – 21 Jun: 022 Jun – 28 Jun: 029 Jun – 5 Jul: 06 Jul – 12 Jul: 013 Jul – 19 Jul: 020 Jul – 26 Jul: 027 Jul – 2 Aug: 03 Aug – 9 Aug: 010 Aug – 16 Aug: 9517 Aug – 23 Aug: 15624 Aug – 30 Aug: 27731 Aug – 6 Sept: 2687 Sept – 13 Sept: 22014 Sept – 20 Sept: 55721 Sept – 27 Sept: 35528 Sept – 4 Oct: 3095 Oct – 11 Oct: 47712 Oct – 18 Oct: 19219 Oct – 25 Oct: 133
Agent tooling
  1. a2a-pluginExposes an annotated CDS service as an Agent-to-Agent agentfrom CAP
  2. com.sap.cds:cds-adapter-agentA2A adapter turning a CAP Java service into an LLM-backed agentfrom CAP
  3. cap-agent-ui5-webuiUI5 web interface for an agent built in a CAP servicefrom CAP
  4. @mi8y/cap-agents-memoryLangGraph Store keeping agent memory as CDS entitiesfrom CAP
  5. @mi8y/cap-agents-sdm-backendDeep Agents filesystem over an SAP Document Management repositoryfrom CAP
  6. @mi8y/cds-langgraph-persistenceLangGraph checkpointer backed by CDS for CAP agentsfrom CAP
  7. cds-agentsToolkit turning a CAP service into tools for agent frameworksfrom CAP
  8. Joule Studio, classic editionLow-code SAP Build capability for custom Joule skills and agentsfrom BTP/BAIP
  9. @sap/joule-studio-cliCLI for Joule digital assistants and Joule Studio solutionsfrom BTP/BAIP
  10. Joule StudioSAP's managed environment for building custom agents and workflowsfrom Across stacks
  11. @sap/joule-work-dev-cli-early-adoptersPro-code CLI for building and deploying Joule Studio solutionsfrom BTP/BAIP
  12. SAP JouleSAP's AI engagement layer across SAP applicationsfrom BTP/BAIP
  13. @saptarishi/cds-plugin-llmCAP service kind putting eleven model providers behind one APIfrom CAP

Details

Sources5
npm registrydiscovered herechecked
The discovery passdiscovered herechecked
npm registry, @cap-js/agentsversion, releases, installschecked
github.com/git+https://github.com/cap-js/agents.gittree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
declared for>=9
latestv0.9.9
first release
releases and cadence10, ~6d median
discovered vianpm registry, The discovery pass
first seen in the atlas
ecosystem and domaincap, ai-and-agents
Flavors1
Node.js
“# SAP Cloud Application Programming Model, agent development plugin for Node.js” — cap-js/agents — READMEchecked
Contributors15
History in the atlas5
  1. a paragraph on what the plugin serves and the two situations it is not for
  2. the AGENTS.md route, the approval gate and the persisted short-term memory added, five property values and eleven sources
  3. artifact:btp-ai-core, conditional on the aicore kind
  4. SAP's own CDS plugin for building agents inside a CAP service, wired to audit logging and telemetry through peer dependencies rather than leaving observability to the author.
  5. First seen.
For your agent
Ref
artifact:cap-js-agents
JSON
/artifacts/cap-js-agents.json
MCP
Connecting an agent