Skip to main content
Agent-to-Agent (A2A) protocol enables communication between agents and external systems.

Gateway URL

https://agent-{gateway-id}.noorle.com

Supported Transports

TransportMethodUse Case
JSON-RPC 2.0POSTStateless, simple
WebSocketWSPersistent connection, streaming
SSEPOST + GETEvent-based streaming

Authentication

All transports require OAuth token:
# Header
curl -H "Authorization: Bearer eyJhbGc..." \
  https://agent-{gateway-id}.noorle.com/message/send

# WebSocket query param
wss://agent-{gateway-id}.noorle.com/ws?token=eyJhbGc...

Main Methods

Get Agent Card

{
  "method": "GET /.well-known/agent-card.json",
  "response": {
    "name": "My Agent",
    "description": "Agent description",
    "capabilities": ["tool1", "tool2"]
  }
}

Send Message

{
  "jsonrpc": "2.0",
  "method": "message/send",
  "params": {
    "message": "What's the weather?",
    "context": {}
  },
  "response": {
    "text": "Response...",
    "task_id": "task-123"
  }
}

Stream Message

{
  "jsonrpc": "2.0",
  "method": "message/stream",
  "params": {
    "message": "What's the weather?",
    "context": {}
  },
  "response": [
    {"event": "token", "data": "The "},
    {"event": "token", "data": "weather..."}
  ]
}

Get Task Status

{
  "method": "GET /tasks/{id}",
  "response": {
    "id": "task-123",
    "status": "completed",
    "result": "weather is sunny"
  }
}

Response Format

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "text": "Agent response",
    "task_id": "task-123"
  }
}

Error Handling

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32603,
    "message": "Agent error"
  }
}

Next Steps