Developer
News and Updates
Get Support
Sign in
Get Support
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Sign in
DOCUMENTATION
Cloud
Data Center
Resources
Sign in
Last updated Aug 7, 2026

Agent Card schema

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.

Endpoint

1
2
GET https://a2a.atlassian.com/.well-known/agent.json

This endpoint is public — no authentication required.

Top-level fields

FieldTypeRequiredDescription
namestringYesAgent display name. Static fallback: "Atlassian Rovo".
descriptionstringYesHuman-readable description of the agent.
urlstringYesJSON-RPC endpoint URL. Gateway-managed — always set to https://a2a.atlassian.com/v1/rovo in production.
versionstringYesAgent version. Not the A2A protocol version; see protocolVersion. Gateway-managed — currently "1.0.0".
protocolVersionstringNoA2A protocol version this agent targets. Gateway-managed — currently "0.3.0".
documentationUrlstringAlways*Link to agent documentation. Gateway-managed — always present in served responses.
providerobjectNoProvider organization info. From downstream card when available.
provider.organizationstringConditionalProvider name (e.g., "Atlassian"). Required when provider is present.
provider.urlstringConditionalProvider website URL. Required when provider is present.
capabilitiesobjectYesProtocol features the agent supports. From downstream card when available.
securitySchemesobjectAlways*OAuth 2.0 configuration. Gateway-managed — always present in served responses.
securityarrayAlways*Required security schemes and scopes. Gateway-managed — always present in served responses.
defaultInputModesstring[]YesAccepted input content types. From downstream card when available.
defaultOutputModesstring[]YesProduced output content types. From downstream card when available.
skillsSkill[]YesCapabilities the agent advertises. From downstream card when available.
iconUrlstringAlways*Agent icon URL. Gateway-managed — always present in served responses.
preferredTransportstringAlways*Transport protocol for the main url. Gateway-managed — always "JSONRPC".
additionalInterfacesobject[]Always*Additional transport and URL pairs. Gateway-managed — always points at the gateway JSON-RPC endpoint.
supportsAuthenticatedExtendedCardbooleanNoWhether 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.

Capabilities object

FieldTypeDefaultDescription
streamingbooleann/aWhether the agent supports message/stream. Static fallback: true.
pushNotificationsbooleann/aWhether the agent supports push notifications. Static fallback: false.
stateTransitionHistorybooleann/aWhether tasks include state transition history. Static fallback: false.
extensionsobject[]n/aProtocol 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.

Registration extension

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.

Skill object

FieldTypeRequiredDescription
idstringYesUnique identifier (e.g., "work-in-jira").
namestringYesHuman-readable name (e.g., "Work in Jira").
descriptionstringYesWhat the skill does.
tagsstring[]NoKeywords for discovery and categorization.
examplesstring[]NoExample natural-language prompts.
inputModesstring[]NoPer-skill input mode overrides.
outputModesstring[]NoPer-skill output mode overrides.

See Agent skills for the full list of skills in the static fallback card.

Security schemes

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.

Example response (static fallback)

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."
      ]
    }
  ]
}

Dynamic vs. static sourcing

SourceWhen usedWhat the gateway overwrites
DynamicDownstream Rovo service responds successfullyurl, version, protocolVersion, documentationUrl, iconUrl, securitySchemes, security, additionalInterfaces, preferredTransport
StaticDownstream unavailable or not configuredN/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.

Next steps

  • Agent skills — Detailed reference for each skill in the static fallback card.
  • Authentication — How to use the securitySchemes to authenticate.
  • Architecture — How the Agent Card is served and cached.

Rate this page: