Skip to content

GitLab MCP Tools Reference

Auto-generated from source code. Do not edit manually. Generated: 2026-01-28 | Tools: 44 | Version: 6.50.0

Table of Contents


Projects & Repository

browse_projects [tier: Free]

Find, list, or inspect GitLab projects. Actions: search (find by name/topic across GitLab), list (browse accessible projects or group projects), get (retrieve full project details). Related: manage_project to create/update/delete projects.

Actions

ActionTierDescription
searchFreeFind projects by criteria using global search API
listFreeBrowse accessible projects with optional group scope
getFreeRetrieve specific project details

Parameters

Action get:

ParameterTypeRequiredDescription
project_idstringYesProject identifier. Numeric ID or URL-encoded path (e.g., "42" or "gitlab-org%2Fgitlab").
licensebooleanNoInclude license information.
statisticsbooleanNoInclude repository statistics.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
simplebooleanYesReturn minimal fields for faster response. Default: true.
archivedbooleanNoFilter by archive status. true=archived only, false=active only.
group_idstringNoGroup ID to list projects within. If omitted, lists YOUR accessible projects.
include_subgroupsbooleanNoInclude projects from subgroups (requires group_id).
membershipbooleanNoShow only projects where you have membership.
order_bystringNoSort field for results.
ownedbooleanNoShow only projects you own (not just member of).
pageintegerNoPage number
searchstringNoText filter for list action (filters results by name/description).
sortstringNoSort direction: asc or desc.
starredbooleanNoShow only starred/favorited projects.
visibilitystringNoFilter by visibility: public, internal, or private.
with_programming_languagestringNoFilter by programming language (e.g., "javascript", "python").
with_sharedbooleanNoInclude shared projects (requires group_id).

Action search:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
archivedbooleanNoFilter by archive status. true=archived only, false=active only.
order_bystringNoSort field for results.
pageintegerNoPage number
qstringNoGlobal search query. Searches project names, paths, descriptions.
sortstringNoSort direction: asc or desc.
visibilitystringNoFilter by visibility: public, internal, or private.
with_programming_languagestringNoFilter by programming language (e.g., "javascript", "python").

Example

json
{
  "action": "search",
  "per_page": 10
}

browse_namespaces [tier: Free]

Explore GitLab groups and user namespaces. Actions: list (discover available namespaces), get (retrieve details with storage stats), verify (check if path exists). Related: manage_namespace to create/update/delete groups.

Actions

ActionTierDescription
listFreeBrowse namespaces with optional filtering
getFreeRetrieve namespace details
verifyFreeCheck if namespace exists

Parameters

Action get:

ParameterTypeRequiredDescription
namespace_idstringYesNamespace ID or path.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
min_access_levelnumberNoMinimum access level: 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner.
owned_onlybooleanNoShow only namespaces you own.
pageintegerNoPage number
searchstringNoSearch namespaces by name/path.
top_level_onlybooleanNoShow only root-level namespaces.
with_statisticsbooleanNoInclude storage/count statistics.

Action verify:

ParameterTypeRequiredDescription
namespace_idstringYesNamespace ID or path.

Example

json
{
  "action": "list",
  "per_page": 10
}

browse_commits [tier: Free]

Explore repository commit history and diffs. Actions: list (browse commits with filters), get (retrieve commit metadata and stats), diff (view code changes). Related: browse_refs for branch/tag info.

Actions

ActionTierDescription
listFreeBrowse commit history
getFreeRetrieve commit details
diffFreeGet code changes in a commit

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path.

Action diff:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
shastringYesCommit SHA. Can be full SHA, short hash, or ref name.
pageintegerNoPage number
unidiffbooleanNoReturn unified diff format.

Action get:

ParameterTypeRequiredDescription
shastringYesCommit SHA. Can be full SHA, short hash, or ref name.
statsbooleanNoInclude file change statistics.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
allbooleanNoInclude commits from all branches.
authorstringNoFilter by author name or email.
first_parentbooleanNoFollow only first parent (linear history).
orderstringNoCommit ordering: default or topo.
pageintegerNoPage number
pathstringNoFilter commits affecting this file/directory path.
ref_namestringNoBranch/tag name. Defaults to default branch.
sincestringNoStart date filter (ISO 8601 format).
trailersbooleanNoInclude Git trailers (Signed-off-by, etc.).
untilstringNoEnd date filter (ISO 8601 format).
with_statsbooleanNoInclude stats for each commit.

Example

json
{
  "action": "list",
  "project_id": "my-group/my-project",
  "per_page": 10
}

browse_events [tier: Free]

Track GitLab activity and events. Actions: user (your activity across all projects), project (specific project activity feed). Filter by date range, action type, or target type.

Actions

ActionTierDescription
userFreeShow your activity across all projects
projectFreeShow specific project activity

Parameters

Common (all actions):

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
afterstringNoShow events after this date (YYYY-MM-DD).
beforestringNoShow events before this date (YYYY-MM-DD).
event_actionstringNoFilter by event action.
pageintegerNoPage number
sortstringNoSort order: asc=oldest first, desc=newest first.
target_typestringNoFilter by target type.

Action project:

ParameterTypeRequiredDescription
project_idstringYesProject ID.

Example

json
{
  "action": "user",
  "per_page": 10
}

manage_project [tier: Free]

Create, update, or manage GitLab projects. Actions: create (new project with settings), fork (copy existing project), update (modify settings), delete (remove permanently), archive/unarchive (toggle read-only), transfer (move to different namespace). Related: browse_projects for discovery.

Actions

ActionTierDescription
createFreeCreate a new project
forkFreeFork an existing project
updateFreeUpdate project settings
deleteFreeDelete a project permanently
archiveFreeArchive a project (read-only mode)
unarchiveFreeUnarchive a project (restore from archive)
transferFreeTransfer project to a different namespace

Parameters

Action archive:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path.

Action create:

ParameterTypeRequiredDescription
namestringYesProject name.
descriptionstringNoProject description.
initialize_with_readmebooleanNoCreate initial README.md file.
issues_enabledbooleanNoEnable issue tracking.
jobs_enabledbooleanNoEnable CI/CD jobs.
lfs_enabledbooleanNoEnable Git LFS.
merge_requests_enabledbooleanNoEnable merge requests.
namespacestringNoTarget namespace path. Omit for current user namespace.
only_allow_merge_if_all_discussions_are_resolvedbooleanNoRequire resolved discussions for merge.
only_allow_merge_if_pipeline_succeedsbooleanNoRequire passing pipelines for merge.
request_access_enabledbooleanNoAllow access requests.
snippets_enabledbooleanNoEnable code snippets.
visibilitystringNoProject visibility level.
wiki_enabledbooleanNoEnable project wiki.

Action delete:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path.

Action fork:

ParameterTypeRequiredDescription
project_idstringYesSource project to fork. Numeric ID or URL-encoded path.
fork_namestringNoNew name for forked project (maps to API 'name' parameter).
fork_pathstringNoNew path for forked project (maps to API 'path' parameter).
issues_enabledbooleanNoEnable issue tracking.
jobs_enabledbooleanNoEnable CI/CD jobs.
lfs_enabledbooleanNoEnable Git LFS.
merge_requests_enabledbooleanNoEnable merge requests.
namespacestringNoTarget namespace path. Omit for current user namespace.
namespace_pathstringNoTarget namespace path for fork.
only_allow_merge_if_all_discussions_are_resolvedbooleanNoRequire resolved discussions for merge.
only_allow_merge_if_pipeline_succeedsbooleanNoRequire passing pipelines for merge.
request_access_enabledbooleanNoAllow access requests.
snippets_enabledbooleanNoEnable code snippets.
wiki_enabledbooleanNoEnable project wiki.

Action transfer:

ParameterTypeRequiredDescription
namespacestringYesTarget namespace ID or path to transfer to.
project_idstringYesProject ID or URL-encoded path.

Action unarchive:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path.

Action update:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path.
default_branchstringNoSet default branch name.
descriptionstringNoNew project description.
issues_enabledbooleanNoEnable issue tracking.
jobs_enabledbooleanNoEnable CI/CD jobs.
lfs_enabledbooleanNoEnable Git LFS.
merge_requests_enabledbooleanNoEnable merge requests.
namestringNoNew project name.
only_allow_merge_if_all_discussions_are_resolvedbooleanNoRequire resolved discussions for merge.
only_allow_merge_if_pipeline_succeedsbooleanNoRequire passing pipelines for merge.
request_access_enabledbooleanNoAllow access requests.
snippets_enabledbooleanNoEnable code snippets.
visibilitystringNoNew visibility level.
wiki_enabledbooleanNoEnable project wiki.

Example

json
{
  "action": "create",
  "name": "example_name"
}

manage_namespace [tier: Free]

Create, update, or delete GitLab groups/namespaces. Actions: create (new group with visibility/settings), update (modify group settings), delete (remove permanently). Related: browse_namespaces for discovery.

Actions

ActionTierDescription
createFreeCreate a new group/namespace
updateFreeUpdate group settings
deleteFreeDelete a group permanently

Parameters

Action create:

ParameterTypeRequiredDescription
namestringYesGroup display name.
pathstringYesGroup path for URLs (URL-safe).
visibilitystringYesGroup visibility level.
avatarstringNoGroup avatar URL.
default_branch_protectionnumberNoBranch protection level: 0=none, 1=partial, 2=full.
descriptionstringNoGroup description.
lfs_enabledbooleanNoEnable Git LFS.
parent_idnumberNoParent group ID for subgroup.
request_access_enabledbooleanNoAllow access requests.

Action delete:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path.

Action update:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path.
default_branch_protectionnumberNoBranch protection level: 0=none, 1=partial, 2=full.
descriptionstringNoNew group description.
lfs_enabledbooleanNoEnable Git LFS.
namestringNoNew group name.
pathstringNoNew group path (URL-safe).
request_access_enabledbooleanNoAllow access requests.
visibilitystringNoNew visibility level.

Example

json
{
  "action": "create",
  "name": "example_name",
  "path": "path/to/file.txt",
  "visibility": "private"
}

browse_files [tier: Free]

Explore project file structure and read source code. Actions: tree (list directory contents with recursive depth control), content (read file at specific ref/branch), download_attachment (get uploaded file by secret+filename). Related: manage_files to create/update files.

Actions

ActionTierDescription
treeFreeList files and folders in a directory
contentFreeRead file contents
download_attachmentFreeDownload a file attachment from issues/MRs

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action content:

ParameterTypeRequiredDescription
file_pathstringYesPath to the file to read
refstringNoBranch, tag, or commit SHA

Action download_attachment:

ParameterTypeRequiredDescription
filenamestringYesOriginal filename of the attachment.
secretstringYesSecurity token from the attachment URL.

Action tree:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
pathstringNoDirectory path to list
recursivebooleanNoInclude nested directories
refstringNoBranch, tag, or commit SHA

Example

json
{
  "action": "tree",
  "project_id": "my-group/my-project",
  "per_page": 10
}

manage_files [tier: Free]

Create, update, or upload repository files. Actions: single (create/update one file with commit message), batch (atomic multi-file commit), upload (add attachment returning markdown link). Related: browse_files to read existing files.

Actions

ActionTierDescription
singleFreeCreate or update a single file
batchFreeCommit multiple files atomically
uploadFreeUpload a file as markdown attachment

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action batch:

ParameterTypeRequiredDescription
branchstringYesTarget branch name
commit_messagestringYesCommit message
filesobject[]YesFiles to commit (at least one required)
author_emailstringNoCommit author email
author_namestringNoCommit author name
start_branchstringNoBase branch to start from

Action single:

ParameterTypeRequiredDescription
branchstringYesTarget branch name
commit_messagestringYesCommit message
contentstringYesFile content (text or base64 encoded)
file_pathstringYesPath to the file
author_emailstringNoCommit author email
author_namestringNoCommit author name
encodingstringNoContent encoding (default: text)
execute_filemodebooleanNoSet executable permission
last_commit_idstringNoLast known commit ID for conflict detection
start_branchstringNoBase branch to start from

Action upload:

ParameterTypeRequiredDescription
filestringYesBase64 encoded file content
filenamestringYesName of the file

Example

json
{
  "action": "single",
  "project_id": "my-group/my-project",
  "file_path": "path/to/file.txt",
  "content": "File content here",
  "commit_message": "example_commit_message",
  "branch": "main"
}

browse_releases [tier: Free]

View project releases and asset download links. Actions: list (releases sorted by date), get (release details by tag name), assets (download link list for release). Related: manage_release to create/publish.

Actions

ActionTierDescription
listFreeList all releases for a project, sorted by release date
getFreeGet a specific release by its tag name
assetsFreeList all asset links for a specific release

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path (e.g., 'my-group/my-project')

Action assets:

ParameterTypeRequiredDescription
tag_namestringYesThe Git tag associated with the release (e.g., 'v1.0.0')
pageintegerNoPage number
per_pageintegerNoNumber of items per page (max 100)

Action get:

ParameterTypeRequiredDescription
tag_namestringYesThe Git tag associated with the release (e.g., 'v1.0.0')
include_html_descriptionbooleanNoInclude HTML-rendered description in response

Action list:

ParameterTypeRequiredDescription
include_html_descriptionbooleanNoInclude HTML-rendered description in response
order_bystringNoSort releases by field (default: released_at)
pageintegerNoPage number
per_pageintegerNoNumber of items per page (max 100)
sortstringNoSort direction (default: desc)

Example

json
{
  "action": "list",
  "project_id": "my-group/my-project"
}

manage_release [tier: Free]

Create, update, or delete project releases with asset management. Actions: create (release from tag with notes/assets), update (modify metadata), delete (remove release, tag preserved), create_link (add asset URL), delete_link (remove asset). Related: browse_releases for discovery.

Actions

ActionTierDescription
createFreeCreate a new release for an existing or new tag
updateFreeUpdate an existing release
deleteFreeDelete a release (preserves the Git tag)
create_linkFreeAdd an asset link to an existing release
delete_linkFreeRemove an asset link from a release

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path (e.g., 'my-group/my-project')
tag_namestringYesThe Git tag associated with the release (e.g., 'v1.0.0')

Action create:

ParameterTypeRequiredDescription
assetsobjectNoRelease assets configuration
descriptionstringNoRelease description (supports Markdown)
milestonesstring[]NoArray of milestone titles to associate with the release
namestringNoThe release title/name
refstringNoBranch/commit SHA to create tag from (if tag does not exist)
released_atstringNoRelease date/time in ISO 8601 format (e.g., '2024-01-15T12:00:00Z')
tag_messagestringNoAnnotation message for the tag (creates annotated tag)

Action create_link:

ParameterTypeRequiredDescription
namestringYesDisplay name for the asset link (must be unique per release)
urlstringYesURL of the asset (must be unique per release)
direct_asset_pathstringNoPath for direct asset download (e.g., '/binaries/linux-amd64')
link_typestringNoType of asset link (default: other)

Action delete_link:

ParameterTypeRequiredDescription
link_idstringYesThe ID of the asset link to delete

Action update:

ParameterTypeRequiredDescription
descriptionstringNoRelease description (supports Markdown)
milestonesstring[]NoArray of milestone titles to associate with the release
namestringNoThe release title/name
released_atstringNoRelease date/time in ISO 8601 format (e.g., '2024-01-15T12:00:00Z')

Example

json
{
  "action": "create",
  "project_id": "my-group/my-project",
  "tag_name": "example_tag_name"
}

browse_refs [tier: Premium*]

Inspect branches, tags, and their protection rules. Actions: list_branches, get_branch, list_tags, get_tag, list_protected_branches, get_protected_branch, list_protected_tags (protection details and access levels). Related: manage_ref to create/delete/protect, browse_commits for commit history.

Actions

ActionTierDescription
list_branchesFreeList all repository branches with optional search
get_branchFreeGet details of a specific branch
list_tagsFreeList all repository tags
get_tagFreeGet details of a specific tag
list_protected_branchesFreeList all protected branches with their protection rules
get_protected_branchFreeGet protection rules for a specific branch
list_protected_tagsPremiumList all protected tags with their protection rules

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path (e.g., 'my-group/my-project')

Action get_branch:

ParameterTypeRequiredDescription
branchstringYesBranch name (URL-encoded if contains slashes)

Action get_protected_branch:

ParameterTypeRequiredDescription
namestringYesBranch name or wildcard pattern (e.g., 'main', 'release-*')

Action get_tag:

ParameterTypeRequiredDescription
tag_namestringYesTag name (URL-encoded if contains special characters)

Action list_branches:

ParameterTypeRequiredDescription
pageintegerNoPage number
per_pageintegerNoNumber of items per page (max 100)
regexstringNoFilter branches by regex pattern
searchstringNoFilter branches by name (supports wildcards)

Action list_protected_branches:

ParameterTypeRequiredDescription
pageintegerNoPage number
per_pageintegerNoNumber of items per page (max 100)
searchstringNoFilter protected branches by name

Action list_protected_tags:

ParameterTypeRequiredDescription
pageintegerNoPage number
per_pageintegerNoNumber of items per page (max 100)

Action list_tags:

ParameterTypeRequiredDescription
order_bystringNoSort by field (default: updated)
pageintegerNoPage number
per_pageintegerNoNumber of items per page (max 100)
searchstringNoFilter tags by name (supports wildcards)
sortstringNoSort direction (default: desc)

Example

json
{
  "action": "list_branches",
  "project_id": "my-group/my-project"
}

manage_ref [tier: Premium*]

Create, delete, and protect branches and tags. Actions: create_branch (from ref), delete_branch, protect_branch (set allowed roles), unprotect_branch, update_branch_protection, create_tag (annotated or lightweight), delete_tag, protect_tag, unprotect_tag. Related: browse_refs for inspection.

Actions

ActionTierDescription
create_branchFreeCreate a new branch from an existing ref
delete_branchFreeDelete a branch from the repository
protect_branchFreeAdd protection rules to a branch or pattern
unprotect_branchFreeRemove protection from a branch
update_branch_protectionFreeUpdate protection rules for a branch
create_tagFreeCreate a new tag in the repository
delete_tagFreeDelete a tag from the repository
protect_tagPremiumAdd protection rules to a tag pattern (Premium)
unprotect_tagPremiumRemove protection from a tag pattern (Premium)

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path (e.g., 'my-group/my-project')

Action create_branch:

ParameterTypeRequiredDescription
branchstringYesName for the new branch
refstringYesSource branch name, tag, or commit SHA to create from

Action create_tag:

ParameterTypeRequiredDescription
refstringYesSource branch name or commit SHA to create tag from
tag_namestringYesName for the new tag (e.g., 'v1.0.0')
messagestringNoAnnotation message (creates annotated tag if provided)

Action delete_branch:

ParameterTypeRequiredDescription
branchstringYesBranch name to delete

Action delete_tag:

ParameterTypeRequiredDescription
tag_namestringYesTag name to delete

Action protect_branch:

ParameterTypeRequiredDescription
namestringYesBranch name or wildcard pattern (e.g., 'main', 'release-*')
allow_force_pushbooleanNoAllow force push to protected branch (default: false)
allowed_to_mergeobject[]NoGranular merge access (Premium feature)
allowed_to_pushobject[]NoGranular push access (Premium feature)
allowed_to_unprotectobject[]NoGranular unprotect access (Premium feature)
code_owner_approval_requiredbooleanNoRequire code owner approval (Premium feature)
merge_access_levelintegerNoWho can merge (default: 40=Maintainers)
push_access_levelintegerNoWho can push (default: 40=Maintainers)
unprotect_access_levelintegerNoWho can unprotect (default: 40=Maintainers)

Action protect_tag:

ParameterTypeRequiredDescription
namestringYesTag name or wildcard pattern (e.g., 'v*', 'release-*')
allowed_to_createobject[]NoGranular create access (Premium feature)
create_access_levelintegerNoWho can create matching tags (default: 40=Maintainers)

Action unprotect_branch:

ParameterTypeRequiredDescription
namestringYesBranch name or wildcard pattern to unprotect

Action unprotect_tag:

ParameterTypeRequiredDescription
namestringYesTag name or wildcard pattern to unprotect

Action update_branch_protection:

ParameterTypeRequiredDescription
namestringYesBranch name or wildcard pattern
allow_force_pushbooleanNoAllow force push to protected branch
allowed_to_mergeobject[]NoGranular merge access (Premium feature)
allowed_to_pushobject[]NoGranular push access (Premium feature)
allowed_to_unprotectobject[]NoGranular unprotect access (Premium feature)
code_owner_approval_requiredbooleanNoRequire code owner approval (Premium feature)

Example

json
{
  "action": "create_branch",
  "project_id": "my-group/my-project",
  "branch": "main",
  "ref": "main"
}

Collaboration

browse_users [tier: Free]

Find GitLab users with smart pattern detection. Actions: search (find users by name/email/username with transliteration support), get (retrieve specific user by ID). Related: browse_members for project/group membership.

Actions

ActionTierDescription
searchFreeSearch users with smart pattern detection
getFreeGet a specific user by ID

Parameters

Action get:

ParameterTypeRequiredDescription
user_idstringYesUser ID to retrieve.

Action search:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
activebooleanNoFilter for active (true) or inactive (false) users.
blockedbooleanNoFilter for blocked users.
created_afterstringNoFilter users created after this date (ISO 8601).
created_beforestringNoFilter users created before this date (ISO 8601).
exclude_activebooleanNoExclude active users.
exclude_externalbooleanNoExclude external users.
exclude_humansbooleanNoExclude human users.
exclude_internalbooleanNoExclude internal system users.
externalbooleanNoFilter for external users with limited access.
humansbooleanNoFilter for human users only (exclude bots).
pageintegerNoPage number
public_emailstringNoFind user by exact public email address.
searchstringNoPartial text search across name, username, and email.
smart_searchbooleanNoEnable smart search with auto-detection and transliteration. Auto-enabled for search parameter.
usernamestringNoExact username to search for. Case-sensitive.
without_project_botsbooleanNoExclude project bot users.

Example

json
{
  "action": "search",
  "per_page": 10
}

browse_todos [tier: Free]

View your GitLab todo queue (notifications requiring action). Actions: list (filter by state, action type, target type). Todos are auto-created for assignments, mentions, reviews, and pipeline failures. Related: manage_todos to mark done/restore.

Actions

ActionTierDescription
listFreeList your pending and completed todos

Parameters

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
author_idnumberNoFilter by author ID.
group_idnumberNoFilter by group ID.
pageintegerNoPage number
project_idnumberNoFilter by project ID.
statestringNoFilter todos by state: pending=active, done=completed.
todo_actionstringNoFilter by action type.
typestringNoFilter by target type.

Example

json
{
  "action": "list",
  "per_page": 10
}

manage_todos [tier: Free]

Manage your GitLab todo queue. Actions: mark_done (complete a single todo), mark_all_done (clear entire queue), restore (undo completion). Related: browse_todos to view your todo list.

Actions

ActionTierDescription
mark_doneFreeMark a single todo as done
mark_all_doneFreeMark all todos as done (clears entire queue)
restoreFreeRestore a completed todo to pending state

Parameters

Action mark_done:

ParameterTypeRequiredDescription
idintegerYesTodo ID to mark as done

Action restore:

ParameterTypeRequiredDescription
idintegerYesTodo ID to restore

Example

json
{
  "action": "mark_done",
  "id": "123"
}

browse_merge_requests [tier: Premium*]

Find and inspect merge requests. Actions: list (filter by state/author/reviewer/labels/branch), get (MR details by IID or source branch), diffs (file-level changes with inline suggestions), compare (diff between any two refs). Related: manage_merge_request to create/update/merge.

Actions

ActionTierDescription
listFreeList merge requests with filtering
getFreeGet single MR by IID or branch name
diffsFreeGet file changes/diffs for an MR
compareFreeCompare two branches or commits

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringNoProject ID or URL-encoded path. Optional for cross-project search.

Action compare:

ParameterTypeRequiredDescription
fromstringYesSource reference: branch name or commit SHA
tostringYesTarget reference: branch name or commit SHA
straightbooleanNotrue=straight diff, false=three-way diff from common ancestor

Action diffs:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
per_pageintegerYesNumber of items per page (default: 20, max: 100)
include_diverged_commits_countbooleanNoInclude count of commits the source branch is behind target
include_rebase_in_progressbooleanNoCheck if MR is currently being rebased
pageintegerNoPage number

Action get:

ParameterTypeRequiredDescription
branch_namestringNoFind MR by its source branch name
include_diverged_commits_countbooleanNoInclude count of commits the source branch is behind target
include_rebase_in_progressbooleanNoCheck if MR is currently being rebased
merge_request_iidstringNoInternal MR ID. Required unless branch_name provided.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
approved_by_idsstring[]NoFilter MRs approved by user IDs
approved_by_usernamesstring[]NoFilter MRs approved by usernames
assignee_idnumberNoFilter by assignee's user ID
assignee_usernamestringNoFilter by assignee's username
author_idnumberNoFilter by author's user ID
author_usernamestringNoFilter by author's username
created_afterstringNoFilter MRs created after (ISO 8601)
created_beforestringNoFilter MRs created before (ISO 8601)
deployed_afterstringNoFilter MRs deployed after
deployed_beforestringNoFilter MRs deployed before
environmentstringNoFilter by deployment environment
instringNoSearch scope
labelsstringstring[]No
milestonestringNoFilter by milestone title. Use "None" or "Any".
min_access_levelnumberNoMinimum access level filter (10-50)
my_reaction_emojistringNoFilter MRs you've reacted to
notobjectNoExclusion filters
order_bystringNoSort field
pageintegerNoPage number
reviewer_idnumberNoFilter by reviewer user ID
reviewer_usernamestringNoFilter by reviewer username
scopestringNoFilter scope
searchstringNoText search in title/description
sortstringNoSort direction
source_branchstringNoFilter by source branch
statestringNoMR state filter
target_branchstringNoFilter by target branch
updated_afterstringNoFilter MRs modified after (ISO 8601)
updated_beforestringNoFilter MRs modified before (ISO 8601)
viewstringNoResponse detail level
wipstringNoDraft/WIP filter
with_api_entity_associationsbooleanNoInclude extra API associations
with_labels_detailsbooleanNoReturn full label objects
with_merge_status_recheckbooleanNoTrigger async recheck of merge status

Example

json
{
  "action": "list",
  "per_page": 10
}

browse_mr_discussions [tier: Free]

Read discussion threads and draft review notes on merge requests. Actions: list (all threads with resolution status), drafts (unpublished draft notes), draft (single draft details). Related: manage_mr_discussion to comment, manage_draft_notes to create drafts.

Actions

ActionTierDescription
listFreeList all discussion threads on an MR
draftsFreeList unpublished draft notes on an MR
draftFreeGet single draft note details

Parameters

Common (all actions):

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
project_idstringYesProject ID or URL-encoded path

Action draft:

ParameterTypeRequiredDescription
draft_note_idstringYesUnique identifier of the draft note

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Example

json
{
  "action": "list",
  "project_id": "my-group/my-project",
  "merge_request_iid": "1",
  "per_page": 10
}

manage_merge_request [tier: Premium*]

Create, update, merge, or approve merge requests. Actions: create (new MR from source to target), update (title/description/assignees/reviewers/labels), merge (into target branch), approve/unapprove (review approval), get_approval_state (current approvals). Related: browse_merge_requests for discovery.

Actions

ActionTierDescription
createFreeCreate a new merge request
updateFreeUpdate an existing merge request
mergeFreeMerge an approved merge request
approvePremiumApprove a merge request
unapprovePremiumRemove your approval from a merge request
get_approval_statePremiumGet current approval status and rules

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action approve:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
shastringNoSHA of head commit to approve specific version

Action create:

ParameterTypeRequiredDescription
source_branchstringYesBranch containing changes to merge
target_branchstringYesBranch to merge into
titlestringYesMR title/summary
allow_collaborationbooleanNoLet maintainers push to source branch
allow_maintainer_to_pushbooleanNoDeprecated - use allow_collaboration
assignee_idstringNoSingle assignee user ID
assignee_idsstring[]NoMultiple assignee IDs
descriptionstringNoMR description (Markdown)
labelsstringstring[]No
milestone_idstringNoAssociate MR with milestone
remove_source_branchbooleanNoAuto-delete source branch after merge
reviewer_idsstring[]NoUser IDs for code reviewers
squashbooleanNoCombine all commits into one when merging
target_project_idstringNoTarget project for cross-project MRs

Action get_approval_state:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project

Action merge:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
merge_commit_messagestringNoCustom merge commit message
merge_when_pipeline_succeedsbooleanNoMerge when pipeline succeeds
shastringNoSHA of the head commit
should_remove_source_branchbooleanNoRemove source branch after merge
squashbooleanNoCombine all commits into one when merging
squash_commit_messagestringNoCustom squash commit message

Action unapprove:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project

Action update:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
add_labelsstringstring[]No
allow_collaborationbooleanNoLet maintainers push to source branch
allow_maintainer_to_pushbooleanNoDeprecated - use allow_collaboration
assignee_idstringNoSingle assignee user ID
assignee_idsstring[]NoMultiple assignee IDs
descriptionstringNoMR description (Markdown)
discussion_lockedbooleanNoLock discussion thread
labelsstringstring[]No
milestone_idstringNoAssociate MR with milestone
remove_labelsstringstring[]No
remove_source_branchbooleanNoAuto-delete source branch after merge
reviewer_idsstring[]NoUser IDs for code reviewers
squashbooleanNoCombine all commits into one when merging
state_eventstringNoState event: close or reopen
target_branchstringNoBranch to merge into
titlestringNoMR title/summary

Example

json
{
  "action": "create",
  "project_id": "my-group/my-project",
  "source_branch": "example_source_branch",
  "target_branch": "example_target_branch",
  "title": "Example title"
}

manage_mr_discussion [tier: Free]

Post comments, start threads, and suggest code changes on merge requests. Actions: comment (simple note), thread (line-level discussion), reply (to existing thread), update (edit note text), resolve (toggle thread resolution), suggest (code suggestion block), apply_suggestion/apply_suggestions (accept code suggestions). Related: browse_mr_discussions to read threads.

Actions

ActionTierDescription
commentFreeAdd a comment to an issue or merge request
threadFreeStart a new discussion thread on an MR
replyFreeReply to an existing discussion thread
updateFreeUpdate an existing note/comment
apply_suggestionFreeApply a single code suggestion from a review
apply_suggestionsFreeBatch apply multiple code suggestions
resolveFreeResolve or unresolve a discussion thread
suggestFreeCreate a code suggestion on a diff line

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action apply_suggestion:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
suggestion_idnumberYesID of the suggestion to apply
commit_messagestringNoCustom commit message for the apply commit

Action apply_suggestions:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
suggestion_idsnumber[]YesArray of suggestion IDs to apply
commit_messagestringNoCustom commit message for the apply commit

Action comment:

ParameterTypeRequiredDescription
bodystringYesContent/text of the comment
noteable_idstringYesID of the noteable object
noteable_typestringYesType of noteable: issue or merge_request
confidentialbooleanNoConfidential note flag
created_atstringNoDate time string (ISO 8601)

Action reply:

ParameterTypeRequiredDescription
bodystringYesContent/text of the reply
discussion_idstringYesID of the discussion to reply to
merge_request_iidstringYesInternal MR ID unique to project
created_atstringNoDate time string (ISO 8601)

Action resolve:

ParameterTypeRequiredDescription
discussion_idstringYesID of the discussion thread to resolve/unresolve
merge_request_iidstringYesInternal MR ID unique to project
resolvedbooleanYestrue to resolve, false to unresolve

Action suggest:

ParameterTypeRequiredDescription
lines_aboveintegerYesLines to include above (default: 0)
lines_belowintegerYesLines to include below (default: 0)
merge_request_iidstringYesInternal MR ID unique to project
positionobjectYesPosition in diff for the suggestion (requires base_sha, head_sha, start_sha, new_path, new_line)
suggestionstringYesThe suggested code (raw code, no markdown formatting needed)
commentstringNoOptional explanation comment before the suggestion

Action thread:

ParameterTypeRequiredDescription
bodystringYesContent/text of the thread
merge_request_iidstringYesInternal MR ID unique to project
commit_idstringNoSHA of commit to start discussion on
positionobjectNoPosition for diff note

Action update:

ParameterTypeRequiredDescription
bodystringYesNew content/text for the note
merge_request_iidstringYesInternal MR ID unique to project
note_idstringYesID of the note to update

Example

json
{
  "action": "comment",
  "project_id": "my-group/my-project",
  "noteable_type": "issue",
  "noteable_id": "123",
  "body": "example_body"
}

manage_draft_notes [tier: Free]

Create and manage unpublished review comments on merge requests. Actions: create (new draft), update (modify text), publish (make single draft visible), publish_all (submit entire review), delete (discard draft). Related: browse_mr_discussions action 'drafts' to list existing drafts.

Actions

ActionTierDescription
createFreeCreate a new draft note
updateFreeUpdate an existing draft note
publishFreePublish a single draft note
publish_allFreePublish all draft notes at once
deleteFreeDelete a draft note

Parameters

Common (all actions):

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
project_idstringYesProject ID or URL-encoded path

Action create:

ParameterTypeRequiredDescription
notestringYesContent of the draft note
commit_idstringNoSHA of commit to start discussion on
in_reply_to_discussion_idstringNoDiscussion ID to reply to
positionobjectNoPosition for diff note

Action delete:

ParameterTypeRequiredDescription
draft_note_idstringYesID of the draft note

Action publish:

ParameterTypeRequiredDescription
draft_note_idstringYesID of the draft note

Action update:

ParameterTypeRequiredDescription
draft_note_idstringYesID of the draft note
notestringYesNew content for the draft note
positionobjectNoPosition for diff note

Example

json
{
  "action": "create",
  "project_id": "my-group/my-project",
  "merge_request_iid": "1",
  "note": "example_note"
}

browse_members [tier: Free]

View team members and access levels in projects or groups. Actions: list_project, list_group, get_project, get_group (direct members), list_all_project, list_all_group (includes inherited). Levels: Guest(10), Reporter(20), Developer(30), Maintainer(40), Owner(50). Related: manage_member to add/remove, browse_users to find users by name.

Actions

ActionTierDescription
list_projectFreeList all members of a project
list_groupFreeList all members of a group
get_projectFreeGet a specific member of a project
get_groupFreeGet a specific member of a group
list_all_projectFreeList all project members including inherited from parent groups
list_all_groupFreeList all group members including inherited from parent groups

Parameters

Action get_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path
user_idstringYesUser ID of the member
include_inheritedbooleanNoInclude members inherited from parent groups

Action get_project:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path
user_idstringYesUser ID of the member
include_inheritedbooleanNoInclude members inherited from parent groups

Action list_all_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
querystringNoSearch members by name or username
statestringNoFilter by member state
user_idsstring[]NoFilter to specific user IDs

Action list_all_project:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
project_idstringYesProject ID or URL-encoded path
pageintegerNoPage number
querystringNoSearch members by name or username
statestringNoFilter by member state
user_idsstring[]NoFilter to specific user IDs

Action list_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
querystringNoSearch members by name or username
user_idsstring[]NoFilter to specific user IDs

Action list_project:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
project_idstringYesProject ID or URL-encoded path
pageintegerNoPage number
querystringNoSearch members by name or username
user_idsstring[]NoFilter to specific user IDs

Example

json
{
  "action": "list_project",
  "project_id": "my-group/my-project",
  "per_page": 10
}

manage_member [tier: Free]

Add, remove, or update access levels for project/group members. Actions: add_to_project, add_to_group (with access level + optional expiry), remove_from_project, remove_from_group, update_project, update_group (change access level). Related: browse_members for current membership.

Actions

ActionTierDescription
add_to_projectFreeAdd a user as member to a project
add_to_groupFreeAdd a user as member to a group
remove_from_projectFreeRemove a member from a project
remove_from_groupFreeRemove a member from a group
update_projectFreeUpdate access level of a project member
update_groupFreeUpdate access level of a group member

Parameters

Common (all actions):

ParameterTypeRequiredDescription
user_idstringYesUser ID to remove

Action add_to_group:

ParameterTypeRequiredDescription
access_levelintegerYesAccess level: 0=No access, 5=Minimal, 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner
group_idstringYesGroup ID or URL-encoded path
expires_atstringNoMembership expiration date in ISO 8601 format (YYYY-MM-DD)

Action add_to_project:

ParameterTypeRequiredDescription
access_levelintegerYesAccess level: 0=No access, 5=Minimal, 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner
project_idstringYesProject ID or URL-encoded path
expires_atstringNoMembership expiration date in ISO 8601 format (YYYY-MM-DD)

Action remove_from_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path
skip_subresourcesbooleanNoSkip removing from subgroups and projects
unassign_issuablesbooleanNoUnassign member from issues and merge requests

Action remove_from_project:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path
skip_subresourcesbooleanNoSkip removing from subprojects and forks
unassign_issuablesbooleanNoUnassign member from issues and merge requests

Action update_group:

ParameterTypeRequiredDescription
access_levelintegerYesAccess level: 0=No access, 5=Minimal, 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner
group_idstringYesGroup ID or URL-encoded path
expires_atstringNoMembership expiration date in ISO 8601 format (YYYY-MM-DD)
member_role_idintegerNoID of a custom member role (Ultimate only)

Action update_project:

ParameterTypeRequiredDescription
access_levelintegerYesAccess level: 0=No access, 5=Minimal, 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner
project_idstringYesProject ID or URL-encoded path
expires_atstringNoMembership expiration date in ISO 8601 format (YYYY-MM-DD)

Example

json
{
  "action": "add_to_project",
  "project_id": "my-group/my-project",
  "user_id": "123",
  "access_level": 10
}

Planning

browse_labels [tier: Free]

List and inspect project or group labels. Actions: list (all labels with search filtering), get (single label by ID or name). Related: manage_label to create/update/delete.

Actions

ActionTierDescription
listFreeList labels with optional filtering
getFreeGet a single label by ID or title

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)
include_ancestor_groupsbooleanNoInclude ancestor groups when listing or getting labels

Action get:

ParameterTypeRequiredDescription
label_idstringYesThe ID or title of the label

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
searchstringNoKeyword to filter labels by
with_countsbooleanNoInclude issue and merge request counts

Example

json
{
  "action": "list",
  "namespace": "my-group/my-project",
  "per_page": 10
}

manage_label [tier: Free]

Create, update, or delete project/group labels. Actions: create (name + hex color required), update (modify properties), delete (remove permanently). Related: browse_labels for discovery.

Actions

ActionTierDescription
createFreeCreate a new label
updateFreeUpdate an existing label
deleteFreeDelete a label

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)

Action create:

ParameterTypeRequiredDescription
colorstringYesThe color of the label in 6-digit hex notation with leading '#' (e.g. #FFAABB) or CSS color name
namestringYesThe name of the label
descriptionstringNoThe description of the label
prioritynumberNoThe priority of the label. Must be greater or equal than zero or null to remove the priority.

Action delete:

ParameterTypeRequiredDescription
label_idstringYesThe ID or title of the label

Action update:

ParameterTypeRequiredDescription
label_idstringYesThe ID or title of the label
colorstringNoThe color of the label in 6-digit hex notation with leading '#' (e.g. #FFAABB) or CSS color name
descriptionstringNoThe description of the label
namestringNoThe name of the label
new_namestringNoThe new name of the label
prioritynumberNoThe priority of the label. Must be greater or equal than zero or null to remove the priority.

Example

json
{
  "action": "create",
  "namespace": "my-group/my-project",
  "name": "example_name",
  "color": "example_color"
}

browse_milestones [tier: Premium*]

Track milestone progress with associated issues and MRs. Actions: list (filter by state/title/search), get (milestone details), issues (items in milestone), merge_requests (MRs targeting milestone), burndown (chart data for sprint tracking). Related: manage_milestone to create/update.

Actions

ActionTierDescription
listFreeList milestones with optional filtering
getFreeGet a single milestone by ID
issuesFreeList issues assigned to a milestone
merge_requestsFreeList merge requests assigned to a milestone
burndownPremiumGet burndown chart data for a milestone

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)

Action burndown:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'get', 'issues', 'merge_requests', 'burndown' action(s).
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Action get:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'get', 'issues', 'merge_requests', 'burndown' action(s).

Action issues:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'get', 'issues', 'merge_requests', 'burndown' action(s).
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
iidsstring[]NoReturn only the milestones having the given iid
include_ancestorsbooleanNoInclude ancestor groups
pageintegerNoPage number
searchstringNoReturn only milestones with a title or description matching the provided string
statestringNoReturn only active or closed milestones
titlestringNoReturn only milestones with a title matching the provided string
updated_afterstringNoReturn milestones updated after the specified date (ISO 8601 format)
updated_beforestringNoReturn milestones updated before the specified date (ISO 8601 format)

Action merge_requests:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'get', 'issues', 'merge_requests', 'burndown' action(s).
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Example

json
{
  "action": "list",
  "namespace": "my-group/my-project",
  "per_page": 10
}

manage_milestone [tier: Free]

Create, update, or delete project/group milestones. Actions: create (title + optional dates/description), update (modify properties or close/activate), delete (remove permanently), promote (elevate project milestone to group). Related: browse_milestones for progress tracking.

Actions

ActionTierDescription
createFreeCreate a new item
updateFreeUpdate an existing item
deleteFreeDelete an item
promoteFreePerform promote operation

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)

Action create:

ParameterTypeRequiredDescription
titlestringYesThe title of the milestone
descriptionstringNoThe description of the milestone
due_datestringNoThe due date of the milestone (YYYY-MM-DD)
start_datestringNoThe start date of the milestone (YYYY-MM-DD)

Action delete:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'update', 'delete', 'promote' action(s).

Action promote:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'update', 'delete', 'promote' action(s).

Action update:

ParameterTypeRequiredDescription
milestone_idstringYesThe ID of a project or group milestone. Required for 'update', 'delete', 'promote' action(s).
descriptionstringNoThe new description of the milestone
due_datestringNoThe due date of the milestone (YYYY-MM-DD)
start_datestringNoThe start date of the milestone (YYYY-MM-DD)
state_eventstringNoState event to apply: 'close' or 'activate'
titlestringNoThe new title of the milestone

Example

json
{
  "action": "create",
  "namespace": "my-group/my-project",
  "title": "Example title"
}

browse_work_items [tier: Free]

Find and inspect issues, epics, tasks, and other work items. Actions: list (groups return epics, projects return issues/tasks, filter by type/state/labels), get (by numeric ID or namespace+iid from URL path). Related: manage_work_item to create/update/delete.

Actions

ActionTierDescription
listFreeList work items with filtering
getFreeGet single work item details

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringNoNamespace path (group or project). Groups return epics, projects return issues/tasks.

Action get:

ParameterTypeRequiredDescription
idstringNoWork item ID to retrieve - use numeric ID from list results (e.g., '5953')
iidstringNoInternal ID from URL (e.g., '95' from /issues/95). Use with namespace parameter.

Action list:

ParameterTypeRequiredDescription
firstnumberYesNumber of items to return
simplebooleanYesReturn simplified structure with essential fields only. RECOMMENDED: Use default true for most cases.
statestring[]YesFilter by work item state. Defaults to OPEN items only. Use ["OPEN", "CLOSED"] for all items.
afterstringNoCursor for pagination (use endCursor from previous response)
typesstring[]NoFilter by work item types

Example

json
{
  "action": "list",
  "namespace": "my-group/my-project",
  "state": [],
  "first": 10,
  "simple": true
}

manage_work_item [tier: Free]

Create, update, delete, or link work items (issues, epics, tasks). Actions: create (epics need GROUP namespace, issues/tasks need PROJECT), update (widgets: dates, time tracking, weight, iterations, health, progress, hierarchy), delete (permanent), add_link/remove_link (BLOCKS/BLOCKED_BY/RELATED). Related: browse_work_items for discovery.

Actions

ActionTierDescription
createFreeCreate a new work item
updateFreeUpdate an existing work item
deleteFreeDelete a work item
add_linkFreeAdd a relationship link between two work items
remove_linkFreeRemove a relationship link between two work items

Parameters

Action add_link:

ParameterTypeRequiredDescription
idstringYesSource work item ID
linkTypestringYesRelationship type: BLOCKS (this blocks target), BLOCKED_BY (this is blocked by target), RELATED (general relationship)
targetIdstringYesTarget work item ID to link to

Action create:

ParameterTypeRequiredDescription
namespacestringYesCRITICAL: Namespace path (group OR project). For Epics use GROUP path (e.g. "my-group"). For Issues/Tasks use PROJECT path (e.g. "my-group/my-project").
titlestringYesTitle of the work item
workItemTypestringYesType of work item
assigneeIdsstring[]NoArray of assignee user IDs
childrenIdsstring[]NoArray of child work item IDs to add
colorstringNoCustom hex color for epics (Ultimate tier)
descriptionstringNoDescription of the work item
dueDatestringNoDue date in YYYY-MM-DD format
healthStatusstringNoHealth status indicator (Ultimate tier)
isFixedbooleanNoFixed dates - not inherited from children (Premium tier)
iterationIdstringNoIteration/sprint ID to assign (Premium tier)
labelIdsstring[]NoArray of label IDs
milestoneIdstringNoMilestone ID
parentIdstringNoParent work item ID to set hierarchy relationship
progressCurrentValueintegerNoCurrent progress value 0-100 for OKR key results (Premium tier)
startDatestringNoStart date in YYYY-MM-DD format
timeEstimatestringNoTime estimate (e.g. "1h 30m", "2d"). Applied via update after create. Check _warning in response if application failed.
weightintegerNoStory points / weight value (Premium tier)

Action delete:

ParameterTypeRequiredDescription
idstringYesWork item ID - use numeric ID from list results (e.g., '5953')

Action remove_link:

ParameterTypeRequiredDescription
idstringYesSource work item ID
targetIdstringYesTarget work item ID to unlink

Action update:

ParameterTypeRequiredDescription
idstringYesWork item ID - use numeric ID from list results (e.g., '5953')
addLabelIdsstring[]NoArray of label IDs to ADD to existing labels. Can be used with removeLabelIds. Cannot be used with labelIds.
assigneeIdsstring[]NoArray of assignee user IDs
childrenIdsstring[]NoArray of child work item IDs to add
colorstringNoCustom hex color for epics (Ultimate tier)
descriptionstringNoDescription of the work item
dueDatestringnullNo
healthStatusstringnullNo
isFixedbooleanNoFixed dates - not inherited from children (Premium tier)
iterationIdstringnullNo
labelIdsstring[]NoArray of label IDs to SET (replaces all existing labels). Cannot be used with addLabelIds or removeLabelIds.
linkTypestringNoRelationship type to create. Use with targetId to link work items during update. Applied via separate mutation after the main update.
milestoneIdstringNoMilestone ID
parentIdstringnullNo
progressCurrentValueintegerNoCurrent progress value 0-100 for OKR key results (Premium tier)
removeLabelIdsstring[]NoArray of label IDs to REMOVE from existing labels. Can be used with addLabelIds. Cannot be used with labelIds.
startDatestringnullNo
statestringNoState event for the work item (CLOSE, REOPEN)
targetIdstringNoTarget work item ID to link to. Use with linkType to create a relationship during update.
timeEstimatestringNoTime estimate in human-readable format (e.g. "1h 30m", "2d", "0h" to clear)
timeSpentstringNoTime spent to log as timelog entry (e.g. "2h", "1h 30m")
timeSpentAtstringNoWhen time was spent in ISO 8601 format (defaults to now)
timeSpentSummarystringNoSummary/description of work done for the timelog entry
titlestringNoTitle of the work item
weightintegernullNo

Example

json
{
  "action": "create",
  "namespace": "my-group/my-project",
  "workItemType": "EPIC",
  "title": "Example title"
}

browse_iterations [tier: Premium]

View group iterations for agile sprint planning. Actions: list (filter by state: current, upcoming, closed), get (retrieve specific iteration details). Related: browse_work_items for items in an iteration.

Actions

ActionTierDescription
listPremiumList iterations for a group
getPremiumGet a specific iteration by ID

Parameters

Common (all actions):

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path.

Action get:

ParameterTypeRequiredDescription
iteration_idstringYesIteration ID.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
include_ancestorsbooleanNoInclude iterations from parent groups.
pageintegerNoPage number
searchstringNoSearch iterations by title.
statestringNoFilter by iteration state.

Example

json
{
  "action": "list",
  "group_id": "my-group",
  "per_page": 10
}

CI/CD

browse_pipelines [tier: Free]

Monitor CI/CD pipelines and read job logs. Actions: list (filter by status/ref/source/username), get (pipeline details), jobs (list pipeline jobs), triggers (bridge/trigger jobs), job (single job details), logs (job console output). Related: manage_pipeline to trigger/retry/cancel, manage_pipeline_job for individual jobs.

Actions

ActionTierDescription
listFreeList pipelines with filtering
getFreeGet single pipeline details
jobsFreeList jobs in a pipeline
triggersFreeList bridge/trigger jobs in a pipeline
jobFreeGet single job details
logsFreeGet job console output/logs

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action get:

ParameterTypeRequiredDescription
pipeline_idstringYesThe ID of the pipeline

Action job:

ParameterTypeRequiredDescription
job_idstringYesThe ID of the job

Action jobs:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pipeline_idstringYesThe ID of the pipeline
include_retriedbooleanNoInclude retried jobs in the response
job_scopestring[]NoScope of jobs to show
pageintegerNoPage number

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
namestringNoFilter by name of user who triggered pipeline
order_bystringNoOrder pipelines by
pageintegerNoPage number
refstringNoFilter by branch or tag ref
scopestringNoPipeline scope filter
shastringNoFilter by SHA
sortstringNoSort order
sourcestringNoPipeline source filter
statusstringNoPipeline status filter
updated_afterstringNoISO 8601 datetime to filter by updated_after
updated_beforestringNoISO 8601 datetime to filter by updated_before
usernamestringNoFilter by username who triggered pipeline
yaml_errorsbooleanNoFilter by YAML errors

Action logs:

ParameterTypeRequiredDescription
job_idstringYesThe ID of the job
limitnumberNoMaximum number of lines to return. Combined with start, acts as line count
max_linesnumberNoMaximum number of lines to return (alternative to limit)
startnumberNoStart from specific line number (0-based). Positive from beginning, negative from end (e.g., -100 = last 100 lines)

Action triggers:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pipeline_idstringYesThe ID of the pipeline
include_retriedbooleanNoInclude retried jobs in the response
pageintegerNoPage number
trigger_scopestring[]NoScope of trigger jobs to show

Example

json
{
  "action": "list",
  "project_id": "my-group/my-project",
  "per_page": 10
}

manage_pipeline [tier: Free]

Trigger, retry, or cancel CI/CD pipelines. Actions: create (run pipeline on ref with variables), retry (re-run failed jobs), cancel (stop running pipeline). Related: browse_pipelines for monitoring.

Actions

ActionTierDescription
createFreeTrigger a new pipeline on branch/tag
retryFreeRe-run a failed/canceled pipeline
cancelFreeStop a running pipeline

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action cancel:

ParameterTypeRequiredDescription
pipeline_idstringYesThe ID of the pipeline

Action create:

ParameterTypeRequiredDescription
refstringYesThe branch or tag to run the pipeline on
variablesobject[]NoVariables to pass to the pipeline

Action retry:

ParameterTypeRequiredDescription
pipeline_idstringYesThe ID of the pipeline

Example

json
{
  "action": "create",
  "project_id": "my-group/my-project",
  "ref": "main"
}

manage_pipeline_job [tier: Free]

Control individual CI/CD jobs within a pipeline. Actions: play (trigger manual/delayed job with variables), retry (re-run single job), cancel (stop running job). Related: browse_pipelines actions 'job'/'logs' for job details.

Actions

ActionTierDescription
playFreeTrigger a manual job
retryFreeRe-run a failed/canceled job
cancelFreeStop a running job

Parameters

Common (all actions):

ParameterTypeRequiredDescription
job_idstringYesThe ID of the job
project_idstringYesProject ID or URL-encoded path

Action cancel:

ParameterTypeRequiredDescription
forcebooleanNoForce cancellation of the job

Action play:

ParameterTypeRequiredDescription
job_variables_attributesobject[]NoVariables to pass to the job

Example

json
{
  "action": "play",
  "project_id": "my-group/my-project",
  "job_id": "123"
}

browse_variables [tier: Free]

List and inspect CI/CD variables for projects or groups. Actions: list (all variables with pagination), get (single variable by key with environment scope filter). Related: manage_variable to create/update/delete.

Actions

ActionTierDescription
listFreeList all CI/CD variables
getFreeGet a single CI/CD variable by key

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)

Action get:

ParameterTypeRequiredDescription
keystringYesThe key of the CI/CD variable. Maximum 255 characters, alphanumeric and underscore only.
filterobjectNoFilter parameters for variable lookup

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Example

json
{
  "action": "list",
  "namespace": "my-group/my-project",
  "per_page": 10
}

manage_variable [tier: Free]

Create, update, or delete CI/CD variables with environment scoping. Actions: create (key + value, set scope/protection/masking), update (modify value or settings), delete (remove permanently). Related: browse_variables for discovery.

Actions

ActionTierDescription
createFreeCreate a new CI/CD variable
updateFreeUpdate an existing CI/CD variable
deleteFreeDelete a CI/CD variable

Parameters

Common (all actions):

ParameterTypeRequiredDescription
keystringYesThe key of the CI/CD variable. Maximum 255 characters, only alphanumeric and underscore characters allowed.
namespacestringYesNamespace path (group or project)

Action create:

ParameterTypeRequiredDescription
valuestringYesThe value of the CI/CD variable. For file type variables, this is the file content.
descriptionstringNoOptional description explaining the purpose of this variable (GitLab 16.2+).
environment_scopestringNoThe environment scope. Use "*" for all environments (default), or specify like "production", "staging".
maskedbooleanNoWhether this variable should be masked in job logs. MASKING REQUIREMENTS: Value must be at least 8 characters, single line with no spaces, only A-Z a-z 0-9 + / = . ~ - _ @ : characters.
protectedbooleanNoWhether this variable is protected. Protected variables are only available to protected branches/tags.
rawbooleanNoWhether variable expansion is disabled. When true, variables like $OTHER_VAR in the value will NOT be expanded.
variable_typestringNoThe type of variable: "env_var" for environment variables (default) or "file" for file variables.

Action delete:

ParameterTypeRequiredDescription
filterobjectNoFilter parameters to identify the specific variable

Action update:

ParameterTypeRequiredDescription
descriptionstringNoOptional description explaining the purpose of this variable (GitLab 16.2+).
environment_scopestringNoThe environment scope. Use "*" for all environments (default), or specify like "production", "staging".
filterobjectNoFilter parameters to identify the specific variable
maskedbooleanNoWhether this variable should be masked in job logs. MASKING REQUIREMENTS: Value must be at least 8 characters, single line with no spaces, only A-Z a-z 0-9 + / = . ~ - _ @ : characters.
protectedbooleanNoWhether this variable is protected. Protected variables are only available to protected branches/tags.
rawbooleanNoWhether variable expansion is disabled. When true, variables like $OTHER_VAR in the value will NOT be expanded.
valuestringNoThe value of the CI/CD variable. For file type variables, this is the file content.
variable_typestringNoThe type of variable: "env_var" for environment variables (default) or "file" for file variables.

Example

json
{
  "action": "create",
  "namespace": "my-group/my-project",
  "key": "example_key",
  "value": "example_value"
}

Integrations & Content

browse_wiki [tier: Free]

Read wiki pages in projects or groups. Actions: list (all pages with metadata), get (page content by slug). Related: manage_wiki to create/update/delete.

Actions

ActionTierDescription
listFreeList all wiki pages
getFreeGet a single wiki page by slug

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)

Action get:

ParameterTypeRequiredDescription
slugstringYesURL-encoded slug of the wiki page

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
with_contentbooleanNoInclude content of the wiki pages

Example

json
{
  "action": "list",
  "namespace": "my-group/my-project",
  "per_page": 10
}

manage_wiki [tier: Free]

Create, update, or delete wiki pages. Actions: create (new page with title/content/format), update (modify content or title), delete (remove permanently). Related: browse_wiki to read pages.

Actions

ActionTierDescription
createFreeCreate a new wiki page
updateFreeUpdate an existing wiki page
deleteFreeDelete a wiki page

Parameters

Common (all actions):

ParameterTypeRequiredDescription
namespacestringYesNamespace path (group or project)

Action create:

ParameterTypeRequiredDescription
contentstringYesContent of the wiki page
titlestringYesTitle of the wiki page
formatstringNoContent format (markdown, rdoc, asciidoc, org). Defaults to markdown.

Action delete:

ParameterTypeRequiredDescription
slugstringYesURL-encoded slug of the wiki page

Action update:

ParameterTypeRequiredDescription
slugstringYesURL-encoded slug of the wiki page
contentstringNoNew content of the wiki page
formatstringNoContent format (markdown, rdoc, asciidoc, org). Defaults to markdown.
titlestringNoNew title of the wiki page

Example

json
{
  "action": "create",
  "namespace": "my-group/my-project",
  "title": "Example title",
  "content": "File content here"
}

browse_snippets [tier: Free]

Find and read code snippets with versioning support. Actions: list (personal/project/public scope with filtering), get (snippet metadata or raw file content). Related: manage_snippet to create/update.

Actions

ActionTierDescription
listFreeList snippets with filtering by scope and visibility
getFreeGet single snippet details or raw content

Parameters

Common (all actions):

ParameterTypeRequiredDescription
projectIdstringNoProject ID or URL-encoded path. Required for project snippets, leave empty for personal snippets

Action get:

ParameterTypeRequiredDescription
idstringYesThe ID of the snippet to retrieve
rawbooleanYesReturn raw content of snippet files instead of metadata

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
scopestringYesScope of snippets: "personal" for current user, "project" for project-specific (requires projectId), "public" for all public snippets
created_afterstringNoReturn snippets created after this date (ISO 8601). Example: '2024-01-01T00:00:00Z'
created_beforestringNoReturn snippets created before this date (ISO 8601). Example: '2024-12-31T23:59:59Z'
pageintegerNoPage number
visibilitystringNoFilter by visibility: private (author only), internal (authenticated users), public (everyone)

Example

json
{
  "action": "list",
  "scope": "personal",
  "per_page": 10
}

manage_snippet [tier: Free]

Create, update, or delete code snippets with multi-file support. Actions: create (new snippet with files and visibility), update (modify content/metadata, file operations), delete (remove permanently). Related: browse_snippets for discovery.

Actions

ActionTierDescription
createFreeCreate a new snippet with one or more files
updateFreeUpdate an existing snippet metadata or files
deleteFreePermanently delete a snippet

Parameters

Common (all actions):

ParameterTypeRequiredDescription
projectIdstringNoProject ID or URL-encoded path to create a project snippet. Leave empty for personal snippet

Action create:

ParameterTypeRequiredDescription
filesobject[]YesArray of files to include. At least one file required. Each needs file_path and content
titlestringYesThe title of the snippet. Displayed in snippet list and as page title. Max 255 chars
visibilitystringYesVisibility: 'private' (author only), 'internal' (authenticated users), 'public' (everyone). Defaults to 'private'
descriptionstringNoOptional description explaining the snippet purpose. Supports markdown

Action delete:

ParameterTypeRequiredDescription
idstringYesThe ID of the snippet to delete. This operation cannot be undone

Action update:

ParameterTypeRequiredDescription
idstringYesThe ID of the snippet to update
descriptionstringNoUpdate the snippet description. Supports markdown
filesobject[]NoArray of file operations. Each file must specify 'action': create/update/delete/move. Move requires previous_path
titlestringNoUpdate the snippet title. Max 255 chars
visibilitystringNoUpdate the visibility level

Example

json
{
  "action": "create",
  "title": "Example title",
  "visibility": "private",
  "files": []
}

browse_webhooks [tier: Free]

List and inspect webhook configurations for projects or groups. Actions: list (all webhooks with event types and status), get (webhook details by ID). Related: manage_webhook to create/update/delete/test.

Actions

ActionTierDescription
listFreeList all webhooks for a project or group
getFreeGet webhook details by ID

Parameters

Common (all actions):

ParameterTypeRequiredDescription
scopestringYesScope of webhook (project or group)
groupIdstringNoGroup ID or path (required if scope=group)
projectIdstringNoProject ID or path (required if scope=project)

Action get:

ParameterTypeRequiredDescription
hookIdstringYesWebhook ID (required)

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Example

json
{
  "action": "list",
  "scope": "project",
  "per_page": 10
}

manage_webhook [tier: Premium*]

Create, update, delete, or test webhooks for event-driven automation. Actions: create (URL + event types + optional secret), update (modify settings), delete (remove), test (trigger delivery for specific event). Related: browse_webhooks for inspection.

Actions

ActionTierDescription
createFreeCreate a new item
updateFreeUpdate an existing item
deleteFreeDelete an item
testFreeTest a webhook

Parameters

Common (all actions):

ParameterTypeRequiredDescription
scopestringYesScope of webhook (project or group)
groupIdstringNoGroup ID or path (required if scope=group)
projectIdstringNoProject ID or path (required if scope=project)

Action create:

ParameterTypeRequiredDescription
urlstringYesWebhook URL (required)
confidential_issues_eventsbooleanNoEnable confidential issue events
confidential_note_eventsbooleanNoEnable confidential note events
deployment_eventsbooleanNoEnable deployment events
descriptionstringNoWebhook description (GitLab 16.11+)
emoji_eventsbooleanNoEnable emoji events
enable_ssl_verificationbooleanNoEnable SSL certificate verification
feature_flag_eventsbooleanNoEnable feature flag events
issues_eventsbooleanNoEnable issue events
job_eventsbooleanNoEnable job/build events
member_eventsbooleanNoEnable member events
merge_requests_eventsbooleanNoEnable merge request events
namestringNoHuman-readable webhook name (GitLab 16.11+)
note_eventsbooleanNoEnable note/comment events
pipeline_eventsbooleanNoEnable pipeline events
project_eventsbooleanNoEnable project events (group webhooks only)
push_eventsbooleanNoEnable push events
push_events_branch_filterstringNoBranch filter for push events (wildcard supported)
releases_eventsbooleanNoEnable release events
resource_access_token_eventsbooleanNoEnable resource access token events
subgroup_eventsbooleanNoEnable subgroup events (group webhooks only)
tag_push_eventsbooleanNoEnable tag push events
tokenstringNoSecret token for webhook validation
wiki_page_eventsbooleanNoEnable wiki page events

Action delete:

ParameterTypeRequiredDescription
hookIdstringYesWebhook ID (required)

Action test:

ParameterTypeRequiredDescription
hookIdstringYesWebhook ID (required)
triggerstringYesEvent type to test (required)

Action update:

ParameterTypeRequiredDescription
hookIdstringYesWebhook ID (required)
confidential_issues_eventsbooleanNoEnable confidential issue events
confidential_note_eventsbooleanNoEnable confidential note events
deployment_eventsbooleanNoEnable deployment events
descriptionstringNoWebhook description (GitLab 16.11+)
emoji_eventsbooleanNoEnable emoji events
enable_ssl_verificationbooleanNoEnable SSL certificate verification
feature_flag_eventsbooleanNoEnable feature flag events
issues_eventsbooleanNoEnable issue events
job_eventsbooleanNoEnable job/build events
member_eventsbooleanNoEnable member events
merge_requests_eventsbooleanNoEnable merge request events
namestringNoHuman-readable webhook name (GitLab 16.11+)
note_eventsbooleanNoEnable note/comment events
pipeline_eventsbooleanNoEnable pipeline events
project_eventsbooleanNoEnable project events (group webhooks only)
push_eventsbooleanNoEnable push events
push_events_branch_filterstringNoBranch filter for push events (wildcard supported)
releases_eventsbooleanNoEnable release events
resource_access_token_eventsbooleanNoEnable resource access token events
subgroup_eventsbooleanNoEnable subgroup events (group webhooks only)
tag_push_eventsbooleanNoEnable tag push events
tokenstringNoSecret token for webhook validation
urlstringNoWebhook URL
wiki_page_eventsbooleanNoEnable wiki page events

Example

json
{
  "action": "create",
  "scope": "project",
  "url": "https://example.com/webhook"
}

browse_integrations [tier: Free]

Discover active project integrations and their configuration. Actions: list (all active: Slack, Jira, Discord, Teams, Jenkins, etc.), get (specific integration settings by slug). Related: manage_integration to configure/disable.

Actions

ActionTierDescription
listFreeList all active integrations for a project
getFreeGet integration settings (read-only)

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action get:

ParameterTypeRequiredDescription
integrationstringYesIntegration type slug (e.g., slack, jira, discord). Note: gitlab-slack-application cannot be created via API - it requires OAuth installation from GitLab UI.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

Example

json
{
  "action": "list",
  "project_id": "my-group/my-project",
  "per_page": 10
}

manage_integration [tier: Free]

Configure or disable project integrations (50+ supported). Actions: update (enable/modify with integration-specific config), disable (deactivate integration). Note: gitlab-slack-application requires OAuth install from GitLab UI. Related: browse_integrations for discovery.

Actions

ActionTierDescription
updateFreeUpdate or enable integration with specific config
disableFreeDisable and remove integration

Parameters

Common (all actions):

ParameterTypeRequiredDescription
integrationstringYesIntegration type slug (e.g., slack, jira, discord). Note: gitlab-slack-application cannot be created via API - it requires OAuth installation from GitLab UI.
project_idstringYesProject ID or URL-encoded path

Action update:

ParameterTypeRequiredDescription
activebooleanNoEnable or disable the integration without full configuration
confidential_issues_eventsbooleanNoTrigger integration on confidential issue events
configobjectNoIntegration-specific configuration parameters. Pass as key-value pairs. Examples: webhook_url, token, channel, etc. See GitLab API documentation for integration-specific fields.
deployment_eventsbooleanNoTrigger integration on deployment events
issues_eventsbooleanNoTrigger integration on issue events
job_eventsbooleanNoTrigger integration on job events
merge_requests_eventsbooleanNoTrigger integration on merge request events
note_eventsbooleanNoTrigger integration on note events
pipeline_eventsbooleanNoTrigger integration on pipeline events
push_eventsbooleanNoTrigger integration on push events
releases_eventsbooleanNoTrigger integration on release events
tag_push_eventsbooleanNoTrigger integration on tag push events
vulnerability_eventsbooleanNoTrigger integration on vulnerability events
wiki_page_eventsbooleanNoTrigger integration on wiki page events

Example

json
{
  "action": "update",
  "project_id": "my-group/my-project",
  "integration": "slack"
}

Discovery

browse_search [tier: Free]

Search across GitLab resources globally or within a scope. Actions: global (entire instance), project (within specific project), group (within specific group). Searchable: projects, issues, merge_requests, milestones, users, blobs (code), commits, wiki_blobs, notes.

Actions

ActionTierDescription
globalFreeSearch across entire GitLab instance
projectFreeSearch within a specific project
groupFreeSearch within a specific group and its subgroups

Parameters

Common (all actions):

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
scopestringYesSearch scope determining what type of resources to search
searchstringYesSearch query string (minimum 1 character)
confidentialbooleanNoFilter by confidentiality (for issues scope, Premium only)
order_bystringNoSort results by field
pageintegerNoPage number
sortstringNoSort direction
statestringNoFilter by state (for issues and merge_requests scopes)

Action group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path (e.g., 'my-group' or '123')

Action project:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path (e.g., 'group/project' or '123')
refstringNoBranch/tag reference for code search (blobs, commits)

Example

json
{
  "action": "global",
  "scope": "projects",
  "search": "example_search",
  "per_page": 10
}

Session

manage_context [tier: Free]

View and manage runtime session configuration. Actions: show (current host/preset/scope/mode), list_presets (available tool configurations), list_profiles (OAuth users), whoami (token introspection with live refresh - detects permission changes and updates available tools), switch_preset (change active preset), switch_profile (change OAuth user), set_scope (restrict to namespace), reset (restore initial state). Use whoami to diagnose access issues and verify token permissions.

Actions

ActionTierDescription
showFreeDisplay current context including host, preset, scope, and mode
list_presetsFreeList all available presets with descriptions
list_profilesFreeList available OAuth profiles - only works in OAuth mode
switch_presetFreeSwitch to a different preset configuration
switch_profileFreeSwitch to a different OAuth profile - OAuth mode only
set_scopeFreeSet scope to restrict operations to a namespace
resetFreeReset context to initial state from session start
whoamiFreeGet authentication status, token capabilities, and server configuration. Re-introspects token to detect permission changes - if scopes changed, automatically refreshes available tools (scopesRefreshed=true in response). Use to diagnose access issues or verify new token permissions are active.

Parameters

Action set_scope:

ParameterTypeRequiredDescription
includeSubgroupsbooleanYesInclude subgroups when scope is a group (default: true)
namespacestringYesNamespace path (e.g., 'my-group' or 'group/project') - type is auto-detected

Action switch_preset:

ParameterTypeRequiredDescription
presetstringYesName of the preset to activate

Action switch_profile:

ParameterTypeRequiredDescription
profilestringYesName of the profile to activate

Example

json
{
  "action": "show"
}

Released under the Apache 2.0 License.