Work Items¶
Modern unified API for issues, tasks, incidents, and other typed work items — including notes, emoji reactions, and incident timeline events.
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-onlylist_work_items— 📖 Read-onlycreate_work_item— ✏️ Writesupdate_work_item— ✏️ Writesconvert_work_item_type— ✏️ Writeslist_work_item_statuses— 📖 Read-onlylist_custom_field_definitions— 📖 Read-onlymove_work_item— ✏️ Writeslist_work_item_notes— 📖 Read-onlycreate_work_item_note— ✏️ Writeslist_work_item_emoji_reactions— 📖 Read-onlylist_work_item_note_emoji_reactions— 📖 Read-onlycreate_work_item_emoji_reaction— ✏️ Writesdelete_work_item_emoji_reaction— ✏️ Writescreate_work_item_note_emoji_reaction— ✏️ Writesdelete_work_item_note_emoji_reaction— ✏️ Writesget_timeline_events— 📖 Read-onlycreate_timeline_event— ✏️ Writes
get_work_item¶
📖 Read-only
Get a work item with full details including status, hierarchy, type, and widgets
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID (IID) of the work item |
list_work_items¶
📖 Read-only
List work items with filters (type, state, search, assignees, labels)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
types |
array |
Filter by work item types. If not set, returns all types. | |
state |
enum (opened | closed) |
Filter by state | |
search |
string | Search in title and description | |
assignee_usernames |
array |
Filter by assignee usernames | |
label_names |
array |
Filter by label names | |
first |
number | Number of items to return (max 100). Default 20. | |
after |
string | Cursor 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
title |
string | ✓ | Title of the work item |
type |
any | Type of work item to create. Defaults to 'issue'. | |
description |
string | Description of the work item (Markdown supported) | |
labels |
array |
Array of label names to assign | |
assignee_usernames |
array |
Array of usernames to assign | |
parent_iid |
number | IID of the parent work item to set hierarchy | |
weight |
number | Weight of the work item | |
health_status |
enum (onTrack | needsAttention | atRisk) |
Set health status | |
start_date |
string | Start date in YYYY-MM-DD format | |
due_date |
string | Due date in YYYY-MM-DD format | |
milestone_id |
string | Milestone ID (GitLab global ID format, e.g. 'gid://gitlab/Milestone/123', or numeric ID) | |
iteration_id |
string | Iteration ID (e.g. 'gid://gitlab/Iteration/123' or numeric ID). Use list_group_iterations to find available iterations. | |
confidential |
boolean | Set confidentiality |
update_work_item¶
✏️ Writes
Update a work item (title, description, labels, assignees, state, parent, custom fields, etc.)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID (IID) of the work item |
title |
string | New title | |
description |
string | New description (Markdown supported) | |
add_labels |
array |
Label names to add | |
remove_labels |
array |
Label names to remove | |
assignee_usernames |
array |
Set assignees by username (replaces existing) | |
state_event |
enum (close | reopen) |
Close or reopen the work item | |
weight |
number | Set weight (issues, tasks, epics only) | |
status |
string | Set status by ID. Use list_work_item_statuses to get available status IDs. | |
parent_iid |
number | Set parent work item by IID. Use with parent_project_id if parent is in a different project. | |
parent_project_id |
string | Project ID or path of the parent work item (defaults to same project as the work item) | |
remove_parent |
boolean | Set to true to remove the parent from hierarchy | |
children_to_add |
array | Array of children to add to this work item's hierarchy | |
children_to_remove |
array | Array of children to remove from this work item's hierarchy | |
health_status |
enum (onTrack | needsAttention | atRisk) |
Set health status on issues and epics | |
start_date |
string | Start date in YYYY-MM-DD format | |
due_date |
string | Due date in YYYY-MM-DD format | |
milestone_id |
string | Milestone ID (GitLab global ID format, e.g. 'gid://gitlab/Milestone/123', or numeric ID) | |
iteration_id |
string | Iteration ID (e.g. 'gid://gitlab/Iteration/123' or numeric ID). Use list_group_iterations to find available iterations. | |
confidential |
boolean | Set confidentiality | |
linked_items_to_add |
array | Work items to link | |
linked_items_to_remove |
array | Linked work items to remove | |
custom_fields |
array | Custom field values to set | |
severity |
enum (UNKNOWN | LOW | MEDIUM | HIGH | CRITICAL) |
Incident only: set severity level | |
escalation_status |
enum (TRIGGERED | ACKNOWLEDGED | RESOLVED | IGNORED) |
Incident only: set escalation status |
convert_work_item_type¶
✏️ Writes
Convert a work item to a different type
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
new_type |
any | ✓ | The target work item type to convert to |
list_work_item_statuses¶
📖 Read-only
List available statuses for a work item type (Premium/Ultimate)
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
work_item_type |
any | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
work_item_type |
any | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path of the source namespace |
iid |
number | ✓ | The internal ID of the work item to move |
target_project_id |
string | ✓ | Project 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
page_size |
number | Number of discussions to return (default 20) | |
after |
string | Cursor for pagination | |
sort |
enum (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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
body |
string | ✓ | Note body (Markdown supported) |
internal |
boolean | Create as internal/confidential note (only visible to project members) | |
discussion_id |
string | Discussion 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
note_id |
string | ✓ | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
name |
string | ✓ | Name 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
name |
string | ✓ | Name 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
note_id |
string | ✓ | The GraphQL GID of the note (e.g. 'gid://gitlab/Note/123' from list_work_item_notes) |
name |
string | ✓ | Name 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
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID, URL-encoded project path, or group path (e.g. 'group/subgroup' for group-level work items) |
iid |
number | ✓ | The internal ID of the work item |
note_id |
string | ✓ | The GraphQL GID of the note (e.g. 'gid://gitlab/Note/123' from list_work_item_notes) |
name |
string | ✓ | Name of the emoji without colons (e.g. 'thumbsup', 'rocket', 'eyes') |
get_timeline_events¶
📖 Read-only
List timeline events for an incident
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID or URL-encoded path |
incident_iid |
number | ✓ | The internal ID (IID) of the incident |
create_timeline_event¶
✏️ Writes
Create a timeline event on an incident
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id |
string | ✓ | Project ID or URL-encoded path |
incident_iid |
number | ✓ | The internal ID (IID) of the incident |
note |
string | ✓ | Description of the timeline event (Markdown supported) |
occurred_at |
string | ✓ | When the event occurred in ISO 8601 format (e.g. '2026-03-15T09:00:00.000Z') |
tag_names |
arrayEnd 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'. |