Skip to content

Merge requests

The life of a merge request: create, read, list (in a project, a group or everywhere), update, merge, cancel an automatic merge, rebase and delete; approve and unapprove it, read its approval configuration and reset its approvals; its commits, context commits, pipelines (list them or start one), participants, reviewers, related issues and the issues it closes; subscriptions, to-do items, time estimates and spent time; award emoji on it and its notes; and the label, milestone and state events of its history.

Approval rules, approval state, project and group approval settings, and merge request dependencies are served from Premium. Comments, discussions, diffs and draft notes are on Merge request review.

  • “Show the open merge requests of project 42”
  • “Create a merge request from feature-login to main”
  • “Merge merge request !15 once its pipeline passes”
  • “Which merge requests are waiting for my review?”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as merge_request.approval_config, and its parameters in params. gitlab_find_action finds an ID from a description of the task.
  • Meta (GITLAB_MCP_TOOL_SURFACE=meta): call gitlab_merge_request with action set to the action’s name, such as approval_config, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_mr_approval_config, with its parameters as the arguments.

How many of these actions an instance serves at each tier, out of a total of 58:

  • Free: 46
  • Premium: 58
  • Ultimate: 58

Read-only actions: 28 of 58, the ones a deployment in read-only mode keeps.

The description of each action, and of each of its parameters, is the text the server serves for it on the default surface, quoted as served. A destructive action runs only once confirmed, unless GITLAB_MCP_YOLO_MODE (or AUTOPILOT) skips that step: the dynamic surface needs confirm: true on gitlab_execute_action, and the other two take a confirm parameter or the client’s prompt (Destructive actions). A parameter followed by a tier in parentheses is served only from that tier on.

ActionTierIndividual
merge_request.approval_configFreegitlab_mr_approval_config
merge_request.approval_resetFreegitlab_mr_approval_reset
merge_request.approval_rule_createPremiumgitlab_mr_approval_rule_create
merge_request.approval_rule_deletePremiumgitlab_mr_approval_rule_delete
merge_request.approval_rule_updatePremiumgitlab_mr_approval_rule_update
merge_request.approval_rulesPremiumgitlab_mr_approval_rules
merge_request.approval_settings_group_getPremiumgitlab_get_group_mr_approval_settings
merge_request.approval_settings_group_updatePremiumgitlab_update_group_mr_approval_settings
merge_request.approval_settings_project_getPremiumgitlab_get_project_mr_approval_settings
merge_request.approval_settings_project_updatePremiumgitlab_update_project_mr_approval_settings
merge_request.approval_statePremiumgitlab_mr_approval_state
merge_request.approveFreegitlab_mr_approve
merge_request.cancel_auto_mergeFreegitlab_mr_cancel_auto_merge
merge_request.commitsFreegitlab_mr_commits
merge_request.context_commits_createFreegitlab_create_mr_context_commits
merge_request.context_commits_deleteFreegitlab_delete_mr_context_commits
merge_request.context_commits_listFreegitlab_list_mr_context_commits
merge_request.createFreegitlab_mr_create
merge_request.create_pipelineFreegitlab_mr_create_pipeline
merge_request.create_todoFreegitlab_mr_create_todo
merge_request.deleteFreegitlab_mr_delete
merge_request.dependencies_listPremiumgitlab_mr_dependencies_list
merge_request.dependency_createPremiumgitlab_mr_dependency_create
merge_request.dependency_deletePremiumgitlab_mr_dependency_delete
merge_request.emoji_mr_createFreegitlab_mr_emoji_create
merge_request.emoji_mr_deleteFreegitlab_mr_emoji_delete
merge_request.emoji_mr_getFreegitlab_mr_emoji_get
merge_request.emoji_mr_listFreegitlab_mr_emoji_list
merge_request.emoji_mr_note_createFreegitlab_mr_note_emoji_create
merge_request.emoji_mr_note_deleteFreegitlab_mr_note_emoji_delete
merge_request.emoji_mr_note_getFreegitlab_mr_note_emoji_get
merge_request.emoji_mr_note_listFreegitlab_mr_note_emoji_list
merge_request.event_mr_label_getFreegitlab_mr_label_event_get
merge_request.event_mr_label_listFreegitlab_mr_label_event_list
merge_request.event_mr_milestone_getFreegitlab_mr_milestone_event_get
merge_request.event_mr_milestone_listFreegitlab_mr_milestone_event_list
merge_request.event_mr_state_getFreegitlab_mr_state_event_get
merge_request.event_mr_state_listFreegitlab_mr_state_event_list
merge_request.getFreegitlab_mr_get
merge_request.issues_closedFreegitlab_mr_issues_closed
merge_request.listFreegitlab_mr_list
merge_request.list_globalFreegitlab_mr_list_global
merge_request.list_groupFreegitlab_mr_list_group
merge_request.mergeFreegitlab_mr_merge
merge_request.participantsFreegitlab_mr_participants
merge_request.pipelinesFreegitlab_mr_pipelines
merge_request.rebaseFreegitlab_mr_rebase
merge_request.related_issuesFreegitlab_mr_related_issues
merge_request.reviewersFreegitlab_mr_reviewers
merge_request.spent_time_addFreegitlab_mr_add_spent_time
merge_request.spent_time_resetFreegitlab_mr_reset_spent_time
merge_request.subscribeFreegitlab_mr_subscribe
merge_request.time_estimate_resetFreegitlab_mr_reset_time_estimate
merge_request.time_estimate_setFreegitlab_mr_set_time_estimate
merge_request.time_statsFreegitlab_mr_time_stats
merge_request.unapproveFreegitlab_mr_unapprove
merge_request.unsubscribeFreegitlab_mr_unsubscribe
merge_request.updateFreegitlab_mr_update

Get the approvals of a merge request. Returns: whether it is approved, the approved-by users with timestamps, and whether the calling user has approved and may approve, and on an Enterprise Edition instance also the approvals required and left, the rules left to satisfy and the suggested approvers, which Community Edition does not send. For each rule’s status, use the approval state. See also: merge_request.approval_state, merge_request.approval_rules, merge_request.approve.

  • Meta-tool: gitlab_merge_request, action approval_config
  • Individual tool: gitlab_mr_approval_config
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path

Reset all approvals on a merge request. Returns: a success confirmation. See also: merge_request.approval_state, merge_request.approval_config, merge_request.unapprove.

  • Meta-tool: gitlab_merge_request, action approval_reset
  • Individual tool: gitlab_mr_approval_reset
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path

Create an approval rule on a merge request. Returns: the created rule with its type, required count, eligible approvers, users, and groups. See also: merge_request.approval_rules, merge_request.approval_rule_update, merge_request.approval_rule_delete.

  • Meta-tool: gitlab_merge_request, action approval_rule_create
  • Individual tool: gitlab_mr_approval_rule_create
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
approvals_requiredintegeryesNumber of approvals required
merge_request_iidintegeryesMerge request internal ID
namestringyesRule name
project_idstring/integeryesProject ID or URL-encoded path
approval_project_rule_idintegernoProject-level approval rule ID to inherit from
group_idsinteger[]noGroup IDs eligible to approve
user_idsinteger[]noUser IDs eligible to approve

Delete an approval rule from a merge request. Returns: a success confirmation. See also: merge_request.approval_rules, merge_request.approval_rule_update, merge_request.approval_rule_create.

  • Meta-tool: gitlab_merge_request, action approval_rule_delete
  • Individual tool: gitlab_mr_approval_rule_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
approval_rule_idintegeryesApproval rule ID
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path

Update an approval rule on a merge request. Returns: the updated rule with its type, required count, eligible approvers, users, and groups. See also: merge_request.approval_rules, merge_request.approval_rule_create, merge_request.approval_rule_delete.

  • Meta-tool: gitlab_merge_request, action approval_rule_update
  • Individual tool: gitlab_mr_approval_rule_update
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
approval_rule_idintegeryesApproval rule ID
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path
approvals_requiredintegernoNumber of approvals required
group_idsinteger[]noGroup IDs eligible to approve
namestringnoRule name
user_idsinteger[]noUser IDs eligible to approve

List the approval rules of a merge request. Returns: each rule with its type, required count, approved flag, eligible approvers, users, groups, and source rule, with pagination metadata. See also: merge_request.approval_rule_create, merge_request.approval_rule_update, merge_request.approval_state.

  • Meta-tool: gitlab_merge_request, action approval_rules
  • Individual tool: gitlab_mr_approval_rules
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

Read the merge request approval settings of a group. Returns: each setting (allow author approval, allow committer approval, allow approver-list overrides, retain approvals on push, selective code owner removals, require password to approve, require reauthentication to approve) with its value, locked flag, and inherited-from source. See also: merge_request.approval_settings_group_update, merge_request.approval_settings_project_get.

  • Meta-tool: gitlab_merge_request, action approval_settings_group_get
  • Individual tool: gitlab_get_group_mr_approval_settings
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

merge_request.approval_settings_group_update

Section titled “merge_request.approval_settings_group_update”

Update the merge request approval settings of a group. Returns: the resulting settings (value, locked flag, and inherited-from source for each setting). See also: merge_request.approval_settings_group_get, merge_request.approval_settings_project_update.

  • Meta-tool: gitlab_merge_request, action approval_settings_group_update
  • Individual tool: gitlab_update_group_mr_approval_settings
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
allow_author_approvalbooleannoAllow merge request authors to approve their own MRs
allow_committer_approvalbooleannoAllow committers to approve MRs they contributed to
allow_overrides_to_approver_list_per_merge_requestbooleannoAllow overriding the approver list per merge request
require_reauthentication_to_approvebooleannoRequire password re-entry to approve
retain_approvals_on_pushbooleannoRetain approvals when new commits are pushed

merge_request.approval_settings_project_get

Section titled “merge_request.approval_settings_project_get”

Read the merge request approval settings of a project. Returns: each setting (allow author approval, allow committer approval, allow approver-list overrides, retain approvals on push, selective code owner removals, require password to approve, require reauthentication to approve) with its value, locked flag, and inherited-from source. See also: merge_request.approval_settings_project_update, merge_request.approval_settings_group_get.

  • Meta-tool: gitlab_merge_request, action approval_settings_project_get
  • Individual tool: gitlab_get_project_mr_approval_settings
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path

merge_request.approval_settings_project_update

Section titled “merge_request.approval_settings_project_update”

Update the merge request approval settings of a project. Returns: the resulting settings (value, locked flag, and inherited-from source for each setting). See also: merge_request.approval_settings_project_get, merge_request.approval_settings_group_update.

  • Meta-tool: gitlab_merge_request, action approval_settings_project_update
  • Individual tool: gitlab_update_project_mr_approval_settings
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
allow_author_approvalbooleannoAllow merge request authors to approve their own MRs
allow_committer_approvalbooleannoAllow committers to approve MRs they contributed to
allow_overrides_to_approver_list_per_merge_requestbooleannoAllow overriding the approver list per merge request
require_reauthentication_to_approvebooleannoRequire password re-entry to approve
retain_approvals_on_pushbooleannoRetain approvals when new commits are pushed
selective_code_owner_removalsbooleannoOnly remove Code Owner approvals for changed files (project-only)

Get the approval state of a merge request. Returns: whether project rules were overwritten and each applicable rule with its type, required count, approved flag, and approvers. See also: merge_request.approval_rules, merge_request.approval_config, merge_request.approve.

  • Meta-tool: gitlab_merge_request, action approval_state
  • Individual tool: gitlab_mr_approval_state
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path

Approve a merge request on behalf of the caller. Returns: the approval state with the approved-by count, overall approved flag, the approvers with when each approved, and whether the caller has approved and may approve, and on an Enterprise Edition instance also the approvals required and left and the rules left to satisfy. See also: merge_request.unapprove, merge_request.merge, merge_request.get.

  • Meta-tool: gitlab_merge_request, action approve
  • Individual tool: gitlab_mr_approve
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
shastringnoHead SHA of the merge request. Approve only if HEAD matches (safety check, applies to approve only)

Cancel auto-merge (merge-when-pipeline-succeeds) on a merge request. Returns: the MR with auto-merge disabled. See also: merge_request.merge, merge_request.get.

  • Meta-tool: gitlab_merge_request, action cancel_auto_merge
  • Individual tool: gitlab_mr_cancel_auto_merge
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

List the commits that make up a merge request. Returns: commit SHAs, titles, authors, and timestamps with pagination metadata. See also: merge_request.get, repository.commit_get.

  • Meta-tool: gitlab_merge_request, action commits
  • Individual tool: gitlab_mr_commits
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order results by (e.g. created_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

Attach existing repository commit SHAs to a merge request as context commits. Returns: each pinned commit’s full and short SHA, title and message, author and committer with their dates, parents, trailers and web URL. See also: merge_request.context_commits_list, merge_request.context_commits_delete, repository.commit_get.

  • Meta-tool: gitlab_merge_request, action context_commits_create
  • Individual tool: gitlab_create_mr_context_commits
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
commitsstring[]yesList of commit SHAs to add as context
merge_request_iidintegeryesMerge request IID
project_idstring/integeryesProject ID or URL-encoded path

Remove context commits from a merge request by SHA, detaching them from the review. Returns: a success confirmation. The underlying repository commits are left intact. See also: merge_request.context_commits_list, merge_request.context_commits_create, merge_request.get.

  • Meta-tool: gitlab_merge_request, action context_commits_delete
  • Individual tool: gitlab_delete_mr_context_commits
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
commitsstring[]yesList of commit SHAs to remove from context
merge_request_iidintegeryesMerge request IID
project_idstring/integeryesProject ID or URL-encoded path

List the context commits pinned to a merge request for review. Returns: each commit’s full and short SHA, title and message, the title and description rendered to HTML, author and committer with their dates, the GitLab account the author email belongs to and the author’s Gravatar image, trailers and web URL, with pagination metadata. See also: merge_request.get, merge_request.context_commits_create, merge_request.context_commits_delete.

  • Meta-tool: gitlab_merge_request, action context_commits_list
  • Individual tool: gitlab_list_mr_context_commits
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID
project_idstring/integeryesProject ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

Open a new merge request from a source branch into a target branch. Returns: the created MR with IID, state, source/target branches, merge status, assignees, reviewers, labels, and web URL. See also: merge_request.get, merge_request.list, merge_request.merge.

  • Meta-tool: gitlab_merge_request, action create
  • Individual tool: gitlab_mr_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
source_branchstringyesSource branch name
target_branchstringyesTarget branch name. If not specified by the user use the project default branch from project.get (do NOT assume main)
titlestringyesMerge request title
allow_collaborationbooleannoAllow commits from upstream members who can merge to target branch
approvals_before_merge (Premium)integernoNumber of approvals required before this MR can be merged (deprecated. Use the approval rules API)
assignee_idintegernoSingle user ID to assign (use assignee_ids for multiple)
assignee_idsinteger[]noUser IDs to assign
descriptionstringnoMerge request description (Markdown supported)
labelsstring[]noLabel names to apply
milestone_idintegernoMilestone ID to associate with the merge request
remove_source_branchbooleannoDelete source branch after merge. Only set if explicitly requested by the user. Omit to preserve repository defaults
reviewer_idsinteger[]noUser IDs to add as reviewers
squashbooleannoSquash commits on merge. Only set if explicitly requested by the user. Omit to preserve repository defaults
target_project_idintegernoTarget project ID (for cross-project/fork MRs)

Trigger a new CI/CD pipeline for a merge request. Returns: the created pipeline with id, status, ref, sha, and web URL. See also: merge_request.pipelines, pipeline.get.

  • Meta-tool: gitlab_merge_request, action create_pipeline
  • Individual tool: gitlab_mr_create_pipeline
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path

Create a to-do for a merge request for the caller. Returns: the created to-do item with action, target title and URL, project name, author, body, state and created and updated times. See also: merge_request.get, merge_request.subscribe.

  • Meta-tool: gitlab_merge_request, action create_todo
  • Individual tool: gitlab_mr_create_todo
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path

Delete a merge request permanently. Returns: a success confirmation naming the MR and project. See also: merge_request.update, merge_request.get.

  • Meta-tool: gitlab_merge_request, action delete
  • Individual tool: gitlab_mr_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID to delete (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path

List a merge request’s blocking dependencies. Returns: the dependency links with blocking MR references and their states, with pagination metadata. See also: merge_request.dependency_create, merge_request.dependency_delete.

  • Meta-tool: gitlab_merge_request, action dependencies_list
  • Individual tool: gitlab_mr_dependencies_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

Add a blocking dependency to a merge request. Returns: the created dependency linking the MR to its blocking MR. See also: merge_request.dependency_delete, merge_request.dependencies_list.

  • Meta-tool: gitlab_merge_request, action dependency_create
  • Individual tool: gitlab_mr_dependency_create
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
blocking_merge_request_idintegernoID of the merge request that blocks this one

Remove a blocking dependency from a merge request. Returns: a success confirmation naming the dependency, the MR, and the project. See also: merge_request.dependency_create, merge_request.dependencies_list.

  • Meta-tool: gitlab_merge_request, action dependency_delete
  • Individual tool: gitlab_mr_dependency_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
blocking_merge_request_idintegernoID of the dependency to remove: the id of a dependencies_list entry, not the blocking merge request’s own id

Add an emoji reaction to a merge request. Returns: the created award with its emoji name, awarding user object, timestamps, and awardable id/type. See also: merge_request.emoji_mr_list, merge_request.emoji_mr_delete.

  • Meta-tool: gitlab_merge_request, action emoji_mr_create
  • Individual tool: gitlab_mr_emoji_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
namestringyesEmoji name without colons (e.g. thumbsup)
project_idstring/integeryesProject ID or URL-encoded path

Remove an emoji reaction from a merge request by award id. Returns: a success confirmation naming the award emoji. See also: merge_request.emoji_mr_list, merge_request.emoji_mr_get.

  • Meta-tool: gitlab_merge_request, action emoji_mr_delete
  • Individual tool: gitlab_mr_emoji_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
award_idintegeryesAward emoji ID
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path

Get a single emoji reaction on a merge request by award id. Returns: the award with its emoji name, awarding user object, timestamps, and awardable id/type. See also: merge_request.emoji_mr_list, merge_request.emoji_mr_delete.

  • Meta-tool: gitlab_merge_request, action emoji_mr_get
  • Individual tool: gitlab_mr_emoji_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
award_idintegeryesAward emoji ID
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path

List all emoji reactions on a merge request. Returns: each award with its emoji name, the awarding user object, awardable id/type, and pagination metadata. See also: merge_request.emoji_mr_get, merge_request.emoji_mr_create, merge_request.get.

  • Meta-tool: gitlab_merge_request, action emoji_mr_list
  • Individual tool: gitlab_mr_emoji_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order results by (e.g. created_at, updated_at, id). Used with keyset pagination.
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order: ‘asc’ or ‘desc’.

Add an emoji reaction to a merge request note. Returns: the created award with its emoji name, awarding user object, timestamps, and awardable id/type. See also: merge_request.emoji_mr_note_list, merge_request.emoji_mr_note_delete.

  • Meta-tool: gitlab_merge_request, action emoji_mr_note_create
  • Individual tool: gitlab_mr_note_emoji_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
namestringyesEmoji name without colons (e.g. thumbsup)
note_idintegeryesNote ID
project_idstring/integeryesProject ID or URL-encoded path

Remove an emoji reaction from a merge request note by award id. Returns: a success confirmation naming the award emoji. See also: merge_request.emoji_mr_note_list, merge_request.emoji_mr_note_get.

  • Meta-tool: gitlab_merge_request, action emoji_mr_note_delete
  • Individual tool: gitlab_mr_note_emoji_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
award_idintegeryesAward emoji ID
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
note_idintegeryesNote ID
project_idstring/integeryesProject ID or URL-encoded path

Get a single emoji reaction on a merge request note by award id. Returns: the award with its emoji name, awarding user object, timestamps, and awardable id/type. See also: merge_request.emoji_mr_note_list, merge_request.emoji_mr_note_delete.

  • Meta-tool: gitlab_merge_request, action emoji_mr_note_get
  • Individual tool: gitlab_mr_note_emoji_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
award_idintegeryesAward emoji ID
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
note_idintegeryesNote ID
project_idstring/integeryesProject ID or URL-encoded path

List all emoji reactions on a merge request note (comment). Returns: each award with its emoji name, the awarding user object, awardable id/type, and pagination metadata. See also: merge_request.emoji_mr_note_get, merge_request.emoji_mr_note_create, mr_review.note_get.

  • Meta-tool: gitlab_merge_request, action emoji_mr_note_list
  • Individual tool: gitlab_mr_note_emoji_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
note_idintegeryesNote ID
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order results by (e.g. created_at, updated_at, id). Used with keyset pagination.
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order: ‘asc’ or ‘desc’.

Get a single label event for a merge request. Returns: the event with action, the label object, and the acting user. See also: merge_request.event_mr_label_list.

  • Meta-tool: gitlab_merge_request, action event_mr_label_get
  • Individual tool: gitlab_mr_label_event_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
label_event_idintegeryesLabel event ID
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path

List label events for a merge request. Returns: label events with action, the label object, the acting user, and pagination metadata. See also: merge_request.event_mr_label_get, merge_request.get.

  • Meta-tool: gitlab_merge_request, action event_mr_label_list
  • Individual tool: gitlab_mr_label_event_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction for keyset pagination: asc or desc

Get a single milestone event for a merge request. Returns: the event with action, the milestone object, and the acting user. See also: merge_request.event_mr_milestone_list.

  • Meta-tool: gitlab_merge_request, action event_mr_milestone_get
  • Individual tool: gitlab_mr_milestone_event_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
milestone_event_idintegeryesMilestone event ID
project_idstring/integeryesProject ID or URL-encoded path

List milestone events for a merge request. Returns: milestone events with action, the milestone object, the acting user, and pagination metadata. See also: merge_request.event_mr_milestone_get, merge_request.get.

  • Meta-tool: gitlab_merge_request, action event_mr_milestone_list
  • Individual tool: gitlab_mr_milestone_event_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction for keyset pagination: asc or desc

Get a single state event for a merge request. Returns: the event with the state value and the acting user. See also: merge_request.event_mr_state_list.

  • Meta-tool: gitlab_merge_request, action event_mr_state_get
  • Individual tool: gitlab_mr_state_event_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path
state_event_idintegeryesState event ID

List state events for a merge request. Returns: state events with the state value, the acting user, and pagination metadata. See also: merge_request.event_mr_state_get, merge_request.get.

  • Meta-tool: gitlab_merge_request, action event_mr_state_list
  • Individual tool: gitlab_mr_state_event_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request internal ID
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order keyset-paginated results by (e.g. id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction for keyset pagination: asc or desc

Get a single merge request from a project by its IID. Returns: MR metadata, state, source/target branches, merge status, assignees, reviewers, labels, milestone, and web URL. See also: merge_request.list, merge_request.update, merge_request.merge, merge_request.commits.

  • Meta-tool: gitlab_merge_request, action get
  • Individual tool: gitlab_mr_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

List issues that will be closed when the merge request is merged. Returns: issues with state, labels, assignees, and web URL plus pagination metadata. See also: merge_request.related_issues, issue.get.

  • Meta-tool: gitlab_merge_request, action issues_closed
  • Individual tool: gitlab_mr_issues_closed
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order results by (e.g. created_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

List merge requests in one project with filtering and pagination. Returns: matching MRs with state, branches, merge status, assignees, reviewers, labels, and pagination metadata. See also: merge_request.get, merge_request.create, merge_request.list_group.

  • Meta-tool: gitlab_merge_request, action list
  • Individual tool: gitlab_mr_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
project_idstring/integeryesProject ID or URL-encoded path
approved_by_idsinteger/string[]noFilter by MRs approved by all listed user IDs. Accepts user IDs, or exactly one of “Any” (approved by someone) or “None” (unapproved)
approved_by_usernamesstring[]noFilter by MRs approved by all listed usernames
approver_idsinteger/string[]noFilter by MRs with all listed users as eligible approvers. Accepts user IDs, or exactly one of “Any” (has approvers) or “None” (has none)
assignee_idintegernoFilter by assignee user ID
author_idintegernoFilter by author user ID
author_usernamestringnoFilter by author username
created_afterstringnoReturn MRs created after date (ISO 8601 format, e.g. 2025-01-01T00:00:00Z)
created_beforestringnoReturn MRs created before date (ISO 8601 format, e.g. 2025-12-31T23:59:59Z)
deployed_afterstringnoReturn MRs deployed after date (ISO 8601 format)
deployed_beforestringnoReturn MRs deployed before date (ISO 8601 format)
draftbooleannoFilter by draft status (true=only drafts, false=only non-drafts)
environmentstringnoFilter by deployment environment name
iidsinteger[]noFilter by merge request internal IDs
labelsstring[]noLabel names to filter by
milestonestringnoMilestone title to filter by
my_reaction_emojistringnoFilter by MRs the caller reacted to with this emoji (e.g. thumbsup)
non_archivedbooleannoReturn merge requests from non-archived projects only. Default is true
not_author_usernamestringnoExclude MRs authored by this username
not_labelsstring[]noLabel names to exclude
order_bystring (created_at, updated_at, title)noOrder by field (created_at, updated_at, title)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
reviewer_idintegernoFilter by reviewer user ID
reviewer_usernamestringnoFilter by reviewer username
scopestring (created_by_me, assigned_to_me, reviews_for_me, all)noFilter by scope (created_by_me, assigned_to_me, reviews_for_me, all)
searchstringnoSearch in title and description
sortstring (asc, desc)noSort direction (asc, desc)
source_branchstringnoFilter by source branch name
statestring (opened, closed, locked, merged, all)noFilter by state (opened, closed, merged, all)
target_branchstringnoFilter by target branch name
updated_afterstringnoReturn MRs updated after date (ISO 8601 format, e.g. 2025-01-01T00:00:00Z)
updated_beforestringnoReturn MRs updated before date (ISO 8601 format, e.g. 2025-12-31T23:59:59Z)
viewstring (simple)noSet to ‘simple’ to return only basic MR fields
wipstring (yes, no)noFilter by draft/WIP status: ‘yes’ for draft MRs, ‘no’ for non-draft
with_labels_detailsbooleannoInclude full label details (color, description) in the response
with_merge_status_recheckbooleannoAsynchronously recalculate each MR’s merge_status before returning

List merge requests across projects: only the ones the caller created when scope is omitted, since GitLab defaults to scope=created_by_me, and every merge request the caller can see with scope=all. Returns: the matching MRs with project context, state, branches, and pagination metadata. See also: merge_request.list, merge_request.list_group, search.merge_requests.

  • Meta-tool: gitlab_merge_request, action list_global
  • Individual tool: gitlab_mr_list_global
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
approved_by_idsinteger/string[]noFilter by MRs approved by all listed user IDs. Accepts user IDs, or exactly one of “Any” (approved by someone) or “None” (unapproved)
approved_by_usernamesstring[]noFilter by MRs approved by all listed usernames
approver_idsinteger/string[]noFilter by MRs with all listed users as eligible approvers. Accepts user IDs, or exactly one of “Any” (has approvers) or “None” (has none)
assignee_idintegernoFilter by assignee user ID
author_idintegernoFilter by author user ID
author_usernamestringnoFilter by author username
created_afterstringnoReturn MRs created after date (ISO 8601)
created_beforestringnoReturn MRs created before date (ISO 8601)
draftbooleannoFilter by draft status (true=only drafts, false=only non-drafts)
instringnoScope of the search filter (e.g. title, description, or title,description)
labelsstring[]noLabel names to filter by
milestonestringnoMilestone title to filter by
my_reaction_emojistringnoFilter by MRs the caller reacted to with this emoji (e.g. thumbsup)
non_archivedbooleannoReturn merge requests from non-archived projects only. Default is true
not_author_usernamestringnoExclude MRs authored by this username
not_labelsstring[]noLabel names to exclude
order_bystring (created_at, updated_at)noOrder by field (created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
reviewer_idintegernoFilter by reviewer user ID
reviewer_usernamestringnoFilter by reviewer username
scopestring (created_by_me, assigned_to_me, reviews_for_me, all)noWhich merge requests to return: created_by_me (the caller’s own, and GitLab’s default when scope is omitted), assigned_to_me, reviews_for_me, or all (every merge request the caller can see)
searchstringnoSearch in title and description
sortstring (asc, desc)noSort direction (asc, desc)
source_branchstringnoFilter by source branch name
statestring (opened, closed, locked, merged, all)noFilter by state (opened, closed, merged, all)
target_branchstringnoFilter by target branch name
updated_afterstringnoReturn MRs updated after date (ISO 8601)
updated_beforestringnoReturn MRs updated before date (ISO 8601)
viewstring (simple)noSet to ‘simple’ to return only basic MR fields
wipstring (yes, no)noFilter by draft/WIP status: ‘yes’ for draft MRs, ‘no’ for non-draft
with_labels_detailsbooleannoInclude full label details (color, description) in the response
with_merge_status_recheckbooleannoAsynchronously recalculate each MR’s merge_status before returning

List merge requests across a group and its projects. Returns: visible MRs with project context, state, branches, and pagination metadata. See also: merge_request.list, merge_request.list_global, group.get.

  • Meta-tool: gitlab_merge_request, action list_group
  • Individual tool: gitlab_mr_list_group
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
approved_by_idsinteger/string[]noFilter by MRs approved by all listed user IDs. Accepts user IDs, or exactly one of “Any” (approved by someone) or “None” (unapproved)
approved_by_usernamesstring[]noFilter by MRs approved by all listed usernames
approver_idsinteger/string[]noFilter by MRs with all listed users as eligible approvers. Accepts user IDs, or exactly one of “Any” (has approvers) or “None” (has none)
assignee_idintegernoFilter by assignee user ID
author_idintegernoFilter by author user ID
author_usernamestringnoFilter by author username
created_afterstringnoReturn MRs created after date (ISO 8601)
created_beforestringnoReturn MRs created before date (ISO 8601)
draftbooleannoFilter by draft status (true=only drafts, false=only non-drafts)
instringnoScope of the search filter (e.g. title, description, or title,description)
labelsstring[]noLabel names to filter by
milestonestringnoMilestone title to filter by
my_reaction_emojistringnoFilter by MRs the caller reacted to with this emoji (e.g. thumbsup)
non_archivedbooleannoReturn merge requests from non-archived projects only. Default is true
not_author_usernamestringnoExclude MRs authored by this username
not_labelsstring[]noLabel names to exclude
order_bystring (created_at, updated_at)noOrder by field (created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
reviewer_idintegernoFilter by reviewer user ID
reviewer_usernamestringnoFilter by reviewer username
scopestring (created_by_me, assigned_to_me, reviews_for_me, all)noFilter by scope (created_by_me, assigned_to_me, reviews_for_me, all)
searchstringnoSearch in title and description
sortstring (asc, desc)noSort direction (asc, desc)
source_branchstringnoFilter by source branch name
statestring (opened, closed, locked, merged, all)noFilter by state (opened, closed, merged, all)
target_branchstringnoFilter by target branch name
updated_afterstringnoReturn MRs updated after date (ISO 8601)
updated_beforestringnoReturn MRs updated before date (ISO 8601)
viewstring (simple)noSet to ‘simple’ to return only basic MR fields
wipstring (yes, no)noFilter by draft/WIP status: ‘yes’ for draft MRs, ‘no’ for non-draft
with_labels_detailsbooleannoInclude full label details (color, description) in the response
with_merge_status_recheckbooleannoAsynchronously recalculate each MR’s merge_status before returning

Merge a merge request now, or schedule auto-merge when its pipeline succeeds. Returns: the merged MR with merge_commit_sha and updated state. See also: merge_request.get, merge_request.pipelines, merge_request.cancel_auto_merge.

  • Meta-tool: gitlab_merge_request, action merge
  • Individual tool: gitlab_mr_merge
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
auto_mergebooleannoSet true only when the user asks to merge when the pipeline succeeds or enable auto-merge.
merge_commit_messagestringnoCustom merge commit message
merge_when_pipeline_succeedsbooleannoDeprecated alias for auto_merge: merge when the pipeline succeeds. Prefer auto_merge
shastringnoHead SHA of the merge request. Merge only if HEAD matches (safety check)
should_remove_source_branchbooleannoDelete source branch after merge. Only set if explicitly requested by the user. Omit to preserve repository defaults
squashbooleannoSquash commits on merge. Only set if explicitly requested by the user. Omit to preserve repository defaults
squash_commit_messagestringnoCustom squash commit message (used when squash is enabled)

List the participants of a merge request. Returns: participating users with username, name, state, locked flag and public email, with pagination metadata. See also: merge_request.reviewers, merge_request.get.

  • Meta-tool: gitlab_merge_request, action participants
  • Individual tool: gitlab_mr_participants
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

List the CI/CD pipelines attached to a merge request. Returns: pipelines with id, status, ref, sha, and web URL, with pagination metadata. See also: merge_request.create_pipeline, merge_request.merge, pipeline.get.

  • Meta-tool: gitlab_merge_request, action pipelines
  • Individual tool: gitlab_mr_pipelines
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

Rebase a merge request’s source branch onto its target. Returns: whether a rebase is now in progress (poll merge_request.get to track completion). See also: merge_request.get, merge_request.merge.

  • Meta-tool: gitlab_merge_request, action rebase
  • Individual tool: gitlab_mr_rebase
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID to rebase (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
skip_cibooleannoSkip triggering CI pipeline after rebase

List issues related to a merge request. Returns: issues with state, labels, assignees, and web URL plus pagination metadata. See also: merge_request.issues_closed, issue.get.

  • Meta-tool: gitlab_merge_request, action related_issues
  • Individual tool: gitlab_mr_related_issues
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
order_bystringnoColumn to order results by (e.g. created_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

List the reviewers of a merge request. Returns: reviewer users with username, name, state, locked flag, public email, review state and assignment time, with pagination metadata. See also: merge_request.participants, merge_request.update.

  • Meta-tool: gitlab_merge_request, action reviewers
  • Individual tool: gitlab_mr_reviewers
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

Add spent time to a merge request. Returns: the updated time tracking stats (estimate and spent time, seconds and human-readable). See also: merge_request.spent_time_reset, merge_request.time_estimate_set, merge_request.time_stats.

  • Meta-tool: gitlab_merge_request, action spent_time_add
  • Individual tool: gitlab_mr_add_spent_time
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
durationstringyesHuman-readable duration (e.g. 1h, 30m, 1w2d)
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
summarystringnoOptional summary of work done

Reset a merge request’s spent time. Returns: the updated time tracking stats. See also: merge_request.spent_time_add, merge_request.time_stats.

  • Meta-tool: gitlab_merge_request, action spent_time_reset
  • Individual tool: gitlab_mr_reset_spent_time
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

Subscribe the caller to a merge request’s notifications. Returns: the MR with the updated subscription state. See also: merge_request.unsubscribe, merge_request.get.

  • Meta-tool: gitlab_merge_request, action subscribe
  • Individual tool: gitlab_mr_subscribe
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

Clear a merge request’s time estimate. Returns: the updated time tracking stats. See also: merge_request.time_estimate_set, merge_request.time_stats.

  • Meta-tool: gitlab_merge_request, action time_estimate_reset
  • Individual tool: gitlab_mr_reset_time_estimate
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

Set a merge request’s time estimate. Returns: the updated time tracking stats (estimate and spent time, seconds and human-readable). See also: merge_request.time_estimate_reset, merge_request.spent_time_add, merge_request.time_stats.

  • Meta-tool: gitlab_merge_request, action time_estimate_set
  • Individual tool: gitlab_mr_set_time_estimate
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
durationstringyesHuman-readable duration (e.g. 3h30m, 1w2d)
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path

Read a merge request’s time tracking totals. Returns: estimate and spent time in seconds and human-readable form. See also: merge_request.time_estimate_set, merge_request.spent_time_add.

  • Meta-tool: gitlab_merge_request, action time_stats
  • Individual tool: gitlab_mr_time_stats
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

Remove the caller’s approval from a merge request. Returns: the approval state left after the withdrawal, in the shape the approve answers with: the approved-by count and users, the overall approved flag, whether the caller has approved and may approve, and on an Enterprise Edition instance the approvals required and left. See also: merge_request.approve, merge_request.get.

  • Meta-tool: gitlab_merge_request, action unapprove
  • Individual tool: gitlab_mr_unapprove
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
shastringnoHead SHA of the merge request. Approve only if HEAD matches (safety check, applies to approve only)

Unsubscribe the caller from a merge request’s notifications. Returns: the MR with the updated subscription state. See also: merge_request.subscribe, merge_request.get.

  • Meta-tool: gitlab_merge_request, action unsubscribe
  • Individual tool: gitlab_mr_unsubscribe
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
include_diverged_commits_countbooleannoInclude the count of commits the source branch is behind the target branch (diverged_commits_count)
include_rebase_in_progressbooleannoInclude whether a rebase is currently in progress (rebase_in_progress)
render_htmlbooleannoReturn the title and description rendered to HTML

Update an existing merge request’s fields or state. Returns: the updated MR with its new field values, state, labels, assignees, and reviewers. See also: merge_request.get, merge_request.merge, merge_request.approve.

  • Meta-tool: gitlab_merge_request, action update
  • Individual tool: gitlab_mr_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
merge_request_iidintegeryesMerge request IID (project-scoped, not ‘merge_request_id’)
project_idstring/integeryesProject ID or URL-encoded path
add_labelsstring[]noLabel names to add without removing existing
allow_collaborationbooleannoAllow commits from upstream members who can merge to target branch
assignee_idintegernoSingle user ID to assign (use assignee_ids for multiple)
assignee_idsinteger[]noUser IDs to assign as merge request assignees
descriptionstringnoNew description
discussion_lockedbooleannoLock discussions on the merge request
labelsstring[]noLabel names to replace all labels on the merge request
milestone_idintegernoMilestone ID (0 to unset)
remove_labelsstring[]noLabel names to remove
remove_source_branchbooleannoDelete source branch after merge. Only set if explicitly requested
reviewer_idsinteger[]noUser IDs to add as reviewers
squashbooleannoSquash commits on merge. Only set if explicitly requested
state_eventstring (close, reopen)noState transition (close, reopen)
target_branchstringnoNew target branch
titlestringnoNew title