The Atlassian A2A Gateway is a cloud-hosted service that implements the A2A (Agent2Agent) protocol specification. It acts as a bridge between external AI agents and Atlassian Rovo, which in turn accesses Atlassian Cloud product APIs.
When an external agent sends a request, the request flows through several layers:
1 2External Agent → Agent Card discovery (/.well-known/agent.json) → OAuth 2.0 authentication → Admin enablement check → JSON-RPC dispatcher → JSON-RPC method handler → Rovo Agent Adapter → Rovo backend → Atlassian Cloud APIs (Jira, Confluence, etc.)
Each layer handles a specific concern:
/.well-known/agent.json to learn about Rovo's identity, advertised skills, and authentication requirements. This endpoint is public.403 with an A2A-specific error.message/stream and tasks/resubscribe use SSE and are piped without buffering.The Agent Card at https://a2a.atlassian.com/.well-known/agent.json is the gateway's public discovery document. Agents fetch it before authentication to learn where to send requests, which OAuth scopes are required, and which high-level skills Rovo advertises.
| Field | What it tells the agent |
|---|---|
name and description | The agent's identity and purpose |
url | The JSON-RPC endpoint for task execution |
version | The agent's own version. This is not the A2A protocol version |
protocolVersion | The A2A protocol version the gateway implements (0.3.0) |
capabilities | The protocol features the card advertises |
securitySchemes and security | The OAuth 2.0 flow and required scopes |
defaultInputModes and defaultOutputModes | The default content modes the card advertises |
skills | The high-level tasks Rovo advertises to external agents |
The static fallback card advertises text/plain input and output modes and the two skills documented in Agent skills. The downstream card may advertise different values. Inspect the live Agent Card for capabilities in the target environment.
Check the live Agent Card for advertised capabilities. The table below lists the methods accepted by the gateway.
The Agent Card is the entry point for A2A discovery. The gateway uses a cache → fetch → fallback strategy:
Hydration happens at serve-time (not cache-time), so changes to OAuth configuration take effect immediately without waiting for cache expiry.
The gateway always replaces these fields on the downstream card with locally managed values: url, version, protocolVersion, documentationUrl, iconUrl, securitySchemes, security, additionalInterfaces, and preferredTransport. It also forces capabilities.pushNotifications and capabilities.stateTransitionHistory to false, and always includes its own capabilities.extensions entries alongside any the downstream supplies.
Two fields are adjusted rather than replaced. provider is taken from the downstream card when present and back-filled with Atlassian details otherwise. Skill inputModes and outputModes are normalized to media types, so a legacy "text" value is served as text/plain.
The remaining fields come from the downstream card when available: name, description, capabilities.streaming, defaultInputModes, defaultOutputModes, and skills.
The dispatcher validates inbound requests against the JSON-RPC 2.0 specification:
jsonrpc, id, method)jsonrpc is "2.0" and id is a string or number-32601 Method not found for unknown methodsThe gateway keeps the JSON-RPC envelope intact and forwards it to the downstream Rovo service:
text/event-stream body directly to the client without buffering.| Endpoint | URL | Method | Auth | Description |
|---|---|---|---|---|
| Agent Card | /.well-known/agent.json | GET | None | Public agent discovery |
| JSON-RPC | /v1/rovo | POST | OAuth 2.0 | Task execution |
| Endpoint | URL |
|---|---|
| Agent Card | https://a2a.atlassian.com/.well-known/agent.json |
| JSON-RPC | https://a2a.atlassian.com/v1/rovo |
| Method | Status | Description |
|---|---|---|
message/send | Proxied | Send a message and receive one JSON-RPC response |
message/stream | Proxied with SSE | Send a message and receive streaming task and artifact events |
tasks/get | Proxied | Retrieve current downstream task state |
tasks/cancel | Proxied | Request downstream task cancellation |
tasks/resubscribe | Proxied with SSE | Resume a downstream task event stream |
The gateway does not own task state. It forwards downstream Message, Task, artifact, status, and error envelopes unchanged. message/send returns a single response after Rovo finishes the task. Requests that run longer than roughly 30 seconds can be terminated at the network edge with an HTTP 500 before Rovo finishes. That limit is enforced by the CDN rather than by the gateway, so treat the number as approximate. Use message/stream for any request that may run longer, including multi-step work.
A2A is served from a2a.atlassian.com, which is a separate host from the Rovo MCP server at mcp.atlassian.com. The two do not share a request path, so an A2A client should never send JSON-RPC requests to mcp.atlassian.com.
Rate this page: