Specify a webhook-driven task for OpenClaw
Describe event inputs, validation, deduplication, and intended actions before integration work.
5,487,579 AI resources indexedWorking toward the world’s largest AI resource index.
Expose orxhestra agents as A2A protocol endpoints or connect to remote A2A agents.
---
name: a2a-integration-fecde2ece337
description: Expose orxhestra agents as A2A protocol endpoints or connect to remote A2A agents.
---
# A2A Integration
## A2A Server — expose an agent
```python
from orxhestra import LlmAgent, InMemorySessionService
from orxhestra.a2a import A2AServer, AgentSkill
agent = LlmAgent(name="MyAgent", model=model, tools=[...])
server = A2AServer(
agent=agent,
session_service=InMemorySessionService(),
app_name="my-agent-service",
skills=[
AgentSkill(
id="qa", name="Q&A",
description="Answers general questions.",
tags=["general"],
),
],
)
app = server.as_fastapi_app()
# uvicorn my_module:app --host 0.0.0.0 --port 8000
```
### Endpoints
| Method | Endpoint | Description |
|---|---|---|
| `GET` | `/.well-known/agent.json` | Agent Card discovery |
| `POST` | `/` | JSON-RPC 2.0 dispatch |
### JSON-RPC methods
| Method | Description |
|---|---|
| `message/send` | Send message, receive completed Task |
| `message/stream` | Send message, receive SSE stream |
| `tasks/get` | Retrieve task by ID |
| `tasks/cancel` | Cancel a running task |
## A2A Agent — connect to a remote agent
```python
from orxhestra.agents.a2a_agent import A2AAgent
remote = A2AAgent(
name="RemoteAgent",
description="A remote research agent.",
url="http://localhost:9000",
)
async for event in remote.astream("What is quantum computing?"):
print(event.text)
```
## In YAML Composer
```yaml
agents:
remote_researcher:
type: a2a
description: "Remote research agent"
url: "http://localhost:9000"
orchestrator:
type: llm
tools:
- agent: remote_researcher
main_agent: orchestrator
```
---
name: a2a-integration-fecde2ece337
description: Expose orxhestra agents as A2A protocol endpoints or connect to remote A2A agents.
---
# A2A Integration
## A2A Server — expose an agent
```python
from orxhestra import LlmAgent, InMemorySessionService
from orxhestra.a2a import A2AServer, AgentSkill
agent = LlmAgent(name="MyAgent", model=model, tools=[...])
server = A2AServer(
agent=agent,
session_service=InMemorySessionService(),
app_name="my-agent-service",
skills=[
AgentSkill(
id="qa", name="Q&A",
description="Answers general questions.",
tags=["general"],
),
],
)
app = server.as_fastapi_app()
# uvicorn my_module:app --host 0.0.0.0 --port 8000
```
### Endpoints
| Method | Endpoint | Description |
|---|---|---|
| `GET` | `/.well-known/agent.json` | Agent Card discovery |
| `POST` | `/` | JSON-RPC 2.0 dispatch |
### JSON-RPC methods
| Method | Description |
|---|---|
| `message/send` | Send message, receive completed Task |
| `message/stream` | Send message, receive SSE stream |
| `tasks/get` | Retrieve task by ID |
| `tasks/cancel` | Cancel a running task |
## A2A Agent — connect to a remote agent
```python
from orxhestra.agents.a2a_agent import A2AAgent
remote = A2AAgent(
name="RemoteAgent",
description="A remote research agent.",
url="http://localhost:9000",
)
async for event in remote.astream("What is quantum computing?"):
print(event.text)
```
## In YAML Composer
```yaml
agents:
remote_researcher:
type: a2a
description: "Remote research agent"
url: "http://localhost:9000"
orchestrator:
type: llm
tools:
- agent: remote_researcher
main_agent: orchestrator
```
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.