Normandy.A2A.AgentTool (normandy v0.6.1)

View Source

Wraps a remote A2A agent as a Normandy BaseTool.

When the LLM calls this tool, a message is sent to the remote agent via the A2A protocol and the result is returned.

Example

alias Normandy.A2A.AgentTool

{:ok, card} = Claudio.A2A.Client.discover("https://agent.example.com")

tool = AgentTool.new("https://agent.example.com/a2a", card,
  auth_token: "bearer-token",
  timeout: 30_000
)

agent = BaseAgent.register_tool(agent, tool)

Summary

Functions

Creates a new AgentTool for a remote A2A agent.

Prepares the tool with LLM-provided input parameters.

Types

t()

@type t() :: %Normandy.A2A.AgentTool{
  agent_card: Claudio.A2A.AgentCard.t(),
  auth_token: String.t() | nil,
  endpoint: String.t(),
  input: map(),
  skill_id: String.t() | nil,
  timeout: pos_integer(),
  transport_opts: keyword()
}

Functions

new(endpoint, agent_card, opts \\ [])

@spec new(String.t(), Claudio.A2A.AgentCard.t(), keyword()) :: t()

Creates a new AgentTool for a remote A2A agent.

Options

  • :skill_id - Specific skill to expose (nil for general agent access)
  • :auth_token - Bearer token for authentication
  • :transport_opts - Options passed to the A2A transport
  • :timeout - Maximum time to wait for task completion (default: 60s)

prepare_input(tool, input)

@spec prepare_input(t(), map()) :: t()

Prepares the tool with LLM-provided input parameters.