---
title: "ai.oz0/a2a-remote"
description: "Outside agents that speak the A2A protocol, as agents of your tenant under its budgets, approvals, kill switches and audit log; and the AgentCore and Foundry presets on it."
canonical_url: "https://docs.oz0.ai/build/plugins/verified/a2a-remote"
---
# ai.oz0/a2a-remote

> Outside agents that speak the A2A protocol, as agents of your tenant under its budgets, approvals, kill switches and audit log; and the AgentCore and Foundry presets on it.

For: tenant administrators and plugin users.

`ai.oz0/a2a-remote` adds the `a2a` harness so an outside agent that speaks [A2A](https://a2a-protocol.org/latest/specification/) can appear in your tenant's catalog. Your plugin defines the agent with `runtime: remote:a2a` and supplies its card under `harness: card`.

See [outside A2A agents](https://docs.oz0.ai/build/apps/remote-agents/a2a#outside-a2a-agents) for the definition and job behaviour.

It has no tools, no agents and no secrets, and reaches no host of its own: a session reaches only the hosts of the plugin that defines the agent, and gets only the one secret its `auth` names. Nodes know plugins by name, so install this plugin only from its verified source: whatever plugin a tenant installs under the name `a2a-remote` gets the outside agents' secrets, as any plugin gets the tenant secrets it names.

## Install

```bash [Terminal]
oz0 plugin install hub:ai.oz0/a2a-remote
```

## What its client does

<table>
<thead>
  <tr>
    <th>
      Step
    </th>
    
    <th>
      What it holds to
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Reads the card
    </td>
    
    <td>
      The tenant's egress list and the defining plugin's, on every node; https; no redirect; a signature checked wherever its key can be found (ES256, ES384, RS256, PS256 or EdDSA over the card's RFC 8785 form), its key from the card's own origin or the keys the agent's definition pins (<code>
        jwks
      </code>
      
      ); how the card was checked goes into the audit log
    </td>
  </tr>
  
  <tr>
    <td>
      Sends the job's input
    </td>
    
    <td>
      To the card's JSON-RPC interface on the card's own origin only, in A2A 1.0 (or 0.3 for a card that offers only that), with <code>
        returnImmediately
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Follows the task
    </td>
    
    <td>
      <code>
        GetTask
      </code>
      
       every 2 seconds, slowing to 10 while nothing changes; never a stream, never a push address
    </td>
  </tr>
  
  <tr>
    <td>
      Answers its questions
    </td>
    
    <td>
      Only after the job's approval of <code>
        a2a.continue
      </code>
      
      , or a person's answer for an agent that may ask people; a refusal or a deadline cancels the task
    </td>
  </tr>
  
  <tr>
    <td>
      Takes the answer
    </td>
    
    <td>
      Artifacts, each checked against <code>
        ai.oz0/sha256
      </code>
      
       when it has one; no file parts
    </td>
  </tr>
  
  <tr>
    <td>
      Stops
    </td>
    
    <td>
      <code>
        CancelTask
      </code>
      
       when the job is cancelled, killed or out of budget
    </td>
  </tr>
</tbody>
</table>

Every exchange is reported to the node's runtime with its size and SHA-256, which records it in the audit log before the segment ends.

## AgentCore and Foundry

Two more verified plugins are presets on this harness: `ai.oz0/a2a-agentcore` (an agent on Amazon Bedrock AgentCore Runtime, agent `oz0-agentcore`) and `ai.oz0/a2a-foundry` (a Microsoft Foundry Agent Service agent, agent `oz0-foundry`). Each takes the agent's address from the tenant's settings and its client secret from a secret: see [Remote agents](https://docs.oz0.ai/build/apps/remote-agents/a2a#amazon-bedrock-agentcore-and-microsoft-foundry). Both are tested against stand-ins only.

## Tested how

`make test-plugins` runs the client against a stand-in outside agent in plain A2A 1.0 and 0.3 and in AgentCore's and Foundry's shapes; `make e2e-a2a-remote` runs jobs through a dev server and a node against it; `make interop` runs it against the A2A SDKs' own sample servers (the [interop matrix](https://docs.oz0.ai/build/apps/interop#our-a2a-client)).


## Sitemap

See the full [sitemap](https://docs.oz0.ai/sitemap.md) for all pages.
