Work Items

July 11, 2026 · View on GitHub

Modern unified API for issues, tasks, incidents, and other typed work items — including notes, emoji reactions, and incident timeline events.

!!! note "Feature toggle" Opt-in. Enable via GITLAB_TOOLSETS=workitems (or GITLAB_TOOLSETS=all), list individual tools in GITLAB_TOOLS=, or activate at runtime with the discover_tools MCP tool.

Tools in this group


get_work_item

📖 Read-only

Get a work item with full details including status, hierarchy, type, and widgets

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID (IID) of the work item

list_work_items

📖 Read-only

List work items with filters (type, state, search, assignees, labels)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
typesarrayFilter by work item types. If not set, returns all types.
stateenum (opened | closed)Filter by state
searchstringSearch in title and description
assignee_usernamesarrayFilter by assignee usernames
label_namesarrayFilter by label names
firstnumberNumber of items to return (max 100). Default 20.
afterstringCursor for pagination (from previous response's endCursor)

create_work_item

✏️ Writes

Create a work item (issue, task, incident, epic, etc.) with full field support

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
titlestringTitle of the work item
typeanyType of work item to create. Defaults to 'issue'.
descriptionstringDescription of the work item (Markdown supported)
labelsarrayArray of label names to assign
assignee_usernamesarrayArray of usernames to assign
parent_iidnumberIID of the parent work item to set hierarchy
weightnumberWeight of the work item
health_statusenum (onTrack | needsAttention | atRisk)Set health status
start_datestringStart date in YYYY-MM-DD format
due_datestringDue date in YYYY-MM-DD format
milestone_idstringMilestone ID (GitLab global ID format, e.g. 'gid://gitlab/Milestone/123', or numeric ID)
iteration_idstringIteration ID (e.g. 'gid://gitlab/Iteration/123' or numeric ID). Use list_group_iterations to find available iterations.
confidentialbooleanSet confidentiality

update_work_item

✏️ Writes

Update a work item (title, description, labels, assignees, state, parent, custom fields, etc.)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID (IID) of the work item
titlestringNew title
descriptionstringNew description (Markdown supported)
add_labelsarrayLabel names to add
remove_labelsarrayLabel names to remove
assignee_usernamesarraySet assignees by username (replaces existing)
state_eventenum (close | reopen)Close or reopen the work item
weightnumberSet weight (issues, tasks, epics only)
statusstringSet status by ID. Use list_work_item_statuses to get available status IDs.
parent_iidnumberSet parent work item by IID. Use with parent_project_id if parent is in a different project.
parent_project_idstringProject ID or path of the parent work item (defaults to same project as the work item)
remove_parentbooleanSet to true to remove the parent from hierarchy
children_to_addarrayArray of children to add to this work item's hierarchy
children_to_removearrayArray of children to remove from this work item's hierarchy
health_statusenum (onTrack | needsAttention | atRisk)Set health status on issues and epics
start_datestringStart date in YYYY-MM-DD format
due_datestringDue date in YYYY-MM-DD format
milestone_idstringMilestone ID (GitLab global ID format, e.g. 'gid://gitlab/Milestone/123', or numeric ID)
iteration_idstringIteration ID (e.g. 'gid://gitlab/Iteration/123' or numeric ID). Use list_group_iterations to find available iterations.
confidentialbooleanSet confidentiality
linked_items_to_addarrayWork items to link
linked_items_to_removearrayLinked work items to remove
custom_fieldsarrayCustom field values to set
severityenum (UNKNOWN | LOW | MEDIUM | HIGH | CRITICAL)Incident only: set severity level
escalation_statusenum (TRIGGERED | ACKNOWLEDGED | RESOLVED | IGNORED)Incident only: set escalation status

convert_work_item_type

✏️ Writes

Convert a work item to a different type

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
new_typeanyThe target work item type to convert to

list_work_item_statuses

📖 Read-only

List available statuses for a work item type (Premium/Ultimate)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
work_item_typeanyThe work item type to list available statuses for. Defaults to 'issue'.

list_custom_field_definitions

📖 Read-only

List custom field definitions for a work item type

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
work_item_typeanyThe work item type to list custom field definitions for. Defaults to 'issue'.

move_work_item

✏️ Writes

Move a work item to a different project

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, or group path of the source namespace
iidnumberThe internal ID of the work item to move
target_project_idstringProject ID, URL-encoded project path, or group path of the target namespace

list_work_item_notes

📖 Read-only

List notes and discussions on a work item

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
page_sizenumberNumber of discussions to return (default 20)
afterstringCursor for pagination
sortenum (CREATED_ASC | CREATED_DESC)Sort order for discussions

create_work_item_note

✏️ Writes

Add a note to a work item (supports Markdown, internal notes, threads)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
bodystringNote body (Markdown supported)
internalbooleanCreate as internal/confidential note (only visible to project members)
discussion_idstringDiscussion ID to reply to (for threaded replies). If omitted, creates a new top-level note.

list_work_item_emoji_reactions

📖 Read-only

List all emoji reactions on a work item

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item

list_work_item_note_emoji_reactions

📖 Read-only

List all emoji reactions on a work item note (comment, thread, or thread reply)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
note_idstringThe GraphQL GID of the note (e.g. 'gid://gitlab/Note/123' from list_work_item_notes)

create_work_item_emoji_reaction

✏️ Writes

Add an emoji reaction to a work item (e.g. thumbsup, rocket, eyes)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
namestringName of the emoji without colons (e.g. 'thumbsup', 'rocket', 'eyes')

delete_work_item_emoji_reaction

✏️ Writes

Remove an emoji reaction from a work item

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
namestringName of the emoji without colons (e.g. 'thumbsup', 'rocket', 'eyes')

create_work_item_note_emoji_reaction

✏️ Writes

Add an emoji reaction to a work item note (comment, thread, or thread reply)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
note_idstringThe GraphQL GID of the note (e.g. 'gid://gitlab/Note/123' from list_work_item_notes)
namestringName of the emoji without colons (e.g. 'thumbsup', 'rocket', 'eyes')

delete_work_item_note_emoji_reaction

✏️ Writes

Remove an emoji reaction from a work item note (comment, thread, or thread reply)

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID, URL-encoded project path, group path, or explicit namespace prefix for ambiguous numeric IDs (e.g. 'group/subgroup', 'group:123', or 'project:123')
iidnumberThe internal ID of the work item
note_idstringThe GraphQL GID of the note (e.g. 'gid://gitlab/Note/123' from list_work_item_notes)
namestringName of the emoji without colons (e.g. 'thumbsup', 'rocket', 'eyes')

get_timeline_events

📖 Read-only

List timeline events for an incident

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID or URL-encoded path
incident_iidnumberThe internal ID (IID) of the incident

create_timeline_event

✏️ Writes

Create a timeline event on an incident

Parameters

ParameterTypeRequiredDescription
project_idstringProject ID or URL-encoded path
incident_iidnumberThe internal ID (IID) of the incident
notestringDescription of the timeline event (Markdown supported)
occurred_atstringWhen the event occurred in ISO 8601 format (e.g. '2026-03-15T09:00:00.000Z')
tag_namesarray<enum (Start time | End time | Impact detected | Response initiated | Impact mitigated | Cause identified)>Timeline event tags to attach. Available: 'Start time', 'End time', 'Impact detected', 'Response initiated', 'Impact mitigated', 'Cause identified'.