What it does
Atlassian MCP connects an agent to Jira issues and Confluence pages. It is for work that depends on the ticket, the project record and the documentation around it.
- Search Jira issues.
- Read and update issue fields when supported.
- Find Confluence pages relevant to a task.
- Use Jira and Confluence identifiers explicitly.
- Keep the site URL and API token in the server environment.
Available functions
confluence_add_comment Add a comment to a Confluence page.
Arguments
-
bodyrequired -
stringThe comment content in Markdown format -
page_idrequired -
stringThe ID of the page to add a comment to
confluence_add_inline_comment Add an inline comment anchored to a text selection on a page.
Arguments
-
bodyrequired -
stringThe comment content in Markdown format -
page_idrequired -
stringThe ID of the page to add the inline comment to -
text_selectionrequired -
stringThe exact text on the page to anchor the inline comment to. Must match text that exists in the page content. -
text_selection_match_count -
integerTotal number of times the selected text appears on the page. Defaults to 1. Default:1 -
text_selection_match_index -
integerZero-based index of which occurrence of the text to anchor to. Defaults to 0 (first occurrence). Default:0
confluence_add_label Add label to Confluence content (pages, blog posts, or attachments). Useful for: - Categorizing attachments (e.g., 'screenshot', 'diagram', 'legal-doc') - Tracking status (e.g., 'approved', 'needs-review', 'archived') - Filtering content by topic or version
Arguments
-
namerequired -
stringLabel name to add (lowercase, no spaces). Examples: 'draft', 'reviewed', 'confidential', 'v1.0'. Labels help organize and categorize content. -
page_idrequired -
stringConfluence content ID to label. For pages/blogs: numeric ID (e.g., '123456789'). For attachments: ID with 'att' prefix (e.g., 'att123456789'). Use get_attachments to find attachment IDs.
confluence_check_content_permissions Check whether a user or group can perform an operation on specific content. Wraps POST /wiki/rest/api/content/{id}/permission/check. Note: This tool is only available for Confluence Cloud. Server/Data Center instances use different permission APIs. Returns a JSON object with a 'hasPermission' boolean indicating whether the subject has the requested permission on the content.
Arguments
-
content_idrequired -
stringConfluence content ID (page, blog post, comment, or attachment). Example: '123456789' -
operationrequired -
stringThe operation to check. Common values: 'read', 'update', 'delete', 'export', 'purge', 'administer', 'create_or_delete_from_view'. -
subject_type -
stringWhether the subject is a 'user' or a 'group'. Defaults to 'user'. Default:user -
user_identifierrequired -
stringAccount ID of the user (for subject_type='user') or group ID (for subject_type='group'). Example user account ID: '5b10a2844c20165700ede21g'
confluence_copy_page Copy a Confluence page to a new location. On Confluence Cloud the native copy endpoint is used. On Server/Data Center the page body is fetched and a new page is created manually (attachments are not copied in the Server/DC path).
Arguments
-
copy_attachments -
boolean(Optional) Whether to copy attachments to the new page. Defaults to true. Only supported on Confluence Cloud. Default:true -
destination_parent_id -
string(Optional) Parent page ID in the destination space. When omitted the page is created at the space root. Default:null -
destination_space_keyrequired -
stringSpace key for the new page (e.g. 'DEV', 'TEAM') -
new_titlerequired -
stringTitle for the new copied page -
source_page_idrequired -
stringThe ID of the page to copy
confluence_create_page Create a new Confluence page.
Arguments
-
content -
stringThe content of the page. Format depends on content_format parameter. Can be Markdown (default), wiki markup, storage format, or XHTML storage format. Either 'content' or 'content_file' must be provided, but not both. Default:null -
content_file -
string(Optional) Absolute or relative filesystem path to read the page body from (UTF-8). Use this instead of 'content' when the body is too large to pass comfortably as a tool argument. Mutually exclusive with 'content'. Default:null -
content_format -
string(Optional) The format of the content parameter. Options: 'markdown' (default), 'wiki', 'storage', or 'xhtml'. Use 'xhtml' when providing Confluence XHTML storage format (same as 'storage'). Wiki format uses Confluence wiki markup syntax Default:markdown -
emoji -
string(Optional) Page title emoji (icon shown in navigation). Can be any emoji character like '📝', '🚀', '📚'. Set to null/None to remove. Default:null -
enable_heading_anchors -
boolean(Optional) Whether to enable automatic heading anchor generation. Only applies when content_format is 'markdown' Default:false -
include_content -
boolean(Optional) Whether to include page content in the response. Defaults to false since callers already have the content at create time Default:false -
page_width -
string(Optional) Page layout width. Options: 'full-width', 'default'. Defaults to null (Confluence default). Default:null -
parent_id -
string(Optional) parent page ID. If provided, this page will be created as a child of the specified page Default:null -
space_keyrequired -
stringThe key of the space to create the page in (usually a short uppercase code like 'DEV', 'TEAM', or 'DOC') -
subtype -
string(Optional) Confluence page subtype. Use 'live' to create a Confluence Live Doc. Only supported for Confluence Cloud. Default:null -
table_layout -
string(Optional) Table width preset applied to all markdown tables. Options: 'full-width' (1800 px), 'wide' (960 px), 'default' (760 px). Only applies when content_format is 'markdown'. Default:null -
titlerequired -
stringThe title of the page
confluence_create_page_from_template Create a new Cloud page pre-populated with a template's body. This operation is only available for Confluence Cloud. Fetches the named template and creates a page with its storage-format content. The page can be edited afterwards via confluence_update_page.
Arguments
-
parent_id -
stringOptional ID of the parent page. Default:null -
space_keyrequired -
stringKey of the space in which to create the page. -
template_idrequired -
stringID of the template to use as the page body. -
titlerequired -
stringTitle for the new page.
confluence_delete_attachment Permanently delete an attachment from Confluence. **Warning**: This action cannot be undone! The attachment and ALL its versions will be permanently deleted. Use this tool to: - Remove outdated or incorrect attachments - Clean up duplicate files - Delete sensitive information that was accidentally uploaded Best practices: - Verify the attachment ID before deletion using get_attachments - Consider downloading the attachment first as a backup - Check with content owners before deleting shared attachments
Arguments
-
attachment_idrequired -
stringThe ID of the attachment to delete. Attachment IDs can be found using the get_attachments tool. Example: 'att123456789'. **Warning**: This permanently deletes the attachment and all its versions.
confluence_delete_page Delete an existing Confluence page.
Arguments
-
page_idrequired -
stringThe ID of the page to delete
confluence_download_attachment Download an attachment from Confluence as an embedded resource. Returns the attachment content as a base64-encoded embedded resource so that it is available over the MCP protocol without requiring filesystem access on the server. Files larger than 50 MB are not downloaded inline; a descriptive error message is returned instead.
Arguments
-
attachment_idrequired -
stringThe ID of the attachment to download (e.g., 'att123456789'). Find attachment IDs using get_attachments tool. Example workflow: get_attachments(content_id) → use returned ID here.
confluence_download_content_attachments Download all attachments for a Confluence content item as embedded resources. Returns attachment contents as base64-encoded embedded resources so that they are available over the MCP protocol without requiring filesystem access on the server. Files larger than 50 MB are skipped with an error entry in the summary.
Arguments
-
content_idrequired -
stringThe ID of the Confluence content (page or blog post) to download attachments from. Example: '123456789'
confluence_get_attachments List all attachments for a Confluence content item (page or blog post). Returns metadata about attachments including: - Attachment ID, title, and file type - File size and download URL - Creation/modification dates - Version information **Important**: Confluence API returns 'application/octet-stream' as the media type for most binary files (PNG, JPG, PDF) instead of specific types like 'image/png'. For filtering by file type, using the 'filename' parameter is more reliable (e.g., filename='*.png' pattern matching if supported, or exact filename). Useful for: - Discovering what files are attached to a page - Getting attachment IDs for download operations - Checking if a specific file exists - Listing images/documents for processing
Arguments
-
content_idrequired -
stringThe ID of the Confluence content (page or blog post) to list attachments for. Example: '123456789' -
filename -
string(Optional) Filter results to only attachments matching this filename. Exact match only. Example: 'report.pdf' Default:null -
limit -
integer(Optional) Maximum number of attachments to return per request (1-100). Use pagination (start/limit) for large attachment lists. Default: 50 Default:50 -
media_type -
string(Optional) Filter by MIME type. **Note**: Confluence API returns 'application/octet-stream' for most binary files (PNG, JPG, PDF) instead of specific MIME types like 'image/png'. For more reliable filtering, use the 'filename' parameter. Examples: 'application/octet-stream' (binary files), 'application/pdf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' (for .docx) Default:null -
start -
integer(Optional) Starting index for pagination. Use 0 for the first page. To get the next page, add the 'limit' value to 'start'. Default: 0 Default:0
confluence_get_comments Get comments for a specific Confluence page.
Arguments
-
page_idrequired -
stringConfluence page ID (numeric ID, can be parsed from URL, e.g. from 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title' -> '123456789')
confluence_get_inline_comments Get all inline comments for a Confluence page.
Arguments
-
page_idrequired -
stringThe ID of the page to get inline comments from
confluence_get_labels Get labels for Confluence content (pages, blog posts, or attachments).
Arguments
-
page_idrequired -
stringConfluence content ID (page, blog post, or attachment). For pages: numeric ID from URL (e.g., '123456789'). For attachments: ID with 'att' prefix (e.g., 'att123456789'). Works with any Confluence content type that supports labels.
confluence_get_page Get content of a specific Confluence page by its ID, or by its title and space key.
Arguments
-
convert_to_markdown -
booleanWhether to convert page to markdown (true) or keep it in raw HTML format (false). Raw HTML can reveal macros (like dates) not visible in markdown, but CAUTION: using HTML significantly increases token usage in AI responses. Default:true -
include_metadata -
booleanWhether to include page metadata such as creation date, last update, version, and labels. Default:true -
page_id -
stringConfluence page ID, full page URL, or tiny link. For example: '123456789', 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title', or 'https://example.atlassian.net/wiki/x/N4CIO'. Provide this OR both 'title' and 'space_key'. If page_id is provided, title and space_key will be ignored. Default:null -
space_key -
stringThe key of the Confluence space where the page resides (e.g., 'DEV', 'TEAM'). Required if using 'title'. Default:null -
title -
stringThe exact title of the Confluence page. Use this with 'space_key' if 'page_id' is not known. Default:null
confluence_get_page_children Get child pages and folders of a specific Confluence page.
Arguments
-
convert_to_markdown -
booleanWhether to convert page content to markdown (true) or keep it in raw HTML format (false). Only relevant if include_content is true. Default:true -
expand -
stringFields to expand in the response (e.g., 'version', 'body.storage') Default:version -
include_content -
booleanWhether to include the page content in the response Default:false -
include_folders -
booleanWhether to include child folders in addition to child pages Default:true -
limit -
integerMaximum number of child items to return (1-50) Default:25 -
parent_idrequired -
stringThe ID of the parent page whose children you want to retrieve -
start -
integerStarting index for pagination (0-based) Default:0
confluence_get_page_diff Get a unified diff between two versions of a Confluence page.
Arguments
-
from_versionrequired -
integerSource version number -
page_idrequired -
stringConfluence page ID (numeric ID, can be found in the page URL). For example, in 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title', the page ID is '123456789'. -
to_versionrequired -
integerTarget version number
confluence_get_page_history Get a historical version of a specific Confluence page.
Arguments
-
convert_to_markdown -
booleanWhether to convert page to markdown (true) or keep it in raw HTML format (false). Raw HTML can reveal macros (like dates) not visible in markdown, but CAUTION: using HTML significantly increases token usage in AI responses. Default:true -
page_idrequired -
stringConfluence page ID (numeric ID, can be found in the page URL). For example, in 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title', the page ID is '123456789'. -
versionrequired -
integerThe version number of the page to retrieve
confluence_get_page_images Get all images attached to a Confluence page as inline image content. Filters attachments to images only (PNG, JPEG, GIF, WebP, SVG, BMP) and returns them as base64-encoded ImageContent that clients can render directly. Non-image attachments are excluded. Files with ambiguous MIME types (application/octet-stream) are detected by filename extension as a fallback. Images larger than 50 MB are skipped with an error entry in the summary.
Arguments
-
content_idrequired -
stringThe ID of the Confluence page or blog post to retrieve images from. Example: '123456789'
confluence_get_page_restrictions Get view and edit restrictions for a Confluence page. Returns the current restriction lists for the read (view) and update (edit) operations. An empty list means the page is unrestricted for that operation.
Arguments
-
page_idrequired -
stringThe ID of the page
confluence_get_page_template Get a Cloud page template by ID, including its storage-format body.
Arguments
-
template_idrequired -
stringThe ID of the template to retrieve.
confluence_get_page_views Get view statistics for a Confluence page. Note: This tool is only available for Confluence Cloud. Server/Data Center instances do not support the Analytics API.
Arguments
-
include_title -
booleanWhether to fetch and include the page title Default:true -
page_idrequired -
stringConfluence page ID (numeric ID, can be found in the page URL). For example, in 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title', the page ID is '123456789'.
confluence_get_space_page_tree Get page hierarchy for a Confluence space as a flat list. Returns pages with parent_id and depth attributes for token-efficient processing. Filter by depth to focus on relevant sections, or find pages by title. Much more efficient than rendering full ASCII trees. Use this to understand space organization before creating/moving pages.
Arguments
-
limit -
integerMax pages to fetch Default:100 -
space_keyrequired -
stringSpace key
confluence_get_space_permissions List all permission assignments for a Confluence space. Wraps GET /wiki/api/v2/spaces/{id}/permissions. Note: This tool is only available for Confluence Cloud. Server/Data Center instances use different permission APIs. Returns a JSON object with a 'results' list of permission assignment objects. Each entry contains the principal (user or group), the operation permitted, and the target. Use this to audit who has access to a space.
Arguments
-
cursor -
stringOptional pagination cursor from a previous response. Default:null -
limit -
integerMaximum number of permission entries to return. Defaults to 25. Default:25 -
space_idrequired -
stringNumeric ID of the Confluence space. This is the internal space ID, not the space key. Example: '98304'. You can find the space ID from the Confluence REST API (GET /wiki/api/v2/spaces) or from the space URL.
confluence_list_page_templates List Confluence page content templates. This operation is only available for Confluence Cloud. Returns template metadata (ID, name, description, type) without the full body. Use confluence_get_page_template to fetch a template's body.
Arguments
-
limit -
integerMaximum number of templates to return. Default:25 -
space_key -
stringOptional space key to list templates defined in that space. When omitted, global templates are returned. Default:null
confluence_move_page Move a Confluence page to a new parent or space.
Arguments
-
page_idrequired -
stringID of the page to move -
position -
stringPosition: 'append' (default, move as child of target), 'above' (move before target as sibling), or 'below' (move after target as sibling) Default:append -
target_parent_id -
stringTarget parent page ID. If omitted with target_space_key, moves to space root. Default:null -
target_space_key -
stringTarget space key for cross-space moves Default:null
confluence_reply_to_comment Reply to an existing comment thread on a Confluence page.
Arguments
-
bodyrequired -
stringThe reply content in Markdown format -
comment_idrequired -
stringThe ID of the parent comment to reply to
confluence_search Search Confluence content using simple terms or CQL.
Arguments
-
limit -
integerMaximum number of results (1-50) Default:10 -
queryrequired -
stringSearch query - can be either a simple text (e.g. 'project documentation') or a CQL query string. Simple queries use 'siteSearch' by default, to mimic the WebUI search, with an automatic fallback to 'text' search if not supported. Examples of CQL: - Basic search: 'type=page AND space=DEV' - Personal space search: 'space="~username"' (note: personal space keys starting with ~ must be quoted) - Search by title: 'title~"Meeting Notes"' - Use siteSearch: 'siteSearch ~ "important concept"' - Use text search: 'text ~ "important concept"' - Recent content: 'created >= "2023-01-01"' - Content with specific label: 'label=documentation' - Recently modified content: 'lastModified > startOfMonth("-1M")' - Content modified this year: 'creator = currentUser() AND lastModified > startOfYear()' - Content you contributed to recently: 'contributor = currentUser() AND lastModified > startOfWeek()' - Content watched by user: 'watcher = "[email protected]" AND type = page' - Exact phrase in content: 'text ~ "\"Urgent Review Required\"" AND label = "pending-approval"' - Title wildcards: 'title ~ "Minutes*" AND (space = "HR" OR space = "Marketing")' Note: Special identifiers need proper quoting in CQL: personal space keys (e.g., "~username"), reserved words, numeric IDs, and identifiers with special characters. -
spaces_filter -
string(Optional) Comma-separated list of space keys to filter results by. Overrides the environment variable CONFLUENCE_SPACES_FILTER if provided. Use empty string to disable filtering. Default:null
confluence_search_user Search Confluence users using CQL (Cloud) or group member API (Server/DC).
Arguments
-
group_name -
stringGroup to search within on Server/DC instances (default: 'confluence-users'). Ignored on Cloud. Default:confluence-users -
limit -
integerMaximum number of results (1-50) Default:10 -
queryrequired -
stringSearch query - a CQL query string for user search. Examples of CQL: - Basic user lookup by full name: 'user.fullname ~ "First Last"' Note: Special identifiers need proper quoting in CQL: personal space keys (e.g., "~username"), reserved words, numeric IDs, and identifiers with special characters.
confluence_set_page_restrictions Set view and edit restrictions on a Confluence page. Replaces all existing restrictions with the provided lists. Omitting all parameters (or passing empty lists) removes all restrictions.
Arguments
-
edit_groups -
array(Optional) Group names allowed to edit the page. Default:null -
edit_users -
array(Optional) Account IDs (Cloud) or usernames (Server/DC) allowed to edit the page. Default:null -
page_idrequired -
stringThe ID of the page to restrict -
read_groups -
array(Optional) Group names allowed to view the page. Default:null -
read_users -
array(Optional) Account IDs (Cloud) or usernames (Server/DC) allowed to view the page. Empty list = unrestricted. Default:null
confluence_update_page Update an existing Confluence page.
Arguments
-
content -
stringThe new content of the page. Format depends on content_format parameter and may be Markdown (default), wiki markup, storage format, or XHTML storage format. Either 'content' or 'content_file' must be provided, but not both. Default:null -
content_file -
string(Optional) Absolute or relative filesystem path to read the new page body from (UTF-8). Use this instead of 'content' when the body is too large to pass comfortably as a tool argument. Mutually exclusive with 'content'. Default:null -
content_format -
string(Optional) The format of the content parameter. Options: 'markdown' (default), 'wiki', 'storage', or 'xhtml'. Use 'xhtml' when providing Confluence XHTML storage format (same as 'storage'). Wiki format uses Confluence wiki markup syntax Default:markdown -
emoji -
string(Optional) Page title emoji (icon shown in navigation). Can be any emoji character like '📝', '🚀', '📚'. Set to null/None to remove. Default:null -
enable_heading_anchors -
boolean(Optional) Whether to enable automatic heading anchor generation. Only applies when content_format is 'markdown' Default:false -
include_content -
boolean(Optional) Whether to include page content in the response. Defaults to false since callers already have the content at update time Default:false -
is_minor_edit -
booleanWhether this is a minor edit Default:false -
page_idrequired -
stringThe ID of the page to update -
page_width -
string(Optional) Page layout width. Options: 'full-width', 'default'. Defaults to null (preserve existing). Default:null -
parent_id -
stringOptional the new parent page ID Default:null -
table_layout -
string(Optional) Table width preset applied to all markdown tables. Options: 'full-width' (1800 px), 'wide' (960 px), 'default' (760 px). Only applies when content_format is 'markdown'. Default:null -
titlerequired -
stringThe new title of the page -
version_comment -
stringOptional comment for this version Default:null
confluence_update_page_section Update a single section of a Confluence page without affecting the rest. Replaces only the content beneath a named heading, leaving all other sections, macros, layouts, and Confluence-specific elements completely intact. This avoids the data loss that occurs when a full page is downloaded as Markdown, edited, and re-uploaded.
Arguments
-
content_format -
string(Optional) Format of new_content. Options: 'markdown' (default) or 'storage' (raw Confluence storage XML). Use 'storage' to insert macros or elements that markdown cannot express. Default:markdown -
heading_textrequired -
stringExact text of the heading that starts the section to replace. Matching is case-sensitive. Use confluence_get_page with convert_to_markdown=false to inspect exact heading text when unsure. -
is_minor_edit -
booleanWhether this is a minor edit Default:false -
new_contentrequired -
stringReplacement content for the section body. Do NOT include the heading itself — only the body beneath it. Format is controlled by content_format. -
page_idrequired -
stringThe ID of the page to update -
version_comment -
stringOptional comment for this version Default:null
confluence_upload_attachment Upload an attachment to Confluence content (page or blog post). Provide the file either as a server-readable path ('file_path') or as base64-encoded content ('content_base64' together with 'filename'). The base64 form is intended for remote or containerized servers that cannot read host file paths. Exactly one of the two must be supplied. If the attachment already exists (same filename), a new version is created. This is useful for: - Attaching documents, images, or files to a page - Updating existing attachments with new versions - Adding supporting materials to documentation
Arguments
-
comment -
string(Optional) A comment describing this attachment or version. Visible in the attachment history. Example: 'Updated Q4 2024 figures' Default:null -
content_base64 -
string(Optional) Base64-encoded file content to upload directly, without the server reading from disk. Use this when the server cannot access host file paths (e.g. a remote or containerized MCP server). Requires 'filename'. Provide either 'file_path' or 'content_base64', not both. Default:null -
content_idrequired -
stringThe ID of the Confluence content (page or blog post) to attach the file to. Page IDs can be found in the page URL or by using the search/get_page tools. Example: '123456789' -
file_path -
stringFull path to the file to upload. Can be absolute (e.g., '/home/user/document.pdf' or 'C:\Users\name\file.docx') or relative to the current working directory (e.g., './uploads/document.pdf'). If a file with the same name already exists, a new version will be created. Requires the server to be able to read the path; for remote or containerized servers use 'content_base64' instead. Provide either 'file_path' or 'content_base64', not both. Default:null -
filename -
string(Optional) Attachment filename, including extension (e.g. 'report.pdf'). Required when using 'content_base64'; it determines the attachment title and file type. Ignored when 'file_path' is used. Default:null -
minor_edit -
boolean(Optional) Whether this is a minor edit. If true, watchers are not notified. Default is false. Default:false
confluence_upload_attachments Upload multiple attachments to Confluence content in a single operation. More efficient than calling upload_attachment multiple times. If files with the same names exist, new versions are created automatically. Useful for: - Bulk uploading documentation assets (diagrams, screenshots, etc.) - Adding multiple related files to a page at once - Batch updating existing attachments with new versions
Arguments
-
comment -
string(Optional) Comment for all uploaded attachments. Visible in version history. Example: 'Q4 2024 batch upload' Default:null -
content_idrequired -
stringThe ID of the Confluence content (page or blog post) to attach files to. Example: '123456789'. If uploading multiple files with the same names, new versions will be created automatically. -
file_pathsrequired -
stringComma-separated list of file paths to upload. Can be absolute or relative paths. Examples: './file1.pdf,./file2.png' or 'C:\docs\report.docx,D:\image.jpg'. All files uploaded with same comment/minor_edit settings. -
minor_edit -
boolean(Optional) Whether this is a minor edit. If true, watchers are not notified. Default is false. Default:false
jira_add_comment Add a comment to a Jira issue.
Arguments
-
bodyrequired -
stringComment text in Markdown format -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
public -
boolean(Optional) For JSM/Service Desk issues only. Set to true for customer-visible comment, false for internal agent-only comment. Posted via the ServiceDesk API as a raw string; Jira Cloud renders it server-side and stores ADF (markdown observed to render on Cloud, without the client-side markdown-to-ADF guarantees of the regular comment path). Cannot be combined with visibility. If the issue's project is listed in JIRA_INTERNAL_ONLY_PROJECTS, only public=false is accepted — public=true or omitting this field is rejected. Default:null -
visibility -
string(Optional) Comment visibility as JSON string (e.g. '{"type":"group","value":"jira-users"}') Default:null
jira_add_issues_to_sprint Add issues to a Jira sprint.
Arguments
-
issue_keysrequired -
stringComma-separated issue keys (e.g., 'PROJ-1,PROJ-2') -
sprint_idrequired -
stringSprint ID to add issues to
jira_add_watcher Add a user as a watcher to a Jira issue.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123') -
user_identifierrequired -
stringUser to add as watcher. For Jira Cloud, use the account ID. For Jira Server/DC, use the username.
jira_add_worklog Add a worklog entry to a Jira issue.
Arguments
-
comment -
string(Optional) Comment for the worklog in Markdown format Default:null -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
original_estimate -
string(Optional) New value for the original estimate Default:null -
remaining_estimate -
string(Optional) New value for the remaining estimate Default:null -
started -
string(Optional) Start time in ISO format. If not provided, the current time will be used. Example: '2023-08-01T12:00:00.000+0000' Default:null -
time_spentrequired -
stringTime spent in Jira format. Examples: '1h 30m' (1 hour and 30 minutes), '1d' (1 day), '30m' (30 minutes), '4h' (4 hours)
jira_assign_issue Assign a Jira issue to a user using the dedicated assignment endpoint. This is more reliable than setting assignee via update_issue, which is silently ignored by some Jira configurations. Uses PUT /issue/{key}/assignee.
Arguments
-
assignee -
stringUser identifier to assign (email, display name, or account ID), or a JSON object string from jira_search_assignable_users. Pass null or empty string to unassign the issue. Default:null -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642')
jira_batch_create_issues Create multiple Jira issues in a batch.
Arguments
-
issuesrequired -
stringJSON array of issue objects. Each object should contain: - project_key (required): The project key (e.g., 'PROJ') - summary (required): Issue summary/title - issue_type (required): Type of issue (e.g., 'Task', 'Bug') - description (optional): Issue description in Markdown format - assignee (optional): Assignee username or email - components (optional): Array of component names Example: [ {"project_key": "PROJ", "summary": "Issue 1", "issue_type": "Task"}, {"project_key": "PROJ", "summary": "Issue 2", "issue_type": "Bug", "components": ["Frontend"]} ] -
validate_only -
booleanIf true, only validates the issues without creating them Default:false
jira_batch_create_versions Batch create multiple versions in a Jira project.
Arguments
-
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'ACV2') -
versionsrequired -
stringJSON array of version objects. Each object should contain: - name (required): Name of the version - startDate (optional): Start date (YYYY-MM-DD) - releaseDate (optional): Release date (YYYY-MM-DD) - description (optional): Description of the version Example: [ {"name": "v1.0", "startDate": "2025-01-01", "releaseDate": "2025-02-01", "description": "First release"}, {"name": "v2.0"} ]
jira_batch_get_changelogs Get changelogs for multiple Jira issues (Cloud only).
Arguments
-
fields -
string(Optional) Comma-separated list of fields to filter changelogs by (e.g. 'status,assignee'). Default to None for all fields. Default:null -
issue_ids_or_keysrequired -
stringComma-separated list of Jira issue IDs or keys (e.g. 'PROJ-123,PROJ-124') -
limit -
integerMaximum number of changelogs to return in result for each issue. Default to -1 for all changelogs. Notice that it only limits the results in the response, the function will still fetch all the data. Default:-1
jira_create_customer_request Create a Jira Service Management customer request.
Arguments
-
attachments -
string(Optional) JSON array string of files to attach to the created request. Each object must contain 'filename', 'mime_type', and base64-encoded 'base64' content. Example: [{"filename": "log.txt", "mime_type": "text/plain", "base64": "aGVsbG8="}] Default:null -
raise_on_behalf_of -
string(Optional) Jira user identifier for raiseOnBehalfOf. For Server/DC this is typically username or key; for Cloud use the identifier expected by your JSM instance. Default:null -
request_field_valuesrequired -
stringJSON string of request field values keyed by field ID. Examples: - Summary and description: {"summary": "Access issue", "description": "Cannot log in"} - Multi-value field: {"customfield_10001": ["alice", "bob"]} -
request_participants -
string(Optional) JSON array string or comma-separated list of request participants. Examples: ["user1","user2"] or "user1,user2" Default:null -
request_type_idrequired -
stringRequest type ID (e.g., '23') -
service_desk_idrequired -
stringService desk ID (e.g., '4') -
strict_on_behalf -
booleanIf true, fail immediately when raiseOnBehalfOf cannot be applied. If false, retry without raiseOnBehalfOf and return a fallback warning. Default:false
jira_create_issue Create a new Jira issue with optional Epic link or parent for subtasks.
Arguments
-
additional_fields -
string(Optional) JSON string of additional fields to set. Examples: - Set priority: {"priority": {"name": "High"}} - Add labels: {"labels": ["frontend", "urgent"]} - Link to parent (for any issue type): {"parent": "PROJ-123"} - Link to epic: {"epicKey": "EPIC-123"} or {"epic_link": "EPIC-123"} - Set Fix Version/s: {"fixVersions": [{"id": "10020"}]} - Custom fields: {"customfield_10010": "value"} Default:null -
assignee -
string(Optional) Assignee's user identifier (string): Email, display name, or account ID (e.g., '[email protected]', 'John Doe', 'accountid:...') Default:null -
components -
string(Optional) Comma-separated list of component names to assign (e.g., 'Frontend,API') Default:null -
description -
stringIssue description in Markdown format. On Jira Cloud, use '{expand:Title}...{expand}' for a collapsible section. Default:null -
issue_typerequired -
stringIssue type (e.g. 'Task', 'Bug', 'Story', 'Epic', 'Subtask'). The available types depend on your project configuration. For subtasks, use 'Subtask' (not 'Sub-task') and include parent in additional_fields. -
project_keyrequired -
stringThe JIRA project key (e.g. 'PROJ', 'DEV', 'ACV2'). This is the prefix of issue keys in your project. Never assume what it might be, always ask the user. -
summaryrequired -
stringSummary/title of the issue
jira_create_issue_link Create a link between two Jira issues.
Arguments
-
comment -
string(Optional) Comment to add to the link. Rejected when either linked issue belongs to a project listed in JIRA_INTERNAL_ONLY_PROJECTS (a link comment may be customer-visible on JSM and cannot be forced internal): create the link without a comment, then post an internal note with jira_add_comment(public=false) on the relevant issue. Default:null -
comment_visibility -
string(Optional) Visibility settings for the comment as JSON string (e.g. '{"type":"group","value":"jira-users"}') Default:null -
inward_issue_keyrequired -
stringThe key of the inward issue (e.g., 'PROJ-123', 'ACV2-642') -
link_typerequired -
stringThe type of link to create (e.g., 'Duplicate', 'Blocks', 'Relates to') -
outward_issue_keyrequired -
stringThe key of the outward issue (e.g., 'PROJ-456')
jira_create_remote_issue_link Create a remote issue link (web link or Confluence link) for a Jira issue. This tool allows you to add web links and Confluence links to Jira issues. The links will appear in the issue's "Links" section and can be clicked to navigate to external resources.
Arguments
-
icon_url -
string(Optional) URL to a 16x16 icon for the link Default:null -
issue_keyrequired -
stringThe key of the issue to add the link to (e.g., 'PROJ-123', 'ACV2-642') -
relationship -
string(Optional) Relationship description (e.g., 'causes', 'relates to', 'documentation') Default:null -
summary -
string(Optional) Description of the link Default:null -
titlerequired -
stringThe title/name of the link (e.g., 'Documentation Page', 'Confluence Page') -
urlrequired -
stringThe URL to link to (e.g., 'https://example.com/page' or Confluence page URL)
jira_create_sprint Create Jira sprint for a board.
Arguments
-
board_idrequired -
stringThe id of board (e.g., '1000') -
end_daterequired -
stringEnd time for sprint (ISO 8601 format) -
goal -
string(Optional) Goal of the sprint Default:null -
namerequired -
stringName of the sprint (e.g., 'Sprint 1') -
start_daterequired -
stringStart time for sprint (ISO 8601 format)
jira_create_version Create a new fix version in a Jira project.
Arguments
-
description -
stringDescription of the version Default:null -
namerequired -
stringName of the version -
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'ACV2') -
release_date -
stringRelease date (YYYY-MM-DD) Default:null -
start_date -
stringStart date (YYYY-MM-DD) Default:null
jira_delete_issue Delete an existing Jira issue.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642')
jira_download_attachments Download attachments from a Jira issue. Returns attachment contents as base64-encoded content so that they are available over the MCP protocol without requiring filesystem access on the server. Image attachments are returned as ``EmbeddedResource`` blobs; all other attachments (documents, archives, etc.) are returned as ``TextContent`` carrying a base64 payload, since many MCP clients only forward ``EmbeddedResource`` blobs for recognized image MIME types and otherwise drop the attachment (#1419).
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642')
jira_edit_comment Edit an existing comment on a Jira issue.
Arguments
-
bodyrequired -
stringUpdated comment text in Markdown format -
comment_idrequired -
stringThe ID of the comment to edit -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
visibility -
string(Optional) Comment visibility as JSON string (e.g. '{"type":"group","value":"jira-users"}') Default:null
jira_get_agile_boards Get jira agile boards by name, project key, or type.
Arguments
-
board_name -
string(Optional) The name of board, support fuzzy search Default:null -
board_type -
string(Optional) The type of jira board (e.g., 'scrum', 'kanban') Default:null -
limit -
integerMaximum number of results (1-50) Default:10 -
project_key -
string(Optional) Jira project key (e.g., 'PROJ', 'ACV2') Default:null -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_all_projects Get all Jira projects accessible to the current user.
Arguments
-
include_archived -
booleanWhether to include archived projects in the results Default:false
jira_get_board_issues Get all issues linked to a specific board filtered by JQL.
Arguments
-
board_idrequired -
stringThe id of the board (e.g., '1001') -
expand -
stringOptional fields to expand in the response (e.g., 'changelog'). Default:version -
fields -
stringComma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority' Default:reporter,description,versions,issuetype,priority,status,summary,updated,created,labels,assignee -
jqlrequired -
stringJQL query string (Jira Query Language). Examples: - Find Epics: "issuetype = Epic AND project = PROJ" - Find issues in Epic: "parent = PROJ-123" - Find by status: "status = 'In Progress' AND project = PROJ" - Find by assignee: "assignee = currentUser()" - Find recently updated: "updated >= -7d AND project = PROJ" - Find by label: "labels = frontend AND project = PROJ" - Find by priority: "priority = High AND project = PROJ" -
limit -
integerMaximum number of results (1-50) Default:10 -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_create_fields Get fields available for creating an issue of a specific type. Returns all fields (required and optional) for the given project and issue type, including field names, IDs, whether they're required, and their schema. Use jira_get_field_options when a returned field needs its allowed values.
Arguments
-
issue_type_idrequired -
stringThe issue type ID (from get_project_issue_types). Example: '10002' for Task. -
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'JTEST')
jira_get_cross_project_dependencies Find all cross-project issue links for a project. Scans issues in the project, extracts every issue link whose target belongs to a different project, and groups them by target project and link type. Useful for dependency analysis across multi-project Jira setups.
Arguments
-
max_issues -
integerMaximum issues to scan for links (1-500) Default:200 -
project_keyrequired -
stringJira project key (e.g., 'PROJ')
jira_get_field_options Get allowed option values for a custom field. Returns the list of valid options for select, multi-select, radio, checkbox, and cascading select custom fields. Cloud: Uses the Field Context Option API. If context_id is not provided, automatically resolves to the global context. Server/DC: Uses createmeta to get allowedValues. Requires project_key and issue_type parameters.
Arguments
-
contains -
stringCase-insensitive substring filter on option values. Also matches child values in cascading selects. Default:null -
context_id -
stringField context ID (Cloud only). If omitted, auto-resolves to the global context. Default:null -
field_idrequired -
stringCustom field ID (e.g., 'customfield_10001'). Use jira_search_fields to find field IDs. -
issue_type -
stringIssue type name (required for Server/DC). Example: 'Bug' Default:null -
project_key -
stringProject key (required for Server/DC). Example: 'PROJ' Default:null -
return_limit -
integerMaximum number of results to return (applied after filtering). Default:null -
values_only -
booleanIf true, return only value strings in a compact JSON format instead of full option objects. Default:false
jira_get_issue Get details of a specific Jira issue. Includes Epic links and relationship information. Use the ``include`` parameter to inline enrichments (remote_links, transitions, watchers, changelog, comments, worklogs) so that separate tool calls are not needed.
Arguments
-
comment_limit -
integerMaximum number of comments to include (0 or null for no comments) Default:10 -
expand -
string(Optional) Fields to expand. Examples: 'renderedFields' (for rendered content), 'transitions' (for available status transitions), 'changelog' (for history) Default:null -
fields -
string(Optional) Comma-separated list of fields to return (e.g., 'summary,status,customfield_10010'). You may also provide a single field as a string (e.g., 'duedate'). Use '*all' for all fields (including custom fields), or omit for essential fields only. Default:reporter,description,versions,issuetype,priority,status,summary,updated,created,labels,assignee -
include -
string(Optional) Comma-separated sections to inline in the response, avoiding extra tool calls. Supported: all, remote_links, transitions, watchers, changelog, comments, worklogs Default:null -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
properties -
string(Optional) A comma-separated list of issue properties to return Default:null -
update_history -
booleanWhether to update the issue view history for the requesting user Default:true -
use_display_names -
booleanWhen true, custom field keys in the output use human-readable display names (e.g. 'Story Points') instead of opaque IDs (e.g. 'customfield_10243'). The 'names' expansion is added automatically. Standard fields are unaffected. Default:false
jira_get_issue_dates Get date information and status transition history for a Jira issue. Returns dates (created, updated, due date, resolution date) and optionally status change history with time tracking for workflow analysis.
Arguments
-
include_status_changes -
booleanInclude status change history with timestamps and durations Default:true -
include_status_summary -
booleanInclude aggregated time spent in each status Default:true -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642')
jira_get_issue_development_info Get development information (PRs, commits, branches) linked to a Jira issue. This retrieves the development panel information that shows linked pull requests, branches, and commits from connected source control systems like Bitbucket, GitHub, or GitLab.
Arguments
-
application_type -
string(Optional) Filter by application type (case-sensitive). Examples: 'stash' (Bitbucket Server), 'bitbucket', 'GitHub', 'githube' (GitHub Enterprise Server), 'GitLab'. If omitted, types are discovered automatically. Default:null -
data_type -
string(Optional) Filter by data type. Examples: 'pullrequest', 'branch', 'repository' Default:null -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123')
jira_get_issue_images Get all images attached to a Jira issue as inline image content. Filters attachments to images only (PNG, JPEG, GIF, WebP, SVG, BMP) and returns them as base64-encoded ImageContent that clients can render directly. Non-image attachments are excluded. Files with ambiguous MIME types (application/octet-stream) are detected by filename extension as a fallback. Images larger than 50 MB are skipped with an error entry in the summary.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123'). Returns image attachments as inline ImageContent for LLM vision.
jira_get_issue_proforma_forms Get all ProForma forms associated with a Jira issue. Uses the new Jira Forms REST API. Form IDs are returned as UUIDs.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123')
jira_get_issue_sla Calculate SLA metrics for a Jira issue. Computes various time-based metrics including cycle time, lead time, time spent in each status, due date compliance, and more. Working hours can be configured via environment variables: - JIRA_SLA_WORKING_HOURS_ONLY: Enable working hours filtering (true/false) - JIRA_SLA_WORKING_HOURS_START: Start time (e.g., "09:00") - JIRA_SLA_WORKING_HOURS_END: End time (e.g., "17:00") - JIRA_SLA_WORKING_DAYS: Working days (e.g., "1,2,3,4,5" for Mon-Fri) - JIRA_SLA_TIMEZONE: Timezone for calculations (e.g., "America/New_York")
Arguments
-
include_raw_dates -
booleanInclude raw date values in the response Default:false -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
metrics -
stringComma-separated list of SLA metrics to calculate. Available: cycle_time, lead_time, time_in_status, due_date_compliance, resolution_time, first_response_time. Defaults to configured metrics or 'cycle_time,time_in_status'. Default:null -
working_hours_only -
booleanCalculate using working hours only (excludes weekends/non-business hours). Defaults to value from JIRA_SLA_WORKING_HOURS_ONLY environment variable. Default:null
jira_get_issue_watchers Get the list of watchers for a Jira issue.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123')
jira_get_issues_development_info Get development information for multiple Jira issues. Batch retrieves development panel information (PRs, commits, branches) for multiple issues at once.
Arguments
-
application_type -
string(Optional) Filter by application type (case-sensitive). Examples: 'stash' (Bitbucket Server), 'bitbucket', 'GitHub', 'githube' (GitHub Enterprise Server), 'GitLab'. If omitted, types are discovered automatically. Default:null -
data_type -
string(Optional) Filter by data type. Examples: 'pullrequest', 'branch', 'repository' Default:null -
issue_keysrequired -
stringComma-separated list of Jira issue keys (e.g., 'PROJ-123,PROJ-456')
jira_get_link_types Get all available issue link types.
Arguments
-
name_filter -
string(Optional) Filter link types by name substring (case-insensitive) Default:null
jira_get_proforma_form_details Get detailed information about a specific ProForma form. Uses the new Jira Forms REST API. Returns form details including ADF design structure.
Arguments
-
form_idrequired -
stringProForma form UUID (e.g., '1946b8b7-8f03-4dc0-ac2d-5fac0d960c6a') -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123')
jira_get_project_components Get all components for a specific Jira project.
Arguments
-
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'ACV2')
jira_get_project_epic_hierarchy Group a project's epics under their cross-project parent issues. Fetches all epics in the project, detects their parent issue via the parent field or inward issue links, then groups them by parent. Epics with no detected parent appear under "Unlinked". Useful for understanding how a project's epics roll up to initiatives in another project.
Arguments
-
max_epics -
integerMaximum number of epics to fetch (1-500) Default:200 -
project_keyrequired -
stringJira project key (e.g., 'PROJ')
jira_get_project_fields Get the fields available on issues of a project (the create schema), deduplicated across the project's issue types — i.e. which fields tickets in this project have, regardless of whether they are filled.
Arguments
-
project_keyrequired -
stringThe project key, e.g. 'PROJ'.
jira_get_project_issue_types Get available issue types for a Jira project. Returns the list of issue types (Bug, Task, Story, Epic, etc.) that can be created in the specified project. Use the returned issue type IDs with get_create_fields to discover what fields each type requires.
Arguments
-
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'JTEST')
jira_get_project_issues Get all issues for a specific Jira project.
Arguments
-
limit -
integerMaximum number of results (1-50) Default:10 -
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'ACV2') -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_project_versions Get all fix versions for a specific Jira project.
Arguments
-
project_keyrequired -
stringJira project key (e.g., 'PROJ', 'ACV2')
jira_get_queue_issues Get issues from a Jira Service Desk queue. Server/Data Center only. Not available on Jira Cloud.
Arguments
-
limit -
integerMaximum number of results (1-50) Default:50 -
queue_idrequired -
stringQueue ID (e.g., '47') -
service_desk_idrequired -
stringService desk ID (e.g., '4') -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_request_type_fields Get field definitions for a Jira Service Management request type.
Arguments
-
request_type_idrequired -
stringRequest type ID (e.g., '23') -
service_desk_idrequired -
stringService desk ID (e.g., '4')
jira_get_request_types Get request types for a Jira Service Management service desk.
Arguments
-
limit -
integerMaximum number of results (1-50) Default:50 -
service_desk_idrequired -
stringService desk ID (e.g., '4') -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_service_desk_for_project Get the Jira Service Desk associated with a project key. Server/Data Center only. Not available on Jira Cloud.
Arguments
-
project_keyrequired -
stringJira project key (e.g., 'SUP')
jira_get_service_desk_queues Get queues for a Jira Service Desk. Server/Data Center only. Not available on Jira Cloud.
Arguments
-
limit -
integerMaximum number of results (1-50) Default:50 -
service_desk_idrequired -
stringService desk ID (e.g., '4') -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_sprint_issues Get jira issues from sprint.
Arguments
-
fields -
stringComma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority' Default:reporter,description,versions,issuetype,priority,status,summary,updated,created,labels,assignee -
limit -
integerMaximum number of results (1-50) Default:10 -
sprint_idrequired -
stringThe id of sprint (e.g., '10001') -
start_at -
integerStarting index for pagination (0-based) Default:0
jira_get_sprints_from_board Get jira sprints from board by state.
Arguments
-
board_idrequired -
stringThe id of board (e.g., '1000') -
limit -
integerMaximum number of results (1-50) Default:10 -
start_at -
integerStarting index for pagination (0-based) Default:0 -
state -
stringSprint state (e.g., 'active', 'future', 'closed') Default:null
jira_get_transitions Get available status transitions for a Jira issue.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642')
jira_get_user_profile Retrieve profile information for a specific Jira user.
Arguments
-
user_identifierrequired -
stringIdentifier for the user (e.g., email address '[email protected]', username 'johndoe', account ID 'accountid:...', or key for Server/DC).
jira_get_worklog Get worklog entries for a Jira issue.
Arguments
-
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642')
jira_link_to_epic Link an existing issue to an epic.
Arguments
-
epic_keyrequired -
stringThe key of the epic to link to (e.g., 'PROJ-456') -
issue_keyrequired -
stringThe key of the issue to link (e.g., 'PROJ-123', 'ACV2-642')
jira_move_issue Move a Jira issue to a different project (Jira Cloud only). Uses Jira Cloud's bulk move API to perform a cross-project move. The issue keeps its current issue type and may be assigned a new key in the target project (e.g., OLDPROJ-123 becomes NEWPROJ-456). The move is processed asynchronously on Jira's side; this tool polls until confirmed or times out after 30 seconds.
Arguments
-
issue_keyrequired -
stringJira issue key to move (e.g., 'PROJ-123') -
target_project_keyrequired -
stringKey of the target project (e.g., 'OTHERPROJ'). The issue will keep its current issue type and may receive a new key in the target project.
jira_move_issues_to_backlog Move issues to the backlog, removing them from any sprint.
Arguments
-
issue_keysrequired -
stringComma-separated issue keys (e.g., 'PROJ-1,PROJ-2')
jira_remove_issue_link Remove a link between two Jira issues.
Arguments
-
link_idrequired -
stringThe ID of the link to remove
jira_remove_watcher Remove a user from watching a Jira issue.
Arguments
-
account_id -
stringAccount ID to remove (for Jira Cloud). Default:null -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123') -
username -
stringUsername to remove (for Jira Server/DC). Default:null
jira_search Search Jira issues using JQL (Jira Query Language).
Arguments
-
expand -
string(Optional) fields to expand. Examples: 'renderedFields', 'transitions', 'changelog' Default:null -
fields -
string(Optional) Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority' Default:reporter,description,versions,issuetype,priority,status,summary,updated,created,labels,assignee -
jqlrequired -
stringJQL query string (Jira Query Language). Examples: - Find Epics: "issuetype = Epic AND project = PROJ" - Find issues in Epic: "parent = PROJ-123" - Find by status: "status = 'In Progress' AND project = PROJ" - Find by assignee: "assignee = currentUser()" - Find recently updated: "updated >= -7d AND project = PROJ" - Find by label: "labels = frontend AND project = PROJ" - Find by priority: "priority = High AND project = PROJ" -
limit -
integerMaximum number of results (1-50) Default:10 -
page_token -
string(Optional) Pagination token from a previous search result. Cloud only — Server/DC uses start_at for pagination. Default:null -
projects_filter -
string(Optional) Comma-separated list of project keys to filter results by. Overrides the environment variable JIRA_PROJECTS_FILTER if provided. Default:null -
start_at -
integerStarting index for pagination (0-based) Default:0 -
use_display_names -
booleanWhen true, custom field keys in the output use human-readable display names (e.g. 'Story Points') instead of opaque IDs (e.g. 'customfield_10243'). The 'names' expansion is added automatically. Standard fields are unaffected. Default:false
jira_search_assignable_users Search Jira users assignable in a given project or issue. Use this when you have a display name / partial name / email fragment and need a concrete identifier (``name`` / ``key`` for Server/DC, ``accountId`` for Cloud) to feed into assignee, reporter, watcher, etc. Returns the full result set so the caller can disambiguate when several users match — ``get_user_profile`` only resolves one identifier and is not designed for human-name search. Exactly one of ``project_key`` or ``issue_key`` must be provided — the underlying API (``/user/assignable/search``) requires a project or issue context and works without the global "Browse Users" permission that bot accounts in locked-down DC instances often lack.
Arguments
-
issue_key -
stringIssue key to scope the search to (e.g. 'DT-779'). Required if project_key is not given. Default:null -
limit -
integerMaximum number of users to return (default 20). Default:20 -
project_key -
stringProject key to scope the search to (e.g. 'DT'). Required if issue_key is not given. Default:null -
queryrequired -
stringFree-form text to search Jira users by: display name, username, or email substring (e.g. 'Smith', 'jane.doe', '[email protected]'). Server-side match is case-insensitive and partial.
jira_search_fields Search Jira fields by keyword with fuzzy match.
Arguments
-
keyword -
stringKeyword for fuzzy search. If left empty, lists the first 'limit' available fields in their default order. Default: -
limit -
integerMaximum number of results Default:10 -
refresh -
booleanWhether to force refresh the field list Default:false
jira_search_projects Search for Jira projects by name or key prefix. Uses the projects picker endpoint to return a ranked list of matching projects without fetching every visible project on the instance.
Arguments
-
current_project_ids -
stringComma-separated list of project IDs to exclude from results Default:null -
max_results -
integerMaximum number of results to return Default:20 -
queryrequired -
stringName or key prefix to search for
jira_transition_issue Transition a Jira issue to a new status.
Arguments
-
comment -
string(Optional) Comment to add during the transition in Markdown format. This will be visible in the issue history. Rejected for projects listed in JIRA_INTERNAL_ONLY_PROJECTS (a transition comment may be customer-visible on JSM and cannot be forced internal): transition without a comment, then post an internal note with jira_add_comment(public=false). Default:null -
fields -
string(Optional) JSON string of fields to update during the transition. Some transitions require specific fields to be set (e.g., resolution). Example: '{"resolution": {"name": "Fixed"}}' Default:null -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
transition_idrequired -
stringID of the transition to perform. Use the jira_get_transitions tool first to get the available transition IDs for the issue. Example values: '11', '21', '31'
jira_update_issue Update an existing Jira issue including changing status, adding Epic links, updating fields, etc.
Arguments
-
additional_fields -
string(Optional) JSON string of additional fields to update. Use this for custom fields or more complex updates. Link to epic: {"epicKey": "EPIC-123"} or {"epic_link": "EPIC-123"}. Default:null -
attachments -
string(Optional) JSON string array or comma-separated list of file paths to attach to the issue. Example: '/path/to/file1.txt,/path/to/file2.txt' or ['/path/to/file1.txt','/path/to/file2.txt'] Default:null -
components -
string(Optional) Comma-separated list of component names (e.g., 'Frontend,API') Default:null -
fieldsrequired -
stringJSON string of fields to update. For 'assignee', provide a string identifier (email, name, or accountId). For 'description', provide text in Markdown format; on Jira Cloud, use '{expand:Title}...{expand}' for a collapsible section. Example: '{"assignee": "[email protected]", "summary": "New Summary", "description": "## Updated\nMarkdown text"}' -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123', 'ACV2-642') -
return_fields -
string(Optional) Controls which fields of the updated issue are returned, to reduce response size and token usage. Defaults to '*all' (the complete issue, which can be very large). TOKEN-SAVING TIP: after an update you usually do NOT need the whole issue back. Pass a comma-separated list of just the field(s) you care about (e.g., 'summary,duedate'), or a single light field such as 'status' for a minimal confirmation - this can cut the response by thousands of tokens. The issue 'key' is always returned regardless. If you later need other fields, fetch them on demand with jira_get_issue (which also supports field filtering). Use '*all' only when you genuinely need the full updated issue. Default:*all
jira_update_proforma_form_answers Update form field answers using the Jira Forms REST API. This is the primary method for updating form data. Each answer object must specify the question ID, answer type, and value. **⚠️ KNOWN LIMITATION - DATETIME fields:** The Jira Forms API does NOT properly preserve time components in DATETIME fields. Only the date portion is stored; times are reset to midnight (00:00:00). **Workaround for DATETIME fields:** Use jira_update_issue to directly update the underlying custom fields instead: 1. Get the custom field ID from the form details (question's "jiraField" property) 2. Use jira_update_issue with fields like: {"customfield_XXXXX": "2026-01-09T11:50:00-08:00"} Example: ```python # Instead of updating via form (loses time): # jira_update_proforma_form_answers(issue_key, form_id, [{"questionId": "91", "type": "DATETIME", "value": "..."}]) # Use direct field update (preserves time): jira_update_issue(issue_key, {"customfield_10542": "2026-01-09T11:50:00-08:00"}) ``` **Automatic DateTime Conversion:** For DATE and DATETIME fields, you can provide values as: - ISO 8601 strings (e.g., "2024-12-17T19:00:00Z", "2024-12-17") - Unix timestamps in milliseconds (e.g., 1734465600000) The tool automatically converts ISO 8601 strings to Unix timestamps. Example answers: [ {"questionId": "q1", "type": "TEXT", "value": "Updated description"}, {"questionId": "q2", "type": "SELECT", "value": "Product A"}, {"questionId": "q3", "type": "NUMBER", "value": 42}, {"questionId": "q4", "type": "DATE", "value": "2024-12-17"} ] Common answer types: - TEXT: String values - NUMBER: Numeric values - DATE: Date values (ISO 8601 string or Unix timestamp in ms) - DATETIME: DateTime values - ⚠️ USE WORKAROUND ABOVE - SELECT: Single selection from options - MULTI_SELECT: Multiple selections (value as list) - CHECKBOX: Boolean values
Arguments
-
answersrequired -
arrayList of answer objects. Each answer must have: questionId (string), type (TEXT/NUMBER/SELECT/etc), value (any) -
form_idrequired -
stringProForma form UUID (e.g., '1946b8b7-8f03-4dc0-ac2d-5fac0d960c6a') -
issue_keyrequired -
stringJira issue key (e.g., 'PROJ-123')
jira_update_sprint Update jira sprint.
Arguments
-
end_date -
string(Optional) New end date for the sprint Default:null -
goal -
string(Optional) New goal for the sprint Default:null -
name -
string(Optional) New name for the sprint Default:null -
sprint_idrequired -
stringThe id of sprint (e.g., '10001') -
start_date -
string(Optional) New start date for the sprint Default:null -
state -
string(Optional) New state for the sprint (future|active|closed) Default:null
jira_update_version Update an existing fix version in a Jira project. Only fields explicitly provided are modified; other attributes of the version are left untouched. Useful for archiving/unarchiving versions, renaming, or shifting release dates without recreating them.
Arguments
-
archived -
booleanSet archived flag (true to archive) Default:null -
description -
stringNew description for the version Default:null -
name -
stringNew name for the version Default:null -
release_date -
stringNew release date (YYYY-MM-DD) Default:null -
released -
booleanSet released flag (true to mark released) Default:null -
start_date -
stringNew start date (YYYY-MM-DD) Default:null -
version_idrequired -
stringNumeric ID of the version to update (e.g. '10001')