UiPath Documentation
orchestrator
latest
false
Orchestrator user guide

Outbound (UiPath to external)

Register an A2A agent hosted outside UiPath in Agent Gateway and configure authentication for calls to it.

Note:

This functionality is in preview.

Outbound A2A is the platform calling an agent hosted outside UiPath, either directly or as a tool inside a UiPath agent. You register the agent once in Agent Gateway > A2A Agents, and UiPath acts as a governed gateway in front of it.

Because there are two hops, there are two independent authentications: the caller authenticates to UiPath, and UiPath authenticates separately to the remote agent. Neither side sees the other's credentials.

Everything specific to that second hop applies only to this direction: Integration Service connections, configured headers, Orchestrator asset references, and per-user connections.

Register a remote A2A agent

Registering an agent makes an A2A agent hosted outside UiPath callable from the platform. Agent Gateway stores the agent's card and credentials, gives it a stable UiPath URL, and from then on any A2A-capable consumer on the platform reaches the agent through that URL.

Once registered, the agent behaves like any other deployed artifact in UiPath: it lives in a folder, folder permissions govern who can call it, guardrails can screen its messages, calls appear in Traces, and changes to it are audited.

A registered A2A agent can also be consumed by external clients. They call the UiPath-exposed A2A URL with a UiPath token, exactly as they would for a UiPath-hosted agent. For the accepted tokens and the permissions required, check Authentication.

Prerequisites

  • The agent's card: either its URL, typically ending in /.well-known/agent-card.json, or the raw card JSON, for agents whose card can't be fetched directly.
  • Whatever the agent expects for authentication: static header values, such as an API key or a fixed token, or a connection already created in Orchestrator.
  • The folder-level Create permission for MCP Servers in the target folder. Remote A2A agents share the MCP Servers permission set, and the Automation Developer, Folder Administrator, and Personal Workspace Administrator roles include Create. Automation User has View only, which is enough to call an agent but not to register one.

Register the agent

  1. In Agent Gateway > A2A Agents, select Add external agent.

  2. Enter a Name, Slug, and Description.

    Note:

    The slug becomes part of the agent's UiPath URL and can't change after creation. Use lowercase letters, numbers, and hyphens only.

  3. Provide the Agent card, either by URL or as pasted JSON.

    Note:

    Pasted JSON automatically populates the Name and Description fields, if present.

  4. Select the Connection type: Standard for an agent reachable over the public internet, or Private (Relay) for an agent on a private network. For details, check Reaching an agent inside a private network.

  5. Configure authentication to the agent, using either or both of the following:

    • Connection: create a connection for the Agent2Agent connector, then select it here. Once selected, Agent Gateway retrieves a fresh bearer token from the connection on every call, so credentials that expire don't have to be rotated by hand.
    • Headers: name and value pairs added to every request, in the form <key>:<value>, for example Authorization:Bearer <your-api-key>. Headers are stored encrypted and masked when read back. Instead of pasting a secret, a header value can reference an Orchestrator asset, in the form Authorization:%ASSETS/AssetName%.

    If both are set, the connection provides the Authorization header, and the other headers still apply.

  6. Optionally, expand Guardrails and configure them. For details, check Guardrails.

  7. Select Save.

Result: Agent Gateway fetches the agent's card and caches it. The agent appears in the A2A Agents list. If the fetch fails, the save fails with the fetch error, and nothing is stored until the card is readable.

What external clients see

The registered agent lives at:

https://cloud.uipath.com/{org}/{tenant}/agenthub_/a2a/remote/{folderKey}/{slug}
https://cloud.uipath.com/{org}/{tenant}/agenthub_/a2a/remote/{folderKey}/{slug}

You can copy this URL from the A2A Agents list. An external client uses it exactly as it would any A2A agent: Agent Gateway serves the agent's card at <that URL>/.well-known/agent-card.json, rewritten so that every advertised endpoint points at the gateway instead of the upstream host, and the client authenticates to UiPath rather than to the upstream agent. The upstream's own authentication scheme never leaks.

On every call, Agent Gateway validates the caller's UiPath token and folder access, which requires the View permission on MCP Servers, since A2A shares the MCP Servers permission set. It then screens the request against the agent's guardrails, strips the caller's Authorization header, injects the configured credentials, and streams the response back untouched, including SSE (Server-Sent Events). Messages are not parsed or rewritten, so both A2A 0.3 and 1.0 clients work, and a client selects a version with the A2A-Version header. Calls appear in Traces.

After registration

  • Refresh card re-fetches the card when the remote agent changes, for example a new endpoint, new skills, or an updated description.
  • User configurations lets individual users attach their own connection. For their calls, it takes precedence over the agent's default connection.

Authentication

Calling an A2A agent through UiPath involves two separate authentications, and they're independent of each other. UiPath authenticates to the agent it forwards the request to, using credentials configured once when the agent is registered. The caller authenticates to UiPath separately, with an ordinary platform token. Neither side sees the other's credentials.

Registering an agent configures two things. The agent card tells UiPath where to send messages. Credentials let UiPath authenticate to the agent on every call, since the caller's token is never forwarded. Credentials can be supplied as an Integration Service connection, as headers, or as both.

The agent card

An agent card is the JSON document an A2A agent publishes to describe itself: its name, its skills, and the endpoint that accepts JSON-RPC (JSON Remote Procedure Call) messages. UiPath can't route a call without one, so every registration persists the agent's card as the routing and authentication record.

Registering an agent requires the Create permission on MCP Servers in the target folder. Remote A2A agents share the MCP Servers permission set, so the MCP Servers permissions govern A2A as well.

Option 1: provide the URL to the agent card

Enter the URL of the agent's card, usually the agent's base URL followed by /.well-known/agent-card.json. UiPath fetches it at that moment, using the credentials configured on the same screen: the attached connection, if there is one, or the configured headers otherwise. Asset references in those headers are resolved for this request too, so a card behind an API key stored in Orchestrator can be read without pasting the key.

The URL is checked against SSRF (Server-Side Request Forgery) protection before the request is made, unless the agent is reached through the relay. If UiPath can't reach the address, or the response isn't a success, the agent isn't created. This is the only option that supports Refresh card later.

Option 2: paste the card JSON

Paste the card document directly. UiPath makes no outbound request at all, so no credentials are needed at registration time, and the SSRF check doesn't apply. Use this option for an agent that isn't reachable from UiPath at registration time, or whose card isn't served at a public address. If both a URL and pasted JSON are supplied, the pasted JSON is used and no fetch happens.

However the card arrives, UiPath accepts it only if it's a JSON object that advertises a usable HTTP or HTTPS JSON-RPC endpoint, through the v0.3 url field or the v1.0 supportedInterfaces list. A card without one is rejected at registration rather than at call time.

The stored card isn't re-fetched on every call, so a card that changes upstream doesn't update on its own. Refresh card fetches it again, requires the Edit permission on MCP Servers, and requires a card URL: an agent registered by pasting JSON has none, and the refresh is refused.

Note:

A refresh is authenticated the way a call is, not the way registration was: it uses the connection configured for the user who triggers it, and falls back to the agent's default connection. A refresh can therefore succeed for one user and fail for another.

An Integration Service connection

Attaching a connection to the agent means UiPath retrieves a fresh bearer token from it on every call. This is the better option for any agent whose credentials expire, since nothing has to be rotated by hand. The connection is used together with the folder it belongs to; if that folder is missing, the call fails rather than falling back to another folder or to a configured header.

Headers

Alternatively, configure the headers the agent expects as name and value pairs. The common case is Authorization: Bearer <your-api-key>. Headers are stored encrypted and masked when read back, so a secret pasted once isn't visible afterward.

Connection and header precedence

If a connection is attached, it provides the Authorization header, and any Authorization header configured as well is ignored rather than merely overwritten: the configured line is removed before asset references are resolved, so a header pointing at an asset isn't even looked up. Every other configured header is still sent. The same precedence applies to the card fetch at registration time.

Per-user connections

Individual users can attach a connection of their own through User configurations on the agent's row, which requires the Edit permission on Connections. When the agent is called, the connection is selected in this order:

  1. The connection configured for the calling user.
  2. The agent's default connection.
  3. No connection, in which case the configured headers are used, or no authentication is sent if none are configured.

The connection is chosen for whatever identity the token represents. On a scheduled or unattended run, that identity isn't the person who built or scheduled the agent, so a connection attached under someone's own user isn't used there. If an agent must be reachable from unattended runs, give it a default connection instead of relying on per-user ones.

User configurations also shows the state of each connection:

StatusMeaning
ActiveThe connection is authorized and ready.
Requires authenticationNo working connection is available for this user, either because none is configured or because theirs needs authorizing again.
UnavailableThe shared default connection is missing, disabled, expired, or couldn't be reached.
InactiveThe agent isn't active, or the connection is disabled.

Referencing an Orchestrator asset

Instead of pasting a secret into a header, give the header a value in the form %ASSETS/AssetName%. UiPath resolves it to the asset's value before sending the request, reading the asset from the agent's folder under the calling identity. If the asset can't be read, the call fails rather than forwarding the unresolved placeholder.

Text, Secret, Bool, Integer, Credential, and Windows Credential assets are supported; Credential and Windows Credential assets resolve to the password value. Key-value-list assets are rejected, since one header value must resolve to one string. The resolved value is forwarded to the remote agent as the configured header, so use asset-backed headers only for endpoints you trust with those secrets.

Reaching an agent inside a private network

An agent that runs inside a private network with no inbound firewall ports is reached through the relay: UiPath sends the request to a relay server, and a relay client inside the network collects it and forwards it to the agent. The relay changes how UiPath reaches the agent, not how it authenticates to it: the connection, the headers, their precedence, and asset references all behave exactly as described above. The SSRF check doesn't apply on the call or the card fetch, since the request isn't sent to a public address.

Calling a registered agent

Two kinds of caller reach a registered remote agent. A UiPath client, such as a UiPath agent or a Maestro flow, uses the agent as a tool, and the platform resolves the address, the token, and the protocol version at run time. A direct HTTP client calls the agent's URL itself and has to supply all three. Both authenticate to UiPath the same way; the rest of this section matters only when calling directly.

Every request carries a bearer token in the Authorization header. Nothing is carried forward between turns: each message in a conversation is authenticated on its own.

What you're reachingWhat the caller needs
The agent itselfA valid token for the organization and tenant, access to the folder that contains the agent, and the View permission on MCP Servers in that folder. The Automation User, Automation Developer, Folder Administrator, and Personal Workspace Administrator roles all include it.
Its agent cardFolder access only. The card is discovery metadata, so it's deliberately easier to reach than the agent itself.
Getting a token

A2A uses the same tokens as the rest of the platform.

MethodToken sourceWhen to use it
Personal Access Token (PAT)UiPath Cloud, under your user preferencesThe simplest option for testing. Its expiration is configurable, and it works with any HTTP client.
Interactive Loginuipath authLocal development. The token lasts about an hour and isn't refreshed automatically.
External ApplicationAdmin > External Apps, client credentialsUnattended callers, such as CI/CD (Continuous Integration/Continuous Delivery) pipelines and service accounts, where nobody is present to sign in.

For how to create each one, check MCP Server authentication. A2A agents and MCP Servers are validated by the same pipeline, so any token that works for an MCP Server also works for an A2A agent. The one exception is the MCP OAuth flow, which only MCP endpoints support, since it depends on discovery metadata that A2A agents don't publish.

Getting the agent URL

A registered remote agent lives at:

https://cloud.uipath.com/{org}/{tenant}/agenthub_/a2a/remote/{folderKey}/{slug}
https://cloud.uipath.com/{org}/{tenant}/agenthub_/a2a/remote/{folderKey}/{slug}

Its agent card is at the same address followed by /.well-known/agent-card.json. Get the URL from Agent Gateway > A2A Agents by selecting Copy URL on the agent's row, rather than assembling it by hand: the folder key is a GUID (Globally Unique Identifier) rather than a folder name, and the slug isn't the display name.

Selecting the protocol version

Remote A2A agents support A2A v0.3 and v1.0, selected with the A2A-Version request header:

  • For v1.0, set the header value to 1.0.
  • For v0.3, omit the header. An empty or blank value is treated the same way.

The same header applies when requesting the agent card, and determines which version of the card UiPath returns. UiPath forwards a request only to an endpoint that matches the requested version; it doesn't fall back to another version, since that would send the remote agent a message in a wire format it doesn't understand. If the stored agent card publishes no JSON-RPC endpoint for that version, the request is rejected and the version is named in the response.

What never crosses the boundary

Three things are stopped at the boundary:

  • The caller's token never reaches the remote agent. UiPath validates it, strips it, and injects the credentials configured for the agent. The remote agent has no way to learn who called it through UiPath, or to reuse that identity. UiPath also strips its own internal headers and injects a single outbound trace header of its own.
  • The remote agent's authentication scheme is never advertised to callers. The agent card UiPath serves always declares UiPath's own bearer authentication, whatever the upstream published, and any signature on the original card is removed, since rewriting the card invalidates it. To see the card as the remote agent published it, open the agent and select Edit.
  • A call can't loop back through the platform. An agent card URL that points back at UiPath is rejected when registering the agent. Beyond that, every proxied request carries a marker, and a request that already carries it is refused.

Troubleshooting

For the errors you're most likely to meet and how to resolve them, check Test and troubleshoot A2A. Its Outbound section covers the failures on this path.

For the opposite direction, where an external client calls an agent you deployed, check Inbound (external to UiPath).

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated