Skip to main content
The Agent Platform supports cross-service agent invocation via the A2A (Agent-to-Agent) protocol. This allows agents deployed on different runtime instances, including agents owned by external organizations, to communicate over standard HTTP. This helps connect agents to other agents, enabling delegation, sub-task hand-off, and multi-agent orchestration across service boundaries. The routing executor transparently handles remote handoffs through the A2A client within Agent Platform, making agent topology location-agnostic. A specialized agent running on external infrastructure is called exactly the same as a local agent. The platform handles communication with external agents through the A2A protocol, allowing your agents to collaborate seamlessly regardless of where they are hosted.

Register an External Agent

Register an external agent to make it available within the Agent Platform. Prerequisites Ensure that:
  • The external agent supports the A2A protocol.
  • The agent endpoint is reachable over HTTP or HTTPS.
  • You have the endpoint URL for the external agent.
  • Authentication details are available if required.
To Register an External Agent
  1. Navigate to External Agents.
  2. Click Register Agent.
  3. Enter the required details:
    • Agent Name - Name of the external agent.
    • Endpoint URL -URL of the external agent endpoint.
    • Protocol - communication protocol for interaction with the external agent. Agent Platform supports:
      • A2A
      • REST
    • Authentication Type - Authentication required for communication. Select the appropriate authentication mechanism based on the requirements of the external agent endpoint. Agent platform supports:
      • API Key
      • Bearer Token
  4. Click Register.
The platform validates the endpoint and adds the agent to the External Agents list. Use the Test Connection action to verify that the external agent endpoint is reachable. If successful, it fetches and stores the agent card that defines the capabilities, skills, streaming support, etc. for the external agent.

Access External Agents via Handoff or Delegation

Once registered, external agents become available as tools that can be used within Agent Platform agents. You can combine local and external agents in the same multi-agent workflow. To add an external agent, add it to the Handoff or Delegate section of the agent. The platform automatically handles communication with the external agent through the A2A protocol. Via ABL: Add the external agent under the HandOff or Delegate sections and specify the location as remote.
HANDOFF:
  - TO: RemoteAgentName           # must match ExternalAgentConfig.name in the DB
    WHEN: <condition>
    LOCATION: REMOTE              # marks this as an external call
    ENDPOINT: "https://remote.example.com/a2a"  # inline URL (optional if DB config exists)
    PROTOCOL: A2A                 # only 'a2a' supported today
    ASYNC: true                   # optional: suspend + push-notification callback mode
    TIMEOUT: 300                  # optional: seconds
    CONTEXT:
      pass: [field1, field2]      # session/context variables to forward
      summary: "Why we're handing off"
      history: full               # none | summary_only | full | last_n
    RETURN: true                  # true = parent thread waits for response

Remote-Specific Properties

PropertyValuesDescription
LOCATIONREMOTEMarks the tool as a remote agent.
ENDPOINTURL stringThe A2A endpoint. Supports {{config.*}} and {{env.*}} interpolation. This property is optional. If provided, it overrides the endpoint URL configured during agent registration.
PROTOCOLA2A or RESTThe communication protocol used to invoke the remote agent.
ASYNCtrue / falseEnables asynchronous dispatch with push-notification barriers. When set to true, configure the CALLBACK_BASE_URL environment variable. This value must be a publicly accessible HTTPS URL where the remote agent can post execution results.
TIMEOUTInteger (seconds)Maximum time to wait for a response from the remote agent before the request times out.
CONTEXT-Copies named fields from the current session’s gathered/set data values into the request metadata sent to the external agent
RETURNtrue/falseWhether the parent thread waits for response or not.

Operating Modes

Sync Mode

This is the default mode. Agent waits for a response from external agent. Default timeout value is 30 seconds. If the request times out, ON_FAILURE event is triggered.
- TO: Risk_Analyzer
  WHEN: intent contains "risk"
  LOCATION: REMOTE
  ENDPOINT: "http://localhost:4002"
  PROTOCOL: A2A
  CONTEXT:
    pass: [contract_id, contract_type]
    summary: "User needs risk analysis"
  RETURN: true

Streaming

This is auto-detected when remote agent card publishes streaming: true and user is connected. No change is required in DSL. The runtime handles it automatically.
- TO: Risk_Analyzer
  WHEN: intent contains "risk"
  LOCATION: REMOTE
  ENDPOINT: "http://localhost:4002"
  PROTOCOL: A2A
  RETURN: true

Async

This is based on suspend and callback mechanism. The current session suspends. Remote agent pushes result when done. Used for long-running operations. Requirements for async remote calls:
  • CALLBACK_BASE_URL environment variable must be set to a public HTTPS URL that the remote agent can reach.
  • The remote agent’s card must have push notification capabilities.
  • Default async timeout is 300 seconds. It can be overridden by the timeout value in the ABL.
- TO: Async_Risk_Analyzer
  WHEN: intent contains "deep analysis"
  LOCATION: REMOTE
  ENDPOINT: "http://localhost:4002"
  PROTOCOL: A2A
  ASYNC: true        # critical — forces suspend + callback path
  TIMEOUT: 300       # max wait in seconds
  CONTEXT:
    pass: [contract_id]
    summary: "Background deep analysis"
  RETURN: true

Points to Note:

  1. Case sensitivity: TO: <external-agent-name> must exactly match the name field provided during registration. It is case-sensitive.
  2. Config variable: If the URL is provided using config fields, the variable {{config.EXTERNAL_AGENT_URL}} is resolved at compile time, not runtime. The config variable must exist in the project before you save and deploy the agent. This is recommended for multi-environment set ups.
    - TO: Hosted_External_Agent
      WHEN: true
      LOCATION: REMOTE
      ENDPOINT: "{{config.EXTERNAL_AGENT_URL}}"   # set this in project config vars
      PROTOCOL: A2A
      CONTEXT:
        history: full
      RETURN: true
    
  3. ASYNC: true: Push-notification callbacks need a public HTTPS CALLBACK_BASE_URL env variable.
  4. Inline ENDPOINT in DSL overrides the endpoint provided during registration, but auth details must be provided during registration. You can’t put credentials in the DSL.
  5. Remote agents are stateless by default - they only see the current message. Use history: full in CONTEXT: to forward the conversation. The history is stored in message.metadata.history in the A2A payload.
  6. A contextId is sent on every turn to the same remote agent, allowing the remote side to associate turns if it keeps state.