Jira Service Management
Lets an agent run a Jira Service Management help desk: find service desks, request types and queues, raise and look up customer requests, read SLAs and comments, reply, and move requests 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 Service Management 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/servicedeskapi/servicedesk |
getServiceDesks | List the service desks (help desk projects) you can access |
| GET | /rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype |
getRequestTypes | List the request types customers can raise in a service desk |
| GET | /rest/servicedeskapi/servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field |
getRequestTypeFields | List the fields (and which are required) for a request type |
| GET | /rest/servicedeskapi/servicedesk/{serviceDeskId}/queue |
getQueues | List the agent queues of a service desk |
| GET | /rest/servicedeskapi/servicedesk/{serviceDeskId}/queue/{queueId}/issue |
getIssuesInQueue | List the requests currently in a queue |
| GET | /rest/servicedeskapi/request |
getCustomerRequests | Search customer requests by text, status, service desk or request type |
| POST | /rest/servicedeskapi/request |
createCustomerRequest | Raise a new customer request in a service desk |
| GET | /rest/servicedeskapi/request/{issueIdOrKey} |
getCustomerRequest | Get one customer request with its fields and current status |
| GET | /rest/servicedeskapi/request/{issueIdOrKey}/status |
getRequestStatusHistory | Get the status history of a request |
| GET | /rest/servicedeskapi/request/{issueIdOrKey}/comment |
getRequestComments | List public replies and internal notes on a request |
| POST | /rest/servicedeskapi/request/{issueIdOrKey}/comment |
addRequestComment | Reply to the customer (public) or add an internal note |
| GET | /rest/servicedeskapi/request/{issueIdOrKey}/sla |
getRequestSla | Get SLA timers (time to first response, time to resolution) for a request |
| GET | /rest/servicedeskapi/request/{issueIdOrKey}/participant |
getRequestParticipants | List the people participating in a request |
| GET | /rest/servicedeskapi/request/{issueIdOrKey}/transition |
getRequestTransitions | List the workflow transitions available for a request |
| POST | /rest/servicedeskapi/request/{issueIdOrKey}/transition |
transitionRequest | Move a request to another status (e.g. resolve), with an optional comment |
| GET | /rest/servicedeskapi/knowledgebase/article |
searchKnowledgeBase | Search knowledge base articles to suggest answers |
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 service-desk agent 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 a Jira Service Management agent licence and is in the service project's Service Desk Team role (customers only see their own requests).
- Note your site name: the
acmein https://acme.atlassian.net. Set it as thesiteserver variable.
Permissions used
Access follows the account's project roles (OAuth apps use the matching read:/write:servicedesk-request scopes).
| Role / scope | Operations |
|---|---|
Agent or customer, read (read:servicedesk-request) |
getServiceDesks, getRequestTypes, getRequestTypeFields, getCustomerRequests, getCustomerRequest, getRequestStatusHistory, getRequestComments, getRequestSla, getRequestParticipants, getRequestTransitions, searchKnowledgeBase |
| Agent only, read | getQueues, getIssuesInQueue |
Write (write:servicedesk-request) |
createCustomerRequest, addRequestComment, transitionRequest |
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 is not an agent on that service project (queues and internal comments need the agent role).
- 400 Bad Request: missing required request-type fields. Call getRequestTypeFields first and send every
requiredfield inrequestFieldValues. - 404 Not Found: unknown service desk, request type or issue key, 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). Use an account with a Jira Service Management agent licence; customers only see their own requests and cannot read queues.
- Set the
siteserver variable to your site name (acmefor https://acme.atlassian.net). The defaultyour-domainwill not work. - Worth pinning:
serviceDeskId(fromgetServiceDesks) and the request types you use most.
Work the help desk
getServiceDesksto find the service desk id, thengetQueuesandgetIssuesInQueueto see open work.getCustomerRequestswithsearchTerm,serviceDeskId,requestStatus=OPEN_REQUESTSandrequestOwnership=ALL_REQUESTS(agents) to find requests.getCustomerRequest,getRequestComments,getRequestSlaandgetRequestStatusHistoryto understand a request before acting.searchKnowledgeBase(query,highlight=false) to find an article to point the customer to.- Reply with
addRequestComment:{"body": "...", "public": true}for the customer,public: falsefor an internal note. - To resolve or move a request:
getRequestTransitions, thentransitionRequestwith the transitionidand an optionaladditionalComment.
Raise a request
getRequestTypesfor the service desk, thengetRequestTypeFieldsto see required fields.createCustomerRequestwithserviceDeskId,requestTypeIdandrequestFieldValues(e.g.summary,description); setraiseOnBehalfOfto the customer's email or accountId when raising for someone else.
Confirm before writing: show the user the comment text (and whether it is public), the target status of a transition, or the new request's fields, and wait for approval before addRequestComment, transitionRequest or createCustomerRequest. Public comments email the customer.
Good to know
issueIdOrKeyaccepts the key (HELP-123) or numeric id.- Lists use
startandlimit(default 50) and returnisLastPage. - Dates come back as objects with
iso8601,epochMillisandfriendly. - SLA
ongoingCycle.breached: truemeans the SLA is already missed. - 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 Service Management” to an agent.
- Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.