{"ref":"artifact:sap-samples-joule-a2a-agent-toolkit","page":"/artifacts/sap-samples-joule-a2a-agent-toolkit","json":"/artifacts/sap-samples-joule-a2a-agent-toolkit.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-joule-a2a-agent-toolkit","name":"SAP-samples/joule-a2a-agent-toolkit","artifact_type":"skill","ecosystem":"btp","domain":"ai-and-agents","origin_ring":"sap-official","description":{"one_line":"Four skills for building an agent that talks to SAP Joule over A2A and getting it onto Cloud Foundry — the agent itself, and the three CLIs the deployment goes through.","short":"Skills for building an A2A agent for Joule and deploying it to CF","what_it_solves":"Connecting a custom agent to Joule is a protocol problem wrapped in a landscape problem, and the landscape part is three command-line tools nobody remembers the flags for. **joule-a2a-agent** scaffolds a LangGraph agent with A2A support on Express or CAP, configuration included; **btp-cli**, **cf-cli** and **joule-cli** generate the commands for global accounts, subaccounts, services and security, for pushing and binding on Cloud Foundry, and for compiling and deploying digital assistant capabilities. A2A itself is JSON-RPC 2.0 over HTTPS between Joule and the agent you deployed. Installed by pointing Claude Code at the plugin directory, after which the repository separates the four auto-triggered skills from the user-invoked commands, among them `deploy-agent`, which deploys what was scaffolded.","when_not_to_use":"Skills that generate commands are not the commands: everything here still runs against a real BTP account with real entitlements, and the deployment path assumed is Cloud Foundry, with `cf login` and `joule login` done before the toolkit is used. Three of the four skills are CLI knowledge rather than anything Joule-specific, which is worth knowing if you only wanted the agent part."},"links":{"repo":"https://github.com/SAP-samples/joule-a2a-agent-toolkit"},"type_properties":{"distribution":{"value":["agent-plugin"],"sources":[{"url":"https://github.com/SAP-samples/joule-a2a-agent-toolkit","title":"SAP-samples/joule-a2a-agent-toolkit — README","checked":"2026-10-18","quote":"claude --plugin-dir <path-to-sap-a2a-agent-toolkit>"}]}},"identity":{"license":"Apache-2.0"},"skills":{"provenance":"indexed","kind":"capability","canonical_source":"https://github.com/SAP-samples/joule-a2a-agent-toolkit"},"provides":[{"capability":"capability:agent-guidance","what_it_does":"Four auto-triggered skills covering the A2A agent itself and the btp, cf and joule command lines its deployment goes through.","facets":[{"key":"installs_into","value":["Claude Code"],"source":{"url":"https://github.com/SAP-samples/joule-a2a-agent-toolkit","title":"SAP-samples/joule-a2a-agent-toolkit — README, Getting Started","checked":"2026-10-15","quote":"Start Claude Code with the toolkit plugin, then log in to CF and Joule:"}}],"sources":[{"url":"https://github.com/SAP-samples/joule-a2a-agent-toolkit","title":"SAP-samples/joule-a2a-agent-toolkit — README","checked":"2026-09-09","quote":"Build, deploy, and connect AI agents to SAP Joule via the A2A protocol on BTP Cloud Foundry"},{"url":"https://github.com/SAP-samples/joule-a2a-agent-toolkit","title":"SAP-samples/joule-a2a-agent-toolkit — README, the btp-cli skill","checked":"2026-10-15","quote":"Generates correct `btp` commands for managing BTP global accounts, subaccounts, services, and security"},{"url":"https://github.com/SAP-samples/joule-a2a-agent-toolkit","title":"SAP-samples/joule-a2a-agent-toolkit — README, Quick Start","checked":"2026-10-15","quote":"/sap-a2a-agent-toolkit:deploy-agent ./po-assistant"}]}],"provenance":{"discovered_via":[{"source":"source:sap-ai-mcp-servers"}],"first_seen":"2026-09-09"},"history":[{"date":"2026-09-09","field":"entry","from":null,"to":"created","reason":"Entered from the sap-ai-mcp-servers catalogue, which is credited as the source; written from the repository's own README rather than from the catalogue's line about it. Hard rule 7: skills are indexed, never authored here."},{"date":"2026-10-15","field":"provides.agent-guidance.facets.installs_into","from":null,"to":"Claude Code","reason":"capability:agent-guidance declared the installs_into property on the BTP door. The README starts Claude Code with `--plugin-dir` and names no other host."},{"date":"2026-10-15","field":"description","from":"Installed by pointing Claude Code at the plugin directory.","to":"The same, plus the split between the four auto-triggered skills and the user-invoked commands, among them deploy-agent; and the two logins moved into when_not_to_use.","reason":"The entry said the skills generate commands, which the README states of btp-cli, cf-cli and joule-cli, and said nothing about `/sap-a2a-agent-toolkit:deploy-agent`, which the Quick Start uses to deploy the scaffolded agent. The distinction decides whether anything here reaches an account, so it is now on the entry, and the README's own `cf login` and `joule login` step is named in the warning where the account conditions already were."}],"drafted_with_ai":true,"maintainers":["actor:sap-samples"],"contributors":["actor:arthurliebhardtsap","actor:mkemeter"],"connects":[{"ref":"artifact:sap-joule","kind":"data","for":"the A2A protocol traffic between the deployed agent and [SAP Joule](artifact:sap-joule)","protocols":["a2a"],"direction":"both","sources":[{"url":"https://github.com/sap-samples/joule-a2a-agent-toolkit","title":"joule-a2a-agent-toolkit README","checked":"2026-10-18","quote":"Build, deploy, and connect AI agents to SAP Joule via the A2A (Agent-to-Agent) protocol on BTP Cloud Foundry — all from Claude Code."}]}],"requires":[{"ref":"artifact:btp-destination","for":"a [SAP BTP](artifact:btp-destination) destination through which Joule reaches the deployed agent","requirement":"required","basis":"binding","role":"destination","sources":[{"url":"https://github.com/sap-samples/joule-a2a-agent-toolkit","title":"joule-a2a-agent-toolkit README","checked":"2026-10-18","quote":"**BTP subaccount** with Cloud Foundry runtime, AI Core service, and Destination service"}]},{"ref":"artifact:btp-authorization-and-trust-management","for":"securing the agent with OAuth2 via XSUAA","requirement":"conditional","condition":"the agent needs OAuth2 authentication","basis":"binding","role":"authentication","sources":[{"url":"https://raw.githubusercontent.com/SAP-samples/joule-a2a-agent-toolkit/main/skills/joule-a2a-agent/references/cf-deployment-cap-typescript.md","title":"joule-a2a-agent-toolkit: skills/joule-a2a-agent/references/cf-deployment-cap-typescript.md","checked":"2026-10-18","quote":"If you need OAuth2 authentication for the agent, add scopes and role templates here and add an `xsuaa` resource to `mta.yaml`."}]},{"ref":"artifact:sap-joule-studio-cli","for":"compiling and deploying Joule digital assistant capabilities via the [Joule CLI](artifact:sap-joule-studio-cli)","requirement":"required","basis":"binding","role":"installation","sources":[{"url":"https://github.com/sap-samples/joule-a2a-agent-toolkit","title":"joule-a2a-agent-toolkit README","checked":"2026-10-18","quote":"**Joule CLI** installed (`npm install -g @sap/joule-studio-cli`) and logged in (`joule login`)"}]},{"ref":"artifact:btp-cloud-foundry-runtime","for":"running the deployed agent on [SAP BTP, Cloud Foundry Runtime](artifact:btp-cloud-foundry-runtime)","requirement":"required","basis":"binding","role":"platform","sources":[{"url":"https://github.com/sap-samples/joule-a2a-agent-toolkit","title":"joule-a2a-agent-toolkit README","checked":"2026-10-18","quote":"**BTP subaccount** with Cloud Foundry runtime, AI Core service, and Destination service"}]},{"ref":"artifact:btp-ai-core","for":"calling SAP GenAI Hub models through [SAP AI Core](artifact:btp-ai-core)","requirement":"required","basis":"binding","role":"model-access","sources":[{"url":"https://github.com/sap-samples/joule-a2a-agent-toolkit","title":"joule-a2a-agent-toolkit README","checked":"2026-10-18","quote":"**BTP subaccount** with Cloud Foundry runtime, AI Core service, and Destination service"}]},{"ref":"artifact:sap-cds-dk","for":"compiling the CDS service before the MTA build for [CAP](artifact:sap-cds-dk) agents","requirement":"conditional","condition":"the CAP framework option is used","basis":"binding","role":"build","sources":[{"url":"https://raw.githubusercontent.com/SAP-samples/joule-a2a-agent-toolkit/main/skills/joule-a2a-agent/references/cf-deployment-cap-typescript.md","title":"joule-a2a-agent-toolkit: skills/joule-a2a-agent/references/cf-deployment-cap-typescript.md","checked":"2026-10-18","quote":"**CDS DK**: `npx cds --version` (install: `npm install -g @sap/cds-dk`)"}]}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"4 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-04, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 7 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":41,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":41,"forks":18,"open_issues":2,"archived":false,"pushed_at":"2026-04-21","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":4,"tree_truncated":false,"test_files":0,"workflows":0,"other_ci":false,"readme_bytes":6727,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"readme_path":"README.md","readme_sha":"ebb7e4eef5788eb6fe209f7df833b5613f3887c4","created_at":"2026-04-14T14:09:37Z","open_prs":1,"first_commit":"2026-04-14","last_commit":"2026-04-21","commits":7,"repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:arthurliebhardtsap","name":"Arthur","json":"/actors/arthurliebhardtsap.json"},{"ref":"actor:mkemeter","name":"Mathias Kemeter","json":"/actors/mkemeter.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}