Skip to content

Groups

Everything done to a group: create, read, list, search, update, archive, transfer, delete and restore it; its subgroups, projects and issues; its members and its sharing with other groups; its labels, milestones, boards and badges; uploads and its avatar; export and import; its releases; and its service accounts with their personal access tokens. Labels, milestones, boards, members and the rest have no group of their own: each is a set of actions here.

From Premium the group also carries webhooks, push rules, protected branches and environments, epics with their notes, discussions, issues and boards, group wikis, LDAP and SAML group links, SSH certificates, billable members and activity counts; from Ultimate, the credentials inventory and security settings.

group.transfer needs the Owner role on both the group being moved and its new parent; group.transfer_locations lists the parents it can go under. Since GitLab 19.4 GitLab applies the transfer in the background (GitLab 18.11 to 19.3 do so when the groups_and_projects_async_transfer feature flag is enabled), answering with the group where it still is, and the action reads the group back every 2 seconds for up to 45 seconds. A failed move is reported only as a pending to-do item of action transfer_failed for the user who asked for it, which the action turns into an error; a move that has neither landed nor failed by then is answered with transfer_queued set. Read the group back later with group.get, look for that item with user.todo_list, and do not send the transfer again, since GitLab runs a second transfer as well while the first is queued.

  • “List my GitLab groups”
  • “Who are the members of group platform?”
  • “Share group platform with the developers group”
  • “List the open epics of group platform”
  • Dynamic, the default surface: call gitlab_execute_action with action set to the action’s ID, such as group.analytics_issues_count, and its parameters in params. gitlab_find_action finds an ID from a description of the task.
  • Meta (GITLAB_MCP_TOOL_SURFACE=meta): call gitlab_group with action set to the action’s name, such as analytics_issues_count, and its parameters in params.
  • Individual (GITLAB_MCP_TOOL_SURFACE=individual): call the action’s own tool, such as gitlab_get_recently_created_issues_count, with its parameters as the arguments.

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

  • Free: 75
  • Premium: 153
  • Ultimate: 158

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

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

ActionTierIndividual
group.analytics_issues_countPremiumgitlab_get_recently_created_issues_count
group.analytics_members_countPremiumgitlab_get_recently_added_members_count
group.analytics_mr_countPremiumgitlab_get_recently_created_mr_count
group.archiveFreegitlab_group_archive
group.badge_addFreegitlab_add_group_badge
group.badge_deleteFreegitlab_delete_group_badge
group.badge_editFreegitlab_edit_group_badge
group.badge_getFreegitlab_get_group_badge
group.badge_listFreegitlab_list_group_badges
group.badge_previewFreegitlab_preview_group_badge
group.createFreegitlab_group_create
group.credential_delete_ssh_keyUltimategitlab_delete_group_ssh_key
group.credential_list_patsUltimategitlab_list_group_personal_access_tokens
group.credential_list_ssh_keysUltimategitlab_list_group_ssh_keys
group.credential_revoke_patUltimategitlab_revoke_group_personal_access_token
group.deleteFreegitlab_group_delete
group.epic_board_getPremiumgitlab_group_epic_board_get
group.epic_board_listPremiumgitlab_group_epic_board_list
group.epic_createPremiumgitlab_epic_create
group.epic_deletePremiumgitlab_epic_delete
group.epic_discussion_add_notePremiumgitlab_add_epic_discussion_note
group.epic_discussion_createPremiumgitlab_create_epic_discussion
group.epic_discussion_delete_notePremiumgitlab_delete_epic_discussion_note
group.epic_discussion_getPremiumgitlab_get_epic_discussion
group.epic_discussion_listPremiumgitlab_list_epic_discussions
group.epic_discussion_update_notePremiumgitlab_update_epic_discussion_note
group.epic_getPremiumgitlab_epic_get
group.epic_get_linksPremiumgitlab_epic_get_links
group.epic_issue_assignPremiumgitlab_epic_issue_assign
group.epic_issue_listPremiumgitlab_epic_issue_list
group.epic_issue_removePremiumgitlab_epic_issue_remove
group.epic_issue_updatePremiumgitlab_epic_issue_update
group.epic_listPremiumgitlab_epic_list
group.epic_note_createPremiumgitlab_epic_note_create
group.epic_note_deletePremiumgitlab_epic_note_delete
group.epic_note_getPremiumgitlab_epic_note_get
group.epic_note_listPremiumgitlab_epic_note_list
group.epic_note_updatePremiumgitlab_epic_note_update
group.epic_updatePremiumgitlab_epic_update
group.event_epic_label_getPremiumgitlab_get_group_epic_label_event
group.event_epic_label_listPremiumgitlab_list_group_epic_label_events
group.getFreegitlab_group_get
group.group_billable_member_memberships_listPremiumgitlab_list_billable_member_memberships
group.group_billable_member_removePremiumgitlab_remove_billable_group_member
group.group_billable_members_listPremiumgitlab_list_billable_group_members
group.group_board_createPremiumgitlab_group_board_create
group.group_board_create_listFreegitlab_group_board_list_create
group.group_board_deletePremiumgitlab_group_board_delete
group.group_board_delete_listFreegitlab_group_board_list_delete
group.group_board_getFreegitlab_group_board_get
group.group_board_get_listFreegitlab_group_board_list_get
group.group_board_listFreegitlab_group_board_list
group.group_board_list_listsFreegitlab_group_board_list_lists
group.group_board_updateFreegitlab_group_board_update
group.group_board_update_listFreegitlab_group_board_list_update
group.group_export_downloadFreegitlab_download_group_export
group.group_export_scheduleFreegitlab_schedule_group_export
group.group_import_fileFreegitlab_import_group_from_file
group.group_label_createFreegitlab_group_label_create
group.group_label_deleteFreegitlab_group_label_delete
group.group_label_getFreegitlab_group_label_get
group.group_label_listFreegitlab_group_label_list
group.group_label_subscribeFreegitlab_group_label_subscribe
group.group_label_unsubscribeFreegitlab_group_label_unsubscribe
group.group_label_updateFreegitlab_group_label_update
group.group_member_addFreegitlab_group_member_add
group.group_member_editFreegitlab_group_member_edit
group.group_member_getFreegitlab_group_member_get
group.group_member_get_inheritedFreegitlab_group_member_get_inherited
group.group_member_removeFreegitlab_group_member_remove
group.group_member_shareFreegitlab_group_share
group.group_member_unshareFreegitlab_group_unshare
group.group_milestone_burndownPremiumgitlab_group_milestone_burndown_events
group.group_milestone_createFreegitlab_group_milestone_create
group.group_milestone_deleteFreegitlab_group_milestone_delete
group.group_milestone_getFreegitlab_group_milestone_get
group.group_milestone_issuesFreegitlab_group_milestone_issues
group.group_milestone_listFreegitlab_group_milestone_list
group.group_milestone_merge_requestsFreegitlab_group_milestone_merge_requests
group.group_milestone_updateFreegitlab_group_milestone_update
group.group_relations_list_statusFreegitlab_list_group_relations_export_status
group.group_relations_scheduleFreegitlab_schedule_group_relations_export
group.group_upload_delete_by_idFreegitlab_delete_group_markdown_upload_by_id
group.group_upload_delete_by_secretFreegitlab_delete_group_markdown_upload_by_secret
group.group_upload_listFreegitlab_list_group_markdown_uploads
group.hook_addPremiumgitlab_group_hook_add
group.hook_deletePremiumgitlab_group_hook_delete
group.hook_delete_custom_headerPremiumgitlab_group_hook_delete_custom_header
group.hook_delete_url_variablePremiumgitlab_group_hook_delete_url_variable
group.hook_editPremiumgitlab_group_hook_edit
group.hook_getPremiumgitlab_group_hook_get
group.hook_listPremiumgitlab_group_hook_list
group.hook_resend_eventPremiumgitlab_group_hook_resend_event
group.hook_set_custom_headerPremiumgitlab_group_hook_set_custom_header
group.hook_set_url_variablePremiumgitlab_group_hook_set_url_variable
group.hook_testPremiumgitlab_group_hook_test
group.invited_groupsFreegitlab_group_invited_list
group.issuesFreegitlab_issue_list_group
group.ldap_link_addPremiumgitlab_group_ldap_link_add
group.ldap_link_deletePremiumgitlab_group_ldap_link_delete
group.ldap_link_delete_for_providerPremiumgitlab_group_ldap_link_delete_for_provider
group.ldap_link_listPremiumgitlab_group_ldap_link_list
group.ldap_syncPremiumgitlab_group_ldap_sync
group.listFreegitlab_group_list
group.list_provisioned_usersPremiumgitlab_group_list_provisioned_users
group.membersFreegitlab_group_members_list
group.projectsFreegitlab_group_projects
group.protected_branch_getPremiumgitlab_group_protected_branch_get
group.protected_branch_listPremiumgitlab_group_protected_branch_list
group.protected_branch_protectPremiumgitlab_group_protected_branch_protect
group.protected_branch_unprotectPremiumgitlab_group_protected_branch_unprotect
group.protected_branch_updatePremiumgitlab_group_protected_branch_update
group.protected_env_getPremiumgitlab_group_protected_environment_get
group.protected_env_listPremiumgitlab_group_protected_environment_list
group.protected_env_protectPremiumgitlab_group_protected_environment_protect
group.protected_env_unprotectPremiumgitlab_group_protected_environment_unprotect
group.protected_env_updatePremiumgitlab_group_protected_environment_update
group.push_rule_addPremiumgitlab_group_add_push_rule
group.push_rule_deletePremiumgitlab_group_delete_push_rule
group.push_rule_editPremiumgitlab_group_edit_push_rule
group.push_rule_getPremiumgitlab_group_get_push_rules
group.release_listFreegitlab_group_release_list
group.restoreFreegitlab_group_restore
group.saml_link_addPremiumgitlab_group_saml_link_add
group.saml_link_deletePremiumgitlab_group_saml_link_delete
group.saml_link_getPremiumgitlab_group_saml_link_get
group.saml_link_listPremiumgitlab_group_saml_link_list
group.saml_users_listPremiumgitlab_group_saml_users_list
group.searchFreegitlab_group_search
group.security_settings_updateUltimategitlab_update_group_secret_push_protection
group.service_account_createFreegitlab_group_service_account_create
group.service_account_deleteFreegitlab_group_service_account_delete
group.service_account_getFreegitlab_group_service_account_get
group.service_account_listFreegitlab_group_service_account_list
group.service_account_pat_createFreegitlab_group_service_account_pat_create
group.service_account_pat_listFreegitlab_group_service_account_pat_list
group.service_account_pat_revokeFreegitlab_group_service_account_pat_revoke
group.service_account_pat_rotateFreegitlab_group_service_account_pat_rotate
group.service_account_updateFreegitlab_group_service_account_update
group.share_with_groupFreegitlab_group_share_with_group
group.shared_projectsFreegitlab_group_shared_projects_list
group.shared_withFreegitlab_group_shared_with_list
group.ssh_cert_createPremiumgitlab_create_group_ssh_certificate
group.ssh_cert_deletePremiumgitlab_delete_group_ssh_certificate
group.ssh_cert_listPremiumgitlab_list_group_ssh_certificates
group.subgroupsFreegitlab_subgroups_list
group.transferFreegitlab_group_transfer
group.transfer_locationsFreegitlab_group_transfer_locations
group.transfer_projectFreegitlab_group_transfer_project
group.unarchiveFreegitlab_group_unarchive
group.unshare_from_groupFreegitlab_group_unshare_from_group
group.updateFreegitlab_group_update
group.upload_avatarFreegitlab_group_upload_avatar
group.wiki_createPremiumgitlab_group_wiki_create
group.wiki_deletePremiumgitlab_group_wiki_delete
group.wiki_editPremiumgitlab_group_wiki_edit
group.wiki_getPremiumgitlab_group_wiki_get
group.wiki_listPremiumgitlab_group_wiki_list

Get the count of recently created issues across a group. Returns: the group path and recently created issues count (Premium). See also: group.analytics_mr_count, group.analytics_members_count, group.get.

  • Meta-tool: gitlab_group, action analytics_issues_count
  • Individual tool: gitlab_get_recently_created_issues_count
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_pathstringyesFull path of the group (e.g. my-group or parent/child)

Get the count of recently added members across a group. Returns: the group path and recently added members count (Premium). See also: group.analytics_issues_count, group.analytics_mr_count, group.get.

  • Meta-tool: gitlab_group, action analytics_members_count
  • Individual tool: gitlab_get_recently_added_members_count
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_pathstringyesFull path of the group (e.g. my-group or parent/child)

Get the count of recently created merge requests across a group. Returns: the group path and recently created merge requests count (Premium). See also: group.analytics_issues_count, group.analytics_members_count, group.get.

  • Meta-tool: gitlab_group, action analytics_mr_count
  • Individual tool: gitlab_get_recently_created_mr_count
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_pathstringyesFull path of the group (e.g. my-group or parent/child)

Archive a GitLab group, making it and its projects read-only in GitLab. Returns: a success confirmation. See also: group.unarchive, group.get, group.update.

  • Meta-tool: gitlab_group, action archive
  • Individual tool: gitlab_group_archive
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Add a badge to a group. Returns: the created badge with id, name, link_url, image_url, rendered_link_url, rendered_image_url, and kind. See also: group.badge_list, group.badge_get.

  • Meta-tool: gitlab_group, action badge_add
  • Individual tool: gitlab_add_group_badge
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
image_urlstringyesBadge image URL (supports placeholders)
link_urlstringyesBadge link URL (supports placeholders)
namestringnoBadge name

Delete a group badge by badge_id. Returns: a success confirmation. See also: group.badge_list, group.badge_get.

  • Meta-tool: gitlab_group, action badge_delete
  • Individual tool: gitlab_delete_group_badge
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
badge_idintegeryesBadge ID
group_idstring/integeryesGroup ID or URL-encoded path

Edit a group badge’s name, link_url, or image_url. Returns: the updated badge with id, name, link_url, image_url, rendered_link_url, rendered_image_url, and kind. See also: group.badge_list, group.badge_get.

  • Meta-tool: gitlab_group, action badge_edit
  • Individual tool: gitlab_edit_group_badge
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
badge_idintegeryesBadge ID
group_idstring/integeryesGroup ID or URL-encoded path
image_urlstringnoNew badge image URL
link_urlstringnoNew badge link URL
namestringnoNew badge name. Use name, not new_name

Get a single group badge by badge_id. Returns: the badge with id, name, link_url, image_url, rendered_link_url, rendered_image_url, and kind. See also: group.badge_list, group.badge_edit.

  • Meta-tool: gitlab_group, action badge_get
  • Individual tool: gitlab_get_group_badge
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
badge_idintegeryesBadge ID
group_idstring/integeryesGroup ID or URL-encoded path

List badges for a group, including inherited group badges. Returns: badges (id, name, link_url, image_url, rendered_link_url, rendered_image_url, and kind) plus pagination metadata. See also: group.badge_get, group.badge_add.

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

Preview how a group badge’s link_url and image_url resolve after placeholder interpolation, without persisting it. Returns: the rendered badge with id, name, link_url, image_url, rendered_link_url, rendered_image_url, and kind. See also: group.badge_add, group.badge_list.

  • Meta-tool: gitlab_group, action badge_preview
  • Individual tool: gitlab_preview_group_badge
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
image_urlstringyesBadge image URL with placeholders
link_urlstringyesBadge link URL with placeholders
namestringnoBadge name

Create a GitLab group or subgroup. Returns: created group metadata including ID, full path, and visibility. See also: group.get, group.update, group.delete.

  • Meta-tool: gitlab_group, action create
  • Individual tool: gitlab_group_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
namestringyesGroup name
allow_personal_snippetsbooleannoAllow members to create personal snippets
auto_ban_user_on_excessive_projects_download (Ultimate)booleannoAutomatically ban users who exceed the unique project download limit (Ultimate)
auto_devops_enabledbooleannoEnable Auto DevOps for projects in this group
crm_enabledbooleannoEnable Customer Relations Management (CRM) for the group
default_branchstringnoDefault branch name
default_branch_protectionintegernoDeprecated: default branch protection level (0=none,1=partial,2=full,3=initial push,4=fully protected). Prefer default_branch_protection_defaults
default_branch_protection_defaultsobjectnoDefault branch protection settings object
descriptionstringnoGroup description
duo_availabilitystring (default_on, default_off, never_on)noGitLab Duo availability (default_on, default_off, never_on)
emails_disabledbooleannoDeprecated: disable email notifications. Prefer emails_enabled
emails_enabledbooleannoEnable email notifications
enabled_git_access_protocolstring (ssh, http, all)noAllowed Git access protocol (ssh, http, all)
experiment_features_enabledbooleannoEnable experimental features
extra_shared_runners_minutes_limitintegernoExtra shared runner compute-minutes (administrators only)
lfs_enabledbooleannoEnable Git LFS
math_rendering_limits_enabledbooleannoEnable math rendering limits
membership_lockbooleannoPrevent members from being added to projects in this group
mentions_disabledbooleannoDisable @-mention notifications
organization_idintegernoOrganization ID to create the group in (GitLab.com multi-organization. Defaults to the default organization)
parent_idintegernoParent group ID (creates a subgroup)
pathstringnoGroup URL path (defaults to kebab-case of name)
project_creation_levelstring (noone, maintainer, developer, administrator)noWho can create projects (noone, maintainer, developer)
request_access_enabledbooleannoAllow users to request access
require_two_factor_authenticationbooleannoRequire two-factor authentication for members
share_with_group_lockbooleannoPrevent sharing projects in this group with other groups
shared_runners_minutes_limitintegernoShared runner compute-minutes limit (administrators only)
subgroup_creation_levelstring (owner, maintainer)noWho can create subgroups (owner, maintainer)
two_factor_grace_periodintegernoGrace period in hours before two-factor authentication is enforced
unique_project_download_limit (Ultimate)integernoMax number of unique projects a user can download before being banned (Ultimate)
unique_project_download_limit_alertlist (Ultimate)integer[]noUser IDs notified when the unique project download limit is exceeded (Ultimate)
unique_project_download_limit_allowlist (Ultimate)string[]noUsernames excluded from the unique project download limit (Ultimate)
unique_project_download_limit_interval_in_seconds (Ultimate)integernoTime window in seconds for the unique project download limit (Ultimate)
visibilitystring (private, internal, public)noVisibility level (private, internal, public)
web_based_commit_signing_enabledbooleannoEnable web-based commit signing for projects in this group
wiki_access_levelstring (disabled, private, enabled)noWiki access level (disabled, private, enabled)

Delete an enterprise SSH key in a group. Returns: a success confirmation naming the key and group. See also: group.credential_list_ssh_keys, group.get.

  • Meta-tool: gitlab_group, action credential_delete_ssh_key
  • Individual tool: gitlab_delete_group_ssh_key
  • Tier: Ultimate
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
key_idintegeryesSSH key ID

List a group’s enterprise personal access tokens. Returns: tokens with name, scopes, owner user ID, active/revoked flags, created and last-used dates, expiry, and pagination metadata. See also: group.credential_revoke_pat, group.credential_list_ssh_keys, group.get.

  • Meta-tool: gitlab_group, action credential_list_pats
  • Individual tool: gitlab_list_group_personal_access_tokens
  • Tier: Ultimate
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
created_afterstringnoReturn tokens created on or after this date (YYYY-MM-DD)
created_beforestringnoReturn tokens created on or before this date (YYYY-MM-DD)
last_used_afterstringnoReturn tokens last used on or after this date (YYYY-MM-DD)
last_used_beforestringnoReturn tokens last used on or before this date (YYYY-MM-DD)
order_bystringnoColumn to order keyset-paginated results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
revokedbooleannoFilter by revoked status
searchstringnoFilter tokens by name
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
statestring (active, inactive)noFilter by token state: active or inactive

List a group’s enterprise SSH keys. Returns: keys with title, owner user ID, usage type, created/expiry/last-used dates, and pagination metadata. See also: group.credential_delete_ssh_key, group.credential_list_pats, group.get.

  • Meta-tool: gitlab_group, action credential_list_ssh_keys
  • Individual tool: gitlab_list_group_ssh_keys
  • Tier: Ultimate
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
created_afterstringnoReturn keys created on or after this date (YYYY-MM-DD)
created_beforestringnoReturn keys created on or before this date (YYYY-MM-DD)
expires_afterstringnoReturn keys expiring on or after this date (YYYY-MM-DD)
expires_beforestringnoReturn keys expiring on or before this date (YYYY-MM-DD)
order_bystringnoColumn to order keyset-paginated results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’

Revoke an enterprise personal access token in a group. Returns: a success confirmation naming the token and group. See also: group.credential_list_pats, group.get.

  • Meta-tool: gitlab_group, action credential_revoke_pat
  • Individual tool: gitlab_revoke_group_personal_access_token
  • Tier: Ultimate
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
token_idintegeryesPersonal access token ID

Delete a GitLab group and its projects. Returns: a success confirmation. See also: group.restore, group.get, group.update.

  • Meta-tool: gitlab_group, action delete
  • Individual tool: gitlab_group_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
full_pathstringnoFull path (required when permanently_remove=true)
permanently_removebooleannoPermanently remove instead of marking for deletion

Get a single group epic board by ID (Premium/Ultimate). Returns: the epic board with its group, hide_*_list flags, scope labels, and lists (columns) with their label scope. See also: group.epic_board_list, group.epic_list.

  • Meta-tool: gitlab_group, action epic_board_get
  • Individual tool: gitlab_group_epic_board_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
board_idintegeryesEpic board ID
group_idstring/integeryesGroup ID or URL-encoded path

List all epic boards in a group with pagination (Premium/Ultimate). Returns: each epic board with its group, hide_*_list flags, scope labels, and lists (columns) with their label scope, plus pagination metadata. See also: group.epic_board_get, group.epic_list.

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

Create a new epic in a group, optionally under a parent epic and already linked to others. Returns: the created epic with IID, state, labels, assignees, dates, and web URL. See also: group.epic_get, group.epic_list, group.epic_update.

  • Meta-tool: gitlab_group, action epic_create
  • Individual tool: gitlab_epic_create
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
full_pathstringyesFull path of the group (e.g. my-group)
titlestringyesEpic title
assignee_idsinteger[]noGlobal IDs of assignees
colorstringnoEpic color (hex format, e.g. #FF0000)
confidentialbooleannoWhether the epic is confidential
create_sourcestringnoFree-text label recording what triggered the creation. Used by GitLab for tracking only and never shown on the epic
created_atstringnoCreation timestamp to record instead of now (ISO 8601, e.g. 2025-01-01T00:00:00Z). Honored for group owners and administrators only, and ignored when it cannot be parsed
descriptionstringnoEpic description (Markdown supported)
due_datestringnoDue date (YYYY-MM-DD)
health_status (Ultimate)string (onTrack, needsAttention, atRisk)noHealth status (onTrack/needsAttention/atRisk)
label_idsinteger[]noGlobal IDs of labels
linked_items (Ultimate)objectnoEpics to link to the new one, all with the same link type
milestone_idintegernoGlobal ID of the milestone to assign to the epic
parent_id (Ultimate)integernoGlobal ID of the parent epic, which makes this one a sub-epic in the same call
start_datestringnoStart date (YYYY-MM-DD)
weightintegernoWeight of the epic

Permanently delete an epic from a group. Returns: a success confirmation naming the epic and group. See also: group.epic_get, group.epic_list, group.epic_update.

  • Meta-tool: gitlab_group, action epic_delete
  • Individual tool: gitlab_epic_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

Add a reply note to an existing epic discussion thread. Returns: the created note (id, author username, body, timestamps), plus the status of any quick actions the body carried. See also: group.epic_discussion_create, group.epic_discussion_get, group.epic_discussion_update_note.

  • Meta-tool: gitlab_group, action epic_discussion_add_note
  • Individual tool: gitlab_add_epic_discussion_note
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
bodystringyesNote body (Markdown supported)
discussion_idstringyesDiscussion ID to reply to
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

Create a new discussion thread on a group epic with an initial note. Returns: the created thread (discussion id) with its first note, plus the status of any quick actions the body carried. See also: group.epic_discussion_add_note, group.epic_discussion_list, group.epic_note_create.

  • Meta-tool: gitlab_group, action epic_discussion_create
  • Individual tool: gitlab_create_epic_discussion
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
bodystringyesDiscussion body (Markdown supported)
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

Delete a note from an epic discussion thread (destructive). Returns: a deletion confirmation message. See also: group.epic_discussion_update_note, group.epic_discussion_get, group.epic_discussion_list.

  • Meta-tool: gitlab_group, action epic_discussion_delete_note
  • Individual tool: gitlab_delete_epic_discussion_note
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)
note_idintegeryesNote ID to delete

Get a single epic discussion thread by its discussion id. Returns: the thread with its resolution state and every note (id, author username, body, system and internal flags, timestamps). See also: group.epic_discussion_list, group.epic_discussion_add_note, group.epic_get.

  • Meta-tool: gitlab_group, action epic_discussion_get
  • Individual tool: gitlab_get_epic_discussion
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
discussion_idstringyesDiscussion ID
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

List discussion threads on a group epic with cursor-based keyset pagination. Returns: discussion threads with their resolution state and notes (id, author username, body, system and internal flags, timestamps) and pagination metadata. Pages forward only: this GitLab connection takes first and after, and rejects last and before. See also: group.epic_discussion_get, group.epic_discussion_create, group.epic_get, group.epic_note_list.

  • Meta-tool: gitlab_group, action epic_discussion_list
  • Individual tool: gitlab_list_epic_discussions
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group or my-group/sub-group)
afterstringnoCursor for forward pagination (from previous response end_cursor)
firstintegernoNumber of items to return (default 20, max 100)

Update the body of a note in an epic discussion thread. Returns: the updated note (id, author username, body, timestamps), plus the status of any quick actions the new body carried. See also: group.epic_discussion_add_note, group.epic_discussion_delete_note, group.epic_discussion_get.

  • Meta-tool: gitlab_group, action epic_discussion_update_note
  • Individual tool: gitlab_update_epic_discussion_note
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
bodystringyesUpdated note body
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)
note_idintegeryesNote ID to update

Get a single epic from a group by epic IID. Returns: epic metadata, state, labels, author, assignees, start/due dates, health status, weight, parent, and linked items. See also: group.epic_list, group.epic_update, group.epic_get_links, group.epic_delete.

  • Meta-tool: gitlab_group, action epic_get
  • Individual tool: gitlab_epic_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

List child epics linked to a parent epic. Returns: child epics with state, labels, author, dates, and parent reference. See also: group.epic_get, group.epic_list, group.epic_update.

  • Meta-tool: gitlab_group, action epic_get_links
  • Individual tool: gitlab_epic_get_links
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

Assign an existing project issue as a child of a group epic. Returns: the resolved epic and issue work item GIDs confirming the link. See also: group.epic_issue_list, group.epic_issue_remove, group.epic_get.

  • Meta-tool: gitlab_group, action epic_issue_assign
  • Individual tool: gitlab_epic_issue_assign
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
child_iidintegeryesIID of the issue to assign to the epic
child_project_pathstringyesFull project path of the issue to assign (e.g. my-group/my-project)
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group that contains the epic

List the issues linked to a group epic via the Work Items hierarchy. Returns: child issues with IID, full reference, type, title, description, state, confidentiality, author, labels with their details, web URL, timestamps, and cursor pagination metadata. See also: group.epic_issue_assign, group.epic_issue_remove, group.epic_get.

  • Meta-tool: gitlab_group, action epic_issue_list
  • Individual tool: gitlab_epic_issue_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group or my-group/sub-group)
afterstringnoCursor for forward pagination (from previous response end_cursor)
beforestringnoCursor for backward pagination (from previous response start_cursor). The page size comes from last, or from first when last is omitted
firstintegernoNumber of items to return (default 20, max 100)
lastintegernoNumber of items to return from the end of the range (backward pagination). Cannot be combined with first

Unlink a child issue from a group epic (destructive. Requires confirmation). Returns: the resolved epic and issue work item GIDs confirming the removal. See also: group.epic_issue_list, group.epic_issue_assign, group.epic_get.

  • Meta-tool: gitlab_group, action epic_issue_remove
  • Individual tool: gitlab_epic_issue_remove
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
child_iidintegeryesIID of the issue to remove from the epic
child_project_pathstringyesFull project path of the issue to remove
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group that contains the epic

Reorder an issue within a group epic by moving it before or after another linked issue. Returns: the epic’s child issues in their updated order. See also: group.epic_issue_list, group.epic_issue_assign, group.epic_issue_remove.

  • Meta-tool: gitlab_group, action epic_issue_update
  • Individual tool: gitlab_epic_issue_update
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
child_idstringyesWork item GID of the issue to reorder (from list output id field)
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group that contains the epic
adjacent_idstringnoWork item GID of the reference issue to position relative to
relative_positionstring (BEFORE, AFTER)noPosition relative to adjacent item: BEFORE or AFTER

List epics in a group with filtering and pagination. Returns: matching epics with state, labels, author, assignees, dates, children, and the pagination block of whichever API answered. See also: group.epic_get, group.epic_create, group.epic_get_links.

  • Meta-tool: gitlab_group, action epic_list
  • Individual tool: gitlab_epic_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
full_pathstringyesFull path of the group (e.g. my-group or my-group/sub-group)
afterstringnoCursor for forward pagination (from previous response end_cursor)
assignee_usernamesstring[]noFilter by assignee usernames
assignee_wildcard_idstring (ANY, ME, NONE)noFilter by assignment state rather than by user: ANY, ME, or NONE
author_idintegernoFilter by author user ID. Accepted by the REST epics endpoint only, so it is dropped when another filter routes the request through the Work Items API, where author_username is the equivalent
author_usernamestringnoFilter by author username
beforestringnoCursor for backward pagination (from previous response start_cursor). The page size comes from last, or from first when last is omitted
closed_afterstringnoReturn epics closed on or after date (ISO 8601, e.g. 2025-01-01T00:00:00Z)
closed_beforestringnoReturn epics closed on or before date (ISO 8601, e.g. 2025-12-31T23:59:59Z)
confidentialbooleannoFilter by confidentiality
created_afterstringnoReturn epics created after date (ISO 8601, e.g. 2025-01-01T00:00:00Z)
created_beforestringnoReturn epics created before date (ISO 8601, e.g. 2025-12-31T23:59:59Z)
due_afterstringnoReturn epics due on or after date (ISO 8601, e.g. 2025-01-01T00:00:00Z)
due_beforestringnoReturn epics due on or before date (ISO 8601, e.g. 2025-12-31T23:59:59Z)
firstintegernoNumber of items to return (default 20, max 100)
health_status_filter (Ultimate)string (ANY, NONE, atRisk, needsAttention, onTrack)noFilter by health status: onTrack, needsAttention, atRisk, or the wildcards ANY and NONE
idsstring[]noFetch only these epics by global ID, in full gid://gitlab/WorkItem/123 form. Unlike every other id input here this is not a bare number
iidsstring[]noFetch only these epic IIDs, each as a decimal string (e.g. [“12”, “34”])
instring[] (TITLE, DESCRIPTION)noFields the search term is matched against: TITLE, DESCRIPTION, or both. Both are searched when omitted
include_ancestorsbooleannoInclude epics from ancestor groups
include_descendantsbooleannoInclude epics from descendant groups
label_namestring[]noFilter by label names
lastintegernoNumber of items to return from the end of the range (backward pagination). Cannot be combined with first
milestone_titlestring[]noFilter by the titles of the milestones assigned to the epic
milestone_wildcard_idstring (ANY, NONE, STARTED, UPCOMING)noFilter by milestone assignment rather than by title: ANY, NONE, STARTED, or UPCOMING
my_reaction_emojistringnoFilter by reaction emoji the authenticated user awarded (e.g. thumbsup or None/Any)
order_bystring (created_at, updated_at, title)noOrder epics by field (created_at, updated_at, title). Defaults to created_at
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
parent_ids (Ultimate)string[]noReturn only epics whose parent is one of these global IDs, in full gid://gitlab/WorkItem/123 form
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoSearch in title and description
sortstring (asc, desc)noSort order (asc or desc). Defaults to desc
statestring (opened, closed, all)noFilter by state (opened/closed/all)
subscribedstring (EXPLICITLY_SUBSCRIBED, EXPLICITLY_UNSUBSCRIBED)noFilter by the authenticated user’s subscription: EXPLICITLY_SUBSCRIBED or EXPLICITLY_UNSUBSCRIBED
updated_afterstringnoReturn epics updated on or after date (ISO 8601, e.g. 2025-01-01T00:00:00Z)
updated_beforestringnoReturn epics updated on or before date (ISO 8601, e.g. 2025-12-31T23:59:59Z)
weightstringnoFilter by weight, as a decimal string (e.g. “5”)
weight_wildcard_idstring (ANY, NONE)noFilter by whether a weight is set rather than by its value: ANY or NONE
with_labels_detailsbooleannoIf true, return more details (name, color, description) for each label in the labels field. Accepted by the REST epics endpoint only, so it is dropped when another filter routes the request through the Work Items API

Add a comment (note) to an epic. Returns: the created note with id, author, body, internal flag and timestamps, plus the status of any quick actions the body carried (a body of quick actions alone returns the status and no note). See also: group.epic_note_list, group.epic_get, group.epic_discussion_create.

  • Meta-tool: gitlab_group, action epic_note_create
  • Individual tool: gitlab_epic_note_create
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
bodystringyesNote body (Markdown supported)
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)

Delete an epic note permanently. Returns: a success confirmation naming the note, epic, and group. See also: group.epic_note_get, group.epic_note_list.

  • Meta-tool: gitlab_group, action epic_note_delete
  • Individual tool: gitlab_epic_note_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)
note_idintegeryesID of the note to delete

Get a single epic note by its ID. Returns: the note with author, body, timestamps, system and internal flags, and resolution state. See also: group.epic_note_list, group.epic_note_update, group.epic_note_delete.

  • Meta-tool: gitlab_group, action epic_note_get
  • Individual tool: gitlab_epic_note_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)
note_idintegeryesID of the note to retrieve

List all notes (comments) on an epic. Returns: notes with author, body, system and internal flags, resolution state, timestamps, and keyset pagination metadata. Pages forward only: this GitLab connection takes first and after, and rejects last and before. See also: group.epic_note_get, group.epic_note_create, group.epic_discussion_get.

  • Meta-tool: gitlab_group, action epic_note_list
  • Individual tool: gitlab_epic_note_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group or my-group/sub-group)
afterstringnoCursor for forward pagination (from previous response end_cursor)
firstintegernoNumber of items to return (default 20, max 100)

Update an epic note’s body. Returns: the updated note with new body and updated_at timestamp, plus the status of any quick actions the new body carried. See also: group.epic_note_get, group.epic_note_list, group.epic_note_delete.

  • Meta-tool: gitlab_group, action epic_note_update
  • Individual tool: gitlab_epic_note_update
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
bodystringyesUpdated note body (Markdown supported)
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)
note_idintegeryesID of the note to update

Update an existing epic. Supports close/reopen via state_event. Returns: the updated epic with its current state, labels, assignees, dates, and web URL. See also: group.epic_get, group.epic_list, group.epic_delete.

  • Meta-tool: gitlab_group, action epic_update
  • Individual tool: gitlab_epic_update
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic IID within the group
full_pathstringyesFull path of the group (e.g. my-group)
add_label_idsinteger[]noGlobal IDs of labels to add
assignee_idsinteger[]noGlobal IDs of assignees (empty array to remove all)
colorstringnoEpic color (hex format)
descriptionstringnoUpdated description (Markdown supported)
due_datestringnoDue date (YYYY-MM-DD)
health_status (Ultimate)string (onTrack, needsAttention, atRisk)noHealth status (onTrack/needsAttention/atRisk)
milestone_idintegernoGlobal ID of the milestone to assign to the epic
parent_id (Ultimate)integernoGlobal ID of the parent epic work item
remove_label_idsinteger[]noGlobal IDs of labels to remove
start_datestringnoStart date (YYYY-MM-DD)
state_eventstring (CLOSE, REOPEN)noState event: CLOSE or REOPEN
titlestringnoUpdated epic title
weightintegernoWeight of the epic

Get a single label event for a group epic (Premium/Ultimate). Returns: the event with action, the label object, and the acting user. See also: group.event_epic_label_list, group.epic_get.

  • Meta-tool: gitlab_group, action event_epic_label_get
  • Individual tool: gitlab_get_group_epic_label_event
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
epic_iidintegeryesEpic internal ID (IID) within the group
group_idstring/integeryesGroup ID or URL-encoded path
label_event_idintegeryesLabel event ID

List label events for a group epic (Premium/Ultimate). Returns: label events with action, the label object, the acting user, and pagination metadata. See also: group.event_epic_label_get, group.epic_get.

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

Get one GitLab group by ID or path. Returns: group metadata, visibility, parent information, and web URL. See also: group.list, group.members, group.projects, group.update.

  • Meta-tool: gitlab_group, action get
  • Individual tool: gitlab_group_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
order_bystringnoOrder embedded projects by field (only applies with with_projects)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction for embedded projects (asc, desc)
with_custom_attributesbooleannoInclude custom attributes in the response
with_projectsbooleannoInclude the group’s projects in the response (deprecated. Prefer group.projects)

group.group_billable_member_memberships_list

Section titled “group.group_billable_member_memberships_list”

List the memberships of a billable group member (Premium/Ultimate). Returns: each membership’s source id, source full name, source members URL, access level (numeric + string), created/expiry dates, plus pagination. See also: group.group_billable_members_list, group.group_billable_member_remove, group.members.

  • Meta-tool: gitlab_group, action group_billable_member_memberships_list
  • Individual tool: gitlab_list_billable_member_memberships
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID of the billable member
order_bystringnoColumn to order memberships by (e.g. id, name)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction: asc or desc

Remove a billable member from a group, freeing a seat (Premium/Ultimate, destructive, requires confirmation). Returns: a removal confirmation. See also: group.group_billable_members_list, group.group_billable_member_memberships_list, group.members.

  • Meta-tool: gitlab_group, action group_billable_member_remove
  • Individual tool: gitlab_remove_billable_group_member
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID of the billable member to remove

List the billable members of a group (Premium/Ultimate). Returns: each member’s id, username, name, state, email, membership type, removable flag, is_last_owner, last activity, and last login, plus pagination. See also: group.group_billable_member_memberships_list, group.group_billable_member_remove, group.members.

  • Meta-tool: gitlab_group, action group_billable_members_list
  • Individual tool: gitlab_list_billable_group_members
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
order_bystringnoColumn to order billable members by (e.g. id, name, username, last_activity_on)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter billable members by name or username
sortstring (access_level_asc, access_level_desc, last_joined, oldest_joined, name_asc, name_desc, oldest_sign_in, recent_sign_in, last_activity_on_asc, last_activity_on_desc)noSort order (e.g. name_asc, name_desc, last_activity_on_asc, last_activity_on_desc)

Create a new group issue board (Premium/Ultimate). Returns: the created board with its group, milestone, labels, and lists. See also: group.group_board_get, group.group_board_update, group.group_board_delete.

  • Meta-tool: gitlab_group, action group_board_create
  • Individual tool: gitlab_group_board_create
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or path
namestringyesBoard name

Create a new list (column) on a group issue board from a group label. Returns: the created list with its label and scope. See also: group.group_board_get_list, group.group_board_update_list, group.group_board_delete_list.

  • Meta-tool: gitlab_group, action group_board_create_list
  • Individual tool: gitlab_group_board_list_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path
label_idintegeryesLabel ID to create a label list

Delete a group issue board permanently (Premium/Ultimate). Returns: a success confirmation. See also: group.group_board_get, group.group_board_list.

  • Meta-tool: gitlab_group, action group_board_delete
  • Individual tool: gitlab_group_board_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path

Delete a list (column) from a group issue board. Returns: a success confirmation. See also: group.group_board_get_list, group.group_board_list_lists.

  • Meta-tool: gitlab_group, action group_board_delete_list
  • Individual tool: gitlab_group_board_list_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path
list_idintegeryesBoard list ID

Get a single group issue board by ID. Returns: the board with its group, milestone, scope labels, and lists. See also: group.group_board_list, group.group_board_update, group.group_board_list_lists.

  • Meta-tool: gitlab_group, action group_board_get
  • Individual tool: gitlab_group_board_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path

Get a single list (column) of a group issue board. Returns: the list with its assignee, label, iteration, and milestone scope. See also: group.group_board_list_lists, group.group_board_update_list, group.group_board_delete_list.

  • Meta-tool: gitlab_group, action group_board_get_list
  • Individual tool: gitlab_group_board_list_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path
list_idintegeryesBoard list ID

List all issue boards in a group with pagination. Returns: each board with its group, milestone, scope labels, lists, and pagination metadata. See also: group.group_board_get, group.group_board_create, group.group_board_list_lists.

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

List the lists (columns) of a group issue board with pagination. Returns: each list with its assignee, label, iteration, and milestone scope plus pagination metadata. See also: group.group_board_get_list, group.group_board_create_list, group.group_board_get.

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

Update a group issue board’s name and scope (assignee, milestone, labels, weight). Returns: the updated board with its group, milestone, labels, and lists. See also: group.group_board_get, group.group_board_list.

  • Meta-tool: gitlab_group, action group_board_update
  • Individual tool: gitlab_group_board_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path
assignee_idintegernoAssignee user ID
labelsstring[]noBoard scope labels
milestone_idintegernoMilestone ID
namestringnoBoard name
weightintegernoBoard scope weight

Reorder a list (column) within a group issue board. Returns: the repositioned list with its scope. See also: group.group_board_get_list, group.group_board_list_lists.

  • Meta-tool: gitlab_group, action group_board_update_list
  • Individual tool: gitlab_group_board_list_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
board_idintegeryesBoard ID
group_idstring/integeryesGroup ID or path
list_idintegeryesBoard list ID
positionintegeryesNew position of the list

Download a group’s finished export archive. Returns: the export archive as base64 content plus its size in bytes. See also: group.group_export_schedule, group.group_import_file, group.get.

  • Meta-tool: gitlab_group, action group_export_download
  • Individual tool: gitlab_download_group_export
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Schedule an asynchronous export of a GitLab group. Returns: a confirmation that the export was scheduled (the archive is built in the background). See also: group.group_export_download, group.group_import_file, group.get.

  • Meta-tool: gitlab_group, action group_export_schedule
  • Individual tool: gitlab_schedule_group_export
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Import a group from a local export archive. Returns: a confirmation that the import started (GitLab builds the group asynchronously). See also: group.group_export_schedule, group.group_export_download, group.list.

  • Meta-tool: gitlab_group, action group_import_file
  • Individual tool: gitlab_import_group_from_file
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
filestringyesCanonical path to a local export archive (.tar.gz) under the current working directory, OS temp directory, or GITLAB_MCP_ALLOWED_IMPORT_DIRS. Symlinks are resolved and escapes are rejected
namestringyesName for the imported group
pathstringyesURL path for the imported group
parent_idintegernoID of the parent group to import into

Create a new group label. Returns: the created label with id, name, color, text color, description, and subscription state. See also: group.group_label_list, group.group_label_get, group.group_label_update.

  • Meta-tool: gitlab_group, action group_label_create
  • Individual tool: gitlab_group_label_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
colorstringyesLabel color in hex format (e.g. #FF0000)
group_idstring/integeryesGroup ID or URL-encoded path
namestringyesLabel name
archivedbooleannoWhether to create the label in archived state
descriptionstringnoLabel description
priorityintegernoLabel priority (lower is higher priority, 0 means no priority)

Delete a group label permanently. Returns: a success confirmation. See also: group.group_label_get, group.group_label_list.

  • Meta-tool: gitlab_group, action group_label_delete
  • Individual tool: gitlab_group_label_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
label_idstring/integeryesLabel ID or name

Get a single group label by ID or name. Returns: the label with color, text color, description, and subscription state. GitLab sends a label’s usage counts only to group.group_label_list with with_counts. See also: group.group_label_list, group.group_label_update, group.group_label_delete.

  • Meta-tool: gitlab_group, action group_label_get
  • Individual tool: gitlab_group_label_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
label_idstring/integeryesLabel ID or name

List labels in a group with filtering and pagination. Returns: matching labels with color, text color, description, subscription state, the issue and merge request counts when with_counts is true, and pagination metadata. See also: group.group_label_get, group.group_label_create, group.get.

  • Meta-tool: gitlab_group, action group_label_list
  • Individual tool: gitlab_group_label_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
archivedbooleannoFilter by archived state: true returns only archived labels, false only active labels. Omit for both
include_ancestor_groupsbooleannoInclude labels from ancestor groups
include_descendant_groupsbooleannoInclude labels from descendant groups
only_group_labelsbooleannoOnly return group-level labels (exclude project labels)
order_bystringnoColumn to order results by for keyset pagination (e.g. name, created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter labels by keyword search
sortstring (asc, desc)noSort direction (asc, desc)
with_countsbooleannoInclude issue and merge request counts

Subscribe to a group label’s notifications. Returns: the label with the updated subscription state. See also: group.group_label_get, group.group_label_unsubscribe.

  • Meta-tool: gitlab_group, action group_label_subscribe
  • Individual tool: gitlab_group_label_subscribe
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
label_idstring/integeryesLabel ID or name

Unsubscribe from a group label’s notifications. Returns: a success confirmation. See also: group.group_label_get, group.group_label_subscribe.

  • Meta-tool: gitlab_group, action group_label_unsubscribe
  • Individual tool: gitlab_group_label_unsubscribe
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
label_idstring/integeryesLabel ID or name

Update a group label. Returns: the updated label with id, name, color, text color, description, and subscription state. See also: group.group_label_get, group.group_label_list, group.group_label_delete.

  • Meta-tool: gitlab_group, action group_label_update
  • Individual tool: gitlab_group_label_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
label_idstring/integeryesLabel ID or name
archivedbooleannoSet true to archive, false to unarchive
colorstringnoNew label color in hex format
descriptionstringnoNew label description
new_namestringnoNew label name
priorityintegernoNew label priority (0 to remove)

Add a user as a direct member of a group. Returns: the created membership with access level, custom member role, expiry, and seat usage. See also: group.members, group.group_member_edit, group.group_member_get.

  • Meta-tool: gitlab_group, action group_member_add
  • Individual tool: gitlab_group_member_add
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID to add
access_levelintegernoAccess level (5=Minimal access (Premium/Ultimate), 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner)
expires_atstringnoMembership expiration date (YYYY-MM-DD)
member_role_idintegernoCustom member role ID to assign. Ultimate only. The role’s base access level must match access_level
usernamestringnoUsername to add (alternative to user_id)

Edit a direct group member’s access level, expiry, or custom member role. Returns: the updated membership. See also: group.members, group.group_member_get, group.group_member_remove.

  • Meta-tool: gitlab_group, action group_member_edit
  • Individual tool: gitlab_group_member_edit
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID
access_levelintegernoNew access level (5=Minimal access (Premium/Ultimate), 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner, 60=Admin)
expires_atstringnoNew membership expiration date (YYYY-MM-DD)
member_role_idintegernoCustom member role ID to assign. Ultimate only. The role’s base access level must match access_level

Get a single direct member of a group by user ID. Returns: access level, custom member role, created_by, expiry, public email, SAML identity, and seat usage. See also: group.members, group.group_member_get_inherited, group.group_member_edit.

  • Meta-tool: gitlab_group, action group_member_get
  • Individual tool: gitlab_group_member_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID

Get a single member of a group including inherited memberships from ancestor groups. Returns: effective access level, custom member role, created_by, expiry, public email, SAML identity, and seat usage. See also: group.group_member_get, group.members, group.group_member_edit.

  • Meta-tool: gitlab_group, action group_member_get_inherited
  • Individual tool: gitlab_group_member_get_inherited
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID

Remove a direct member from a group (destructive, requires confirmation). Returns: a delete confirmation. See also: group.members, group.group_member_get, group.group_member_edit.

  • Meta-tool: gitlab_group, action group_member_remove
  • Individual tool: gitlab_group_member_remove
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
user_idintegeryesUser ID to remove
skip_subresourcesbooleannoSkip removal from subresources
unassign_issuablesbooleannoUnassign issues and merge requests

Share a group with another group at a chosen access level, optionally granting a custom member role. Returns: the shared group’s id, names, paths, visibility and web URL, and every group it is now shared with, the new share among them with its access level, expiry and custom role. See also: group.group_member_unshare, group.get, group.members.

  • Meta-tool: gitlab_group, action group_member_share
  • Individual tool: gitlab_group_share
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path to share
share_group_idintegeryesGroup ID to share with
expires_atstringnoShare expiration date (YYYY-MM-DD)
group_accessintegernoAccess level the members of the group shared with gain (5=Minimal access (Premium/Ultimate), 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner). 60=Admin is not valid for group shares
member_role_id (Ultimate)integernoCustom member role the share grants (Ultimate only). Its base access level must equal group_access

Revoke an existing group-to-group share (destructive, requires confirmation). Returns: a delete confirmation. See also: group.group_member_share, group.get, group.members.

  • Meta-tool: gitlab_group, action group_member_unshare
  • Individual tool: gitlab_group_unshare
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
share_group_idintegeryesGroup ID to stop sharing with

List burndown chart events for a group milestone. Returns: dated burndown events with weight, action, and pagination metadata. Requires GitLab Premium or higher. See also: group.group_milestone_get, group.group_milestone_issues, group.group_milestone_merge_requests.

  • Meta-tool: gitlab_group, action group_milestone_burndown
  • Individual tool: gitlab_group_milestone_burndown_events
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
milestone_iidintegeryesMilestone IID (group-scoped). Use group.group_milestone_list to find IIDs
order_bystringnoOrder results by field (e.g. created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

Create a new group milestone. Returns: the created milestone with ID, IID, state, start and due dates. See also: group.group_milestone_get, group.group_milestone_list, group.group_milestone_update.

  • Meta-tool: gitlab_group, action group_milestone_create
  • Individual tool: gitlab_group_milestone_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
titlestringyesMilestone title
descriptionstringnoMilestone description
due_datestringnoDue date (YYYY-MM-DD)
start_datestringnoStart date (YYYY-MM-DD)

Delete a group milestone permanently. Returns: a success confirmation. See also: group.group_milestone_get, group.group_milestone_update.

  • Meta-tool: gitlab_group, action group_milestone_delete
  • Individual tool: gitlab_group_milestone_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
milestone_iidintegeryesMilestone IID (group-scoped). Use group.group_milestone_list to find IIDs

Get a single group milestone by IID. Returns: milestone metadata, state, start and due dates, expiry, and timestamps. See also: group.group_milestone_list, group.group_milestone_update, group.group_milestone_issues.

  • Meta-tool: gitlab_group, action group_milestone_get
  • Individual tool: gitlab_group_milestone_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
milestone_iidintegeryesMilestone IID (group-scoped). Use group.group_milestone_list to find IIDs

List issues assigned to a group milestone. Returns: assigned issues with IID, project, title, state, labels, author, assignees, confidentiality, weight, due date, web URL, timestamps, and pagination metadata. See also: group.group_milestone_get, group.group_milestone_merge_requests, issue.list_group.

  • Meta-tool: gitlab_group, action group_milestone_issues
  • Individual tool: gitlab_group_milestone_issues
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
milestone_iidintegeryesMilestone IID (group-scoped). Use group.group_milestone_list to find IIDs
order_bystringnoOrder results by field (e.g. created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

List milestones in a group with filtering and pagination. Returns: matching group milestones with state, dates, expiry, and pagination metadata. See also: group.group_milestone_get, group.group_milestone_create, project.milestone_list.

  • Meta-tool: gitlab_group, action group_milestone_list
  • Individual tool: gitlab_group_milestone_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
containing_datestringnoReturn milestones containing this date (YYYY-MM-DD)
end_datestringnoReturn milestones with a due date on or before this date (YYYY-MM-DD)
iidsinteger[]noFilter by milestone IIDs
include_ancestorsbooleannoInclude milestones from ancestor groups
include_descendantsbooleannoInclude milestones from descendant groups
include_parent_milestonesbooleannoDeprecated (GitLab 16.7): use include_ancestors instead. Include milestones from parent groups
order_bystringnoOrder results by field (e.g. created_at, updated_at, due_date, title)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoSearch milestones by title or description
search_titlestringnoSearch milestones by title only
sortstring (asc, desc)noSort direction (asc, desc)
start_datestringnoReturn milestones with a start date on or after this date (YYYY-MM-DD)
statestring (active, closed)noFilter by state (active, closed)
titlestringnoFilter by exact milestone title
updated_afterstringnoReturn milestones updated after date (YYYY-MM-DD)
updated_beforestringnoReturn milestones updated before date (YYYY-MM-DD)

List merge requests assigned to a group milestone. Returns: assigned merge requests with IID, project, title, state, draft flag, merge status, source and target branches, labels, author, assignees, reviewers, web URL, timestamps, and pagination metadata. See also: group.group_milestone_get, group.group_milestone_issues, group.group_milestone_burndown.

  • Meta-tool: gitlab_group, action group_milestone_merge_requests
  • Individual tool: gitlab_group_milestone_merge_requests
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
milestone_iidintegeryesMilestone IID (group-scoped). Use group.group_milestone_list to find IIDs
order_bystringnoOrder results by field (e.g. created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

Update an existing group milestone. Returns: the updated milestone with state, dates, and expiry. See also: group.group_milestone_get, group.group_milestone_list, group.group_milestone_delete.

  • Meta-tool: gitlab_group, action group_milestone_update
  • Individual tool: gitlab_group_milestone_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
milestone_iidintegeryesMilestone IID (group-scoped). Use group.group_milestone_list to find IIDs
descriptionstringnoMilestone description
due_datestringnoDue date (YYYY-MM-DD)
start_datestringnoStart date (YYYY-MM-DD)
state_eventstring (close, activate)noState transition: activate or close
titlestringnoMilestone title

List the status of a group’s relations export, optionally filtered by relation. Returns: per-relation export status, error detail, batched flag, batch count, per-batch progress, and pagination metadata. See also: group.group_relations_schedule, group.get.

  • Meta-tool: gitlab_group, action group_relations_list_status
  • Individual tool: gitlab_list_group_relations_export_status
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesThe ID or URL-encoded path of the group
order_bystringnoColumn to order keyset-paginated results by
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
relationstringnoFilter by relation type (for example labels, milestones, badges)
sortstring (asc, desc)noSort order for results: ‘asc’ or ‘desc’

Schedule a new export of a group’s relations (issues, labels, milestones, and more). Returns: a confirmation that the asynchronous export was scheduled. See also: group.group_relations_list_status, group.get.

  • Meta-tool: gitlab_group, action group_relations_schedule
  • Individual tool: gitlab_schedule_group_relations_export
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesThe ID or URL-encoded path of the group
batchedbooleannoWhether to batch the export

Delete a group Markdown upload by its numeric upload ID. Returns: a success confirmation. See also: group.group_upload_list, group.group_upload_delete_by_secret.

  • Meta-tool: gitlab_group, action group_upload_delete_by_id
  • Individual tool: gitlab_delete_group_markdown_upload_by_id
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesThe ID or URL-encoded path of the group
upload_idintegeryesThe ID of the upload to delete

Delete a group Markdown upload by its 32-character secret and filename. Returns: a success confirmation. See also: group.group_upload_list, group.group_upload_delete_by_id.

  • Meta-tool: gitlab_group, action group_upload_delete_by_secret
  • Individual tool: gitlab_delete_group_markdown_upload_by_secret
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
filenamestringyesThe filename of the upload
group_idstring/integeryesThe ID or URL-encoded path of the group
secretstringyesThe secret of the upload

List all Markdown uploads in a group. Returns: each upload’s id, filename, size, creation time, and uploader (id, username, name, state, avatar, web URL), plus pagination metadata. See also: group.group_upload_delete_by_id, group.group_upload_delete_by_secret, group.get.

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

Create a webhook on a GitLab group. Returns: the created hook with URL, enabled events, and SSL/header metadata. See also: group.hook_list, group.hook_get, group.hook_delete.

  • Meta-tool: gitlab_group, action hook_add
  • Individual tool: gitlab_group_hook_add
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
branch_filter_strategystring (wildcard, regex, all_branches)noBranch filter strategy (wildcard, regex, all_branches)
confidential_issues_eventsbooleannoTrigger on confidential issue events
confidential_note_eventsbooleannoTrigger on confidential note events
custom_headersobject[]noCustom HTTP headers added to webhook requests
custom_webhook_templatestringnoCustom payload template (JSON) sent instead of the default webhook body
deployment_eventsbooleannoTrigger on deployment events
descriptionstringnoHook description
emoji_eventsbooleannoTrigger on emoji events
enable_ssl_verificationbooleannoEnable SSL verification for the hook endpoint
feature_flag_eventsbooleannoTrigger on feature flag events
issues_eventsbooleannoTrigger on issue events
job_eventsbooleannoTrigger on job events
member_eventsbooleannoTrigger on member events
merge_requests_eventsbooleannoTrigger on merge request events
milestone_eventsbooleannoTrigger on milestone events
namestringnoHook name
note_eventsbooleannoTrigger on comment events
pipeline_eventsbooleannoTrigger on pipeline events
project_eventsbooleannoTrigger on project events (group-level)
push_eventsbooleannoTrigger on push events
push_events_branch_filterstringnoBranch filter for push events (e.g. ‘main’)
releases_eventsbooleannoTrigger on release events
resource_access_token_eventsbooleannoTrigger on resource access token events
signing_tokenstringnoWrite-only signing token for webhook signature validation
subgroup_eventsbooleannoTrigger on subgroup events
tag_push_eventsbooleannoTrigger on tag push events
tokenstringnoSecret token for payload validation
urlstringnoWebhook URL (required for add)
vulnerability_eventsbooleannoTrigger on vulnerability events
wiki_page_eventsbooleannoTrigger on wiki page events

Delete a GitLab group webhook. Returns: a success confirmation. See also: group.hook_list, group.hook_get, group.hook_add.

  • Meta-tool: gitlab_group, action hook_delete
  • Individual tool: gitlab_group_hook_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesHook ID to delete

Delete a custom header from a GitLab group webhook. Returns: a success confirmation. See also: group.hook_set_custom_header, group.hook_get.

  • Meta-tool: gitlab_group, action hook_delete_custom_header
  • Individual tool: gitlab_group_hook_delete_custom_header
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesWebhook ID
keystringyesCustom header key name to delete

Delete a URL variable from a GitLab group webhook. Returns: a success confirmation. See also: group.hook_set_url_variable, group.hook_get.

  • Meta-tool: gitlab_group, action hook_delete_url_variable
  • Individual tool: gitlab_group_hook_delete_url_variable
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesWebhook ID
keystringyesURL variable key name to delete

Update a GitLab group webhook. Returns: the updated hook with URL, enabled events, and SSL/header metadata. See also: group.hook_list, group.hook_get, group.hook_delete.

  • Meta-tool: gitlab_group, action hook_edit
  • Individual tool: gitlab_group_hook_edit
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesHook ID to edit
branch_filter_strategystring (wildcard, regex, all_branches)noBranch filter strategy (wildcard, regex, all_branches)
confidential_issues_eventsbooleannoTrigger on confidential issue events
confidential_note_eventsbooleannoTrigger on confidential note events
custom_headersobject[]noCustom HTTP headers added to webhook requests
custom_webhook_templatestringnoCustom payload template (JSON) sent instead of the default webhook body
deployment_eventsbooleannoTrigger on deployment events
descriptionstringnoHook description
emoji_eventsbooleannoTrigger on emoji events
enable_ssl_verificationbooleannoEnable SSL verification for the hook endpoint
feature_flag_eventsbooleannoTrigger on feature flag events
issues_eventsbooleannoTrigger on issue events
job_eventsbooleannoTrigger on job events
member_eventsbooleannoTrigger on member events
merge_requests_eventsbooleannoTrigger on merge request events
milestone_eventsbooleannoTrigger on milestone events
namestringnoHook name
note_eventsbooleannoTrigger on comment events
pipeline_eventsbooleannoTrigger on pipeline events
project_eventsbooleannoTrigger on project events (group-level)
push_eventsbooleannoTrigger on push events
push_events_branch_filterstringnoBranch filter for push events (e.g. ‘main’)
releases_eventsbooleannoTrigger on release events
resource_access_token_eventsbooleannoTrigger on resource access token events
signing_tokenstringnoWrite-only signing token for webhook signature validation
subgroup_eventsbooleannoTrigger on subgroup events
tag_push_eventsbooleannoTrigger on tag push events
tokenstringnoSecret token for payload validation
urlstringnoWebhook URL (required for add)
vulnerability_eventsbooleannoTrigger on vulnerability events
wiki_page_eventsbooleannoTrigger on wiki page events

Get a single GitLab group webhook by ID. Returns: the hook’s URL, enabled events, and SSL/header metadata. See also: group.hook_list, group.hook_edit, group.hook_delete.

  • Meta-tool: gitlab_group, action hook_get
  • Individual tool: gitlab_group_hook_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesHook ID

List the webhooks on a GitLab group. Returns: hooks with URL, enabled events, and SSL settings. See also: group.hook_get, group.hook_add, group.get.

  • Meta-tool: gitlab_group, action hook_list
  • Individual tool: gitlab_group_hook_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
order_bystringnoOrder hooks by field (id)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
sortstring (asc, desc)noSort direction (asc, desc)

Resend a GitLab group hook event. Returns: a success confirmation. See also: group.hook_test, group.hook_get.

  • Meta-tool: gitlab_group, action hook_resend_event
  • Individual tool: gitlab_group_hook_resend_event
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_event_idintegeryesID of the hook event to resend
hook_idintegeryesWebhook ID

Set a custom header on a GitLab group webhook. Returns: a success confirmation. See also: group.hook_delete_custom_header, group.hook_get.

  • Meta-tool: gitlab_group, action hook_set_custom_header
  • Individual tool: gitlab_group_hook_set_custom_header
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesWebhook ID
keystringyesCustom header key name
valuestringyesCustom header value (write-only)

Set a URL variable on a GitLab group webhook. Returns: a success confirmation. See also: group.hook_delete_url_variable, group.hook_get.

  • Meta-tool: gitlab_group, action hook_set_url_variable
  • Individual tool: gitlab_group_hook_set_url_variable
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesWebhook ID
keystringyesURL variable key name. Letters and underscores only. GitLab rejects keys containing digits
valuestringyesURL variable value (write-only). Must be non-empty

Trigger a test event for a GitLab group webhook. Returns: a success confirmation. See also: group.hook_get, group.hook_resend_event.

  • Meta-tool: gitlab_group, action hook_test
  • Individual tool: gitlab_group_hook_test
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
hook_idintegeryesWebhook ID
triggerstring (push_events, tag_push_events, issues_events, confidential_issues_events, note_events, merge_requests_events, job_events, pipeline_events, wiki_page_events, releases_events, milestone_events, emoji_events, resource_access_token_events)yesEvent type to test: push_events, tag_push_events, issues_events, confidential_issues_events, note_events, merge_requests_events, job_events, pipeline_events, wiki_page_events, releases_events, milestone_events, emoji_events, or resource_access_token_events

List groups invited to a GitLab group. Returns: the invited groups with path and access metadata. See also: group.shared_with, group.members, group.get.

  • Meta-tool: gitlab_group, action invited_groups
  • Individual tool: gitlab_group_invited_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
min_access_levelintegernoMinimum access level the invitation grants (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner)
order_bystringnoColumn to order invited groups by. The GitLab API documents no ordering for this endpoint, so the value is forwarded unchanged and may be ignored
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
relationstring[]noFilter by relation (direct, inherited)
searchstringnoFilter invited groups by name or path
sortstring (asc, desc)noSort direction (asc, desc)
with_custom_attributesbooleannoInclude custom attributes in the response

List issues across a group. Returns: matching issues from projects in the group with pagination metadata. See also: issue.list, group.get, search.issues.

  • Meta-tool: gitlab_group, action issues
  • Individual tool: gitlab_issue_list_group
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
assignee_idintegernoFilter by assignee user ID
assignee_usernamestringnoFilter by assignee username
author_idintegernoFilter by author user ID
author_usernamestringnoFilter by author username
confidentialbooleannoFilter by confidential status
created_afterstringnoReturn issues created after date (ISO 8601)
created_beforestringnoReturn issues created before date (ISO 8601)
due_datestringnoFilter by due date (0, overdue, week, month, next_month_and_previous_two_weeks)
iidsinteger[]noFilter by issue internal IDs
instring (title, description, title,description)noFields the search query applies to (title, description, or title,description)
issue_typestring (issue, incident, test_case, task)noFilter by issue type (issue, incident, test_case, task)
iteration_id (Premium)integernoFilter by iteration ID
labelsstring[]noLabel names to filter by
milestonestringnoMilestone title to filter by
my_reaction_emojistringnoFilter by issues you reacted to with this emoji (or None/Any)
not_assignee_idintegernoExclude issues assigned to this user ID
not_assignee_usernamestringnoExclude issues assigned to this username
not_author_idintegernoExclude issues authored by this user ID
not_author_usernamestringnoExclude issues authored by this username
not_instring (title, description, title,description)noFields the negated search query applies to (title, description)
not_labelsstring[]noLabel names to exclude
not_milestonestringnoMilestone title to exclude
not_my_reaction_emojistringnoExclude issues you reacted to with this emoji
not_searchstringnoExclude issues matching this search text
order_bystring (created_at, due_date, id, label_priority, milestone_due, popularity, priority, relative_position, title, updated_at, weight)noOrder by field (created_at, updated_at, priority, due_date, relative_position, label_priority, milestone_due, popularity, weight)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
scopestring (created_by_me, assigned_to_me, all)noScope (created_by_me, assigned_to_me, all)
searchstringnoSearch in title and description
sortstring (asc, desc)noSort direction (asc, desc)
statestring (opened, closed, all)noFilter by state (opened, closed, all)
updated_afterstringnoReturn issues updated after date (ISO 8601)
updated_beforestringnoReturn issues updated before date (ISO 8601)
with_labels_detailsbooleannoReturn label objects with full details instead of just names

Add an LDAP group link to a GitLab group by CN or filter (Premium/Ultimate). Returns: the created link with its CN/filter, provider, access level, and member role ID. See also: group.ldap_link_list, group.ldap_sync, group.ldap_link_delete.

  • Meta-tool: gitlab_group, action ldap_link_add
  • Individual tool: gitlab_group_ldap_link_add
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_accessinteger (0, 5, 10, 15, 20, 25, 30, 40, 50)yesDefault access level for members of the LDAP group: 0 (No access), 5 (Minimal access), 10 (Guest), 15 (Planner), 20 (Reporter), 25 (Security Manager), 30 (Developer), 40 (Maintainer), 50 (Owner)
group_idstringyesGroup ID or URL-encoded path
providerstringyesLDAP provider name
cnstringnoLDAP Common Name (CN)
filterstringnoLDAP filter
member_role_idintegernoCustom member role ID

Delete a GitLab group’s LDAP link by CN or filter (Premium/Ultimate). Returns: a success confirmation. See also: group.ldap_link_list, group.ldap_link_add, group.ldap_sync.

  • Meta-tool: gitlab_group, action ldap_link_delete
  • Individual tool: gitlab_group_ldap_link_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
cnstringnoLDAP Common Name to delete
filterstringnoLDAP filter to delete
providerstringnoLDAP provider name

Delete a GitLab group’s LDAP link for a specific provider by CN (Premium/Ultimate). Returns: a success confirmation. See also: group.ldap_link_list, group.ldap_link_delete, group.ldap_sync.

  • Meta-tool: gitlab_group, action ldap_link_delete_for_provider
  • Individual tool: gitlab_group_ldap_link_delete_for_provider
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
cnstringyesLDAP Common Name
group_idstringyesGroup ID or URL-encoded path
providerstringyesLDAP provider name

List a GitLab group’s LDAP group links. Returns: each link’s CN/filter, provider, and access level. See also: group.ldap_link_add, group.ldap_sync, group.get.

  • Meta-tool: gitlab_group, action ldap_link_list
  • Individual tool: gitlab_group_ldap_link_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path

Trigger an asynchronous LDAP sync for a GitLab group’s LDAP links. Returns: a confirmation that the sync was queued. See also: group.ldap_link_list, group.ldap_link_add, group.get.

  • Meta-tool: gitlab_group, action ldap_sync
  • Individual tool: gitlab_group_ldap_sync
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path

List accessible GitLab groups with filtering and pagination. Returns: matching groups including path, name, and visibility metadata. See also: group.get, group.search, group.create.

  • Meta-tool: gitlab_group, action list
  • Individual tool: gitlab_group_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
activebooleannoFilter by active (true) or inactive/archived (false) groups
all_availablebooleannoShow all groups accessible by the authenticated user
archivedbooleannoLimit to archived groups (true) or non-archived (false)
custom_attributesobjectnoFilter groups by custom attribute key/value pairs (administrators only). Distinct from with_custom_attributes, which only includes them in the response
marked_for_deletion_onstringnoFilter to groups marked for deletion on this date (YYYY-MM-DD)
min_access_levelintegernoMinimum access level (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner)
order_bystring (name, path, id, similarity)noOrder groups by field (name, path, id, similarity)
ownedbooleannoLimit to groups explicitly owned by the authenticated user
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
repository_storagestringnoFilter by repository storage shard (administrators only)
searchstringnoFilter groups by name or path
skip_groupsinteger[]noGroup IDs to exclude from results
sortstring (asc, desc)noSort direction (asc, desc)
statisticsbooleannoInclude group statistics (storage, counts)
top_level_onlybooleannoLimit to top-level groups (exclude subgroups)
visibilitystring (private, internal, public)noFilter by visibility (public, internal, private)
with_custom_attributesbooleannoInclude custom attributes in the response

List the users provisioned for a GitLab group via SAML/SCIM (Premium/Ultimate). Returns: provisioned users with username, name, state, and identity metadata. See also: group.members, group.get, group.list.

  • Meta-tool: gitlab_group, action list_provisioned_users
  • Individual tool: gitlab_group_list_provisioned_users
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
activebooleannoFilter to active (true) or inactive (false) users
blockedbooleannoFilter to blocked (true) or unblocked (false) users
created_afterstringnoReturn users created after this RFC3339 timestamp (e.g. 2024-01-02T15:04:05Z)
created_beforestringnoReturn users created before this RFC3339 timestamp (e.g. 2024-12-31T23:59:59Z)
order_bystringnoColumn to order provisioned users by (e.g. id, name, username, created_at, updated_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoSearch provisioned users by name, username, or email
sortstring (asc, desc)noSort direction: asc or desc
usernamestringnoFilter provisioned users by exact username

List the members of a GitLab group (direct and inherited). Returns: members with username, access level, and seat/role metadata. See also: group.get, group.projects, group.group_member_add.

  • Meta-tool: gitlab_group, action members
  • Individual tool: gitlab_group_members_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
order_bystring (id, name, username, access_level, last_activity_on)noOrder members by field (id, name, username, access_level, last_activity_on)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
querystringnoFilter members by name or username
show_seat_infobooleannoInclude seat information for each member (Premium/Ultimate)
sortstring (asc, desc)noSort direction (asc, desc)
user_idsinteger[]noFilter the result to the given user IDs

List the projects in a GitLab group. Returns: compact project rows with names and paths, web and clone URLs, visibility, default branch, topics, star and fork counts, archived status, and created and last-activity times. See also: group.get, group.subgroups, group.transfer_project.

  • Meta-tool: gitlab_group, action projects
  • Individual tool: gitlab_group_projects
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
activebooleannoFilter by active (true) or inactive/archived (false) projects
archivedbooleannoFilter archived projects
include_subgroupsbooleannoInclude projects in subgroups
min_access_levelintegernoLimit to projects where the caller has at least this access level (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner)
order_bystring (id, name, path, created_at, updated_at, last_activity_at, similarity)noOrder by field (id, name, path, created_at, updated_at, last_activity_at, similarity)
ownedbooleannoLimit to projects owned by current user
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter projects by name
simplebooleannoReturn limited fields
sortstring (asc, desc)noSort direction (asc, desc)
starredbooleannoLimit to starred projects
topicstringnoFilter projects by topic
visibilitystring (private, internal, public)noFilter by visibility (public, internal, private)
with_custom_attributesbooleannoInclude custom attributes in the response
with_issues_enabledbooleannoLimit to projects with issues enabled
with_merge_requests_enabledbooleannoLimit to projects with merge requests enabled
with_security_reportsbooleannoLimit to projects with security reports (Ultimate)
with_sharedbooleannoInclude shared projects

Get a single group-level protected branch by name or wildcard. Returns: the protected branch with push, merge, and unprotect access levels (access_level, access_level_description, user_id, group_id) and force-push and code-owner-approval flags. See also: group.protected_branch_list, group.protected_branch_update, group.protected_branch_unprotect.

  • Meta-tool: gitlab_group, action protected_branch_get
  • Individual tool: gitlab_group_protected_branch_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch name or wildcard
group_idstring/integeryesGroup ID or URL-encoded path

List group-level protected branches with search and offset or keyset pagination. Returns: protected branches with push, merge, and unprotect access levels (access_level, access_level_description, user_id, group_id), force-push and code-owner-approval flags, plus pagination metadata. See also: group.protected_branch_get, group.protected_branch_protect, group.get.

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

Protect a group-level branch or wildcard, optionally with per-user/per-group allowed-to-push, merge, and unprotect entries. Returns: the created protected branch with its push, merge, and unprotect access levels and force-push and code-owner-approval flags. See also: group.protected_branch_get, group.protected_branch_update, group.protected_branch_unprotect.

  • Meta-tool: gitlab_group, action protected_branch_protect
  • Individual tool: gitlab_group_protected_branch_protect
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
namestringyesBranch name or wildcard to protect
allow_force_pushbooleannoAllow force push
allowed_to_mergeobject[]noUsers/groups allowed to merge
allowed_to_pushobject[]noUsers/groups allowed to push
allowed_to_unprotectobject[]noUsers/groups allowed to unprotect
code_owner_approval_requiredbooleannoRequire code owner approval
merge_access_levelintegernoMerge access level (0=No access, 30=Developer, 40=Maintainer, 60=Admin)
push_access_levelintegernoPush access level (0=No access, 30=Developer, 40=Maintainer, 60=Admin)
unprotect_access_levelintegernoUnprotect access level (30=Developer, 40=Maintainer, 60=Admin on GitLab Self-Managed). 0 (No access) is not valid here

Unprotect a group-level branch, cascading the removal to all subgroup projects. Returns: a success confirmation naming the unprotected branch. See also: group.protected_branch_get, group.protected_branch_list, group.protected_branch_protect.

  • Meta-tool: gitlab_group, action protected_branch_unprotect
  • Individual tool: gitlab_group_protected_branch_unprotect
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch name or wildcard to unprotect
group_idstring/integeryesGroup ID or URL-encoded path

Update a group-level protected branch, adding or removing (_destroy) allowed-to-push, merge, and unprotect entries. Returns: the updated protected branch with its push, merge, and unprotect access levels and force-push and code-owner-approval flags. See also: group.protected_branch_get, group.protected_branch_list, group.protected_branch_unprotect.

  • Meta-tool: gitlab_group, action protected_branch_update
  • Individual tool: gitlab_group_protected_branch_update
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
branchstringyesBranch name or wildcard
group_idstring/integeryesGroup ID or URL-encoded path
allow_force_pushbooleannoAllow force push
allowed_to_mergeobject[]noUsers/groups allowed to merge
allowed_to_pushobject[]noUsers/groups allowed to push
allowed_to_unprotectobject[]noUsers/groups allowed to unprotect
code_owner_approval_requiredbooleannoRequire code owner approval
namestringnoNew branch name or wildcard

Get a single group-level protected environment by tier name. Returns: the environment with its deploy access levels (id, access level, user/group, group inheritance) and approval rules. See also: group.protected_env_list, group.protected_env_update, group.protected_env_unprotect.

  • Meta-tool: gitlab_group, action protected_env_get
  • Individual tool: gitlab_group_protected_environment_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
environmentstring (production, staging, testing, development, other)yesEnvironment tier (production, staging, testing, development, other)
group_idstring/integeryesGroup ID or URL-encoded path

List group-level protected environments with order_by/sort and offset or keyset pagination. Returns: group protected environments with their deploy access levels, required approval count, approval rules, and pagination metadata. See also: group.protected_env_get, group.protected_env_protect, group.get.

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

Protect a group-level environment tier with deploy access levels and approval rules. Protection cascades to all subgroup projects. Returns: the newly protected environment with its deploy access levels, required approval count, and approval rules. See also: group.protected_env_get, group.protected_env_update, group.protected_env_unprotect.

  • Meta-tool: gitlab_group, action protected_env_protect
  • Individual tool: gitlab_group_protected_environment_protect
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
deploy_access_levelsobject[]yesDeploy access levels
group_idstring/integeryesGroup ID or URL-encoded path
namestring (production, staging, testing, development, other)yesEnvironment tier to protect (production, staging, testing, development, other)
approval_rulesobject[]noApproval rules
required_approval_countintegernoRequired number of approvals

Unprotect a group-level environment tier, removing its deployment gates from the group and its subgroup projects. Returns: a success confirmation. See also: group.protected_env_list, group.protected_env_protect.

  • Meta-tool: gitlab_group, action protected_env_unprotect
  • Individual tool: gitlab_group_protected_environment_unprotect
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
environmentstring (production, staging, testing, development, other)yesEnvironment tier to unprotect (production, staging, testing, development, other)
group_idstring/integeryesGroup ID or URL-encoded path

Update a group-level protected environment’s deploy access levels and approval rules (use _destroy to remove an entry). Returns: the updated environment with its deploy access levels, required approval count, and approval rules. See also: group.protected_env_get, group.protected_env_protect, group.protected_env_unprotect.

  • Meta-tool: gitlab_group, action protected_env_update
  • Individual tool: gitlab_group_protected_environment_update
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
environmentstring (production, staging, testing, development, other)yesEnvironment tier (production, staging, testing, development, other)
group_idstring/integeryesGroup ID or URL-encoded path
approval_rulesobject[]noUpdated approval rules
deploy_access_levelsobject[]noUpdated deploy access levels
namestring (production, staging, testing, development, other)noNew environment tier (production, staging, testing, development, other)
required_approval_countintegernoRequired number of approvals

Add push rules to a GitLab group. Returns: the created push-rule configuration. See also: group.push_rule_get, group.push_rule_edit.

  • Meta-tool: gitlab_group, action push_rule_add
  • Individual tool: gitlab_group_add_push_rule
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
author_email_regexstringnoRegex to validate author email addresses
branch_name_regexstringnoRegex to validate branch names
commit_committer_checkbooleannoReject commits where committer is not a group member
commit_committer_name_checkbooleannoReject commits where committer name does not match user name
commit_message_negative_regexstringnoRegex that commit messages must NOT match
commit_message_regexstringnoRegex that commit messages must match
deny_delete_tagbooleannoDeny tag deletion
file_name_regexstringnoRegex for disallowed file names
max_file_sizeintegernoMaximum file size (MB). 0 means unlimited
member_checkbooleannoOnly allow commits from group members
prevent_secretsbooleannoReject files that are likely to contain secrets
reject_non_dco_commitsbooleannoReject commits without DCO certification
reject_unsigned_commitsbooleannoReject commits that are not GPG signed

Delete a GitLab group’s push rules. Returns: a success confirmation. See also: group.push_rule_get, group.push_rule_add.

  • Meta-tool: gitlab_group, action push_rule_delete
  • Individual tool: gitlab_group_delete_push_rule
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Edit a GitLab group’s push rules. Returns: the updated push-rule configuration. See also: group.push_rule_get, group.push_rule_add.

  • Meta-tool: gitlab_group, action push_rule_edit
  • Individual tool: gitlab_group_edit_push_rule
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
author_email_regexstringnoRegex to validate author email addresses
branch_name_regexstringnoRegex to validate branch names
commit_committer_checkbooleannoReject commits where committer is not a group member
commit_committer_name_checkbooleannoReject commits where committer name does not match user name
commit_message_negative_regexstringnoRegex that commit messages must NOT match
commit_message_regexstringnoRegex that commit messages must match
deny_delete_tagbooleannoDeny tag deletion
file_name_regexstringnoRegex for disallowed file names
max_file_sizeintegernoMaximum file size (MB). 0 means unlimited
member_checkbooleannoOnly allow commits from group members
prevent_secretsbooleannoReject files that are likely to contain secrets
reject_non_dco_commitsbooleannoReject commits without DCO certification
reject_unsigned_commitsbooleannoReject commits that are not GPG signed

Get a GitLab group’s push rules. Returns: the singleton push-rule configuration. See also: group.push_rule_add, group.push_rule_edit.

  • Meta-tool: gitlab_group, action push_rule_get
  • Individual tool: gitlab_group_get_push_rules
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

List releases across all projects in a group with pagination, ordering, and keyset support. Returns: tag names, release names, dates, author, commit, assets, milestones, evidences, and _links per release. See also: group.get, release.list, release.get.

  • Meta-tool: gitlab_group, action release_list
  • Individual tool: gitlab_group_release_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
order_bystringnoOrder releases by a column (e.g. released_at, created_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
simplebooleannoReturn only limited fields for each release
sortstring (asc, desc)noSort direction (asc, desc)

Restore a GitLab group marked for deletion. Returns: the restored group metadata. See also: group.delete, group.get, group.list.

  • Meta-tool: gitlab_group, action restore
  • Individual tool: gitlab_group_restore
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Add a SAML group link mapping a SAML group name to an access level (Premium/Ultimate).

  • Meta-tool: gitlab_group, action saml_link_add
  • Individual tool: gitlab_group_saml_link_add
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
access_levelintegeryesAccess level (0=No access, 5=Minimal access, 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner)
group_idstringyesGroup ID or URL-encoded path
saml_group_namestringyesName of the SAML group
member_role_idintegernoCustom member role ID
providerstringnoSAML provider name

Delete a SAML group link from a GitLab group by SAML group name. Returns: a confirmation that the SAML group mapping was removed (members are not deleted). See also: group.saml_link_list, group.saml_link_get, group.saml_link_add.

  • Meta-tool: gitlab_group, action saml_link_delete
  • Individual tool: gitlab_group_saml_link_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
saml_group_namestringyesName of the SAML group to delete

Get one SAML group link of a GitLab group by SAML group name. Returns: the link’s SAML group name, access level, and provider. See also: group.saml_link_list, group.saml_link_add, group.saml_link_delete.

  • Meta-tool: gitlab_group, action saml_link_get
  • Individual tool: gitlab_group_saml_link_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
saml_group_namestringyesName of the SAML group

List a GitLab group’s SAML group links. Returns: each link’s SAML group name, access level, and provider. See also: group.saml_users_list, group.saml_link_add, group.get.

  • Meta-tool: gitlab_group, action saml_link_list
  • Individual tool: gitlab_group_saml_link_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path

List SAML SSO-provisioned users of a top-level GitLab group, with keyset pagination. Returns: matching users with full profile (id, username, name, state, email, identities, scim_identities, custom_attributes, created_by) plus pagination metadata. See also: group.saml_link_list, group.members, group.get.

  • Meta-tool: gitlab_group, action saml_users_list
  • Individual tool: gitlab_group_saml_users_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstringyesTop-level group ID or URL-encoded path
activebooleannoLimit to active users only
blockedbooleannoLimit to blocked users only
created_afterstringnoReturn users created after the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)
created_beforestringnoReturn users created before the specified time. Format: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ)
order_bystringnoColumn to order keyset-paginated results by (e.g. id, name, username, created_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter SAML users by name, username, or public email
sortstring (asc, desc)noSort order for keyset pagination: ‘asc’ or ‘desc’
usernamestringnoFilter by an exact username

Search GitLab groups by name or path. Returns: matching groups with path, name, and visibility. See also: group.list, group.get, group.create.

  • Meta-tool: gitlab_group, action search
  • Individual tool: gitlab_group_search
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
querystringyesSearch query string

Enable or disable secret push protection for a whole group, inherited by its projects (Ultimate). Returns: the group’s secret_push_protection_enabled state and any errors. See also: project.security_settings_update, group.get.

  • Meta-tool: gitlab_group, action security_settings_update
  • Individual tool: gitlab_update_group_secret_push_protection
  • Tier: Ultimate
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
secret_push_protection_enabledbooleanyesEnable or disable secret push protection
projects_to_excludeinteger[]noProject IDs to exclude from group-level protection

Create a service account user in a group. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions. Omit email unless the task gives an explicit valid email address.

  • Meta-tool: gitlab_group, action service_account_create
  • Individual tool: gitlab_group_service_account_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path (top-level only)
emailstringnoService account email
namestringnoService account name
usernamestringnoService account username

Delete a group service account user, optionally hard-deleting owned resources. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions.

  • Meta-tool: gitlab_group, action service_account_delete
  • Individual tool: gitlab_group_service_account_delete
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path (top-level only)
service_account_idintegeryesService account user ID
hard_deletebooleannoHard delete the service account

Get one service account of a GitLab group by its user ID (GitLab 19.4 or later).

Returns: the service account with ID, name, username, email, public email, and the unconfirmed email when a change is pending. See also: group.service_account_list, group.service_account_update, group.service_account_pat_list.

  • Meta-tool: gitlab_group, action service_account_get
  • Individual tool: gitlab_group_service_account_get
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
service_account_idintegeryesService account user ID

List a group’s service account users. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions.

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

Create a personal access token for a group service account. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions. Omit expires_at unless the task gives an explicit expiry date. If provided, use YYYY-MM-DD within the instance maximum token lifetime.

  • Meta-tool: gitlab_group, action service_account_pat_create
  • Individual tool: gitlab_group_service_account_pat_create
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
namestringyesToken name
scopesstring[]yesToken scopes (e.g. api read_api read_user)
service_account_idintegeryesService account user ID
descriptionstringnoToken description
expires_atstringnoExpiration date (YYYY-MM-DD)

List the personal access tokens of one group service account. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions.

  • Meta-tool: gitlab_group, action service_account_pat_list
  • Individual tool: gitlab_group_service_account_pat_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
service_account_idintegeryesService account user ID
created_afterstringnoReturn tokens created after this RFC3339 timestamp
created_beforestringnoReturn tokens created before this RFC3339 timestamp
expires_afterstringnoReturn tokens expiring after this date (YYYY-MM-DD)
expires_beforestringnoReturn tokens expiring before this date (YYYY-MM-DD)
last_used_afterstringnoReturn tokens last used after this RFC3339 timestamp
last_used_beforestringnoReturn tokens last used before this RFC3339 timestamp
order_bystringnoOrder tokens by a supported column (e.g. id, created_at, expires_at, last_used_at)
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
revokedbooleannoFilter by revoked state: true returns only revoked tokens, false only active ones
searchstringnoFilter tokens whose name contains this text
sortstring (asc, desc)noSort direction: asc or desc
statestring (active, inactive)noFilter by token state: active or inactive
user_idintegernoFilter by the user ID that owns the token

Revoke one of a group service account’s personal access tokens. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions.

  • Meta-tool: gitlab_group, action service_account_pat_revoke
  • Individual tool: gitlab_group_service_account_pat_revoke
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
service_account_idintegeryesService account user ID
token_idintegeryesPersonal access token ID to revoke

Rotate a group service account’s personal access token: revokes the supplied token_id and issues a replacement in one step (all tiers, Owner role). Returns: the new personal access token object (id, name, scopes, active, revoked, created_at, expires_at, and the one-time token value, which must be captured immediately because it is not retrievable later). See also: group.service_account_pat_create, group.service_account_pat_revoke, group.service_account_pat_list.

  • Meta-tool: gitlab_group, action service_account_pat_rotate
  • Individual tool: gitlab_group_service_account_pat_rotate
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path
service_account_idintegeryesService account user ID
token_idintegeryesPersonal access token ID to rotate
expires_atstringnoExpiration date for the new token (YYYY-MM-DD)

Update a group service account’s name or username. Use for GitLab group service accounts and their personal access tokens. Do not use group members, SCIM identities, enterprise users, or generic group access tokens for service account CRUD. Available on all tiers (Free, Premium, Ultimate). Requires Owner permissions. Omit email unless the task gives an explicit valid email address.

  • Meta-tool: gitlab_group, action service_account_update
  • Individual tool: gitlab_group_service_account_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstringyesGroup ID or URL-encoded path (top-level only)
service_account_idintegeryesService account user ID
emailstringnoNew email
namestringnoNew name
usernamestringnoNew username

Share a GitLab group with another group (Groups API). Returns: a confirmation with the granted access role. See also: group.shared_with, group.unshare_from_group, group.get.

  • Meta-tool: gitlab_group, action share_with_group
  • Individual tool: gitlab_group_share_with_group
  • Tier: Free
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_accessintegeryesAccess level the members of the group shared with gain (5=Minimal access (Premium/Ultimate), 10=Guest, 15=Planner, 20=Reporter, 25=Security Manager, 30=Developer, 40=Maintainer, 50=Owner). 60=Admin is not valid for group shares
group_idstring/integeryesGroup ID or URL-encoded path of the group being shared
shared_group_idintegeryesID of the group to share with
expires_atstringnoExpiration date for the share (YYYY-MM-DD)
member_role_id (Ultimate)integernoCustom member role the share grants (Ultimate only). Its base access level must equal group_access

List projects shared with a GitLab group. Returns: compact project rows with names and paths, web and clone URLs, visibility, default branch, topics, star and fork counts, archived status, and created and last-activity times. See also: group.projects, group.shared_with, group.get.

  • Meta-tool: gitlab_group, action shared_projects
  • Individual tool: gitlab_group_shared_projects_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
archivedbooleannoFilter archived projects
min_access_levelintegernoLimit to projects where the caller has at least this access level (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner)
order_bystring (id, name, path, created_at, updated_at, star_count, last_activity_at)noOrder by field: id, name, path, created_at, updated_at, star_count, or last_activity_at. Default is created_at
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter projects by name
simplebooleannoReturn limited fields
sortstring (asc, desc)noSort direction (asc, desc)
starredbooleannoLimit to starred projects
visibilitystring (private, internal, public)noFilter by visibility (public, internal, private)
with_custom_attributesbooleannoInclude custom attributes in the response
with_issues_enabledbooleannoLimit to projects with issues enabled
with_merge_requests_enabledbooleannoLimit to projects with merge requests enabled

List groups shared with a GitLab group (group-to-group shares). Returns: the shared groups with path, visibility, and access metadata. See also: group.invited_groups, group.members, group.subgroups.

  • Meta-tool: gitlab_group, action shared_with
  • Individual tool: gitlab_group_shared_with_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
min_access_levelintegernoMinimum access level the share grants (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner)
order_bystring (name, path, id, similarity)noOrder shared groups by field: name, path, id, or similarity (similarity only applies with search). Default is name
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter shared groups by name or path
skip_groupsinteger[]noGroup IDs to exclude from the results
sortstring (asc, desc)noSort direction (asc, desc)
visibilitystring (private, internal, public)noFilter by visibility (public, internal, private)
with_custom_attributesbooleannoInclude custom attributes in the response

Register a new SSH CA certificate on a group from a CA public key and title. Returns: the created certificate’s id, title, public key, and creation timestamp. See also: group.ssh_cert_list, group.ssh_cert_delete, group.get.

  • Meta-tool: gitlab_group, action ssh_cert_create
  • Individual tool: gitlab_create_group_ssh_certificate
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
keystringyesSSH public key content
titlestringyesTitle for the SSH certificate

Revoke an SSH CA certificate from a group by certificate id. Returns: a success status and confirmation message. See also: group.ssh_cert_list, group.ssh_cert_create, group.get.

  • Meta-tool: gitlab_group, action ssh_cert_delete
  • Individual tool: gitlab_delete_group_ssh_certificate
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
certificate_idintegeryesSSH certificate ID
group_idstring/integeryesGroup ID or URL-encoded path

List the SSH CA certificates registered on a group. Returns: each certificate’s id, title, public key, and creation timestamp, with offset/keyset pagination. See also: group.ssh_cert_create, group.ssh_cert_delete, group.get.

  • Meta-tool: gitlab_group, action ssh_cert_list
  • Individual tool: gitlab_list_group_ssh_certificates
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.

List the subgroups (descendant groups) of a GitLab group. Returns: descendant groups with path, name, and visibility. See also: group.get, group.projects, group.transfer_locations.

  • Meta-tool: gitlab_group, action subgroups
  • Individual tool: gitlab_subgroups_list
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
activebooleannoFilter by active (true) or inactive/archived (false) subgroups
all_availablebooleannoShow all subgroups accessible by the authenticated user
archivedbooleannoLimit to archived subgroups (true) or non-archived (false)
custom_attributesobjectnoFilter subgroups by custom attribute key/value pairs (administrators only). Distinct from with_custom_attributes, which only includes them in the response
marked_for_deletion_onstringnoFilter to subgroups marked for deletion on this date (YYYY-MM-DD)
min_access_levelintegernoMinimum access level (5=Minimal access,10=Guest,15=Planner,20=Reporter,25=Security Manager,30=Developer,40=Maintainer,50=Owner,60=Admin where supported)
order_bystring (name, path, id, similarity)noOrder subgroups by field (name, path, id, similarity)
ownedbooleannoLimit to subgroups explicitly owned by the authenticated user
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
repository_storagestringnoFilter by repository storage shard (administrators only)
searchstringnoFilter subgroups by name or path
skip_groupsinteger[]noGroup IDs to exclude from results
sortstring (asc, desc)noSort direction (asc, desc)
statisticsbooleannoInclude group statistics (storage, counts)
top_level_onlybooleannoLimit to top-level subgroups (exclude nested descendants)
visibilitystring (private, internal, public)noFilter by visibility (public, internal, private)
with_custom_attributesbooleannoInclude custom attributes in the response

Transfer a GitLab group under a new parent (or to top level), waiting up to 45 seconds for GitLab to apply the move. Returns: the group under its new parent, or with transfer_queued set and its current parent when GitLab has not applied the move yet, or an error when GitLab reports the move failed. See also: group.transfer_locations, group.get, group.subgroups.

  • Meta-tool: gitlab_group, action transfer
  • Individual tool: gitlab_group_transfer
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path of the group to move
parent_idintegernoID of the new parent group. Omit to turn the subgroup into a top-level group

List candidate parent groups for transferring a GitLab group. Returns: eligible destination groups with id, name, and full path. See also: group.transfer_project, group.get, group.subgroups.

  • Meta-tool: gitlab_group, action transfer_locations
  • Individual tool: gitlab_group_transfer_locations
  • Tier: Free
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
order_bystringnoColumn to order candidate parent groups by. The GitLab API documents no ordering for this endpoint, so the value is forwarded unchanged and may be ignored
pageintegernoPage number to fetch, 1-based. Defaults to 1. Use the next_page field from the previous response to paginate forward.
page_tokenstringnoKeyset pagination cursor: record id at which to fetch the next page, taken from the previous keyset response. Only used when pagination=‘keyset’.
paginationstringnoPagination method: ‘keyset’ for keyset-based pagination on large ordered result sets, or ‘offset’ (the default). Keyset avoids deep-offset cost.
per_pageintegernoItems per page. Defaults to 20, minimum 1, maximum 100. Use 100 to minimize round trips when the result set is large.
searchstringnoFilter candidate parent groups by name or path
sortstring (asc, desc)noSort direction (asc, desc)

Transfer a project into a GitLab group namespace (administrators only). Returns: the destination group’s metadata, not the project’s. See also: group.transfer_locations, group.get, group.projects.

  • Meta-tool: gitlab_group, action transfer_project
  • Individual tool: gitlab_group_transfer_project
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
project_idstring/integeryesProject ID or URL-encoded path to transfer

Unarchive a GitLab group (restore write access). Returns: a success confirmation. See also: group.archive, group.get, group.update.

  • Meta-tool: gitlab_group, action unarchive
  • Individual tool: gitlab_group_unarchive
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path

Revoke a group-to-group share (Groups API). Returns: a success confirmation. See also: group.share_with_group, group.shared_with, group.get.

  • Meta-tool: gitlab_group, action unshare_from_group
  • Individual tool: gitlab_group_unshare_from_group
  • Tier: Free
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path of the group being unshared
shared_group_idintegeryesID of the group whose share is removed

Update a GitLab group’s settings. Returns: the updated group metadata. See also: group.get, group.create, group.delete.

  • Meta-tool: gitlab_group, action update
  • Individual tool: gitlab_group_update
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
allow_merge_on_skipped_pipelinebooleannoAllow merging when the pipeline is skipped
allow_personal_snippetsbooleannoAllow members to create personal snippets
allowed_email_domains_liststringnoComma-separated list of email domains allowed for members (Premium/Ultimate)
auto_ban_user_on_excessive_projects_download (Ultimate)booleannoAutomatically ban users who exceed the unique project download limit (Ultimate)
auto_devops_enabledbooleannoEnable Auto DevOps for projects in this group
crm_enabledbooleannoEnable Customer Relations Management (CRM) for the group
default_branchstringnoDefault branch name
default_branch_protectionintegernoDeprecated: default branch protection level (0=none,1=partial,2=full,3=initial push,4=fully protected). Prefer default_branch_protection_defaults
default_branch_protection_defaultsobjectnoDefault branch protection settings object
descriptionstringnoGroup description
duo_availabilitystring (default_on, default_off, never_on)noGitLab Duo availability (default_on, default_off, never_on)
duo_features_enabledbooleannoEnable GitLab Duo features
emails_disabledbooleannoDeprecated: disable email notifications. Prefer emails_enabled
emails_enabledbooleannoEnable email notifications
enabled_git_access_protocolstring (ssh, http, all)noAllowed Git access protocol (ssh, http, all)
experiment_features_enabledbooleannoEnable experimental features
extra_shared_runners_minutes_limitintegernoExtra shared runner compute-minutes (administrators only)
file_template_project_idintegernoProject ID providing file templates for this group (Premium/Ultimate)
ip_restriction_rangesstringnoComma-separated list of IP addresses or subnet masks allowed to access the group. Premium and Ultimate only
lfs_enabledbooleannoEnable Git LFS
lock_duo_features_enabledbooleannoPrevent subgroups from changing the Duo features setting
lock_math_rendering_limits_enabledbooleannoPrevent subgroups from changing the math rendering limits setting
math_rendering_limits_enabledbooleannoEnable math rendering limits
max_artifacts_sizeintegernoMaximum job artifacts size in MB (administrators only)
membership_lockbooleannoPrevent members from being added to projects in this group
mentions_disabledbooleannoDisable @-mention notifications
namestringnoGroup name
only_allow_merge_if_all_discussions_are_resolvedbooleannoOnly allow merging when all discussions are resolved
only_allow_merge_if_pipeline_succeedsbooleannoOnly allow merging when the pipeline succeeds
pathstringnoGroup URL path
prevent_forking_outside_groupbooleannoPrevent forking projects outside the group (Premium/Ultimate)
prevent_sharing_groups_outside_hierarchybooleannoPrevent inviting groups outside this group’s hierarchy
project_creation_levelstring (noone, maintainer, developer, administrator)noWho can create projects (noone, maintainer, developer)
request_access_enabledbooleannoAllow users to request access
require_two_factor_authenticationbooleannoRequire two-factor authentication for members
share_with_group_lockbooleannoPrevent sharing projects in this group with other groups
shared_runners_minutes_limitintegernoShared runner compute-minutes limit (administrators only)
shared_runners_settingstring (enabled, disabled_and_overridable, disabled_and_unoverridable)noShared runners setting (enabled, disabled_and_overridable, disabled_and_unoverridable)
step_up_auth_required_oauth_providerstringnoOAuth provider required for step-up authentication
subgroup_creation_levelstring (owner, maintainer)noWho can create subgroups (owner, maintainer)
two_factor_grace_periodintegernoGrace period in hours before two-factor authentication is enforced
unique_project_download_limit (Ultimate)integernoMax number of unique projects a user can download before being banned (Ultimate)
unique_project_download_limit_alertlist (Ultimate)integer[]noUser IDs notified when the unique project download limit is exceeded (Ultimate)
unique_project_download_limit_allowlist (Ultimate)string[]noUsernames excluded from the unique project download limit (Ultimate)
unique_project_download_limit_interval_in_seconds (Ultimate)integernoTime window in seconds for the unique project download limit (Ultimate)
visibilitystring (private, internal, public)noVisibility level (private, internal, public)
web_based_commit_signing_enabledbooleannoEnable web-based commit signing for projects in this group
wiki_access_levelstring (disabled, private, enabled)noWiki access level (disabled, private, enabled)

Upload or replace a GitLab group’s avatar image. Returns: the updated group metadata. See also: group.update, group.get, group.create.

  • Meta-tool: gitlab_group, action upload_avatar
  • Individual tool: gitlab_group_upload_avatar
  • Tier: Free
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
filenamestringyesAvatar filename (e.g. avatar.png)
group_idstring/integeryesGroup ID or URL-encoded path
content_base64stringnoBase64-encoded image content. Only one of file_path or content_base64 should be provided.
file_pathstringnoAbsolute path to a local image file on the MCP server filesystem. Alternative to content_base64 for files too large to base64-encode. Only one of file_path or content_base64 should be provided.

Create a new group wiki page. Returns: the created page with title, slug, format, content, and encoding. See also: group.wiki_get, group.wiki_edit, group.wiki_list.

  • Meta-tool: gitlab_group, action wiki_create
  • Individual tool: gitlab_group_wiki_create
  • Tier: Premium
  • Behavior: writes, not idempotent
ParameterTypeMandatoryDescription
contentstringyesContent of the wiki page
group_idstring/integeryesGroup ID or URL-encoded path
titlestringyesTitle of the wiki page
formatstring (markdown, rdoc, asciidoc, org)noContent format: markdown (default), rdoc, asciidoc, or org

Delete a group wiki page permanently. Returns: a success confirmation for the removed page. See also: group.wiki_get, group.wiki_list.

  • Meta-tool: gitlab_group, action wiki_delete
  • Individual tool: gitlab_group_wiki_delete
  • Tier: Premium
  • Behavior: writes, destructive (needs confirmation), idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
slugstringyesURL-encoded slug of the wiki page to delete

Update an existing group wiki page by slug. Returns: the updated page with title, slug, format, content, and encoding. See also: group.wiki_get, group.wiki_delete, group.wiki_list.

  • Meta-tool: gitlab_group, action wiki_edit
  • Individual tool: gitlab_group_wiki_edit
  • Tier: Premium
  • Behavior: writes, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
slugstringyesURL-encoded slug of the wiki page to edit
contentstringnoNew content
formatstring (markdown, rdoc, asciidoc, org)noContent format: markdown, rdoc, asciidoc, or org
titlestringnoNew title

Get a single group wiki page by slug. Returns: the page title, slug, format, content, and encoding. See also: group.wiki_list, group.wiki_edit, group.wiki_delete.

  • Meta-tool: gitlab_group, action wiki_get
  • Individual tool: gitlab_group_wiki_get
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
slugstringyesURL-encoded slug of the wiki page
render_htmlbooleannoReturn HTML-rendered content
versionstringnoWiki page version SHA

List a group’s wiki pages (GitLab Premium). Returns: each page’s title, slug, and format (plus content when with_content is set), with hints to read or create pages. See also: group.wiki_get, group.wiki_create.

  • Meta-tool: gitlab_group, action wiki_list
  • Individual tool: gitlab_group_wiki_list
  • Tier: Premium
  • Behavior: read-only, idempotent
ParameterTypeMandatoryDescription
group_idstring/integeryesGroup ID or URL-encoded path
with_contentbooleannoInclude page content in the response