Tools for Atlassian products (Confluence and Jira). This integration supports both Atlassian Cloud and Jira Server/Data Center deployments.
100K+
80 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Tools for Atlassian products (Confluence and Jira). This integration supports both Atlassian Cloud and Jira Server/Data Center deployments.
| Attribute | Details |
|---|---|
| Docker Image | mcp/atlassian |
| Author | sooperset |
| Repository | https://github.com/sooperset/mcp-atlassian |
| Attribute | Details |
|---|---|
| Dockerfile | https://github.com/sooperset/mcp-atlassian/blob/35b1da00c920810e7d4119cdd9fcc5b46eec5b0e/Dockerfile |
| Commit | 35b1da00c920810e7d4119cdd9fcc5b46eec5b0e |
| Docker Image built by | Docker Inc. |
| Docker Scout Health Score | |
| Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/atlassian --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
| Licence | MIT License |
| Tools provided by this Server | Short Description |
|---|---|
confluence_add_comment | Add Comment |
confluence_add_inline_comment | Add Inline Comment |
confluence_add_label | Add Label |
confluence_create_page | Create Page |
confluence_delete_attachment | Delete Attachment |
confluence_delete_page | Delete Page |
confluence_download_attachment | Download Attachment |
confluence_download_content_attachments | Download All Content Attachments |
confluence_get_attachments | Get Content Attachments |
confluence_get_comments | Get Comments |
confluence_get_inline_comments | Get Inline Comments |
confluence_get_labels | Get Labels |
confluence_get_page | Get Page |
confluence_get_page_children | Get Page Children |
confluence_get_page_diff | Get Page Version Diff |
confluence_get_page_history | Get Page History |
confluence_get_page_images | Get Page Images |
confluence_get_page_views | Get Page Views |
confluence_get_space_page_tree | Get Space Page Tree |
confluence_move_page | Move Page |
confluence_reply_to_comment | Reply to Comment |
confluence_search | Search Content |
confluence_search_user | Search User |
confluence_update_page | Update Page |
confluence_update_page_section | Update Page Section |
confluence_upload_attachment | Upload Attachment |
confluence_upload_attachments | Upload Multiple Attachments |
jira_add_comment | Add Comment |
jira_add_issues_to_sprint | Add Issues to Sprint |
jira_add_watcher | Add Issue Watcher |
jira_add_worklog | Add Worklog |
jira_assign_issue | Assign Issue |
jira_batch_create_issues | Batch Create Issues |
jira_batch_create_versions | Batch Create Versions |
jira_batch_get_changelogs | Batch Get Changelogs |
jira_create_issue | Create Issue |
jira_create_issue_link | Create Issue Link |
jira_create_remote_issue_link | Create Remote Issue Link |
jira_create_sprint | Create Sprint |
jira_create_version | Create Version |
jira_delete_issue | Delete Issue |
jira_download_attachments | Download Attachments |
jira_edit_comment | Edit Comment |
jira_get_agile_boards | Get Agile Boards |
jira_get_all_projects | Get All Projects |
jira_get_board_issues | Get Board Issues |
jira_get_field_options | Get Field Options |
jira_get_issue | Get Issue |
jira_get_issue_dates | Get Issue Dates |
jira_get_issue_development_info | Get Issue Development Info |
jira_get_issue_images | Get Issue Images |
jira_get_issue_proforma_forms | Get Issue Forms |
jira_get_issue_sla | Get Issue SLA |
jira_get_issue_watchers | Get Issue Watchers |
jira_get_issues_development_info | Get Issues Development Info |
jira_get_link_types | Get Link Types |
jira_get_proforma_form_details | Get Form Details |
jira_get_project_components | Get Project Components |
jira_get_project_fields | Get Project Fields |
jira_get_project_issues | Get Project Issues |
jira_get_project_versions | Get Project Versions |
jira_get_queue_issues | Get Queue Issues |
jira_get_service_desk_for_project | Get Service Desk For Project |
jira_get_service_desk_queues | Get Service Desk Queues |
jira_get_sprint_issues | Get Sprint Issues |
jira_get_sprints_from_board | Get Sprints from Board |
jira_get_transitions | Get Transitions |
jira_get_user_profile | Get User Profile |
jira_get_worklog | Get Worklog |
jira_link_to_epic | Link to Epic |
jira_remove_issue_link | Remove Issue Link |
jira_remove_watcher | Remove Issue Watcher |
jira_search | Search Issues |
jira_search_assignable_users | Search Assignable Users |
jira_search_fields | Search Fields |
jira_transition_issue | Transition Issue |
jira_update_issue | Update Issue |
jira_update_proforma_form_answers | Update Form Answers |
jira_update_sprint | Update Sprint |
jira_update_version | Update Version |
confluence_add_commentAdd a comment to a Confluence page.
| Parameters | Type | Description |
|---|---|---|
body | string | The comment content in Markdown format |
page_id | string | The ID of the page to add a comment to |
This tool may perform destructive updates.
confluence_add_inline_commentAdd an inline comment anchored to a text selection on a page.
| Parameters | Type | Description |
|---|---|---|
body | string | The comment content in Markdown format |
page_id | string | The ID of the page to add the inline comment to |
text_selection | string | The exact text on the page to anchor the inline comment to. Must match text that exists in the page content. |
text_selection_match_count | integeroptional | Total number of times the selected text appears on the page. Defaults to 1. |
text_selection_match_index | integeroptional | Zero-based index of which occurrence of the text to anchor to. Defaults to 0 (first occurrence). |
This tool may perform destructive updates.
confluence_add_labelAdd label to Confluence content (pages, blog posts, or attachments).
Useful for:
name|string|Label name to add (lowercase, no spaces). Examples: 'draft', 'reviewed', 'confidential', 'v1.0'. Labels help organize and categorize content.
page_id|string|Confluence 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.This tool may perform destructive updates.
confluence_create_pageCreate a new Confluence page.
| Parameters | Type | Description |
|---|---|---|
content | string | The content of the page. Format depends on content_format parameter. Can be Markdown (default), wiki markup, storage format, or XHTML storage format |
space_key | string | The key of the space to create the page in (usually a short uppercase code like 'DEV', 'TEAM', or 'DOC') |
title | string | The title of the page |
content_format | stringoptional | (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 |
emoji | stringoptional | (Optional) Page title emoji (icon shown in navigation). Can be any emoji character like '📝', '🚀', '📚'. Set to null/None to remove. |
enable_heading_anchors | booleanoptional | (Optional) Whether to enable automatic heading anchor generation. Only applies when content_format is 'markdown' |
include_content | booleanoptional | (Optional) Whether to include page content in the response. Defaults to false since callers already have the content at create time |
parent_id | stringoptional | (Optional) parent page ID. If provided, this page will be created as a child of the specified page |
This tool may perform destructive updates.
confluence_delete_attachmentPermanently 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:
Best practices:
attachment_id|string|The 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.This tool may perform destructive updates.
confluence_delete_pageDelete an existing Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | The ID of the page to delete |
This tool may perform destructive updates.
confluence_download_attachmentDownload 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.
| Parameters | Type | Description |
|---|---|---|
attachment_id | string | The 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. |
This tool is read-only. It does not modify its environment.
confluence_download_content_attachmentsDownload 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.
| Parameters | Type | Description |
|---|---|---|
content_id | string | The ID of the Confluence content (page or blog post) to download attachments from. Example: '123456789' |
This tool is read-only. It does not modify its environment.
confluence_get_attachmentsList all attachments for a Confluence content item (page or blog post).
Returns metadata about attachments including:
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:
content_id|string|The ID of the Confluence content (page or blog post) to list attachments for. Example: '123456789'
filename|stringoptional|(Optional) Filter results to only attachments matching this filename. Exact match only. Example: 'report.pdf'
limit|integeroptional|(Optional) Maximum number of attachments to return per request (1-100). Use pagination (start/limit) for large attachment lists. Default: 50
media_type|stringoptional|(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)
start|integeroptional|(Optional) Starting index for pagination. Use 0 for the first page. To get the next page, add the 'limit' value to 'start'. Default: 0This tool is read-only. It does not modify its environment.
confluence_get_commentsGet comments for a specific Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | Confluence page ID (numeric ID, can be parsed from URL, e.g. from 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title' -> '123456789') |
This tool is read-only. It does not modify its environment.
confluence_get_inline_commentsGet all inline comments for a Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | The ID of the page to get inline comments from |
This tool is read-only. It does not modify its environment.
confluence_get_labelsGet labels for Confluence content (pages, blog posts, or attachments).
| Parameters | Type | Description |
|---|---|---|
page_id | string | Confluence 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. |
This tool is read-only. It does not modify its environment.
confluence_get_pageGet content of a specific Confluence page by its ID, or by its title and space key.
| Parameters | Type | Description |
|---|---|---|
convert_to_markdown | booleanoptional | Whether 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. |
include_metadata | booleanoptional | Whether to include page metadata such as creation date, last update, version, and labels. |
page_id | stringoptional | Confluence page ID (numeric ID, can be found in the page URL). For example, in the URL 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title', the page ID is '123456789'. Provide this OR both 'title' and 'space_key'. If page_id is provided, title and space_key will be ignored. |
space_key | stringoptional | The key of the Confluence space where the page resides (e.g., 'DEV', 'TEAM'). Required if using 'title'. |
title | stringoptional | The exact title of the Confluence page. Use this with 'space_key' if 'page_id' is not known. |
This tool is read-only. It does not modify its environment.
confluence_get_page_childrenGet child pages and folders of a specific Confluence page.
| Parameters | Type | Description |
|---|---|---|
parent_id | string | The ID of the parent page whose children you want to retrieve |
convert_to_markdown | booleanoptional | Whether to convert page content to markdown (true) or keep it in raw HTML format (false). Only relevant if include_content is true. |
expand | stringoptional | Fields to expand in the response (e.g., 'version', 'body.storage') |
include_content | booleanoptional | Whether to include the page content in the response |
include_folders | booleanoptional | Whether to include child folders in addition to child pages |
limit | integeroptional | Maximum number of child items to return (1-50) |
start | integeroptional | Starting index for pagination (0-based) |
This tool is read-only. It does not modify its environment.
confluence_get_page_diffGet a unified diff between two versions of a Confluence page.
| Parameters | Type | Description |
|---|---|---|
from_version | integer | Source version number |
page_id | string | Confluence 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_version | integer | Target version number |
This tool is read-only. It does not modify its environment.
confluence_get_page_historyGet a historical version of a specific Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | Confluence 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'. |
version | integer | The version number of the page to retrieve |
convert_to_markdown | booleanoptional | Whether 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. |
This tool is read-only. It does not modify its environment.
confluence_get_page_imagesGet 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.
| Parameters | Type | Description |
|---|---|---|
content_id | string | The ID of the Confluence page or blog post to retrieve images from. Example: '123456789' |
This tool is read-only. It does not modify its environment.
confluence_get_page_viewsGet 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.
| Parameters | Type | Description |
|---|---|---|
page_id | string | Confluence 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'. |
include_title | booleanoptional | Whether to fetch and include the page title |
This tool is read-only. It does not modify its environment.
confluence_get_space_page_treeGet 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.
| Parameters | Type | Description |
|---|---|---|
space_key | string | Space key |
limit | integeroptional | Max pages to fetch |
This tool is read-only. It does not modify its environment.
confluence_move_pageMove a Confluence page to a new parent or space.
| Parameters | Type | Description |
|---|---|---|
page_id | string | ID of the page to move |
position | stringoptional | Position: 'append' (default, move as child of target), 'above' (move before target as sibling), or 'below' (move after target as sibling) |
target_parent_id | stringoptional | Target parent page ID. If omitted with target_space_key, moves to space root. |
target_space_key | stringoptional | Target space key for cross-space moves |
This tool may perform destructive updates.
confluence_reply_to_commentReply to an existing comment thread on a Confluence page.
| Parameters | Type | Description |
|---|---|---|
body | string | The reply content in Markdown format |
comment_id | string | The ID of the parent comment to reply to |
This tool may perform destructive updates.
confluence_searchSearch Confluence content using simple terms or CQL.
| Parameters | Type | Description |
|---|---|---|
query | string | Search 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: |
limit|integeroptional|Maximum number of results (1-50)
spaces_filter|stringoptional|(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.This tool is read-only. It does not modify its environment.
confluence_search_userSearch Confluence users using CQL (Cloud) or group member API (Server/DC).
| Parameters | Type | Description |
|---|---|---|
query | string | Search query - a CQL query string for user search. Examples of CQL: |
group_name|stringoptional|Group to search within on Server/DC instances (default: 'confluence-users'). Ignored on Cloud.
limit|integeroptional|Maximum number of results (1-50)This tool is read-only. It does not modify its environment.
confluence_update_pageUpdate an existing Confluence page.
| Parameters | Type | Description |
|---|---|---|
content | string | The new content of the page. Format depends on content_format parameter |
page_id | string | The ID of the page to update |
title | string | The new title of the page |
content_format | stringoptional | (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 |
emoji | stringoptional | (Optional) Page title emoji (icon shown in navigation). Can be any emoji character like '📝', '🚀', '📚'. Set to null/None to remove. |
enable_heading_anchors | booleanoptional | (Optional) Whether to enable automatic heading anchor generation. Only applies when content_format is 'markdown' |
include_content | booleanoptional | (Optional) Whether to include page content in the response. Defaults to false since callers already have the content at update time |
is_minor_edit | booleanoptional | Whether this is a minor edit |
parent_id | stringoptional | Optional the new parent page ID |
version_comment | stringoptional | Optional comment for this version |
This tool may perform destructive updates.
confluence_update_page_sectionUpdate 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.
| Parameters | Type | Description |
|---|---|---|
heading_text | string | Exact 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. |
new_content | string | Replacement content for the section body. Do NOT include the heading itself — only the body beneath it. Format is controlled by content_format. |
page_id | string | The ID of the page to update |
content_format | stringoptional | (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. |
is_minor_edit | booleanoptional | Whether this is a minor edit |
version_comment | stringoptional | Optional comment for this version |
This tool may perform destructive updates.
confluence_upload_attachmentUpload an attachment to Confluence content (page or blog post).
If the attachment already exists (same filename), a new version is created. This is useful for:
content_id|string|The 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|string|Full 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.
comment|stringoptional|(Optional) A comment describing this attachment or version. Visible in the attachment history. Example: 'Updated Q4 2024 figures'
minor_edit|booleanoptional|(Optional) Whether this is a minor edit. If true, watchers are not notified. Default is false.This tool may perform destructive updates.
confluence_upload_attachmentsUpload 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:
content_id|string|The 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_paths|string|Comma-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.
comment|stringoptional|(Optional) Comment for all uploaded attachments. Visible in version history. Example: 'Q4 2024 batch upload'
minor_edit|booleanoptional|(Optional) Whether this is a minor edit. If true, watchers are not notified. Default is false.This tool may perform destructive updates.
jira_add_commentAdd a comment to a Jira issue.
| Parameters | Type | Description |
|---|---|---|
body | string | Comment text in Markdown format |
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
public | booleanoptional | (Optional) For JSM/Service Desk issues only. Set to true for customer-visible comment, false for internal agent-only comment. Uses the ServiceDesk API (plain text, not Markdown). Cannot be combined with visibility. |
visibility | stringoptional | (Optional) Comment visibility as JSON string (e.g. '{"type":"group","value":"jira-users"}') |
This tool may perform destructive updates.
jira_add_issues_to_sprintAdd issues to a Jira sprint.
| Parameters | Type | Description |
|---|---|---|
issue_keys | string | Comma-separated issue keys (e.g., 'PROJ-1,PROJ-2') |
sprint_id | string | Sprint ID to add issues to |
jira_add_watcherAdd a user as a watcher to a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
user_identifier | string | User to add as watcher. For Jira Cloud, use the account ID. For Jira Server/DC, use the username. |
jira_add_worklogAdd a worklog entry to a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
time_spent | string | Time spent in Jira format. Examples: '1h 30m' (1 hour and 30 minutes), '1d' (1 day), '30m' (30 minutes), '4h' (4 hours) |
comment | stringoptional | (Optional) Comment for the worklog in Markdown format |
original_estimate | stringoptional | (Optional) New value for the original estimate |
remaining_estimate | stringoptional | (Optional) New value for the remaining estimate |
started | stringoptional | (Optional) Start time in ISO format. If not provided, the current time will be used. Example: '2023-08-01T12:00:00.000+0000' |
This tool may perform destructive updates.
jira_assign_issueAssign 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.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
assignee | stringoptional | User 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. |
jira_batch_create_issuesCreate multiple Jira issues in a batch.
| Parameters | Type | Description |
|---|---|---|
issues | string | JSON array of issue objects. Each object should contain: |
validate_only|booleanoptional|If true, only validates the issues without creating themThis tool may perform destructive updates.
jira_batch_create_versionsBatch create multiple versions in a Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'PROJ', 'ACV2') |
versions | string | JSON array of version objects. Each object should contain: |
This tool may perform destructive updates.
jira_batch_get_changelogsGet changelogs for multiple Jira issues (Cloud only).
| Parameters | Type | Description |
|---|---|---|
issue_ids_or_keys | string | Comma-separated list of Jira issue IDs or keys (e.g. 'PROJ-123,PROJ-124') |
fields | stringoptional | (Optional) Comma-separated list of fields to filter changelogs by (e.g. 'status,assignee'). Default to None for all fields. |
limit | integeroptional | Maximum 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. |
This tool is read-only. It does not modify its environment.
jira_create_issueCreate a new Jira issue with optional Epic link or parent for subtasks.
| Parameters | Type | Description |
|---|---|---|
issue_type | string | Issue 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_key | string | The 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. |
summary | string | Summary/title of the issue |
additional_fields | stringoptional | (Optional) JSON string of additional fields to set. Examples: |
assignee|stringoptional|(Optional) Assignee's user identifier (string): Email, display name, or account ID (e.g., '[email protected]', 'John Doe', 'accountid:...')
components|stringoptional|(Optional) Comma-separated list of component names to assign (e.g., 'Frontend,API')
description|stringoptional|Issue description in Markdown formatThis tool may perform destructive updates.
jira_create_issue_linkCreate a link between two Jira issues.
| Parameters | Type | Description |
|---|---|---|
inward_issue_key | string | The key of the inward issue (e.g., 'PROJ-123', 'ACV2-642') |
link_type | string | The type of link to create (e.g., 'Duplicate', 'Blocks', 'Relates to') |
outward_issue_key | string | The key of the outward issue (e.g., 'PROJ-456') |
comment | stringoptional | (Optional) Comment to add to the link |
comment_visibility | stringoptional | (Optional) Visibility settings for the comment as JSON string (e.g. '{"type":"group","value":"jira-users"}') |
This tool may perform destructive updates.
jira_create_remote_issue_linkCreate 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.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | The key of the issue to add the link to (e.g., 'PROJ-123', 'ACV2-642') |
title | string | The title/name of the link (e.g., 'Documentation Page', 'Confluence Page') |
url | string | The URL to link to (e.g., 'https://example.com/page' or Confluence page URL) |
icon_url | stringoptional | (Optional) URL to a 16x16 icon for the link |
relationship | stringoptional | (Optional) Relationship description (e.g., 'causes', 'relates to', 'documentation') |
summary | stringoptional | (Optional) Description of the link |
This tool may perform destructive updates.
jira_create_sprintCreate Jira sprint for a board.
| Parameters | Type | Description |
|---|---|---|
board_id | string | The id of board (e.g., '1000') |
end_date | string | End time for sprint (ISO 8601 format) |
name | string | Name of the sprint (e.g., 'Sprint 1') |
start_date | string | Start time for sprint (ISO 8601 format) |
goal | stringoptional | (Optional) Goal of the sprint |
This tool may perform destructive updates.
jira_create_versionCreate a new fix version in a Jira project.
| Parameters | Type | Description |
|---|---|---|
name | string | Name of the version |
project_key | string | Jira project key (e.g., 'PROJ', 'ACV2') |
description | stringoptional | Description of the version |
release_date | stringoptional | Release date (YYYY-MM-DD) |
start_date | stringoptional | Start date (YYYY-MM-DD) |
This tool may perform destructive updates.
jira_delete_issueDelete an existing Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
This tool may perform destructive updates.
jira_download_attachmentsDownload attachments from a Jira issue.
Returns attachment contents as base64-encoded embedded resources so that they are available over the MCP protocol without requiring filesystem access on the server.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
This tool is read-only. It does not modify its environment.
jira_edit_commentEdit an existing comment on a Jira issue.
| Parameters | Type | Description |
|---|---|---|
body | string | Updated comment text in Markdown format |
comment_id | string | The ID of the comment to edit |
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
visibility | stringoptional | (Optional) Comment visibility as JSON string (e.g. '{"type":"group","value":"jira-users"}') |
This tool may perform destructive updates.
jira_get_agile_boardsGet jira agile boards by name, project key, or type.
| Parameters | Type | Description |
|---|---|---|
board_name | stringoptional | (Optional) The name of board, support fuzzy search |
board_type | stringoptional | (Optional) The type of jira board (e.g., 'scrum', 'kanban') |
limit | integeroptional | Maximum number of results (1-50) |
project_key | stringoptional | (Optional) Jira project key (e.g., 'PROJ', 'ACV2') |
start_at | integeroptional | Starting index for pagination (0-based) |
This tool is read-only. It does not modify its environment.
jira_get_all_projectsGet all Jira projects accessible to the current user.
| Parameters | Type | Description |
|---|---|---|
include_archived | booleanoptional | Whether to include archived projects in the results |
This tool is read-only. It does not modify its environment.
jira_get_board_issuesGet all issues linked to a specific board filtered by JQL.
| Parameters | Type | Description |
|---|---|---|
board_id | string | The id of the board (e.g., '1001') |
jql | string | JQL query string (Jira Query Language). Examples: |
expand|stringoptional|Optional fields to expand in the response (e.g., 'changelog').
fields|stringoptional|Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority'
limit|integeroptional|Maximum number of results (1-50)
start_at|integeroptional|Starting index for pagination (0-based)This tool is read-only. It does not modify its environment.
jira_get_field_optionsGet 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.
| Parameters | Type | Description |
|---|---|---|
field_id | string | Custom field ID (e.g., 'customfield_10001'). Use jira_search_fields to find field IDs. |
contains | stringoptional | Case-insensitive substring filter on option values. Also matches child values in cascading selects. |
context_id | stringoptional | Field context ID (Cloud only). If omitted, auto-resolves to the global context. |
issue_type | stringoptional | Issue type name (required for Server/DC). Example: 'Bug' |
project_key | stringoptional | Project key (required for Server/DC). Example: 'PROJ' |
return_limit | integeroptional | Maximum number of results to return (applied after filtering). |
values_only | booleanoptional | If true, return only value strings in a compact JSON format instead of full option objects. |
This tool is read-only. It does not modify its environment.
jira_get_issueGet 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.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
comment_limit | integeroptional | Maximum number of comments to include (0 or null for no comments) |
expand | stringoptional | (Optional) Fields to expand. Examples: 'renderedFields' (for rendered content), 'transitions' (for available status transitions), 'changelog' (for history) |
fields | stringoptional | (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. |
include | stringoptional | (Optional) Comma-separated sections to inline in the response, avoiding extra tool calls. Supported: all, remote_links, transitions, watchers, changelog, comments, worklogs |
properties | stringoptional | (Optional) A comma-separated list of issue properties to return |
update_history | booleanoptional | Whether to update the issue view history for the requesting user |
This tool is read-only. It does not modify its environment.
jira_get_issue_datesGet 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.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
include_status_changes | booleanoptional | Include status change history with timestamps and durations |
include_status_summary | booleanoptional | Include aggregated time spent in each status |
This tool is read-only. It does not modify its environment.
jira_get_issue_development_infoGet 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.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
application_type | stringoptional | (Optional) Filter by application type (case-sensitive). Examples: 'stash' (Bitbucket Server), 'bitbucket', 'GitHub', 'GitLab' |
data_type | stringoptional | (Optional) Filter by data type. Examples: 'pullrequest', 'branch', 'repository' |
This tool is read-only. It does not modify its environment.
jira_get_issue_imagesGet 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.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123'). Returns image attachments as inline ImageContent for LLM vision. |
This tool is read-only. It does not modify its environment.
jira_get_issue_proforma_formsGet all ProForma forms associated with a Jira issue.
Uses the new Jira Forms REST API. Form IDs are returned as UUIDs.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
This tool is read-only. It does not modify its environment.
jira_get_issue_slaCalculate 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:
issue_key|string|Jira issue key (e.g., 'PROJ-123', 'ACV2-642')
include_raw_dates|booleanoptional|Include raw date values in the response
metrics|stringoptional|Comma-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'.
working_hours_only|booleanoptional|Calculate using working hours only (excludes weekends/non-business hours). Defaults to value from JIRA_SLA_WORKING_HOURS_ONLY environment variable.This tool is read-only. It does not modify its environment.
jira_get_issue_watchersGet the list of watchers for a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
This tool is read-only. It does not modify its environment.
jira_get_issues_development_infoGet development information for multiple Jira issues.
Batch retrieves development panel information (PRs, commits, branches) for multiple issues at once.
| Parameters | Type | Description |
|---|---|---|
issue_keys | string | Comma-separated list of Jira issue keys (e.g., 'PROJ-123,PROJ-456') |
application_type | stringoptional | (Optional) Filter by application type (case-sensitive). Examples: 'stash' (Bitbucket Server), 'bitbucket', 'GitHub', 'GitLab' |
data_type | stringoptional | (Optional) Filter by data type. Examples: 'pullrequest', 'branch', 'repository' |
This tool is read-only. It does not modify its environment.
jira_get_link_typesGet all available issue link types.
| Parameters | Type | Description |
|---|---|---|
name_filter | stringoptional | (Optional) Filter link types by name substring (case-insensitive) |
This tool is read-only. It does not modify its environment.
jira_get_proforma_form_detailsGet detailed information about a specific ProForma form.
Uses the new Jira Forms REST API. Returns form details including ADF design structure.
| Parameters | Type | Description |
|---|---|---|
form_id | string | ProForma form UUID (e.g., '1946b8b7-8f03-4dc0-ac2d-5fac0d960c6a') |
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
This tool is read-only. It does not modify its environment.
jira_get_project_componentsGet all components for a specific Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'PROJ', 'ACV2') |
This tool is read-only. It does not modify its environment.
jira_get_project_fieldsGet 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.
| Parameters | Type | Description |
|---|---|---|
project_key | string | The project key, e.g. 'PROJ'. |
This tool is read-only. It does not modify its environment.
jira_get_project_issuesGet all issues for a specific Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'PROJ', 'ACV2') |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
This tool is read-only. It does not modify its environment.
jira_get_project_versionsGet all fix versions for a specific Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'PROJ', 'ACV2') |
This tool is read-only. It does not modify its environment.
jira_get_queue_issuesGet issues from a Jira Service Desk queue.
Server/Data Center only. Not available on Jira Cloud.
| Parameters | Type | Description |
|---|---|---|
queue_id | string | Queue ID (e.g., '47') |
service_desk_id | string | Service desk ID (e.g., '4') |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
This tool is read-only. It does not modify its environment.
jira_get_service_desk_for_projectGet the Jira Service Desk associated with a project key.
Server/Data Center only. Not available on Jira Cloud.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'SUP') |
This tool is read-only. It does not modify its environment.
jira_get_service_desk_queuesGet queues for a Jira Service Desk.
Server/Data Center only. Not available on Jira Cloud.
| Parameters | Type | Description |
|---|---|---|
service_desk_id | string | Service desk ID (e.g., '4') |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
This tool is read-only. It does not modify its environment.
jira_get_sprint_issuesGet jira issues from sprint.
| Parameters | Type | Description |
|---|---|---|
sprint_id | string | The id of sprint (e.g., '10001') |
fields | stringoptional | Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority' |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
This tool is read-only. It does not modify its environment.
jira_get_sprints_from_boardGet jira sprints from board by state.
| Parameters | Type | Description |
|---|---|---|
board_id | string | The id of board (e.g., '1000') |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
state | stringoptional | Sprint state (e.g., 'active', 'future', 'closed') |
This tool is read-only. It does not modify its environment.
jira_get_transitionsGet available status transitions for a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
This tool is read-only. It does not modify its environment.
jira_get_user_profileRetrieve profile information for a specific Jira user.
| Parameters | Type | Description |
|---|---|---|
user_identifier | string | Identifier for the user (e.g., email address '[email protected]', username 'johndoe', account ID 'accountid:...', or key for Server/DC). |
This tool is read-only. It does not modify its environment.
jira_get_worklogGet worklog entries for a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
This tool is read-only. It does not modify its environment.
jira_link_to_epicLink an existing issue to an epic.
| Parameters | Type | Description |
|---|---|---|
epic_key | string | The key of the epic to link to (e.g., 'PROJ-456') |
issue_key | string | The key of the issue to link (e.g., 'PROJ-123', 'ACV2-642') |
This tool may perform destructive updates.
jira_remove_issue_linkRemove a link between two Jira issues.
| Parameters | Type | Description |
|---|---|---|
link_id | string | The ID of the link to remove |
This tool may perform destructive updates.
jira_remove_watcherRemove a user from watching a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
account_id | stringoptional | Account ID to remove (for Jira Cloud). |
username | stringoptional | Username to remove (for Jira Server/DC). |
jira_searchSearch Jira issues using JQL (Jira Query Language).
| Parameters | Type | Description |
|---|---|---|
jql | string | JQL query string (Jira Query Language). Examples: |
expand|stringoptional|(Optional) fields to expand. Examples: 'renderedFields', 'transitions', 'changelog'
fields|stringoptional|(Optional) Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority'
limit|integeroptional|Maximum number of results (1-50)
page_token|stringoptional|(Optional) Pagination token from a previous search result. Cloud only — Server/DC uses start_at for pagination.
projects_filter|stringoptional|(Optional) Comma-separated list of project keys to filter results by. Overrides the environment variable JIRA_PROJECTS_FILTER if provided.
start_at|integeroptional|Starting index for pagination (0-based)This tool is read-only. It does not modify its environment.
jira_search_assignable_usersSearch 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.
| Parameters | Type | Description |
|---|---|---|
query | string | Free-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. |
issue_key | stringoptional | Issue key to scope the search to (e.g. 'DT-779'). Required if project_key is not given. |
limit | integeroptional | Maximum number of users to return (default 20). |
project_key | stringoptional | Project key to scope the search to (e.g. 'DT'). Required if issue_key is not given. |
This tool is read-only. It does not modify its environment.
jira_search_fieldsSearch Jira fields by keyword with fuzzy match.
| Parameters | Type | Description |
|---|---|---|
keyword | stringoptional | Keyword for fuzzy search. If left empty, lists the first 'limit' available fields in their default order. |
limit | integeroptional | Maximum number of results |
refresh | booleanoptional | Whether to force refresh the field list |
This tool is read-only. It does not modify its environment.
jira_transition_issueTransition a Jira issue to a new status.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
transition_id | string | ID 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' |
comment | stringoptional | (Optional) Comment to add during the transition in Markdown format. This will be visible in the issue history. |
fields | stringoptional | (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"}}' |
This tool may perform destructive updates.
jira_update_issueUpdate an existing Jira issue including changing status, adding Epic links, updating fields, etc.
| Parameters | Type | Description |
|---|---|---|
fields | string | JSON string of fields to update. For 'assignee', provide a string identifier (email, name, or accountId). For 'description', provide text in Markdown format. Example: '{"assignee": "[email protected]", "summary": "New Summary", "description": "## Updated\nMarkdown text"}' |
issue_key | string | Jira issue key (e.g., 'PROJ-123', 'ACV2-642') |
additional_fields | stringoptional | (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"}. |
attachments | stringoptional | (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'] |
components | stringoptional | (Optional) Comma-separated list of component names (e.g., 'Frontend,API') |
This tool may perform destructive updates.
jira_update_proforma_form_answersUpdate 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:
Example:
# 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:
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:
answers|array|List of answer objects. Each answer must have: questionId (string), type (TEXT/NUMBER/SELECT/etc), value (any)
form_id|string|ProForma form UUID (e.g., '1946b8b7-8f03-4dc0-ac2d-5fac0d960c6a')
issue_key|string|Jira issue key (e.g., 'PROJ-123')This tool may perform destructive updates.
jira_update_sprintUpdate jira sprint.
| Parameters | Type | Description |
|---|---|---|
sprint_id | string | The id of sprint (e.g., '10001') |
end_date | stringoptional | (Optional) New end date for the sprint |
goal | stringoptional | (Optional) New goal for the sprint |
name | stringoptional | (Optional) New name for the sprint |
start_date | stringoptional | (Optional) New start date for the sprint |
state | stringoptional | (Optional) New state for the sprint (future |
This tool may perform destructive updates.
jira_update_versionUpdate 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.
| Parameters | Type | Description |
|---|---|---|
version_id | string | Numeric ID of the version to update (e.g. '10001') |
archived | booleanoptional | Set archived flag (true to archive) |
description | stringoptional | New description for the version |
name | stringoptional | New name for the version |
release_date | stringoptional | New release date (YYYY-MM-DD) |
released | booleanoptional | Set released flag (true to mark released) |
start_date | stringoptional | New start date (YYYY-MM-DD) |
This tool may perform destructive updates.
{
"mcpServers": {
"atlassian": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CONFLUENCE_URL",
"-e",
"CONFLUENCE_USERNAME",
"-e",
"JIRA_URL",
"-e",
"JIRA_USERNAME",
"-e",
"CONFLUENCE_API_TOKEN",
"-e",
"CONFLUENCE_PERSONAL_TOKEN",
"-e",
"JIRA_API_TOKEN",
"-e",
"JIRA_PERSONAL_TOKEN",
"mcp/atlassian"
],
"env": {
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "[email protected]",
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "[email protected]",
"CONFLUENCE_API_TOKEN": "your_api_token",
"CONFLUENCE_PERSONAL_TOKEN": "your_api_token",
"JIRA_API_TOKEN": "your_api_token",
"JIRA_PERSONAL_TOKEN": "your_api_token"
}
}
}
}