Skip to content

GitLab MCP Tools Reference

Auto-generated from source code. Do not edit manually. Generated: 2026-06-25 | Tools: 58 | Version: 9.1.1

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.
activebooleanNoFilter by active status. true = exclude archived AND pending-deletion projects; false = only archived/pending-deletion. Uses the native GitLab 18.5+ filter; on older instances it falls back to the archived filter (pending-deletion projects are already hidden from default listings). When omitted, active projects are listed as before.
archivedbooleanNoFilter by archive status. true=archived only, false=active only.
group_idstringNoGroup ID to list projects within. If omitted, lists YOUR accessible projects.
include_deletedbooleanNoInclude projects pending deletion (soft-deleted, within the cooldown window). Admin only: lists projects scheduled for purge so they can be reviewed or restored. Ignored for group_id scope.
include_subgroupsbooleanNoInclude projects from subgroups (requires group_id).
marked_for_deletion_onstringNoFilter projects scheduled for deletion on this exact date (YYYY-MM-DD). Premium/Ultimate only. Combine with include_deleted to review projects purging on a given day. Ignored for group_id scope.
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), restore (recover a soft-deleted project before purge), archive/unarchive (toggle read-only), transfer (move to different namespace). Related: browse_projects for discovery, including include_deleted to find restorable projects.

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
restoreFreeRestore a soft-deleted project within its deletion cooldown window (default 7 days). Fails once the project has been purged. Requires project Owner or instance Administrator.

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 restore:

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path of the project to restore.

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.
issues_templatestringNoPremium+: default description template for new issues.
jobs_enabledbooleanNoEnable CI/CD jobs.
lfs_enabledbooleanNoEnable Git LFS.
merge_pipelines_enabledbooleanNoPremium+: enable merged results pipelines.
merge_requests_enabledbooleanNoEnable merge requests.
merge_requests_templatestringNoPremium+: default description template for new merge requests.
merge_trains_enabledbooleanNoPremium+: enable merge trains (requires merge_pipelines_enabled).
namestringNoNew project name.
only_allow_merge_if_all_discussions_are_resolvedbooleanNoRequire resolved discussions for merge.
only_allow_merge_if_all_status_checks_passedbooleanNoUltimate: block merge until all external status checks pass.
only_allow_merge_if_pipeline_succeedsbooleanNoRequire passing pipelines for merge.
request_access_enabledbooleanNoAllow access requests.
requirements_access_levelstringNoUltimate: requirements management access level.
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), restore (recover a soft-deleted group before purge; requires GitLab 18.0+). Related: browse_namespaces for discovery.

Actions

ActionTierDescription
createFreeCreate a new group/namespace
updateFreeUpdate group settings
deleteFreeDelete a group permanently
restoreFreeRestore a soft-deleted group within its deletion cooldown window. Requires GitLab 18.0+ (group restore GA in 18.9) and group Owner or instance Administrator.

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.
membership_lockbooleanNoPremium+: prevent members from being added directly to projects in this group.
parent_idnumberNoParent group ID for subgroup.
request_access_enabledbooleanNoAllow access requests.
wiki_access_levelstringNoPremium+: group wiki access level.

Action delete:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path.

Action restore:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path of the group to restore.

Action update:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path.
allowed_email_domains_liststringNoPremium+: comma-separated email domains allowed for group membership.
default_branch_protectionnumberNoBranch protection level: 0=none, 1=partial, 2=full.
descriptionstringNoNew group description.
ip_restriction_rangesstringNoPremium+: comma-separated CIDR ranges that may access the group.
lfs_enabledbooleanNoEnable Git LFS.
membership_lockbooleanNoPremium+: prevent members from being added directly to projects in this group.
namestringNoNew group name.
pathstringNoNew group path (URL-safe).
request_access_enabledbooleanNoAllow access requests.
unique_project_download_limitnumberNoUltimate: max unique project downloads per user before action is taken.
visibilitystringNoNew visibility level.
wiki_access_levelstringNoPremium+: group wiki access 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
overwritebooleanNoIf true, automatically detect which files exist and update them, create others (requires pre-check for each file via GET requests). If false or omitted, only create new files (fails if any file exists). Use true when batch includes mix of new and existing files. Note: Non-404 errors during any pre-check will fail the entire batch.
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
overwritebooleanNoIf true, automatically update existing file or create new one (requires pre-check via GET request). If false or omitted, only create new file (fails if file exists). Use true when unsure if file exists. Note: Non-404 errors (403, 500, etc.) during pre-check will fail the operation.
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), versions (list diff versions from pushes), version (get specific version with diffs). 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
versionsFreeList all diff versions of an MR (each push creates a version)
versionFreeGet specific MR diff version with file changes

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)
exclude_generatedbooleanNoExclude build output and minified files: dist/**, **/.min.js, **/.map, etc. (default: false)
exclude_lockfilesbooleanNoExclude common lock files: yarn.lock, package-lock.json, Cargo.lock, etc. (default: false)
exclude_patternsstring[]NoCustom glob patterns to exclude (e.g., ['vendor/**', '*.generated.ts'])
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

Action version:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
version_idstringYesDiff version ID from versions list

Action versions:

ParameterTypeRequiredDescription
merge_request_iidstringYesInternal MR ID unique to project
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number

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), delete_timelog (remove a time tracking entry by its global ID), 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
delete_timelogFreeDelete a time tracking entry from 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 delete_timelog:

ParameterTypeRequiredDescription
timelogIdstringYesGlobal ID of the timelog entry (gid://gitlab/Timelog/N) — obtain from work item's TIME_TRACKING widget via browse_work_items get action

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
verificationStatusstringNoSet verification status for requirement work items: PASSED or FAILED (Ultimate tier). Creates a test report internally.
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 pipelines and play/retry/cancel 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
per_pageintegerNoMaximum number of lines to return (default: 200, max: 10000). Use with start for pagination
startnumberNoStart from specific line number (0-based). Positive from beginning, negative from end (e.g., -100 = last 100 lines). Use nextStart from previous response to paginate

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 and individual jobs. Pipeline actions: create (run pipeline on ref with variables or typed inputs), retry (re-run failed jobs), cancel (stop running pipeline). Job actions: play_job (trigger a manual/delayed job with variables), retry_job (re-run a single job), cancel_job (stop a running job). Related: browse_pipelines actions 'job'/'logs' for job details.

Actions

ActionTierDescription
createFreeTrigger a new pipeline on branch/tag
retryFreeRe-run a failed/canceled pipeline
cancelFreeStop a running pipeline
play_jobFreeTrigger a manual job
retry_jobFreeRe-run a failed/canceled job
cancel_jobFreeStop a running job

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject ID or URL-encoded path

Action cancel:

ParameterTypeRequiredDescription
pipeline_idstringYesThe ID of the pipeline

Action cancel_job:

ParameterTypeRequiredDescription
job_idstringYesThe ID of the job
forcebooleanNoForce cancellation of the job

Action create:

ParameterTypeRequiredDescription
refstringYesThe branch or tag to run the pipeline on
inputsobjectNoTyped pipeline inputs defined in .gitlab-ci.yml spec (GitLab 15.5+). Keys must match input names in pipeline spec.
variablesobject[]NoLegacy variables to pass to the pipeline (key-value pairs with optional type)

Action play_job:

ParameterTypeRequiredDescription
job_idstringYesThe ID of the job
job_variables_attributesobject[]NoVariables to pass to the job

Action retry:

ParameterTypeRequiredDescription
pipeline_idstringYesThe ID of the pipeline

Action retry_job:

ParameterTypeRequiredDescription
job_idstringYesThe ID of the job

Example

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

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

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
showUnknownDisplay current context including host, preset, scope, and mode
list_presetsUnknownList all available presets with descriptions
list_profilesUnknownList available OAuth profiles - only works in OAuth mode
switch_presetUnknownSwitch to a different preset configuration
switch_profileUnknownSwitch to a different OAuth profile - OAuth mode only
set_scopeUnknownSet scope to restrict operations to a namespace
resetUnknownReset context to initial state from session start
whoamiUnknownGet 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"
}

Other

browse_job_token_scope [tier: Free]

Inspect a project CI/CD job token inbound access scope. Actions: get (the inbound/outbound scope toggles), list_projects (projects allowed to reach this project via CI_JOB_TOKEN), list_groups (groups on the allowlist). Related: manage_job_token_scope to change the allowlist.

Actions

ActionTierDescription
getFreeGet the job token scope settings (inbound_enabled / outbound_enabled)
list_projectsFreeList projects on the inbound job token allowlist for this project
list_groupsFreeList groups on the inbound job token allowlist for this project

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject whose job token scope is inspected. Numeric ID or URL-encoded path (e.g. 'group/project' or '123').

Action list_groups:

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

Action list_projects:

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

Example

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

manage_job_token_scope [tier: Free]

Manage a project CI/CD job token inbound allowlist. Actions: set_enabled (turn allowlist enforcement on/off), add_project / remove_project (grant or revoke a project), add_group / remove_group (grant or revoke a group). Required to allow cross-project CI_JOB_TOKEN access once the legacy open-access mode is removed. Related: browse_job_token_scope to inspect.

Actions

ActionTierDescription
set_enabledFreeEnable or disable inbound job token access restriction (allowlist enforcement)
add_projectFreeAdd a project to the inbound job token allowlist
remove_projectFreeRemove a project from the inbound job token allowlist
add_groupFreeAdd a group to the inbound job token allowlist
remove_groupFreeRemove a group from the inbound job token allowlist

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringYesProject whose job token scope is modified. Numeric ID or URL-encoded path (e.g. 'group/project' or '123').

Action add_group:

ParameterTypeRequiredDescription
target_group_idintegerYesNumeric ID of the group to add/remove from the inbound allowlist.

Action add_project:

ParameterTypeRequiredDescription
target_project_idintegerYesNumeric ID of the project to add/remove from the inbound allowlist.

Action remove_group:

ParameterTypeRequiredDescription
target_group_idintegerYesNumeric ID of the group to add/remove from the inbound allowlist.

Action remove_project:

ParameterTypeRequiredDescription
target_project_idintegerYesNumeric ID of the project to add/remove from the inbound allowlist.

Action set_enabled:

ParameterTypeRequiredDescription
enabledbooleanYesWhen true, only allowlisted projects/groups may access this project via CI_JOB_TOKEN.

Example

json
{
  "action": "set_enabled",
  "project_id": "my-group/my-project",
  "enabled": true
}

browse_deploy_keys [tier: Free]

List and inspect deploy keys (SSH keys granting repo access to CI/automation). Actions: list (a project’s keys, or all instance keys when project_id is omitted — admin only), get (a single project key by ID). Related: manage_deploy_key to add/enable/update/delete.

Actions

ActionTierDescription
listFreeList deploy keys. With project_id: the keys on that project. Without project_id: all deploy keys across the instance (requires admin).
getFreeGet a single project deploy key by ID

Parameters

Common (all actions):

ParameterTypeRequiredDescription
project_idstringNoProject to list keys for. Omit to list all instance deploy keys (admin only).

Action get:

ParameterTypeRequiredDescription
key_idintegerYesNumeric deploy key ID.

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
publicbooleanNoInstance list only: when true, return only the public (non-sensitive) fields.

Example

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

manage_deploy_key [tier: Free]

Add, enable, update, or remove project deploy keys. Actions: add (register a new SSH public key with title and optional push access/expiry), enable (attach an existing key from another project), update (change title or can_push), delete (remove from this project). Related: browse_deploy_keys to inspect.

Actions

ActionTierDescription
addFreeAdd a deploy key to the project
enableFreeEnable an existing deploy key (from another project) on this project
updateFreeUpdate a deploy key title or push permission
deleteFreeRemove a deploy key from the project

Parameters

Common (all actions):

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

Action add:

ParameterTypeRequiredDescription
keystringYesThe SSH public key (e.g. "ssh-ed25519 AAAA... comment").
titlestringYesHuman-readable name for the deploy key.
can_pushbooleanNoWhether the key may push to the repository (read/write). Default false (read-only).
expires_atstringNoOptional expiry date in YYYY-MM-DD format (e.g. "2026-12-31").

Action delete:

ParameterTypeRequiredDescription
key_idintegerYesNumeric deploy key ID.

Action enable:

ParameterTypeRequiredDescription
key_idintegerYesNumeric deploy key ID.

Action update:

ParameterTypeRequiredDescription
key_idintegerYesNumeric deploy key ID.
can_pushbooleanNoWhether the key may push to the repository (read/write). Default false (read-only).
titlestringNoNew title for the deploy key.

Example

json
{
  "action": "add",
  "project_id": "my-group/my-project",
  "title": "Example title",
  "key": "example_key"
}

browse_environments [tier: Free]

Inspect project environments and their deployments. Actions: list (environments filtered by state/name), get (single environment with its last deployment), list_deployments (deployment history, filterable by environment and status). Related: manage_environment to create, update, stop, or delete environments and update deployment status.

Actions

ActionTierDescription
listFreeList environments for a project
getFreeGet a single environment by ID, including its last deployment
list_deploymentsFreeList deployments for a project, optionally filtered by environment

Parameters

Common (all actions):

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

Action get:

ParameterTypeRequiredDescription
environment_idintegerYesNumeric ID of the environment

Action list:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
namestringNoReturn the environment with this exact name
pageintegerNoPage number
searchstringNoReturn environments matching this search term (min 3 characters)
statesstringNoFilter environments by state

Action list_deployments:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
environmentstringNoFilter deployments by environment name
finished_afterstringNoReturn deployments finished after this ISO 8601 date (requires order_by=finished_at)
finished_beforestringNoReturn deployments finished before this ISO 8601 date (requires order_by=finished_at)
order_bystringNoOrder deployments by field (default: id)
pageintegerNoPage number
sortstringNoSort direction (default: asc)
statusstringNoFilter deployments by status
updated_afterstringNoReturn deployments updated after this ISO 8601 date
updated_beforestringNoReturn deployments updated before this ISO 8601 date

Example

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

manage_environment [tier: Free]

Create and control project environments and deployment status. Actions: create (new environment), update (external_url/tier/description), stop (required before delete), delete (stopped environment), update_deployment_status (set a non-pipeline deployment to running/success/failed/canceled). Related: browse_environments to list and inspect.

Actions

ActionTierDescription
createFreeCreate a new environment
updateFreeUpdate an existing environment (name cannot be changed via the API)
stopFreeStop an environment (required before it can be deleted)
deleteFreeDelete a stopped environment
update_deployment_statusFreeUpdate the status of a deployment. Only deployments not tied to a pipeline job can be updated.

Parameters

Common (all actions):

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

Action create:

ParameterTypeRequiredDescription
namestringYesName of the environment
descriptionstringNoDescription of the environment
external_urlstringNoURL where the deployed environment can be reached (e.g., https://staging.example.com)
tierstringNoDeployment tier of the environment

Action delete:

ParameterTypeRequiredDescription
environment_idintegerYesNumeric ID of the environment

Action stop:

ParameterTypeRequiredDescription
environment_idintegerYesNumeric ID of the environment
forcebooleanNoForce the stop, skipping the on_stop action if one is defined

Action update:

ParameterTypeRequiredDescription
environment_idintegerYesNumeric ID of the environment
descriptionstringNoDescription of the environment
external_urlstringNoURL where the deployed environment can be reached (e.g., https://staging.example.com)
tierstringNoDeployment tier of the environment

Action update_deployment_status:

ParameterTypeRequiredDescription
deployment_idintegerYesNumeric ID of the deployment to update
statusstringYesNew deployment status

Example

json
{
  "action": "create",
  "project_id": "my-group/my-project",
  "name": "example_name"
}

browse_registry [tier: Free]

Inspect the GitLab Container Registry. Actions: list_repositories (a project's image repositories), get_repository (single repository by ID), list_tags (tags of a repository), get_tag (single tag with manifest digest, size, and timestamps). Related: manage_registry to delete repositories and tags (including regex bulk cleanup).

Actions

ActionTierDescription
list_repositoriesFreeList a project's container registry repositories
get_repositoryFreeGet a single container repository by its numeric ID
list_tagsFreeList tags of a container repository
get_tagFreeGet a single tag with its manifest digest, size, and timestamps

Parameters

Action get_repository:

ParameterTypeRequiredDescription
repository_idintegerYesNumeric ID of the container repository (from list_repositories)

Action get_tag:

ParameterTypeRequiredDescription
repository_idintegerYesNumeric ID of the container repository (from list_repositories)
tag_namestringYesContainer image tag name (e.g., "latest", "v1.2.0")

Action list_repositories:

ParameterTypeRequiredDescription
project_idstringYesProject full path (e.g., 'my-group/my-project') - required by the GraphQL project lookup
afterstringNoCursor for the next page (endCursor from a previous response)
firstintegerNoMax number of items to return (cursor pagination, default 20, max 100)
namestringNoFilter repositories by name (substring match)

Action list_tags:

ParameterTypeRequiredDescription
repository_idintegerYesNumeric ID of the container repository (from list_repositories)
afterstringNoCursor for the next page (endCursor from a previous response)
firstintegerNoMax number of items to return (cursor pagination, default 20, max 100)
namestringNoFilter tags by name (substring match)

Example

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

manage_registry [tier: Free]

Delete GitLab Container Registry repositories and tags. Actions: delete_repository (remove a whole repository), delete_tag (remove one tag), delete_tags_bulk (regex cleanup with keep_n/older_than retention - destructive). Related: browse_registry to inspect before deleting.

Actions

ActionTierDescription
delete_repositoryFreeDelete a container repository (queued as a background operation)
delete_tagFreeDelete a single tag from a container repository
delete_tags_bulkFreeBulk-delete tags by regex with optional retention rules. Destructive and irreversible. Tags are resolved client-side (regex match, keep the newest keep_n, drop only those older than older_than) and then deleted. Always pair name_regex_delete with keep_n and/or older_than to avoid deleting more than intended.

Parameters

Common (all actions):

ParameterTypeRequiredDescription
repository_idintegerYesNumeric ID of the container repository (from browse_registry list_repositories)

Action delete_tag:

ParameterTypeRequiredDescription
tag_namestringYesContainer image tag name to delete

Action delete_tags_bulk:

ParameterTypeRequiredDescription
name_regex_deletestringYesRegex for tag names to delete (e.g., ".*" for all, "^v.+" for version tags)
keep_nintegerNoKeep the N most recently created matching tags
name_regex_keepstringNoRegex for tag names to always keep (takes precedence over name_regex_delete)
older_thanstringNoOnly delete tags created longer ago than this duration (e.g., "7d", "12h")

Example

json
{
  "action": "delete_repository",
  "repository_id": "123"
}

browse_access_tokens [tier: Free]

Inspect access tokens (CI/automation credentials). Actions: list_personal (the current user's PATs; admins may filter by user_id), list_project / list_group (a project's or group's tokens), get (a single token by ID - pass project_id or group_id for project/group tokens, neither for personal). Related: manage_access_token to create, rotate, or revoke.

Actions

ActionTierDescription
list_personalFreeList personal access tokens for the current user (admins may filter by user_id)
list_projectFreeList a project access tokens
list_groupFreeList a group access tokens
getFreeGet a single access token by ID. Pass project_id for a project token, group_id for a group token, or neither for a personal token.

Parameters

Action get:

ParameterTypeRequiredDescription
token_idintegerYesNumeric access-token ID (from a list action).
group_idstringNoSet for a group access token.
project_idstringNoSet for a project access token.

Action list_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path (e.g. 'my-group' or '42').
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
statestringNoFilter by token state.

Action list_personal:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
pageintegerNoPage number
revokedbooleanNoFilter by revoked state.
searchstringNoFilter by token name substring.
statestringNoFilter by token state.
user_idintegerNoAdmin only: list PATs belonging to this user ID.

Action list_project:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
project_idstringYesProject ID or URL-encoded path (e.g. 'group/project' or '123').
pageintegerNoPage number
statestringNoFilter by token state.

Example

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

manage_access_token [tier: Free]

Create, rotate, or revoke access tokens. Actions: create_project / create_group (issue a new token with name + scopes, returns the value once), rotate (revoke the old token and return a new value), revoke (delete a token permanently). For rotate/revoke pass project_id or group_id for project/group tokens, neither for personal. Related: browse_access_tokens to discover token IDs.

Actions

ActionTierDescription
create_projectFreeCreate a project access token (returns the value once)
create_groupFreeCreate a group access token (returns the value once)
rotateFreeRotate a token: revoke the old one and return a new value. Pass project_id for a project token, group_id for a group token, or neither for a personal token.
revokeFreeRevoke a token permanently. Pass project_id for a project token, group_id for a group token, or neither for a personal token.

Parameters

Action create_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path (e.g. 'my-group' or '42').
namestringYesHuman-readable token name.
scopesstring[]YesToken scopes, e.g. ['api'], ['read_repository','write_repository']. At least one required.
access_levelnumbernumbernumber
expires_atstringNoExpiry date in YYYY-MM-DD format (e.g. "2026-12-31").

Action create_project:

ParameterTypeRequiredDescription
namestringYesHuman-readable token name.
project_idstringYesProject ID or URL-encoded path (e.g. 'group/project' or '123').
scopesstring[]YesToken scopes, e.g. ['api'], ['read_repository','write_repository']. At least one required.
access_levelnumbernumbernumber
expires_atstringNoExpiry date in YYYY-MM-DD format (e.g. "2026-12-31").

Action revoke:

ParameterTypeRequiredDescription
token_idintegerYesNumeric access-token ID (from a list action).
group_idstringNoSet for a group access token.
project_idstringNoSet for a project access token.

Action rotate:

ParameterTypeRequiredDescription
token_idintegerYesNumeric access-token ID (from a list action).
expires_atstringNoExpiry date in YYYY-MM-DD format (e.g. "2026-12-31").
group_idstringNoSet for a group access token.
project_idstringNoSet for a project access token.

Example

json
{
  "action": "create_project",
  "project_id": "my-group/my-project",
  "name": "example_name",
  "scopes": []
}

browse_runners [tier: Free]

Inspect CI runners. Actions: list_all (every runner on the instance - admin), list_owned (the current user's runners), list_project / list_group (runners available to a project/group), get (single runner by ID), list_jobs (jobs a runner has executed). Related: manage_runner to register, update, pause/resume, or delete runners.

Actions

ActionTierDescription
list_allFreeList all runners on the instance (requires admin / elevated access)
list_ownedFreeList runners owned by the current user
list_projectFreeList runners available to a project
list_groupFreeList runners available to a group
getFreeGet a single runner by its numeric ID
list_jobsFreeList jobs that have run on a runner

Parameters

Action get:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from a list action); expanded to a global ID internally

Action list_all:

ParameterTypeRequiredDescription
afterstringNoCursor for the next page (endCursor)
firstintegerNoMax items to return (cursor pagination, default 20, max 100)
pausedbooleanNoFilter by paused state
searchstringNoFilter by description/token substring
statusstringNoFilter by runner status
tag_liststring[]NoFilter by runners that have ALL of these tags
typestringNoFilter by runner type

Action list_group:

ParameterTypeRequiredDescription
group_idstringYesGroup full path (e.g., 'my-group' or 'my-group/sub') - required by the GraphQL group lookup
afterstringNoCursor for the next page (endCursor)
firstintegerNoMax items to return (cursor pagination, default 20, max 100)
pausedbooleanNoFilter by paused state
searchstringNoFilter by description/token substring
statusstringNoFilter by runner status
tag_liststring[]NoFilter by runners that have ALL of these tags
typestringNoFilter by runner type

Action list_jobs:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from a list action); expanded to a global ID internally
afterstringNoCursor for the next page (endCursor)
firstintegerNoMax items to return (cursor pagination, default 20, max 100)
statusesstring[]NoFilter jobs by one or more statuses (e.g. ["FAILED", "CANCELED"])

Action list_owned:

ParameterTypeRequiredDescription
afterstringNoCursor for the next page (endCursor)
firstintegerNoMax items to return (cursor pagination, default 20, max 100)
pausedbooleanNoFilter by paused state
searchstringNoFilter by description/token substring
statusstringNoFilter by runner status
tag_liststring[]NoFilter by runners that have ALL of these tags
typestringNoFilter by runner type

Action list_project:

ParameterTypeRequiredDescription
project_idstringYesProject full path (e.g., 'my-group/my-project') - required by the GraphQL project lookup
afterstringNoCursor for the next page (endCursor)
firstintegerNoMax items to return (cursor pagination, default 20, max 100)
pausedbooleanNoFilter by paused state
searchstringNoFilter by description/token substring
statusstringNoFilter by runner status
tag_liststring[]NoFilter by runners that have ALL of these tags
typestringNoFilter by runner type

Example

json
{
  "action": "list_all"
}

manage_runner [tier: Free]

Register and control CI runners. Actions: create_authentication_token (register a runner, GitLab 16+, returns a one-time token), update (settings), pause/resume (toggle job pickup), delete, reset_authentication_token (rotate the token). Related: browse_runners to discover runners.

Actions

ActionTierDescription
create_authentication_tokenFreeCreate a new runner and return its one-time authentication token (GitLab 16+ flow). For GROUP_TYPE pass group_id; for PROJECT_TYPE pass project_id.
updateFreeUpdate a runner's settings
pauseFreePause a runner (stops it picking up new jobs)
resumeFreeResume a paused runner
deleteFreeDelete a runner permanently
reset_authentication_tokenFreeRotate the runner authentication token, returning the new value

Parameters

Action create_authentication_token:

ParameterTypeRequiredDescription
runner_typestringYesRunner scope. INSTANCE_TYPE needs admin; GROUP_TYPE/PROJECT_TYPE need the namespace
access_levelstringNoAccess level: NOT_PROTECTED or REF_PROTECTED (protected refs only)
descriptionstringNoRunner description
group_idstringNoGroup full path for a group runner (e.g., 'my-group')
lockedbooleanNoLock the runner to its current projects
maintenance_notestringNoFree-form maintenance note (Markdown)
maximum_timeoutintegerNoMaximum job timeout in seconds
pausedbooleanNoWhether the runner is paused (ignores new jobs)
project_idstringNoProject full path for a project runner (e.g., 'my-group/my-project')
run_untaggedbooleanNoAllow running untagged jobs
tag_liststring[]NoTags that determine which jobs run

Action delete:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from browse_runners); expanded to a global ID internally

Action pause:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from browse_runners); expanded to a global ID internally

Action reset_authentication_token:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from browse_runners); expanded to a global ID internally

Action resume:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from browse_runners); expanded to a global ID internally

Action update:

ParameterTypeRequiredDescription
runner_idintegerYesNumeric ID of the runner (from browse_runners); expanded to a global ID internally
access_levelstringNoAccess level: NOT_PROTECTED or REF_PROTECTED (protected refs only)
descriptionstringNoRunner description
lockedbooleanNoLock the runner to its current projects
maintenance_notestringNoFree-form maintenance note (Markdown)
maximum_timeoutintegerNoMaximum job timeout in seconds
pausedbooleanNoWhether the runner is paused (ignores new jobs)
run_untaggedbooleanNoAllow running untagged jobs
tag_liststring[]NoTags that determine which jobs run

Example

json
{
  "action": "create_authentication_token",
  "runner_type": "INSTANCE_TYPE"
}

browse_audit_events [tier: Premium]

Inspect audit events: the immutable record of who did what, when. Actions: list_instance (instance-wide, admin-only), list_group / list_project (a group or project audit trail), get (a single event by ID - pass project_id or group_id for group/project events, neither for an instance event). Premium/Ultimate feature; there is no write counterpart because audit events cannot be modified.

Actions

ActionTierDescription
list_instancePremiumList instance-wide audit events (requires admin; Premium+)
list_groupPremiumList a group audit events (Premium+, group owner/admin)
list_projectPremiumList a project audit events (Premium+, project owner/admin)
getPremiumGet a single audit event by ID. Pass project_id for a project event, group_id for a group event, or neither for an instance event (admin).

Parameters

Action get:

ParameterTypeRequiredDescription
audit_event_idintegerYesNumeric audit-event ID (from a list action).
group_idstringNoSet for a group audit event.
project_idstringNoSet for a project audit event.

Action list_group:

ParameterTypeRequiredDescription
group_idstringYesGroup ID or URL-encoded path (e.g. 'my-group' or '42').
per_pageintegerYesNumber of items per page (default: 20, max: 100)
created_afterstringNoReturn events created on or after this date (YYYY-MM-DD).
created_beforestringNoReturn events created on or before this date (YYYY-MM-DD).
pageintegerNoPage number

Action list_instance:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
created_afterstringNoReturn events created on or after this date (YYYY-MM-DD).
created_beforestringNoReturn events created on or before this date (YYYY-MM-DD).
entity_idintegerNoFilter by the numeric ID of the entity (used with entity_type).
entity_typestringNoFilter by entity type, e.g. 'User', 'Group', 'Project', 'Key'.
pageintegerNoPage number

Action list_project:

ParameterTypeRequiredDescription
per_pageintegerYesNumber of items per page (default: 20, max: 100)
project_idstringYesProject ID or URL-encoded path (e.g. 'group/project' or '123').
created_afterstringNoReturn events created on or after this date (YYYY-MM-DD).
created_beforestringNoReturn events created on or before this date (YYYY-MM-DD).
pageintegerNoPage number

Example

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

browse_vulnerabilities [tier: Ultimate]

Inspect security vulnerabilities (Ultimate). Actions: list (a project, a group, or the whole instance when neither id is given; filter by state, severity, report_type), get (a single vulnerability by ID with full detail). Related: manage_vulnerability to dismiss, confirm, resolve, or revert findings.

Actions

ActionTierDescription
listUltimateList vulnerabilities. Pass project_id for a project, group_id for a group, or neither for an instance-wide view (admin).
getUltimateGet a single vulnerability by its numeric ID.

Parameters

Action get:

ParameterTypeRequiredDescription
vulnerability_idintegerYesNumeric vulnerability ID (from a list action); expanded to a global ID internally.

Action list:

ParameterTypeRequiredDescription
afterstringNoCursor for the next page (endCursor).
firstintegerNoMax items to return (cursor pagination, default 20, max 100).
group_idstringNoGroup full path or ID to scope the list.
project_idstringNoProject full path or ID to scope the list.
report_typestring[]NoFilter by scanner report type(s).
severitystring[]NoFilter by severity level(s).
sortstringNoSort order (default: severity_desc).
statestring[]NoFilter by vulnerability state(s).

Example

json
{
  "action": "list"
}

manage_vulnerability [tier: Ultimate]

Drive the vulnerability state machine (Ultimate). Actions: dismiss (with optional dismissal_reason + comment), confirm (genuine finding), resolve (fixed), revert (back to detected). Related: browse_vulnerabilities to discover vulnerability IDs.

Actions

ActionTierDescription
dismissUltimateDismiss a vulnerability (e.g. false positive), optionally with a reason and comment
confirmUltimateConfirm a vulnerability as a genuine finding
resolveUltimateMark a vulnerability as resolved
revertUltimateRevert a vulnerability back to the detected state (un-dismiss / un-resolve)

Parameters

Common (all actions):

ParameterTypeRequiredDescription
vulnerability_idintegerYesNumeric vulnerability ID (from a list action); expanded to a global ID internally.

Action dismiss:

ParameterTypeRequiredDescription
commentstringNoFree-text justification for the dismissal.
dismissal_reasonstringNoStructured dismissal reason.

Example

json
{
  "action": "dismiss",
  "vulnerability_id": "123"
}

Released under the Apache 2.0 License.