agent2agentGuidesClient — JSON-RPC Binding

Client — JSON-RPC Binding

client = A2A::Client.new("http://localhost:9292")

agent_card

card = client.agent_card
card.name    # => "Echo Agent"
card.version # => "1.0.0"
GET /.well-known/agent-card.json HTTP/1.1

send_message

result = client.send_message(
  message: { "messageId" => "msg-1", "role" => "ROLE_USER", "parts" => [{ "text" => "Hello" }] }
)
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "msg-1",
      "role": "ROLE_USER",
      "parts": [{"text": "Hello"}]
    }
  }
}

send_streaming_message

client.send_streaming_message(
  message: { "messageId" => "msg-1", "role" => "ROLE_USER", "parts" => [{ "text" => "Hello" }] }
) do |chunk, env|
end
POST /a2a HTTP/1.1
Content-Type: application/json
Accept: text/event-stream

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "SendStreamingMessage",
  "params": {
    "message": {
      "messageId": "msg-1",
      "role": "ROLE_USER",
      "parts": [{"text": "Hello"}]
    }
  }
}

get_task

task = client.get_task(id: "task-123")
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "GetTask",
  "params": {"id": "task-123"}
}

list_tasks

result = client.list_tasks
result = client.list_tasks(context_id: "ctx-1")
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "ListTasks",
  "params": {}
}

cancel_task

task = client.cancel_task(id: "task-123")
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "CancelTask",
  "params": {"id": "task-123"}
}

subscribe_to_task

client.subscribe_to_task(id: "task-123") do |chunk, env|
end
POST /a2a HTTP/1.1
Content-Type: application/json
Accept: text/event-stream

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "SubscribeToTask",
  "params": {"id": "task-123"}
}

create_task_push_notification_config

config = client.create_task_push_notification_config(
  task_id: "task-123", url: "https://example.com/webhook"
)
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "CreateTaskPushNotificationConfig",
  "params": {
    "taskId": "task-123",
    "url": "https://example.com/webhook"
  }
}

get_task_push_notification_config

config = client.get_task_push_notification_config(id: "config-1", task_id: "task-123")
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 8,
  "method": "GetTaskPushNotificationConfig",
  "params": {"id": "config-1", "taskId": "task-123"}
}

list_task_push_notification_configs

result = client.list_task_push_notification_configs(task_id: "task-123")
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 9,
  "method": "ListTaskPushNotificationConfigs",
  "params": {"taskId": "task-123"}
}

delete_task_push_notification_config

client.delete_task_push_notification_config(id: "config-1", task_id: "task-123")
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 10,
  "method": "DeleteTaskPushNotificationConfig",
  "params": {"id": "config-1", "taskId": "task-123"}
}

get_extended_agent_card

card = client.get_extended_agent_card
POST /a2a HTTP/1.1
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 11,
  "method": "GetExtendedAgentCard",
  "params": {}
}