Attachments, links, watchers & worklogs
These tools cover everything a single Jira issue can carry beyond its core fields: file
attachments, comment editing and pinning, links to other issues or external resources, watchers
and votes, logged work, custom properties, subtasks, create/edit field metadata, and lifecycle
actions like archiving, restoring, and deleting. (Adding a comment and reading the comment list
are covered on the Core issues & search page — this page picks up the rest of
comment handling.) None of these tools require admin access; they all run under your own Jira
Personal Access Token.
Example prompts
- "Attach this screenshot to PROJ-456."
- "Edit my last comment on PROJ-456 to fix a typo."
- "Pin the comment from jsmith on PROJ-456 so it stays at the top."
- "What comments are pinned on PROJ-456?"
- "Link PROJ-456 to the build results at that URL."
- "What external links are attached to PROJ-456?"
- "Add me as a watcher on PROJ-456." / "Who's watching PROJ-456?"
- "Vote for PROJ-456."
- "Log 2 hours of work on PROJ-456 with a note about what I did."
- "What worklogs are on PROJ-456?"
- "Change that worklog entry to 1h 30m instead."
- "Store a custom property on PROJ-456 called
reviewed set to true."
- "What subtasks does PROJ-456 have, and can I reorder them?"
- "What fields are required to create a Bug in PROJ?"
- "Archive PROJ-456." / "Restore PROJ-456 from the archive."
- "Email the reporter and watchers on PROJ-456 to let them know it's fixed."
What's available
Attachments
| Tool |
What it does |
add_issue_attachments |
Add one or more files to an issue; content is sent base64-encoded, up to 10 per call. |
| Tool |
What it does |
get_issue_comment |
Get a single comment on an issue by its comment ID. |
update_issue_comment |
Update the body of an existing comment. |
delete_issue_comment |
Delete a comment from an issue. |
pin_issue_comment |
Pin or unpin a comment on an issue. |
list_issue_pinned_comments |
Get the comments currently pinned on an issue. |
Issue links
| Tool |
What it does |
create_issue_remote_link |
Add a link to an external URL (e.g. a wiki page) to an issue's Links section. |
update_issue_remote_link |
Update an existing remote link's URL, title, or other details. |
get_issue_remote_link |
Get a single remote link on an issue by its ID. |
list_issue_remote_links |
List remote links (links to external resources) on an issue. |
delete_issue_remote_link |
Delete a single remote link from an issue by its ID. |
delete_issue_remote_links_by_global_id |
Delete every remote link on an issue that shares one global ID. |
create_reciprocal_remote_issue_link |
Create matching links between two Jira instances connected by an Application Link. |
get_issue_picker |
Get autocomplete/typeahead suggestions for issues to link to, by search text. |
Watchers & votes
| Tool |
What it does |
get_issue_watchers |
Get the watchers on an issue. |
add_watcher |
Add a user as a watcher on an issue, by username. |
delete_watcher |
Remove a user as a watcher from an issue. |
get_issue_votes |
Get the vote count and voters on an issue. |
add_vote |
Add your vote to an issue (Jira rejects voting for an issue you reported). |
remove_vote |
Remove your vote from an issue. |
Worklogs
| Tool |
What it does |
list_issue_worklogs |
List worklog entries (logged work) on an issue. |
get_issue_worklog |
Get a single worklog entry on an issue by its ID. |
add_worklog |
Log time spent on an issue, e.g. "1h 30m". |
update_worklog |
Update an existing worklog's time spent, comment, or start time. |
delete_worklog |
Delete a worklog entry from an issue. |
get_deleted_worklogs |
List worklog IDs deleted since a given time, across all issues. |
get_updated_worklogs |
List worklog IDs updated since a given time, across all issues. |
get_worklogs_by_ids |
Get full worklog details for a given list of worklog IDs, across any issue. |
Issue properties
| Tool |
What it does |
list_issue_properties |
Get the keys of all properties (custom metadata) stored on an issue. |
get_issue_property |
Get a single property's value on an issue by its key. |
set_issue_property |
Create or replace the value of an issue property (any JSON value). |
delete_issue_property |
Delete a property from an issue. |
Subtasks
| Tool |
What it does |
list_issue_subtasks |
List a parent issue's subtasks. |
can_move_subtask |
Check whether a parent issue's subtasks can currently be reordered. |
move_subtask |
Reorder a parent issue's subtasks by moving one to a new position. |
| Tool |
What it does |
get_create_meta_issue_types |
List the issue types available for creating issues in a project. |
get_create_meta_issue_type_fields |
Get which fields are required (and their allowed values) for a given issue type. |
get_issue_edit_meta |
Get which fields on an issue are editable and how, before calling update_issue. |
Issue lifecycle
| Tool |
What it does |
archive_issue |
Archive a single issue, hiding it from normal search/browsing. |
archive_issues |
Archive up to 100 issues at once. |
restore_issue |
Restore a previously archived issue. |
delete_issue |
Permanently delete an issue. |
bulk_create_issues |
Create up to 100 issues or subtasks in a single request. |
notify_issue |
Send a notification email about an issue to the reporter, assignee, watchers, voters, or specified people. |
Destructive actions
The following tools change or remove data and require you to explicitly confirm before the agent
will call them — it should always ask you first, and it should not proceed unless you clearly say
yes:
| Tool |
What it deletes |
delete_issue |
The entire issue, permanently. This is described as the single most destructive operation this server exposes — it's irreversible, unlike everything else in this table. |
delete_issue_comment |
One comment. |
delete_worklog |
One worklog entry. |
delete_watcher |
One user's watcher subscription. |
remove_vote |
Your own vote. |
delete_issue_property |
One property. |
delete_issue_remote_link |
One remote link, by ID. |
delete_issue_remote_links_by_global_id |
All remote links on an issue that share a given global ID — potentially more than one link at once. |
If your agent ever calls one of these without asking you to confirm first, treat that as a bug —
don't approve it after the fact.
archive_issue and archive_issues are not in the table above: archiving an issue hides it
from normal search and browsing, but it doesn't delete anything, and it's reversible at any time
with restore_issue. No confirmation step is required for archiving or restoring.
notify_issue also isn't gated by a confirmation field, but it sends a real email — the agent
should still check with you before sending one on your behalf.
Things to know
- Attachment content must be sent base64-encoded (a text-safe encoding of binary file data), and
add_issue_attachments accepts up to 10 files per call.
archive_issues and bulk_create_issues both cap out at 100 issues per call.
create_reciprocal_remote_issue_link only works if an Application Link between the two Jira
instances is already configured in Jira administration — there's no tool here to create one.
- For worklog auditing across an entire instance,
get_deleted_worklogs and
get_updated_worklogs only return IDs since a given time; follow up with get_worklogs_by_ids
to get the full content. Deleted worklogs' pre-deletion content isn't retrievable at all.
- Issue properties (
set_issue_property/get_issue_property/list_issue_properties) store
arbitrary JSON data namespaced by key — useful for metadata that doesn't fit a normal Jira
field, but it's free-form, so keep track of what keys you're using.
- Comments, worklog notes, and property values returned by these tools are data written by people
in Jira (or a service desk portal) — the agent treats that text as information, not as
instructions to act on.
See docs/api-catalog.md for the complete technical reference (every field, every parameter). For errors, see Troubleshooting.