Jira Cloud
Connect Jira Cloud issues, projects, and sprints to Airia agents over OAuth or an API token.
Jira Cloud (OAuth) connects your organization's issues, projects, boards, and sprints to Airia agents, backed directly by Atlassian's own REST API. Each person connects with their own Atlassian account, and access follows Jira's own permissions on top of whatever scopes the connection is granted.
What It Can Do
| Category | Capability |
|---|---|
| Issues | Create, read, update, delete, assign, and transition issues, individually or in bulk. Search with JQL, read changelogs, and manage comments, attachments, issue links, remote links, watchers, and votes. |
| Worklogs | Log time against an issue, and read, update, or delete existing worklog entries. |
| Projects | Search and read project details, and manage components and versions. |
| Boards and Sprints | Read Scrum and Kanban boards, read and create sprints, move issues into a sprint, and read the issues on a board or in a sprint. |
| Users | Search users, look up a specific user or the current authenticated user, and find users assignable to an issue or project. |
| Reference Data | Read labels, priorities, statuses, issue types, fields, and field options. |
| Filters and Dashboards | Create, read, update, and delete saved JQL filters, and read dashboards. |
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 Jira," 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 Jira 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 Jira 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 Jira 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 Jira 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. A few tools, mostly Jira Software board and sprint tools, have no classic equivalent at all and always need their granular scope(s) regardless of which approach you use.
Issues
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_searchissuesjql | Search Jira issues using JQL query language. | read:jira-work (Classic) or read:issue-details:jira and read:field.default-value:jira and read:field.option:jira and read:field:jira and read:group:jira (Granular) |
jira_cloud_rest_api_getsearchapproximatecount | Get approximate count of issues matching JQL. | read:jira-work (Classic) or read:issue-details:jira and read:field.default-value:jira and read:field.option:jira and read:field:jira and read:group:jira (Granular) |
jira_cloud_rest_api_bulkfetchissues | Fetch multiple issues by ID in bulk. | read:jira-work (Classic) or read:issue-meta:jira and read:issue-security-level:jira and read:issue.vote:jira and read:issue.changelog:jira and read:avatar:jira and read:issue:jira and read:status:jira and read:user:jira and read:field-configuration:jira (Granular) |
jira_cloud_rest_api_getissue | Get a single Jira issue by key or ID. | read:jira-work (Classic) or read:issue-meta:jira and read:issue-security-level:jira and read:issue.vote:jira and read:issue.changelog:jira and read:avatar:jira and read:issue:jira and read:status:jira and read:user:jira and read:field-configuration:jira (Granular) |
jira_cloud_rest_api_updateissue | Update an existing Jira issue. | write:jira-work (Classic) or write:issue:jira (Granular) |
jira_cloud_rest_api_deleteissue | Delete a Jira issue permanently. | write:jira-work (Classic) or delete:issue:jira (Granular) |
jira_cloud_rest_api_createissue | Create a new Jira issue. | write:jira-work (Classic) or write:issue:jira and write:comment:jira and write:comment.property:jira and write:attachment:jira and read:issue:jira (Granular) |
jira_cloud_rest_api_getissuetransitions | Get available workflow transitions for an issue. | read:jira-work (Classic) or read:issue.transition:jira and read:status:jira and read:field-configuration:jira (Granular) |
jira_cloud_rest_api_transitionissue | Transition an issue to a new status. | write:jira-work (Classic) or write:issue:jira and write:issue.property:jira (Granular) |
jira_cloud_rest_api_assignissue | Assign an issue to a user. | write:jira-work (Classic) or write:issue:jira (Granular) |
jira_cloud_rest_api_getissuechangelog | Get issue change history. | read:jira-work (Classic) or read:issue-meta:jira and read:avatar:jira and read:issue.changelog:jira (Granular) |
jira_cloud_rest_api_bulkcreateissues | Bulk create multiple issues. | write:jira-work (Classic) or write:issue:jira and write:comment:jira and write:comment.property:jira and write:attachment:jira and read:issue:jira (Granular) |
jira_cloud_rest_api_bulktransitionissues | Bulk transition multiple issues. | write:jira-work (Classic) or write:issue:jira and read:issue:jira (Granular) |
Comments
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getcomments | Get comments on an issue. | read:jira-work (Classic) or read:comment:jira and read:comment.property:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_addcomment | Add a comment to an issue. | write:jira-work (Classic) or read:comment:jira and read:comment.property:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and write:comment:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_updatecomment | Update an existing comment. | write:jira-work (Classic) or read:comment:jira and read:comment.property:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and write:comment:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_deletecomment | Delete a comment from an issue. | write:jira-work (Classic) or delete:comment:jira and delete:comment.property:jira (Granular) |
Attachments
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getattachments | Get attachments on an issue. | read:jira-work (Classic) or read:issue-meta:jira and read:issue-security-level:jira and read:issue.vote:jira and read:issue.changelog:jira and read:avatar:jira and read:issue:jira and read:status:jira and read:user:jira and read:field-configuration:jira (Granular) |
jira_cloud_rest_api_addattachment | Add an attachment to an issue. | write:jira-work (Classic) or read:user:jira and write:attachment:jira and read:attachment:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_deleteattachment | Delete an attachment. | write:jira-work (Classic) or delete:attachment:jira (Granular) |
Issue Links
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_linkissues | Create a link between two issues. | write:jira-work (Classic) or write:comment:jira and write:issue:jira and write:issue-link:jira (Granular) |
jira_cloud_rest_api_deleteissuelink | Delete a link between issues. | write:jira-work (Classic) or delete:issue-link:jira (Granular) |
jira_cloud_rest_api_getremotelinks | Get remote links on an issue. | read:jira-work (Classic) or read:issue.remote-link:jira and read:status:jira (Granular) |
jira_cloud_rest_api_addremotelink | Add a remote/external link to an issue. | write:jira-work (Classic) or write:issue:jira and write:issue.remote-link:jira and read:issue.remote-link:jira (Granular) |
Worklogs
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getworklogs | Get work logs (time entries) on an issue. | read:jira-work (Classic) or read:group:jira and read:issue-worklog:jira and read:issue-worklog.property:jira and read:project-role:jira and read:user:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_addworklog | Log time/work on an issue. | write:jira-work (Classic) or write:issue-worklog:jira and write:issue-worklog.property:jira and read:avatar:jira and read:group:jira and read:issue-worklog:jira and read:project-role:jira and read:user:jira and read:issue-worklog.property:jira (Granular) |
jira_cloud_rest_api_updateworklog | Update a work log entry. | write:jira-work (Classic) or read:comment:jira and read:group:jira and read:issue-worklog:jira and read:issue-worklog.property:jira and read:project-role:jira and read:user:jira and write:comment:jira and write:issue-worklog:jira and write:issue-worklog.property:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_deleteworklog | Delete a work log entry. | write:jira-work (Classic) or delete:issue-worklog:jira and delete:issue-worklog.property:jira and write:issue.time-tracking:jira (Granular) |
Watchers
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getwatchers | Get users watching an issue. | read:jira-work (Classic) or read:issue.watcher:jira and read:user:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_addwatcher | Add a watcher to an issue. | write:jira-work (Classic) or write:issue.watcher:jira (Granular) |
jira_cloud_rest_api_removewatcher | Remove a watcher from an issue. | write:jira-work (Classic) or write:issue.watcher:jira (Granular) |
Votes
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getvotes | Get votes on an issue. | read:jira-work (Classic) or read:issue.vote:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular) |
jira_cloud_rest_api_addvote | Vote for an issue. | write:jira-work (Classic) or write:issue.vote:jira (Granular) |
jira_cloud_rest_api_removevote | Remove your vote from an issue. | write:jira-work (Classic) or write:issue.vote:jira (Granular) |
Projects
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getprojects | Search and list Jira projects. | read:jira-work (Classic) or read:issue-type:jira and read:project:jira and read:project.property:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira and read:issue-type-hierarchy:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular) |
jira_cloud_rest_api_getproject | Get a specific project's details. | read:jira-work (Classic) or read:issue-type:jira and read:project:jira and read:project.property:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira and read:issue-type-hierarchy:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular) |
Components
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getprojectcomponents | Get components in a project. | read:jira-work (Classic) or read:project:jira and read:project.component:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular) |
jira_cloud_rest_api_createcomponent | Create a new component in a project. | manage:jira-project (Classic) or read:project:jira and read:user:jira and write:project.component:jira and read:application-role:jira and read:avatar:jira and read:group:jira and read:project.component:jira (Granular) |
Versions
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getprojectversions | Get versions/releases in a project. | read:jira-work (Classic) or read:project-version:jira (Granular) |
jira_cloud_rest_api_createversion | Create a new version/release. | manage:jira-project (Classic) or write:project-version:jira and read:project-version:jira (Granular) |
jira_cloud_rest_api_updateversion | Update or release a version. | manage:jira-project (Classic) or write:project-version:jira and read:project-version:jira (Granular) |
Boards
Jira Software's agile endpoints (Boards and Sprints) have no classic scope equivalent. Their granular scopes are always required, even if you otherwise use classic scopes for everything else.
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getboards | Get all agile boards (Scrum/Kanban). | read:board-scope:jira-software and read:project:jira |
jira_cloud_rest_api_getboardsprints | Get sprints for a board. | read:sprint:jira-software |
jira_cloud_rest_api_getboardissues | Get issues on a board. | read:board-scope:jira-software and read:issue-details:jira |
Sprints
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getsprintissues | Get issues in a sprint. | read:sprint:jira-software and read:issue-details:jira and read:jql:jira |
jira_cloud_rest_api_moveissuestosprint | Move issues to a sprint. | write:sprint:jira-software |
jira_cloud_rest_api_createsprint | Create a new sprint. | write:sprint:jira-software |
jira_cloud_rest_api_updatesprint | Update a sprint. | write:sprint:jira-software |
Users
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_searchusers | Search for Jira users. | read:jira-user (Classic) or read:user:jira and read:user.property:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular) |
jira_cloud_rest_api_getuser | Get a specific user's details. | read:jira-user (Classic) or read:application-role:jira and read:group:jira and read:user:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_getcurrentuser | Get current authenticated user. | read:jira-user (Classic) or read:application-role:jira and read:group:jira and read:user:jira and read:avatar:jira (Granular) |
jira_cloud_rest_api_searchassignableusers | Get users assignable to an issue or project. | read:jira-user (Classic) or read:issue:jira and read:project:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:group:jira (Granular) |
Reference Data
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getlabels | Get all labels used in Jira. | read:jira-work (Classic) or read:label:jira (Granular) |
jira_cloud_rest_api_getpriorities | Get all priority levels. | read:jira-work (Classic) or read:priority:jira (Granular) |
jira_cloud_rest_api_getstatuses | Get all status values. | read:jira-work (Classic) or read:status:jira (Granular) |
jira_cloud_rest_api_getissuetypes | Get all issue types. | read:jira-work (Classic) or read:issue-type:jira and read:avatar:jira and read:project-category:jira and read:project:jira (Granular) |
jira_cloud_rest_api_getfields | Get all fields (standard and custom). | read:jira-work (Classic) or read:field:jira and read:avatar:jira and read:project-category:jira and read:project:jira and read:field-configuration:jira (Granular) |
jira_cloud_rest_api_getfieldoptions | Get options for a select/dropdown field. | manage:jira-configuration (Classic) or read:field.option:jira (Granular) |
Filters
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getfilters | Search saved JQL filters. | read:jira-work (Classic) or read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:jql:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira (Granular) |
jira_cloud_rest_api_getfavoritefilters | Get your favorite filters. | read:jira-work (Classic) or read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:jql:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira (Granular) |
jira_cloud_rest_api_createfilter | Create a new saved filter. | write:jira-work (Classic) or read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and write:filter:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira and read:issue-type:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (Granular) |
jira_cloud_rest_api_updatefilter | Update a saved filter. | write:jira-work (Classic) or write:filter:jira and read:filter:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:jql:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira (Granular) |
jira_cloud_rest_api_deletefilter | Delete a saved filter. | write:jira-work (Classic) or delete:filter:jira (Granular) |
Dashboards
| Tool | What it does | Scope(s) required |
|---|---|---|
jira_cloud_rest_api_getdashboards | Get all dashboards. | read:jira-work (Classic) or read:dashboard:jira and read:group:jira and read:project:jira and read:project-role:jira and read:user:jira and read:application-role:jira and read:avatar:jira and read:issue-type-hierarchy:jira and read:issue-type:jira and read:project-category:jira and read:project-version:jira and read:project.component:jira (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:jira-user read:jira-work write:jira-work manage:jira-project manage:jira-configurationGranular scopes
read:attachment:jira read:board-scope:jira-software write:board-scope:jira-software read:sprint:jira-software write:sprint:jira-softwareTogether, these two short lists cover every tool in the reference above. The five Classic scopes cover every tool that lists a Classic option, and the Granular list adds the handful of scopes Jira Software's Boards and Sprints tools need, since those have no Classic equivalent. You don't need to hunt down the long Granular lists shown per tool above unless you're deliberately building an OAuth app that avoids Classic scopes entirely.
Troubleshooting
Learn More
- Jira Cloud REST API
- Jira Cloud scopes for OAuth 2.0
- Atlassian Developer Console
- OAuth 2.0 for Atlassian apps
Jira Cloud (API Token)
Airia also offers Jira 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 Jira 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 Jira.
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 Jira 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
Confluence Cloud
Connect Confluence pages, spaces, and content 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