Confluence Cloud
Connect Confluence Cloud pages, spaces, and content to Airia agents over OAuth or an API token.
Confluence Cloud (OAuth) connects your organization's pages, spaces, comments, and attachments to Airia agents, backed directly by Atlassian's own REST API. Each person connects with their own Atlassian account, and access follows Confluence's own permissions on top of whatever scopes the connection is granted.
What It Can Do
| Category | Capability |
|---|---|
| Pages | Create, read, update, delete, copy, and move pages. View and restore page version history, and navigate page hierarchies by ancestors, descendants, and children. |
| Spaces | Create, read, update, and delete spaces, and list all pages in a space. |
| Content | Search content using CQL (Confluence Query Language), and convert content between body formats asynchronously. |
| Comments | Read and write footer comments, and read inline comments. |
| Attachments | Upload, download, update, and delete attachments. |
| Labels | Read, add, and remove labels on a page. |
| Templates | List page templates and create a page from one. |
| Tasks | Search inline tasks and update their status. |
| Content Properties | Read, create, update, and delete custom content properties. |
| Restrictions | Read and manage page access restrictions, and check content permissions. |
| Users and Groups | Search users, look up a user or the current authenticated user, and read group membership. |
See Tools and Required Scopes below for the full list of tools behind these capabilities.
Connecting
Go to the Atlassian Developer Console and select Create → OAuth 2.0 integration. Give the app a name, for example "Airia Confluence," and save.
Select Authorization in the left sidebar, then click Add next to OAuth 2.0 (3LO). Add the following callback URL and save:
https://auth.airia.ai/OAuth/callbackSelect Permissions in the left sidebar, click Add next to the Confluence API, and enable every scope listed under Tools and Required Scopes below. The Granting All Scopes section has both scope lists ready to paste in.
Select Settings and copy the Client ID and Secret.
Your Cloud ID is a UUID Airia uses to reach your specific Confluence site. Visit the following URL, replacing {your-site} with your Atlassian domain, and copy the cloudId value from the response:
https://{your-site}.atlassian.net/_edge/tenant_infoAdd Confluence Cloud (OAuth) as a server on a Gateway or Deployment, then enter your Client ID, Client Secret, and Cloud ID.
The OAuth Scopes field in Airia is optional. Leave it blank to request the standard scopes above, or fill it in to request a different set. If you customize it, make sure to include offline_access so your connection can refresh automatically.
Tools and Required Scopes
Every tool below needs a specific Confluence scope before it will work. Tool names are what an agent actually calls, the same names you'd see in an agent's tool call log.
Atlassian scopes come in two flavors. Classic scopes are broad and recommended, granting one alone is enough for every tool that lists one. Granular scopes are narrower and only needed if you're building an OAuth app without classic scopes, in which case a tool needs every listed granular scope granted together. Most of Confluence's newer page, space, comment, and attachment-reading tools run on Confluence's v2 API, which has no classic scope equivalent at all, so those always need their granular scope regardless of which approach you use.
Pages
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_listpages | List pages in Confluence. | read:page:confluence |
confluence_cloud_rest_api_createpage | Create a new Confluence page. | write:page:confluence |
confluence_cloud_rest_api_getpage | Get a specific page by ID. | read:page:confluence |
confluence_cloud_rest_api_updatepage | Update an existing page. | write:page:confluence |
confluence_cloud_rest_api_deletepage | Delete a page. | delete:page:confluence |
confluence_cloud_rest_api_searchcontent | Search Confluence content using CQL. | search:confluence (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_getpageversions | Get page version history. | read:page:confluence |
confluence_cloud_rest_api_getpageversion | Get a specific version of a page. | read:page:confluence |
confluence_cloud_rest_api_restorepageversion | Restore a previous version of a page. | write:confluence-content (Classic) or read:content-details:confluence and write:content:confluence (Granular) |
confluence_cloud_rest_api_getchildpages | Get child pages. | read:page:confluence |
confluence_cloud_rest_api_getpageancestors | Get page ancestors (parent hierarchy). | read:content.metadata:confluence |
confluence_cloud_rest_api_getpagedescendants | Get all descendant pages (recursive children). | read:hierarchical-content:confluence |
confluence_cloud_rest_api_movepage | Move a page to a new location. | write:confluence-content (Classic) or write:page:confluence (Granular) |
confluence_cloud_rest_api_copypage | Copy a page. | write:confluence-content (Classic) or read:content-details:confluence and write:page:confluence (Granular) |
confluence_cloud_rest_api_copypagehierarchy | Copy a page and all its children. | write:confluence-content (Classic) or read:content.metadata:confluence and write:page:confluence (Granular) |
Content Body
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_startasyncconversion | Start async content format conversion. | read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular) |
confluence_cloud_rest_api_getasyncconversionresult | Get async conversion result. | read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular) |
confluence_cloud_rest_api_getmacrobody | Get macro body content by ID. | read:confluence-content.all (Classic) or read:content.metadata:confluence (Granular) |
Spaces
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getspaces | List all Confluence spaces. | read:space:confluence |
confluence_cloud_rest_api_createspace | Create a new space. | write:space:confluence |
confluence_cloud_rest_api_getspace | Get a specific space. | read:space:confluence |
confluence_cloud_rest_api_updatespace | Update a space. | write:confluence-space (Classic) or read:space-details:confluence and write:space:confluence and write:space.permission:confluence (Granular) |
confluence_cloud_rest_api_deletespace | Delete a space. | write:confluence-space (Classic) or read:content.metadata:confluence and delete:space:confluence (Granular) |
confluence_cloud_rest_api_getspacepages | Get all pages in a space. | read:page:confluence |
Comments
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getpagecomments | Get page comments (footer comments). | read:comment:confluence |
confluence_cloud_rest_api_addpagecomment | Add a comment to a page. | write:comment:confluence |
confluence_cloud_rest_api_getcomment | Get a specific comment. | read:comment:confluence |
confluence_cloud_rest_api_updatecomment | Update a comment. | write:comment:confluence |
confluence_cloud_rest_api_deletecomment | Delete a comment. | delete:comment:confluence |
confluence_cloud_rest_api_getinlinecomments | Get inline comments on a page. | read:comment:confluence |
Attachments
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getattachments | Get attachments on a page. | read:attachment:confluence |
confluence_cloud_rest_api_uploadattachment | Upload an attachment to a page. | write:confluence-file (Classic) or read:content-details:confluence and write:attachment:confluence (Granular) |
confluence_cloud_rest_api_downloadattachment | Download an attachment. | readonly:content.attachment:confluence (Classic) or read:attachment:confluence (Granular) |
confluence_cloud_rest_api_updateattachment | Update/replace an attachment file. | write:confluence-file (Classic) or read:content-details:confluence and write:attachment:confluence (Granular) |
confluence_cloud_rest_api_deleteattachment | Delete an attachment. | delete:attachment:confluence |
Labels
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getlabels | Get labels on a page. | read:page:confluence |
confluence_cloud_rest_api_addlabel | Add a label to a page. | write:confluence-content (Classic) or read:label:confluence and write:label:confluence (Granular) |
confluence_cloud_rest_api_removelabel | Remove a label from a page. | write:confluence-content (Classic) or write:label:confluence (Granular) |
Templates
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_gettemplates | Get available page templates. | read:confluence-content.summary (Classic) or read:template:confluence and read:content-details:confluence (Granular) |
confluence_cloud_rest_api_gettemplate | Get a specific template. | read:confluence-content.summary (Classic) or read:template:confluence and read:content-details:confluence (Granular) |
confluence_cloud_rest_api_createpagefromtemplate | Create a page from a template. | write:confluence-content (Classic) or read:content-details:confluence and write:content:confluence (Granular) |
Tasks
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_searchtasks | Search for inline tasks. | read:task:confluence |
confluence_cloud_rest_api_gettask | Get a specific task. | read:task:confluence |
confluence_cloud_rest_api_updatetaskstatus | Update task status. | write:task:confluence |
Content Properties
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getcontentproperties | Get content properties (custom metadata). | read:page:confluence |
confluence_cloud_rest_api_createcontentproperty | Create a content property. | read:page:confluence and write:page:confluence |
confluence_cloud_rest_api_getcontentproperty | Get a specific content property. | read:page:confluence |
confluence_cloud_rest_api_updatecontentproperty | Update a content property. | read:page:confluence and write:page:confluence |
confluence_cloud_rest_api_deletecontentproperty | Delete a content property. | read:page:confluence and write:page:confluence |
Restrictions
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_getrestrictions | Get page restrictions. | read:confluence-content.all (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_addrestriction | Add a restriction to a page. | write:confluence-content (Classic) or read:content-details:confluence and write:content.restriction:confluence (Granular) |
confluence_cloud_rest_api_removerestriction | Remove all restrictions from a page. | write:confluence-content (Classic) or read:content-details:confluence and write:content.restriction:confluence (Granular) |
confluence_cloud_rest_api_checkcontentpermission | Check if a user has permission. | read:confluence-content.permission (Classic) or read:content.permission:confluence (Granular) |
Users
| Tool | What it does | Scope(s) required |
|---|---|---|
confluence_cloud_rest_api_searchusers | Search for Confluence users. | read:content-details:confluence |
confluence_cloud_rest_api_getuser | Get user by account ID. | read:confluence-user (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_getcurrentuser | Get current authenticated user. | read:confluence-user (Classic) or read:content-details:confluence (Granular) |
confluence_cloud_rest_api_getusergroups | Get groups a user belongs to. | read:confluence-user (Classic) or read:user:confluence and read:group:confluence (Granular) |
confluence_cloud_rest_api_getgroupmembers | Get members of a group. | read:confluence-groups (Classic) or read:group:confluence and read:user:confluence (Granular) |
Granting All Scopes
If you'd rather not cross-reference the table above tool by tool, enable every scope below in the Atlassian console and every tool becomes available at once.
Classic scopes
read:confluence-content.all write:confluence-content read:confluence-content.summary read:confluence-space.summary write:confluence-space read:confluence-props write:confluence-props write:confluence-file readonly:content.attachment:confluence read:confluence-user read:confluence-groups search:confluence read:confluence-content.permissionGranular scopes
read:page:confluence write:page:confluence delete:page:confluence read:comment:confluence write:comment:confluence delete:comment:confluence read:attachment:confluence write:attachment:confluence delete:attachment:confluence read:space:confluence read:content-details:confluence read:content.metadata:confluence read:space-details:confluence read:hierarchical-content:confluence read:template:confluence read:group:confluence read:task:confluence write:task:confluence write:label:confluence write:content.restriction:confluenceTogether, these two lists cover every tool in the reference above. The Classic list covers every tool that lists a Classic option, and the Granular list adds the scopes Confluence's newer v2 API tools need, since most of them, mainly page, space, comment, and attachment-reading tools, have no Classic equivalent at all.
Troubleshooting
Learn More
- Confluence Cloud REST API v2
- Confluence Cloud scopes for OAuth 2.0
- Atlassian Developer Console
- OAuth 2.0 for Atlassian apps
Confluence Cloud (API Token)
Airia also offers Confluence Cloud (API Token), a separate, Restricted server that most organizations will never see or need. It's not enabled by default. If you want to use it, talk to your Airia contact about adding it to your tenant, after which a Platform Admin, Admin, or Security Admin can turn it on from Server Management using Add Restricted Server.
It exposes the exact same tools as Confluence Cloud (OAuth) above, using a different way of authenticating: every request runs as whichever Atlassian account owns the token, so there's no OAuth app, no Cloud ID, and no scopes to grant. The token has full access to whatever that account can already do in Confluence.
Go to your Atlassian API token settings and create a new token. Copy it, along with the email address of the Atlassian account it belongs to.
Combine your email and token as {your email}:{your API token}, then Base64 encode the whole string. On macOS or Linux, you can run:
echo -n "[email protected]:your-api-token" | base64Add Confluence Cloud (API Token) as a server on a Gateway or Deployment, then enter the encoded string as the credential, along with your Atlassian domain, the part before .atlassian.net in your site's URL.
The credential Airia needs is the Base64 encoding of email:apitoken, not the API token by itself. This method authenticates every request with a single token rather than individual user sign-in, so it's best suited to simpler or single-account setups.
Related Resources
Jira Cloud
Connect Jira issues, boards, and sprints the same way
Tenant vs. Personal Level App Credentials
Decide whether your OAuth app registration is shared or personal
Supported Credential Types
See how each authentication method works across servers
Server Management
Approve which MCP servers your organization can use