# A2a Protocol

> Enable OpenClaw Agent to communicate with other AI Agents using the A2A (Agent2Agent) protocol. Use when: (1) User wants to connect two OpenClaw instances across different servers, (2) User needs Agent-to-Agent communication, (3) User asks about A2A protocol, (4) User wants to expose OpenClaw as an A2A service, (5) User wants to call remote A2A agents.

- Skill: `dvcrn/a2a-protocol-2` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add dvcrn/a2a-protocol-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/a2a-protocol-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/dvcrn/a2a-protocol-2

---


# A2A Protocol

Enable OpenClaw Agent to communicate with other AI Agents using the A2A (Agent2Agent) protocol - an open standard by Google for inter-agent communication.

## Quick Start

### Calling a Remote Agent (Client Mode)

```bash
python ~/.openclaw/workspace/skills/a2a-protocol/scripts/a2a_client.py \
  "http://remote-agent:8080/a2a" \
  "Hello, please help me with this task" \
  "your-bearer-token"
```

### Exposing as A2A Service (Server Mode)

```bash
python ~/.openclaw/workspace/skills/a2a-protocol/scripts/a2a_server.py --port 8080
```

## Core Concepts

| Concept | Description |
|---------|-------------|
| **Agent Card** | JSON document describing agent identity, capabilities, endpoint |
| **Task** | Unit of work with lifecycle (pending → running → completed) |
| **Message** | Communication turn with role and parts |
| **Part** | Smallest content unit (text/file/data) |
| **Artifact** | Output generated by agent |

## Workflow

```
1. Agent A (Client)          2. Agent B (Server)
   │                              │
   │ GET /.well-known/agent.json │
   │─────────────────────────────►│
   │       Agent Card             │
   │◄─────────────────────────────│
   │                              │
   │ POST /rpc (message/send)     │
   │─────────────────────────────►│
   │                              │
   │      Task Response           │
   │◄─────────────────────────────│
```

## Configuration

Add remote agent info to TOOLS.md:

```markdown
### A2A Agents

- Remote Agent Name:
  URL: http://1.2.3.4:8080/a2a
  Token: your-bearer-token
```

## Resources

### scripts/

- `a2a_client.py` - A2A client for calling remote agents
- `a2a_server.py` - A2A server for exposing OpenClaw as a service
- `agent_card.json` - Agent Card template

### references/

- `a2a-api.md` - Complete A2A API reference

## Troubleshooting

### Connection Failed

1. Check network reachability (ping/telnet)
2. Verify firewall allows the port
3. Confirm token is correct

### Agent Card Not Found

1. Ensure remote agent's A2A server is running
2. Check URL includes correct path
