Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,16 @@ Zod.
* Demonstrates implementation of UCP specifications for shopping,
checkout, and order management using a Node.js stack.

### A2A (Agent-to-Agent)

An AI-powered retail agent implementing UCP via the A2A protocol.

* **Cymbal Retail Agent**: [Documentation](a2a/README.md)
* Located in `a2a/business_agent/`.
* Demonstrates A2A protocol integration with UCP Extension.
* Includes AI-powered shopping assistant with Google ADK and Gemini.
* React-based chat client for user interaction.

## Getting Started

Please refer to the specific README files linked above for detailed instructions
Expand Down
14 changes: 7 additions & 7 deletions a2a/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
limitations under the License.
-->

# A2A Business Agent with UCP Extension
# Cymbal Retail Agent with UCP Extension and A2A

This sample demonstrates how to build an AI-powered shopping assistant using **[Universal Commerce Protocol (UCP)](https://ucp.dev)** - an open standard that enables interoperability between commerce platforms, merchants, and payment providers.

Expand Down Expand Up @@ -48,14 +48,14 @@ The sample uses **[Google ADK](https://google.github.io/adk-docs/)** (Agent Deve

<p align="center">
<b>System Architecture</b><br/>
<i>How Client, A2A Protocol, Business Agent, and Store interact</i>
<i>How Client, A2A Protocol, Cymbal Retail Agent, and Store interact</i>
<br/><br/>
<img src="assets/architecture_diagram.jpeg" alt="Architecture Diagram" width="900" />
</p>

**Key points:**
- **Client** sends requests with `UCP-Agent` header containing its profile URL
- **Business Agent** serves both `/.well-known/agent-card.json` (A2A) and `/.well-known/ucp` (UCP Profile)
- **Cymbal Retail Agent** serves both `/.well-known/agent-card.json` (A2A) and `/.well-known/ucp` (UCP Profile)
- **Capability Negotiation** happens before processing - agent and client agree on supported features
- **RetailStore** uses UCP SDK types internally for checkout, fulfillment, and payment data

Expand All @@ -71,7 +71,7 @@ Before you begin, ensure you have:
- [ ] Node.js 18+
- [ ] [Gemini API Key](https://aistudio.google.com/apikey)

### 1. Start the Business Agent
### 1. Start the Cymbal Retail Agent

```bash
cd a2a/business_agent
Expand All @@ -91,7 +91,7 @@ INFO: Started server process
INFO: Uvicorn running on http://0.0.0.0:10999
```

This starts the business agent on port 10999. You can verify by accessing:
This starts the Cymbal Retail Agent on port 10999. You can verify by accessing:
- **Agent Card:** http://localhost:10999/.well-known/agent-card.json
- **UCP Profile:** http://localhost:10999/.well-known/ucp

Expand Down Expand Up @@ -179,7 +179,7 @@ This sample uses the following UCP capabilities:

## Components

### Business Agent (`business_agent/`)
### Cymbal Retail Agent (`business_agent/`)

AI shopping assistant built with Google ADK, exposed via A2A interface with UCP extension.

Expand All @@ -202,7 +202,7 @@ React UI (TypeScript, Vite, Tailwind) that communicates via A2A and renders UCP

## Mock Store

The business agent uses an in-memory `RetailStore` to simulate a real backend:
The Cymbal Retail Agent uses an in-memory `RetailStore` to simulate a real backend:

- **Products** - Loaded from `data/products.json` (cookies, chips, fruits, etc.)
- **Checkouts** - Session-based checkout management with line items
Expand Down
4 changes: 2 additions & 2 deletions a2a/business_agent/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
limitations under the License.
-->

# Example Business Agent
# Cymbal Retail Agent

Example agent implementing A2A Extension for UCP

Expand All @@ -29,5 +29,5 @@ Example agent implementing A2A Extension for UCP
1. Run `uv sync`
2. Copy env.example to .env and update it with relevant Gemini API key.
3. Run `uv run business_agent`
4. This starts the business agent on port 10999. You can verify by accessing
4. This starts the Cymbal Retail Agent on port 10999. You can verify by accessing
the agent card at http://localhost:10999/.well-known/agent-card.json