The Agent Card is a JSON metadata document served at /.well-known/agent.json per the A2A protocol specification (§4). External agents fetch this card to discover Rovo's identity, capabilities, skills, and authentication requirements before sending any requests.
1 2GET https://a2a.atlassian.com/.well-known/agent.json
This endpoint is public — no authentication required.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Agent display name. Static fallback: "Atlassian Rovo". |
description | string | Yes | Human-readable description of the agent. |
url | string | Yes | JSON-RPC endpoint URL. Gateway-managed — always set to https://a2a.atlassian.com/v1/rovo in production. |
version | string | Yes | Agent version. Not the A2A protocol version; see protocolVersion. Gateway-managed — currently "1.0.0". |
protocolVersion | string | No | A2A protocol version this agent targets. Gateway-managed — currently "0.3.0". |
documentationUrl | string | Always* | Link to agent documentation. Gateway-managed — always present in served responses. |
provider | object | No | Provider organization info. From downstream card when available. |
provider.organization | string | Conditional | Provider name (e.g., "Atlassian"). Required when provider is present. |
provider.url | string | Conditional | Provider website URL. Required when provider is present. |
capabilities | object | Yes | Protocol features the agent supports. From downstream card when available. |
securitySchemes | object | Always* | OAuth 2.0 configuration. Gateway-managed — always present in served responses. |
security | array | Always* | Required security schemes and scopes. Gateway-managed — always present in served responses. |
defaultInputModes | string[] | Yes | Accepted input content types. From downstream card when available. |
defaultOutputModes | string[] | Yes | Produced output content types. From downstream card when available. |
skills | Skill[] | Yes | Capabilities the agent advertises. From downstream card when available. |
iconUrl | string | Always* | Agent icon URL. Gateway-managed — always present in served responses. |
preferredTransport | string | Always* | Transport protocol for the main url. Gateway-managed — always "JSONRPC". |
additionalInterfaces | object[] | Always* | Additional transport and URL pairs. Gateway-managed — always points at the gateway JSON-RPC endpoint. |
supportsAuthenticatedExtendedCard | boolean | No | Whether an authenticated extended card is available. From downstream card; the live card reports false. |
Gateway-managed fields (marked "Always*") are overwritten by the gateway regardless of what the downstream card provides. Clients can rely on these fields always being present in the served response. The A2A spec marks them as optional, but the Atlassian gateway always injects them. All other fields come from the downstream Rovo service when available, or from the static fallback card otherwise.
| Field | Type | Default | Description |
|---|---|---|---|
streaming | boolean | n/a | Whether the agent supports message/stream. Static fallback: true. |
pushNotifications | boolean | n/a | Whether the agent supports push notifications. Static fallback: false. |
stateTransitionHistory | boolean | n/a | Whether tasks include state transition history. Static fallback: false. |
extensions | object[] | n/a | Protocol extensions the agent advertises. Gateway-managed — the gateway always includes its own entries and appends any from the downstream card. |
The gateway supports message/stream and proxies the downstream SSE response without buffering. Check the live Agent Card for capabilities advertised in the target environment.
The card advertises one extension that carries the Dynamic Client Registration endpoint:
1 2{ "capabilities": { "extensions": [ { "uri": "https://cloud.google.com/marketplace/docs/partners/ai-agents/setup-dcr", "params": { "target_url": "https://auth.atlassian.com/rIh7rYbkJiQdDle1kZAShJjyflKVUdtV/dcr/register" } } ] } }
params.target_url is the endpoint an agent platform posts to in order to register itself as an OAuth client. Because manual client registration is not supported, this extension is what makes the only supported registration route discoverable. Read the value from the live card rather than hardcoding it.
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier (e.g., "work-in-jira"). |
name | string | Yes | Human-readable name (e.g., "Work in Jira"). |
description | string | Yes | What the skill does. |
tags | string[] | No | Keywords for discovery and categorization. |
examples | string[] | No | Example natural-language prompts. |
inputModes | string[] | No | Per-skill input mode overrides. |
outputModes | string[] | No | Per-skill output mode overrides. |
See Agent skills for the full list of skills in the static fallback card.
The card's securitySchemes describes the OAuth 2.0 authorization code flow:
1 2{ "oauth2": { "type": "oauth2", "flows": { "authorizationCode": { "authorizationUrl": "https://auth.atlassian.com/authorize", "tokenUrl": "https://auth.atlassian.com/oauth/token", "refreshUrl": "https://auth.atlassian.com/oauth/token", "scopes": { "read:me": "Read the current user profile", "offline_access": "Maintain access when the user is offline", "full_access:chat:rovo": "Access the Rovo A2A chat capability" } } } } }
The security array specifies which scopes are required:
1 2[{ "oauth2": ["read:me", "offline_access", "full_access:chat:rovo"] }]
These values are gateway-managed — the gateway always overwrites them from its own OAuth configuration, regardless of what the downstream card provides. Read them from the live card rather than hardcoding them.
This is the static fallback card. The live card at https://a2a.atlassian.com/.well-known/agent.json may differ in name, description, capabilities, skills, and content modes.
1 2{ "name": "Atlassian Rovo", "description": "Chat with Rovo, Atlassian's AI teammate that helps you get things done across all your work tools.", "url": "https://a2a.atlassian.com/v1/rovo", "version": "1.0.0", "protocolVersion": "0.3.0", "documentationUrl": "https://www.atlassian.com/platform/remote-mcp-server", "provider": { "organization": "Atlassian", "url": "https://www.atlassian.com" }, "capabilities": { "streaming": true, "pushNotifications": false, "stateTransitionHistory": false }, "securitySchemes": { "oauth2": { "type": "oauth2", "flows": { "authorizationCode": { "authorizationUrl": "https://auth.atlassian.com/authorize", "tokenUrl": "https://auth.atlassian.com/oauth/token", "refreshUrl": "https://auth.atlassian.com/oauth/token", "scopes": { "read:me": "Read the current user profile", "offline_access": "Maintain access when the user is offline", "full_access:chat:rovo": "Access the Rovo A2A chat capability" } } } } }, "security": [{ "oauth2": ["read:me", "offline_access", "full_access:chat:rovo"] }], "defaultInputModes": ["text/plain"], "defaultOutputModes": ["text/plain"], "skills": [ { "id": "work-in-jira", "name": "Work in Jira", "description": "Get Jira context like project status, work item details, or sprint data right where you're doing analysis. You can also create, edit, delete, and update work items in your Jira spaces.", "tags": [ "Jira work item", "sprint backlog", "sprint planning", "kanban", "scrum", "project planning", "project management" ], "examples": [ "Summarize the status of all open Jira work items assigned to me. Include ticket links and context ordered by priority and deadline, highlighting any critical details.", "List my Jira issues in \"Blocked\" status, ordered by due date. Include the reason they are blocked, the last update made, and their project links.", "Create a new Jira work item in the project [project name] based on this project brief [project brief link]. The work item should include a summary, description, acceptance criteria, and priority.", "Provide a list of tips to maximize productivity when using Jira across different Atlassian apps. Include detailed examples and prompts, ensuring each one specifies a clear goal, relevant context, and expected outcome." ] }, { "id": "work-in-confluence", "name": "Work in Confluence", "description": "Find answers from Confluence and create pages. Turn meeting notes, specs, or drafts into team documentation instantly. You can also edit, delete, and update existing Confluence pages.", "tags": [ "Confluence space", "knowledge base", "release notes", "meeting notes", "product specs", "documentation" ], "examples": [ "Draft a report for Confluence summarizing the key updates and additions I made over the past week. For each significant update or addition, create a subsection with a brief explanation, focusing only on the essential information", "Create a Confluence page with all open Jira tickets assigned to me, ordered by priority and deadline. For each ticket, include a direct link, priority level (High, Medium, Low), deadline, and any relevant context or updates.", "Find Confluence pages related to [customer name]. Summarize each of the pages, highlighting the main ideas and key points that would be important for my upcoming conversation." ] } ] }
| Source | When used | What the gateway overwrites |
|---|---|---|
| Dynamic | Downstream Rovo service responds successfully | url, version, protocolVersion, documentationUrl, iconUrl, securitySchemes, security, additionalInterfaces, preferredTransport |
| Static | Downstream unavailable or not configured | N/A (entire card is local) |
On a dynamic card the gateway also forces capabilities.pushNotifications and capabilities.stateTransitionHistory to false, always includes its own capabilities.extensions, back-fills provider when the downstream omits it, and normalizes skill inputModes and outputModes to media types.
The dynamic card is cached for 5 minutes (300-second TTL). Cache write failures are fire-and-forget and do not block the response.
securitySchemes to authenticate.Rate this page: