Atlassian Cloud
For: tenant administrators and plugin users.
Connect Jira, Confluence and Jira Service Management on Atlassian Cloud through Atlassian's Rovo MCP server. The connector uses your tenant's own OAuth client.
| Manifest name | atlassian (hub name ai.oz0/atlassian), kind: connector |
| Tools | atlassian and atlassian_jsm: both Rovo's MCP server, https://mcp.atlassian.com/v2/mcp?tools=all |
| Connections | atlassian-cloud (OAuth 2.1 with PKCE, your own public client, refreshed by the edge), atlassian-cloud-jsm (a service account's API key) |
| Agent | atlassian, a generic delegate on the default alias |
| Pins | snapshots/atlassian.json (21 functions) and snapshots/atlassian_jsm.json (4) |
| Egress | mcp.atlassian.com from nodes; auth.atlassian.com from the edge |
An Orchestrator Zero connector that wraps Atlassian's remote MCP server (Rovo, https://mcp.atlassian.com/v2/mcp):
two tools on the same server, atlassian on the connection atlassian-cloud (a person's OAuth sign-in) and
atlassian_jsm on the connection atlassian-cloud-jsm (a service account's API key, because Rovo's JSM tools take no
OAuth sign-in), and one delegate agent, atlassian, that other plugins hand their work on Atlassian Cloud to. For
Jira and Confluence Data Center, use atlassian-dc.
Sources, read 2026-10-17: https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/, https://support.atlassian.com/atlassian-rovo-mcp-server/docs/supported-tools/, https://support.atlassian.com/atlassian-rovo-mcp-server/docs/configuring-authentication-via-api-token/, https://github.com/atlassian/atlassian-mcp-server and the server's own OAuth metadata (https://mcp.atlassian.com/.well-known/oauth-protected-resource/v2/mcp).
Functions
Every function takes the site's cloudId, which getAccessibleAtlassianResources lists.
| Function | Does | Waits for a person |
|---|---|---|
atlassian.getAccessibleAtlassianResources | Lists the sites the sign-in reaches, with their cloud IDs | no |
atlassian.atlassianUserInfo | Reads the signed-in user | no |
atlassian.searchJiraIssuesUsingJql | Searches Jira issues with JQL | no |
atlassian.getJiraIssue | Reads one issue | no |
atlassian.listJiraIssueComments | Lists an issue's comments | no |
atlassian.listJiraIssueTransitions | Lists the transitions an issue can take | no |
atlassian.listJiraProjects | Lists projects | no |
atlassian.getJiraIssueTypeMetaWithFields | Reads the fields an issue type takes | no |
atlassian.lookupJiraAccountId | Finds a user's account ID | no |
atlassian.searchConfluence | Searches Confluence with CQL | no |
atlassian.getConfluenceContent | Reads a page or blog post | no |
atlassian.listConfluenceSpaces | Lists spaces | no |
atlassian.listConfluenceComments | Lists a page's comments | no |
atlassian.search | Searches everything with Rovo (spends Rovo credits) | no |
atlassian.createJiraIssue | Creates an issue | yes |
atlassian.editJiraIssue | Changes an issue's fields | yes |
atlassian.addOrEditJiraIssueComment | Comments on an issue, or changes a comment | yes |
atlassian.transitionJiraIssue | Moves an issue through its workflow | yes |
atlassian.createConfluenceContent | Creates a page or blog post | yes |
atlassian.updateConfluenceContent | Replaces a page's content | yes |
atlassian.createConfluenceComment | Comments on a page | yes |
atlassian_jsm.getJsmOpsAlerts | Lists JSM Operations alerts | no |
atlassian_jsm.getJsmOpsScheduleInfo | Reads an on-call schedule | no |
atlassian_jsm.getJsmOpsTeamInfo | Reads an operations team | no |
atlassian_jsm.updateJsmOpsAlert | Acknowledges, closes, assigns or notes an alert | yes |
Rovo lists more (Bitbucket, Loom, Goals, deletes, the Teamwork Graph). The connections give those no token, so they cannot run; a new version of this connector pins more when a job needs them.
Connect it
Jira and Confluence (atlassian-cloud). Rovo's sign-in is OAuth 2.1 with PKCE at auth.atlassian.com. Atlassian
documents no developer-console app for Rovo; its authorization server takes a client ID metadata document, a JSON file
the tenant hosts at an https:// URL of its own, whose URL is the client ID. Orchestrator Zero registers no client
at Atlassian.
- Host a client ID metadata document (for example at
https://oz0.example.com/oauth/atlassian.json):A client ID Atlassian issued you works the same way.{"client_id": "https://oz0.example.com/oauth/atlassian.json", "client_name": "Orchestrator Zero", "redirect_uris": ["<the redirect URL `oz0 connection start atlassian-cloud` shows>"], "grant_types": ["authorization_code", "refresh_token"], "response_types": ["code"], "token_endpoint_auth_method": "none"} - An org admin allows the edge's domain under Atlassian Administration, Rovo, Rovo MCP server (domain controls).
- Connect:
oz0 connection set atlassian-cloud --param client_id=https://oz0.example.com/oauth/atlassian.json oz0 connection start atlassian-cloud # opens Atlassian's sign-in; the edge keeps and refreshes the token
The scopes asked for are read:me, read:, write: and search:jira:agent-interface, the same three for Confluence,
search:rovo:agent-interface and offline_access; never delete: or manage:jira:agent-interface. Each person's
token can do what that person can do in Jira and Confluence, no more.
JSM Operations (atlassian-cloud-jsm). Rovo's JSM tools take only an API token.
- An org admin allows API tokens under Atlassian Administration, Rovo, Rovo MCP server, Authentication.
- Create a service account with the JSM Operations scopes and an API key for it.
oz0 connection start atlassian-cloud-jsmopens the edge's page, where you paste the key. It is kept as the tenant secretATLASSIAN_CLOUD_JSM_API_KEYand sent only to Rovo's host.- The JSM tool's functions join the plugin's tool snapshot when they first list, as the OAuth tool's did, so they
need no approval of their own; a listing that changes after that waits for
oz0 plugin approve-tools atlassian, like any function whose listing changed.
Both tools reach only mcp.atlassian.com; the edge's sign-in and refreshes reach only auth.atlassian.com.
Develop and re-pin
uv lock && uv sync # the tests' dependencies; the connector runs no code of its own on nodes
uv run pytest # the contract tests, against the fake in tests/fake_server.py
uv run python tests/snapshot.py --check # the pinned snapshots match the fake's listing
oz0 plugin lint --verified . # the house rules, as verified plugins are held to them
oz0 plugin test . # the delegate's eval, from its recorded answer
The snapshots were written from Atlassian's documented tool list; the input schemas, descriptions and hints in
tests/rovo_tools.json are this project's until someone with an Atlassian account saves Rovo's own listing
(POST https://mcp.atlassian.com/v2/mcp?tools=all, tools/list, once with the OAuth sign-in and once with an API
key) and writes the snapshots from it: uv run python tests/snapshot.py --write --from listing.json --auth oauth --listed-from "<where>, read <date>". Then change tests/rovo_tools.json to match and review the difference.
Limits
- Writes ask a person by default, through the plugin's suggested policy, which an admin may switch with a reason:
createJiraIssue,editJiraIssue,addOrEditJiraIssueComment,transitionJiraIssue,createConfluenceContent,updateConfluenceContent,createConfluenceCommentandupdateJsmOpsAlert. Up to 1.0.0 they were underrequires_approval; an update from it keeps asking about each until an admin switches it. - The AI label: Rovo reads nothing Orchestrator Zero sends beside the call, so the node puts the tenant's label at the
start of the text people read, after the approval:
createJiraIssue's description,addOrEditJiraIssueComment's comment,createConfluenceContent's andupdateConfluenceContent's body,createConfluenceComment's comment andupdateJsmOpsAlert's note. With the tenant's label turned off, everything is posted as written. - Not labelled: text that
editJiraIssueandtransitionJiraIssueset. Both take an issue's fields as one open object (fields), and the label can only be pointed at a text argument the server's listing names, so a new description or summary set through them is posted without the label. Both ask a person by default, who sees the text as it will be posted. To have an issue's description labelled, have the agent create the issue (createJiraIssue) or comment on it (addOrEditJiraIssueComment) rather than rewrite its fields. - Rovo credits:
atlassian.searchspends the tenant's Rovo credits, from the organisation's shared pool. Atlassian documents 1 to 10 a call and reports none, so each successful call is counted as 10 credits on the job's usage, where budgets see it. Other Rovo tools that spend credits (the Teamwork Graph, Confluence infographics) are not pinned. - Results:
getAccessibleAtlassianResources,searchJiraIssuesUsingJql,getJiraIssue,listJiraIssueTransitions,searchConfluence,getConfluenceContentandgetJsmOpsAlertshave declared output schemas, which the node checks a structured result against; if Rovo answers one of them in text only, it stays text. The other functions answer in text. - Writes are not safe to repeat: Rovo takes no idempotency key, so a retried
addOrEditJiraIssueCommentcomments twice. A transition made twice is one change. The platform makes each write once. - A call over Atlassian's rate limit (HTTP 429) is not made. A read is called again after the wait Atlassian asks for, once your tenant approved the listing; a write is not tried again by the platform: the agent reads an error that says it is retryable and how long Atlassian asks to wait.
- JSM: the API key must be a service account's, sent as a bearer token. A personal API token (Basic
email:token) is not supported, because a connection's token goes inAuthorization: Bearer. Rovo's JSM tools are Operations only (alerts, on-call, teams): service requests are Jira issues, read and commented on with theatlassiantool. - The client: no dynamic client registration. The tenant brings a client ID metadata document's URL or a client ID Atlassian issued; Atlassian's domain controls must allow the edge's callback domain.
- Region: Rovo has one endpoint,
mcp.atlassian.com, and documents no regional one, so calls do not stay in an EU region by choosing a host. Where the data is processed is Atlassian's to say. - Installing or updating runs the delegate's eval as the quality gate, on the tenant's own models (one model call per case), not from its recorded answer.
- Tested against a fake of Rovo's server, shaped from Atlassian's documentation, not against the live service. "Verified" means this project tested, pinned and secured the connector; Atlassian does not endorse it.
ai.oz0/email
Agents send mail for their jobs to the tenant's own domains, with the AI label and approval by default, through the operator's SMTP relay or Microsoft Graph, every message recorded.
Atlassian Data Center
The verified connector ai.oz0/atlassian-dc - Jira and Confluence Data Center from Atlassian's own OpenAPI documents, on your own application links, every write asking a person by default, Jira's webhooks as events.