Jira Issues
Lets an agent work Jira Cloud issues: search with JQL, read issues and comments, create and edit issues, assign them, comment, and move them through their workflow. Curated from Atlassian's official OpenAPI specification.
Connect this API to an AI agent Browse all specs
What you can do with Jira Issues via MCP
Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.
| Method | Path | Operation | Description |
|---|---|---|---|
| GET | /rest/api/3/myself |
getCurrentUser | Get the Jira user the credential acts as |
| GET | /rest/api/3/project/search |
searchProjects | List or search the projects you can see |
| GET | /rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes |
getCreateIssueTypes | List the issue types you can create in a project |
| GET | /rest/api/3/user/assignable/search |
findAssignableUsers | Find people who can be assigned issues in a project or issue |
| GET | /rest/api/3/search/jql |
searchIssuesWithJql | Search issues with a JQL query (e.g. open bugs assigned to me) |
| GET | /rest/api/3/issue/{issueIdOrKey} |
getIssue | Get one issue with its fields |
| PUT | /rest/api/3/issue/{issueIdOrKey} |
editIssue | Update an issue's fields (summary, description, labels, priority) |
| GET | /rest/api/3/issue/{issueIdOrKey}/comment |
getIssueComments | List the comments on an issue |
| POST | /rest/api/3/issue/{issueIdOrKey}/comment |
addIssueComment | Add a comment to an issue |
| GET | /rest/api/3/issue/{issueIdOrKey}/transitions |
getIssueTransitions | List the status changes available for an issue |
| POST | /rest/api/3/issue/{issueIdOrKey}/transitions |
transitionIssue | Move an issue to another status (e.g. In Progress, Done) |
| POST | /rest/api/3/issue |
createIssue | Create a new issue (task, bug, story) in a project |
| PUT | /rest/api/3/issue/{issueIdOrKey}/assignee |
assignIssue | Assign an issue to a person (or unassign it) |
Authentication
basicAuth
HTTP Basic
HTTP Basic auth with your Atlassian account email as the username and an API token as the password.
How to get a credential
- Sign in at https://id.atlassian.com/manage-profile/security/api-tokens with the account the agent should act as (ideally a dedicated bot account).
- Click Create API token, name it (for example
VX Agents) and pick an expiry. - Copy the token (it is shown once).
- Make sure the account has access to the Jira projects the agent should work in (Browse, Create, Edit, Assign, Transition and Add comments project permissions).
- Note your site name: the
acmein https://acme.atlassian.net. Set it as thesiteserver variable.
Permissions used
Access follows the account's project permissions (OAuth apps use the matching classic scopes).
| Permission / scope | Operations |
|---|---|
Browse projects (read:jira-work, read:jira-user) |
getCurrentUser, searchProjects, getCreateIssueTypes, findAssignableUsers, searchIssuesWithJql, getIssue, getIssueComments, getIssueTransitions |
Create issues (write:jira-work) |
createIssue |
Edit issues (write:jira-work) |
editIssue |
Assign issues (write:jira-work) |
assignIssue |
Add comments (write:jira-work) |
addIssueComment |
Transition issues (write:jira-work) |
transitionIssue |
Common errors
- 401 Unauthorized: wrong email/token pair, expired token, or the site name is wrong. Recreate the token and check
site. - 403 Forbidden: the account lacks the project permission for that action (e.g. Assign or Transition).
- 400 Bad Request: invalid JQL, a missing required field, or a field not on the screen. Call getCreateIssueTypes / getIssue with
expand=editmetato see allowed fields. - 404 Not Found: unknown issue key or project, or the account cannot see it.
- 429 Too Many Requests: Atlassian rate limit; wait for
Retry-Afterand retry.
Store the email and API token as a VX Agents credential (Basic auth) for this spec; never paste the token into chat.
Usage guide
Setup
- Credential: Basic auth with the Atlassian account email + API token (id.atlassian.com > Security > API tokens). The agent sees and changes only what that account can.
- Set the
siteserver variable to your site name (acmefor https://acme.atlassian.net). The defaultyour-domainwill not work. - Worth pinning: the project key you work in (e.g.
ENG) and its usual issue type id.
Triage and update issues
searchIssuesWithJqlwithjql(e.g.project = ENG AND status != Done AND assignee = currentUser() ORDER BY priority DESC),fields=summary,status,assignee,priorityandmaxResults(max 100). Page withnextPageToken.getIssueandgetIssueCommentsto read an issue before acting.findAssignableUsers(issueKeyorproject+query) to get anaccountId, thenassignIssuewith{"accountId": "..."}(nullunassigns).addIssueCommentwith a body in Atlassian Document Format (below).- To change status:
getIssueTransitions, thentransitionIssuewith{"transition": {"id": "31"}}. editIssuewith{"fields": {...}}or{"update": {"labels": [{"add": "urgent"}]}}.
Create an issue
searchProjectsto find the project key,getCreateIssueTypesfor the issue type id.createIssuewith{"fields": {"project": {"key": "ENG"}, "issuetype": {"id": "10001"}, "summary": "...", "description": <ADF>}}.
Confirm before writing: show the user the change (new issue, comment text, assignee, target status, edited fields) and wait for approval before createIssue, editIssue, assignIssue, addIssueComment or transitionIssue. Comments and assignments notify watchers.
Good to know
- API v3 rich text (description, comment body) is Atlassian Document Format:
{"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Hello"}]}]}. issueIdOrKeyacceptsENG-123or the numeric id. Users are identified byaccountId, never email.- JQL dates:
created >= -7d,updated >= "2026-10-01". UsecurrentUser()for "me". - Search is eventually consistent: a just-created issue may take a few seconds to appear.
- 429 means rate limited: wait
Retry-Afterseconds.
How to use this spec
- Create a free VX Agents account (sandbox tools included).
- Open the marketplace and connect “Jira Issues” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.